diff options
author | Martin Aumüller <aumuell@reserv.at> | 2021-05-28 13:50:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-28 13:50:03 +0200 |
commit | 0c290ef1c36a97bb284741e49002afae7dd91267 (patch) | |
tree | 78167ce2e82b742d12e252ad3d7e2daee31fde00 /var | |
parent | 1dd6bc27259ee1190b6052f1cd704f84bb84aa1f (diff) | |
download | spack-0c290ef1c36a97bb284741e49002afae7dd91267.tar.gz spack-0c290ef1c36a97bb284741e49002afae7dd91267.tar.bz2 spack-0c290ef1c36a97bb284741e49002afae7dd91267.tar.xz spack-0c290ef1c36a97bb284741e49002afae7dd91267.zip |
embree: add v3.13.0, fix build (#23986)
* embree: allow for compiling with gcc 7.3
strip out unsupported -mprefer-vector-width=256
* embree: fix build on AMD CPUs
The ISAs that embree is compiled for have to match the CPU
features enabled by the compiler, as embree derives theISA
that it compiles for from the latter.
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/embree/package.py | 58 |
1 files changed, 23 insertions, 35 deletions
diff --git a/var/spack/repos/builtin/packages/embree/package.py b/var/spack/repos/builtin/packages/embree/package.py index d86787dcb6..524e8ec9c6 100644 --- a/var/spack/repos/builtin/packages/embree/package.py +++ b/var/spack/repos/builtin/packages/embree/package.py @@ -13,6 +13,7 @@ class Embree(CMakePackage): url = "https://github.com/embree/embree/archive/v3.7.0.tar.gz" maintainers = ['aumuell'] + version('3.13.0', sha256='4d86a69508a7e2eb8710d571096ad024b5174834b84454a8020d3a910af46f4f') version('3.12.1', sha256='0c9e760b06e178197dd29c9a54f08ff7b184b0487b5ba8b8be058e219e23336e') version('3.12.0', sha256='f3646977c45a9ece1fb0cfe107567adcc645b1c77c27b36572d0aa98b888190c') version('3.11.0', sha256='2ccc365c00af4389aecc928135270aba7488e761c09d7ebbf1bf3e62731b147d') @@ -34,40 +35,27 @@ class Embree(CMakePackage): def cmake_args(self): spec = self.spec - args = [] - - args.append('-DBUILD_TESTING=OFF') - args.append('-DEMBREE_TUTORIALS=OFF') - args.append('-DEMBREE_IGNORE_CMAKE_CXX_FLAGS=ON') - - if 'ispc' in spec: - args.append('-DEMBREE_ISPC_SUPPORT=ON') - else: - args.append('-DEMBREE_ISPC_SUPPORT=OFF') - - # code selection and defines controlling namespace names are based on - # defines controlled by compiler flags, so disable ISAs below compiler - # flags chosen by spack - if spec.target >= 'nehalem': - args.append('-DEMBREE_ISA_SSE2=OFF') - else: - args.append('-DEMBREE_ISA_SSE2=ON') - - if spec.target >= 'sandybridge': - args.append('-DEMBREE_ISA_SSE42=OFF') - else: - args.append('-DEMBREE_ISA_SSE42=ON') - - if spec.target >= 'haswell': - args.append('-DEMBREE_ISA_AVX=OFF') - else: - args.append('-DEMBREE_ISA_AVX=ON') - - if spec.target >= 'skylake_avx512': - args.append('-DEMBREE_ISA_AVX2=OFF') - else: - args.append('-DEMBREE_ISA_AVX2=ON') - - args.append('-DEMBREE_ISA_AVX512SKX=ON') + args = [ + '-DBUILD_TESTING=OFF', + '-DEMBREE_TUTORIALS=OFF', + '-DEMBREE_IGNORE_CMAKE_CXX_FLAGS=ON', + self.define_from_variant('EMBREE_ISPC_SUPPORT', 'ispc'), + + # code selection and defines controlling namespace names are based on + # defines controlled by compiler flags, so disable ISAs below compiler + # flags chosen by spack + self.define('EMBREE_ISA_SSE2', 'sse4_2' not in spec.target), + self.define('EMBREE_ISA_SSE42', 'avx' not in spec.target), + self.define('EMBREE_ISA_AVX', 'avx2' not in spec.target), + self.define('EMBREE_ISA_AVX2', 'avx512' not in spec.target), + self.define('EMBREE_ISA_AVX512SKX', True), + ] + + if spec.satisfies('%gcc@:7.99'): + # remove unsupported -mprefer-vector-width=256, otherwise copied + # from common/cmake/gnu.cmake + args.append('-DFLAGS_AVX512SKX=-mavx512f -mavx512dq -mavx512cd' + ' -mavx512bw -mavx512vl -mf16c -mavx2 -mfma -mlzcnt' + ' -mbmi -mbmi2') return args |