hdf5: Fix compiler identification for warning flags (#24627)

* Fix compiler test

Use `self.spec.satisfies` on compiler to determine if a flag should be
applied or not.  This approach avoids issues with the strings `gcc`
or `clang` appearing in the full path to the compiler executables, as
happens with spack-installed compilers (e.g. `nvhpc%gcc`).

* Limit compiler name search to last path component

@skosukhin pointed out that the cflag modification should happen for any
clang or gcc compiler, regardless of what compiler spec provides them.
This commit reverts to searching for a compiler name containing "gcc"
or "clang", but limits the search to the last path component, which
avoids matching spack-installed compilers built with gcc (e.g.
`nvhpc%gcc`), which will have "gcc" in the compiler path.

* Use `os.path` rather than `pathlib`

Co-authored-by: Paul Henning <phenning@lanl.gov>
This commit is contained in:
Paul Henning 2021-07-08 13:17:44 -06:00 committed by GitHub
parent 0c5402ea5c
commit 620836a809
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -187,7 +187,8 @@ def flag_handler(self, name, flags):
cmake_flags = [] cmake_flags = []
if name == "cflags": if name == "cflags":
if "clang" in self.compiler.cc or "gcc" in self.compiler.cc: cc_name = os.path.basename(self.compiler.cc)
if "clang" in cc_name or "gcc" in cc_name:
# Quiet warnings/errors about implicit declaration of functions # Quiet warnings/errors about implicit declaration of functions
# in C99: # in C99:
cmake_flags.append("-Wno-implicit-function-declaration") cmake_flags.append("-Wno-implicit-function-declaration")