spack/lib/spack/env
Tom Scogland 0182603609
Control Werror by converting to Wno-error (#30882)
Using `-Werror` is good practice for development and testing, but causes us a great
deal of heartburn supporting multiple compiler versions, especially as newer compiler
versions add warnings for released packages.  This PR adds support for suppressing
`-Werror` through spack's compiler wrappers.  There are currently three modes for
the `flags:keep_werror` setting:

* `none`: (default) cancel all `-Werror`, `-Werror=*` and `-Werror-*` flags by
  converting them to `-Wno-error[=]*` flags
* `specific`: preserve explicitly selected warnings as errors, such as
  `-Werror=format-truncation`, but reverse the blanket `-Werror`
* `all`: keeps all `-Werror` flags

These can be set globally in config.yaml, through the config command-line flags, or
overridden by a particular package (some packages use Werror as a proxy for determining
support for other compiler features).  We chose to use this approach because:

1. removing `-Werror` flags entirely broke *many* build systems, especially autoconf
   based ones, because of things like checking `-Werror=feature` and making the
   assumption that if that did not error other flags related to that feature would also work
2. Attempting to preserve `-Werror` in some phases but not others caused similar issues
3. The per-package setting came about because some packages, even with all these
   protections, still use `-Werror` unsafely.  Currently there are roughly 3 such packages
   known.
2022-11-23 12:29:17 -08:00
..
aocc Adding AOCC compiler to SPACK community (#19345) 2020-10-20 10:50:09 -05:00
arm Armcompiler (#9840) 2019-01-08 16:31:25 -08:00
case-insensitive Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
cce Cray support: use linux platform for newer craype versions (#29392) 2022-11-04 14:52:11 -07:00
clang compilers/clang: add flang (#5503) 2017-10-10 13:52:10 -07:00
fj Add Fujitsu compiler to Spack. (#11287) 2019-05-21 20:31:14 -05:00
gcc Fix #254: libtool & distutils want certain compiler names. 2015-12-19 02:06:47 -08:00
intel Fix #254: libtool & distutils want certain compiler names. 2015-12-19 02:06:47 -08:00
nag Add symlink for NAG Fortran Compiler 2016-01-19 13:07:07 -06:00
nvhpc New compiler: nvhpc (NVIDIA HPC SDK) (#19294) 2020-10-16 14:04:27 -07:00
oneapi Support packages which need to explicitly refer to dpcpp by name (#27168) 2021-12-02 15:49:20 -08:00
pgi Modifications to get PGI working 2016-03-03 16:50:51 -06:00
rocmcc rocmcc compiler: initial commit based on aocc and clang (#28575) 2022-03-03 14:34:22 -07:00
xl Fix #254: libtool & distutils want certain compiler names. 2015-12-19 02:06:47 -08:00
xl_r Add support for IBM threaded compilers: xl*_r (#2894) 2017-01-25 16:26:17 -07:00
c89 Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
c99 Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
c++ Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
cc Control Werror by converting to Wno-error (#30882) 2022-11-23 12:29:17 -08:00
cpp Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
f77 Fix for SPACK-35: Fortran not working properly 2014-07-09 01:28:23 -07:00
f90 Fix for SPACK-35: Fortran not working properly 2014-07-09 01:28:23 -07:00
f95 Fix for SPACK-35: Fortran not working properly 2014-07-09 01:28:23 -07:00
fc Fix for SPACK-35: Fortran not working properly 2014-07-09 01:28:23 -07:00
ftn Add ftn to lib/spack/env (#11180) 2019-04-17 13:12:25 -07:00
ld Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
ld.gold Add ld.gold and ld.lld compiler wrapper (#25626) 2021-08-27 13:16:26 +02:00
ld.lld Add ld.gold and ld.lld compiler wrapper (#25626) 2021-08-27 13:16:26 +02:00