diff options
Diffstat (limited to 'pkgs/development/libraries/tbb/default.nix')
-rw-r--r-- | pkgs/development/libraries/tbb/default.nix | 65 |
1 files changed, 51 insertions, 14 deletions
diff --git a/pkgs/development/libraries/tbb/default.nix b/pkgs/development/libraries/tbb/default.nix index 97ce24a8398..7aef5ba7476 100644 --- a/pkgs/development/libraries/tbb/default.nix +++ b/pkgs/development/libraries/tbb/default.nix @@ -1,22 +1,44 @@ -{ lib, stdenv, fetchFromGitHub, fixDarwinDylibNames, compiler ? if stdenv.cc.isClang then "clang" else null, stdver ? null }: +{ lib +, stdenv +, fetchurl +, fetchFromGitHub +, fixDarwinDylibNames +}: -with lib; stdenv.mkDerivation rec { +stdenv.mkDerivation rec { pname = "tbb"; - version = "2020_U3"; + version = "2020.3"; src = fetchFromGitHub { - owner = "01org"; - repo = "tbb"; - rev = version; - sha256 = "sha256-prO2O5hd+Wz5iA0vfrqmyHFr0Ptzk64so5KpSpvuKmU="; + owner = "oneapi-src"; + repo = "oneTBB"; + rev = "v${version}"; + sha256 = "prO2O5hd+Wz5iA0vfrqmyHFr0Ptzk64so5KpSpvuKmU="; }; - nativeBuildInputs = optional stdenv.isDarwin fixDarwinDylibNames; + patches = [ + # Fixes build with Musl. + (fetchurl { + url = "https://github.com/openembedded/meta-openembedded/raw/39185eb1d1615e919e3ae14ae63b8ed7d3e5d83f/meta-oe/recipes-support/tbb/tbb/GLIBC-PREREQ-is-not-defined-on-musl.patch"; + sha256 = "gUfXQ9OZQ82qD6brgauBCsKdjLvyHafMc18B+KxZoYs="; + }) - makeFlags = optional (compiler != null) "compiler=${compiler}" - ++ optional (stdver != null) "stdver=${stdver}"; + # Fixes build with Musl. + (fetchurl { + url = "https://github.com/openembedded/meta-openembedded/raw/39185eb1d1615e919e3ae14ae63b8ed7d3e5d83f/meta-oe/recipes-support/tbb/tbb/0001-mallinfo-is-glibc-specific-API-mark-it-so.patch"; + sha256 = "fhorfqO1hHKZ61uq+yTR7eQ8KYdyLwpM3K7WpwJpV74="; + }) + ]; - patches = lib.optional stdenv.hostPlatform.isMusl ./glibc-struct-mallinfo.patch; + nativeBuildInputs = lib.optionals stdenv.isDarwin [ + fixDarwinDylibNames + ]; + + makeFlags = lib.optionals stdenv.cc.isClang [ + "compiler=clang" + ]; + + enableParallelBuilding = true; installPhase = '' runHook preInstall @@ -29,9 +51,24 @@ with lib; stdenv.mkDerivation rec { runHook postInstall ''; - enableParallelBuilding = true; + postInstall = let + pcTemplate = fetchurl { + url = "https://github.com/oneapi-src/oneTBB/raw/master/integration/pkg-config/tbb.pc.in"; + sha256 = "2pCad9txSpNbzac0vp/VY3x7HNySaYkbH3Rx8LK53pI="; + }; + in '' + # Generate pkg-config file based on upstream template. + # It should not be necessary with tbb after 2021.2. + mkdir -p "$out/lib/pkgconfig" + substitute "${pcTemplate}" "$out/lib/pkgconfig/tbb.pc" \ + --subst-var-by CMAKE_INSTALL_PREFIX "$out" \ + --subst-var-by CMAKE_INSTALL_LIBDIR "lib" \ + --subst-var-by CMAKE_INSTALL_INCLUDEDIR "include" \ + --subst-var-by TBB_VERSION "${version}" \ + --subst-var-by TBB_LIB_NAME "tbb" + ''; - meta = { + meta = with lib; { description = "Intel Thread Building Blocks C++ Library"; homepage = "http://threadingbuildingblocks.org/"; license = licenses.asl20; @@ -43,7 +80,7 @@ with lib; stdenv.mkDerivation rec { represents a higher-level, task-based parallelism that abstracts platform details and threading mechanisms for scalability and performance. ''; - platforms = with platforms; linux ++ darwin; + platforms = platforms.unix; maintainers = with maintainers; [ thoughtpolice dizfer ]; }; } |