summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorbecker33 <becker33@llnl.gov>2017-07-19 20:12:00 -0700
committerGitHub <noreply@github.com>2017-07-19 20:12:00 -0700
commitf962aba6ce85ba001bbe20f6f849478fdb9370c5 (patch)
treebb5a40e0ccb946895b2f581e5549bd38b7e414e6 /var
parentacca75b36807c164568d726e39b77839e00c52b6 (diff)
downloadspack-f962aba6ce85ba001bbe20f6f849478fdb9370c5.tar.gz
spack-f962aba6ce85ba001bbe20f6f849478fdb9370c5.tar.bz2
spack-f962aba6ce85ba001bbe20f6f849478fdb9370c5.tar.xz
spack-f962aba6ce85ba001bbe20f6f849478fdb9370c5.zip
Allow packages to control handling of compiler flags (#4421)
* Initial work on flag trapping using functions called <flag>_handler and default_flag_handler * Update packages so they do not obliterate flags * Added append to EnvironmentModifications class * changed EnvironmentModifications to have append_flags method * changed flag_val to be a tuple * Increased test coverage * added documentation of flag handling
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/clhep/package.py10
-rw-r--r--var/spack/repos/builtin/packages/elpa/package.py4
-rw-r--r--var/spack/repos/builtin/packages/ferret/package.py7
-rw-r--r--var/spack/repos/builtin/packages/git/package.py2
-rw-r--r--var/spack/repos/builtin/packages/libint/package.py1
-rw-r--r--var/spack/repos/builtin/packages/libxc/package.py11
-rw-r--r--var/spack/repos/builtin/packages/libxpm/package.py2
-rw-r--r--var/spack/repos/builtin/packages/llvm-lld/package.py5
-rw-r--r--var/spack/repos/builtin/packages/llvm/package.py2
-rw-r--r--var/spack/repos/builtin/packages/zlib/package.py2
10 files changed, 34 insertions, 12 deletions
diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py
index e9bf85c97f..7120fffac6 100644
--- a/var/spack/repos/builtin/packages/clhep/package.py
+++ b/var/spack/repos/builtin/packages/clhep/package.py
@@ -78,12 +78,18 @@ class Clhep(CMakePackage):
cmake_args = []
if '+cxx11' in spec:
- env['CXXFLAGS'] = self.compiler.cxx11_flag
+ if 'CXXFLAGS' in env and env['CXXFLAGS']:
+ env['CXXFLAGS'] += ' ' + self.compiler.cxx11_flag
+ else:
+ env['CXXFLAGS'] = self.compiler.cxx11_flag
cmake_args.append('-DCLHEP_BUILD_CXXSTD=' +
self.compiler.cxx11_flag)
if '+cxx14' in spec:
- env['CXXFLAGS'] = self.compiler.cxx14_flag
+ if 'CXXFLAGS' in env and env['CXXFLAGS']:
+ env['CXXFLAGS'] += ' ' + self.compiler.cxx14_flag
+ else:
+ env['CXXFLAGS'] = self.compiler.cxx14_flag
cmake_args.append('-DCLHEP_BUILD_CXXSTD=' +
self.compiler.cxx14_flag)
diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py
index 85d1706b2b..61e957c0c9 100644
--- a/var/spack/repos/builtin/packages/elpa/package.py
+++ b/var/spack/repos/builtin/packages/elpa/package.py
@@ -71,8 +71,8 @@ class Elpa(AutotoolsPackage):
spack_env.set('FC', spec['mpi'].mpifc)
spack_env.set('CXX', spec['mpi'].mpicxx)
- spack_env.set('LDFLAGS', spec['lapack'].libs.search_flags)
- spack_env.set('LIBS', spec['lapack'].libs.link_flags)
+ spack_env.append_flags('LDFLAGS', spec['lapack'].libs.search_flags)
+ spack_env.append_flags('LIBS', spec['lapack'].libs.link_flags)
spack_env.set('SCALAPACK_LDFLAGS', spec['scalapack'].libs.joined())
def configure_args(self):
diff --git a/var/spack/repos/builtin/packages/ferret/package.py b/var/spack/repos/builtin/packages/ferret/package.py
index f2a32fdd70..6a4c0902f6 100644
--- a/var/spack/repos/builtin/packages/ferret/package.py
+++ b/var/spack/repos/builtin/packages/ferret/package.py
@@ -98,7 +98,12 @@ class Ferret(Package):
ln('-sf',
libz_prefix + '/lib',
libz_prefix + '/lib64')
- os.environ['LDFLAGS'] = '-lquadmath'
+
+ if 'LDFLAGS' in env and env['LDFLAGS']:
+ env['LDFLAGS'] += ' ' + '-lquadmath'
+ else:
+ env['LDFLAGS'] = '-lquadmath'
+
with working_dir('FERRET', create=False):
os.environ['LD_X11'] = '-L/usr/lib/X11 -lX11'
os.environ['HOSTTYPE'] = 'x86_64-linux'
diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py
index f01cc37d7b..9dc9e460af 100644
--- a/var/spack/repos/builtin/packages/git/package.py
+++ b/var/spack/repos/builtin/packages/git/package.py
@@ -155,7 +155,7 @@ class Git(AutotoolsPackage):
depends_on('m4', type='build')
def setup_environment(self, spack_env, run_env):
- spack_env.set('LDFLAGS', '-L{0} -lintl'.format(
+ spack_env.append_flags('LDFLAGS', '-L{0} -lintl'.format(
self.spec['gettext'].prefix.lib))
def configure_args(self):
diff --git a/var/spack/repos/builtin/packages/libint/package.py b/var/spack/repos/builtin/packages/libint/package.py
index d267a8ea88..34600e742a 100644
--- a/var/spack/repos/builtin/packages/libint/package.py
+++ b/var/spack/repos/builtin/packages/libint/package.py
@@ -85,6 +85,7 @@ class Libint(AutotoolsPackage):
def configure_args(self):
config_args = ['--enable-shared']
+
optflags = self.optflags
# Optimization flag names have changed in libint 2
diff --git a/var/spack/repos/builtin/packages/libxc/package.py b/var/spack/repos/builtin/packages/libxc/package.py
index f018bacfa3..e2fe25c455 100644
--- a/var/spack/repos/builtin/packages/libxc/package.py
+++ b/var/spack/repos/builtin/packages/libxc/package.py
@@ -71,8 +71,15 @@ class Libxc(Package):
if which('xiar'):
env['AR'] = 'xiar'
- env['CFLAGS'] = optflags
- env['FCFLAGS'] = optflags
+ if 'CFLAGS' in env and env['CFLAGS']:
+ env['CFLAGS'] += ' ' + optflags
+ else:
+ env['CFLAGS'] = optflags
+
+ if 'FCFLAGS' in env and env['FCFLAGS']:
+ env['FCFLAGS'] += ' ' + optflags
+ else:
+ env['FCFLAGS'] = optflags
configure('--prefix={0}'.format(prefix),
'--enable-shared')
diff --git a/var/spack/repos/builtin/packages/libxpm/package.py b/var/spack/repos/builtin/packages/libxpm/package.py
index 09d0b0ec61..40234b1b2d 100644
--- a/var/spack/repos/builtin/packages/libxpm/package.py
+++ b/var/spack/repos/builtin/packages/libxpm/package.py
@@ -46,5 +46,5 @@ class Libxpm(AutotoolsPackage):
depends_on('util-macros', type='build')
def setup_environment(self, spack_env, run_env):
- spack_env.set('LDFLAGS', '-L{0} -lintl'.format(
+ spack_env.append_flags('LDFLAGS', '-L{0} -lintl'.format(
self.spec['gettext'].prefix.lib))
diff --git a/var/spack/repos/builtin/packages/llvm-lld/package.py b/var/spack/repos/builtin/packages/llvm-lld/package.py
index 4624451e69..0ebe2e6b89 100644
--- a/var/spack/repos/builtin/packages/llvm-lld/package.py
+++ b/var/spack/repos/builtin/packages/llvm-lld/package.py
@@ -38,7 +38,10 @@ class LlvmLld(Package):
depends_on('cmake', type='build')
def install(self, spec, prefix):
- env['CXXFLAGS'] = self.compiler.cxx11_flag
+ if 'CXXFLAGS' in env and env['CXXFLAGS']:
+ env['CXXFLAGS'] += ' ' + self.compiler.cxx11_flag
+ else:
+ env['CXXFLAGS'] = self.compiler.cxx11_flag
with working_dir('spack-build', create=True):
cmake('..',
diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py
index 1f88d94882..fc8823f1a8 100644
--- a/var/spack/repos/builtin/packages/llvm/package.py
+++ b/var/spack/repos/builtin/packages/llvm/package.py
@@ -325,7 +325,7 @@ class Llvm(CMakePackage):
conflicts('+lldb', when='~clang')
def setup_environment(self, spack_env, run_env):
- spack_env.set('CXXFLAGS', self.compiler.cxx11_flag)
+ spack_env.append_flags('CXXFLAGS', self.compiler.cxx11_flag)
def build_type(self):
if '+debug' in self.spec:
diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py
index 0d9822f287..30fcef95e1 100644
--- a/var/spack/repos/builtin/packages/zlib/package.py
+++ b/var/spack/repos/builtin/packages/zlib/package.py
@@ -57,7 +57,7 @@ class Zlib(Package):
def setup_environment(self, spack_env, run_env):
if '+pic' in self.spec:
- spack_env.set('CFLAGS', self.compiler.pic_flag)
+ spack_env.append_flags('CFLAGS', self.compiler.pic_flag)
def install(self, spec, prefix):
config_args = []