Merge pull request #122587 from jtojnar/tbb-pc
tbb: install pkg-config file
This commit is contained in:
@@ -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";
|
pname = "tbb";
|
||||||
version = "2020_U3";
|
version = "2020.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "01org";
|
owner = "oneapi-src";
|
||||||
repo = "tbb";
|
repo = "oneTBB";
|
||||||
rev = version;
|
rev = "v${version}";
|
||||||
sha256 = "sha256-prO2O5hd+Wz5iA0vfrqmyHFr0Ptzk64so5KpSpvuKmU=";
|
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}"
|
# Fixes build with Musl.
|
||||||
++ optional (stdver != null) "stdver=${stdver}";
|
(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 = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
@@ -29,9 +51,24 @@ with lib; stdenv.mkDerivation rec {
|
|||||||
runHook postInstall
|
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";
|
description = "Intel Thread Building Blocks C++ Library";
|
||||||
homepage = "http://threadingbuildingblocks.org/";
|
homepage = "http://threadingbuildingblocks.org/";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
@@ -43,7 +80,7 @@ with lib; stdenv.mkDerivation rec {
|
|||||||
represents a higher-level, task-based parallelism that abstracts platform
|
represents a higher-level, task-based parallelism that abstracts platform
|
||||||
details and threading mechanisms for scalability and performance.
|
details and threading mechanisms for scalability and performance.
|
||||||
'';
|
'';
|
||||||
platforms = with platforms; linux ++ darwin;
|
platforms = platforms.unix;
|
||||||
maintainers = with maintainers; [ thoughtpolice dizfer ];
|
maintainers = with maintainers; [ thoughtpolice dizfer ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
From b577153a10c98f4e13405dc93ea2ab1a7b990e07 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Huffman <storedbox+alpine@outlook.com>
|
|
||||||
Date: Wed, 6 Jan 2016 07:09:30 -0500
|
|
||||||
Subject: [PATCH] hard-code glibc's definition of struct mallinfo
|
|
||||||
|
|
||||||
---
|
|
||||||
src/tbbmalloc/proxy.h | 20 ++++++++++++++++++++
|
|
||||||
1 file changed, 20 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/tbbmalloc/proxy.h b/src/tbbmalloc/proxy.h
|
|
||||||
index 781cadc..e1ea1ae 100644
|
|
||||||
--- a/src/tbbmalloc/proxy.h
|
|
||||||
+++ b/src/tbbmalloc/proxy.h
|
|
||||||
@@ -32,6 +32,26 @@
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
+// The following definition was taken from /usr/include/malloc.h as provided by
|
|
||||||
+// the glibc-devel-2.19-17.4.x86_64 package on openSUSE Leap 42.1; it is
|
|
||||||
+// made available under the GNU Lesser General Public License v2.1 or later.
|
|
||||||
+// See <https://www.gnu.org/licenses>.
|
|
||||||
+//
|
|
||||||
+// Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
|
||||||
+struct mallinfo
|
|
||||||
+{
|
|
||||||
+ int arena; /* non-mmapped space allocated from system */
|
|
||||||
+ int ordblks; /* number of free chunks */
|
|
||||||
+ int smblks; /* number of fastbin blocks */
|
|
||||||
+ int hblks; /* number of mmapped regions */
|
|
||||||
+ int hblkhd; /* space in mmapped regions */
|
|
||||||
+ int usmblks; /* maximum total allocated space */
|
|
||||||
+ int fsmblks; /* space available in freed fastbin blocks */
|
|
||||||
+ int uordblks; /* total allocated space */
|
|
||||||
+ int fordblks; /* total free space */
|
|
||||||
+ int keepcost; /* top-most, releasable (via malloc_trim) space */
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
extern "C" {
|
|
||||||
void * scalable_malloc(size_t size);
|
|
||||||
void * scalable_calloc(size_t nobj, size_t size);
|
|
||||||
--
|
|
||||||
2.6.2
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user