From d0d6b29c9e22ed8b40b30aed64ca88abeff1b3c2 Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Thu, 26 Aug 2021 19:06:27 -0500 Subject: Incorporate intel-tbb-oneapi package into intel-tbb package (#25613) * Add intel-tbb-oneapi package that does the cmake configure and build. Compare too the intel-oneapi-tbb package which only downloads a script that contains prebuilt binaries. * Rename package intel-tbb-cmake * Incorporate intel-tbb-cmake into intel-tbb package --- .../repos/builtin/packages/intel-tbb/package.py | 45 +++++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/intel-tbb/package.py b/var/spack/repos/builtin/packages/intel-tbb/package.py index 89276ec5ca..5603c282d6 100644 --- a/var/spack/repos/builtin/packages/intel-tbb/package.py +++ b/var/spack/repos/builtin/packages/intel-tbb/package.py @@ -11,7 +11,7 @@ import sys from spack import * -class IntelTbb(Package): +class IntelTbb(CMakePackage): """Widely used C++ template library for task parallelism. Intel Threading Building Blocks (Intel TBB) lets you easily write parallel C++ programs that take full advantage of multicore performance, that are @@ -24,6 +24,9 @@ class IntelTbb(Package): # Note: when adding new versions, please check and update the # patches, filters and url_for_version() below as needed. + version('2021.3.0', sha256='8f616561603695bbb83871875d2c6051ea28f8187dbe59299961369904d1d49e') + version('2021.2.0', sha256='cee20b0a71d977416f3e3b4ec643ee4f38cedeb2a9ff015303431dd9d8d79854') + version('2021.1.1', sha256='b182c73caaaabc44ddc5ad13113aca7e453af73c1690e4061f71dfe4935d74e8') version('2020.3', sha256='ebc4f6aa47972daed1f7bf71d100ae5bf6931c2e3144cf299c8cc7d041dca2f3', preferred=True) version('2020.2', sha256='4804320e1e6cbe3a5421997b52199e3c1a3829b2ecb6489641da4b8e32faf500') @@ -97,7 +100,9 @@ class IntelTbb(Package): # Build and install CMake config files if we're new enough. # CMake support started in 2017.7. - depends_on('cmake@3.0.0:', type='build', when='@2017.7:') + depends_on('cmake@3.1.0:', type='build', when='@2017.7:') + + depends_on('hwloc', when='@2021.1.1:') # Patch for pedantic warnings (#10836). This was fixed in the TBB # source tree in 2019.6. @@ -162,6 +167,7 @@ class IntelTbb(Package): def setup_build_environment(self, env): env.set('OS', platform.system()) + @when('@:2020.3') def coerce_to_spack(self, tbb_build_subdir): for compiler in ["icc", "gcc", "clang"]: fs = glob.glob(join_path(tbb_build_subdir, @@ -179,7 +185,16 @@ class IntelTbb(Package): else: of.write(lin) - def install(self, spec, prefix): + @when('@:2020.3') + def cmake(self, spec, prefix): + return + + @when('@:2020.3') + def cmake_args(self): + return + + @when('@:2020.3') + def build(self, spec, prefix): # Deactivate use of RTM with GCC when on an OS with a very old # assembler. if (spec.satisfies('%gcc@4.8.0: os=rhel6') @@ -207,9 +222,6 @@ class IntelTbb(Package): else: tbb_compiler = "gcc" - mkdirp(prefix) - mkdirp(prefix.lib) - make_opts = [] # Static builds of TBB are enabled by including 'big_iron.inc' file @@ -229,6 +241,11 @@ class IntelTbb(Package): make_opts.append("compiler={0}".format(tbb_compiler)) make(*make_opts) + @when('@:2020.3') + def install(self, spec, prefix): + mkdirp(prefix) + mkdirp(prefix.lib) + # install headers to {prefix}/include install_tree('include', prefix.include) @@ -254,6 +271,7 @@ class IntelTbb(Package): with working_dir(join_path(self.stage.source_path, 'cmake')): inspect.getmodule(self).cmake(*cmake_args) + @when('@:2020.3') @run_after('install') def darwin_fix(self): # Replace @rpath in ids with full path @@ -265,3 +283,18 @@ class IntelTbb(Package): shared = True if '+shared' in self.spec else False return find_libraries( 'libtbb*', root=self.prefix, shared=shared, recursive=True) + + @when('@2021.1.1:') + def cmake_args(self): + spec = self.spec + options = [] + options.append('-DCMAKE_HWLOC_2_INCLUDE_PATH=%s' % + spec['hwloc'].prefix.include) + options.append('-DCMAKE_HWLOC_2_LIBRARY_PATH=%s' % + spec['hwloc'].libs) + options.append('-DTBB_CPF=ON') + options.append('-DTBB_STRICT=OFF') + if spec.variants['cxxstd'].value != 'default': + options.append('-DCMAKE_CXX_STANDARD=%s' % + spec.variants['cxxstd'].value) + return options -- cgit v1.2.3-60-g2f50