cmake fails with icpc warning (#34774)

The Intel compiler isn't able to deal with noinline member functions of template classses defined in headers. As such it outputs
```
warning #2196: routine is both "inline" and "noinline"
```
cmake bootstrap will fail due to the word 'warning'.

See spack/var/spack/repos/builtin/packages/protobuf/intel-v2.patch for reference.

The issue does not appear with intel@2021.7.0 or later:

```
$~: compiler=/shared/spack/opt/spack/linux-amzn2-x86_64_v3/gcc-12.2.0/intel-oneapi-compilers-2022.2.0-uqvb2553zy5toeapvoopacndd27x6p5m/compiler/2022.2.0/linux/bin/intel64/icpc
$~: $compiler unique.c
icpc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is deprecated and will be removed from product release in the second half of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended compiler moving forward. Please transition to use this compiler. Use '-diag-disable=10441' to disable this message.
```

This is a clean version of https://github.com/spack/spack/pull/34167

Co-authored-by: Stephen Sachs <stesachs@amazon.com>
This commit is contained in:
Stephen Sachs 2023-01-05 18:13:26 +01:00 committed by GitHub
parent eace2ebb08
commit ada174afbd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -312,6 +312,13 @@ def bootstrap_args(self):
args = []
self.generator = make
# The Intel compiler isn't able to deal with noinline member functions of
# template classes defined in headers. As such it outputs
# warning #2196: routine is both "inline" and "noinline"
# cmake bootstrap will fail due to the word 'warning'.
if spec.satisfies("%intel@:2021.6.0"):
args.append("CXXFLAGS=-diag-disable=2196")
if self.spec.satisfies("platform=windows"):
args.append("-GNinja")
self.generator = ninja