summaryrefslogtreecommitdiff
path: root/SConstruct
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2019-04-24 16:49:12 +0200
committerRémi Verschelde <rverschelde@gmail.com>2019-04-24 16:57:58 +0200
commitc2a669a9f03e249fb4fca96a2adf63256eb8dfa2 (patch)
tree711bd1f6ed3b110ba56af20d6995fe615c3ccf0d /SConstruct
parente1d16e722ec9742c3f92d20dc433d540339c36e6 (diff)
SCons: Review uses of CCFLAGS, CXXFLAGS and CPPFLAGS
Many contributors (me included) did not fully understand what CCFLAGS, CXXFLAGS and CPPFLAGS refer to exactly, and were thus not using them in the way they are intended to be. As per the SCons manual: https://www.scons.org/doc/HTML/scons-user/apa.html - CCFLAGS: General options that are passed to the C and C++ compilers. - CFLAGS: General options that are passed to the C compiler (C only; not C++). - CXXFLAGS: General options that are passed to the C++ compiler. By default, this includes the value of $CCFLAGS, so that setting $CCFLAGS affects both C and C++ compilation. - CPPFLAGS: User-specified C preprocessor options. These will be included in any command that uses the C preprocessor, including not just compilation of C and C++ source files [...], but also [...] Fortran [...] and [...] assembly language source file[s]. TL;DR: Compiler options go to CCFLAGS, unless they must be restricted to either C (CFLAGS) or C++ (CXXFLAGS). Preprocessor defines go to CPPFLAGS.
Diffstat (limited to 'SConstruct')
-rw-r--r--SConstruct20
1 files changed, 11 insertions, 9 deletions
diff --git a/SConstruct b/SConstruct
index 6bb129a174..e943f8dc04 100644
--- a/SConstruct
+++ b/SConstruct
@@ -161,8 +161,8 @@ opts.Add("CXX", "C++ compiler")
opts.Add("CC", "C compiler")
opts.Add("LINK", "Linker")
opts.Add("CCFLAGS", "Custom flags for both the C and C++ compilers")
-opts.Add("CXXFLAGS", "Custom flags for the C++ compiler")
opts.Add("CFLAGS", "Custom flags for the C compiler")
+opts.Add("CXXFLAGS", "Custom flags for the C++ compiler")
opts.Add("LINKFLAGS", "Custom flags for the linker")
# add platform specific options
@@ -271,17 +271,18 @@ if selected_platform in platform_list:
CCFLAGS = env.get('CCFLAGS', '')
env['CCFLAGS'] = ''
-
env.Append(CCFLAGS=str(CCFLAGS).split())
CFLAGS = env.get('CFLAGS', '')
env['CFLAGS'] = ''
-
env.Append(CFLAGS=str(CFLAGS).split())
+ CXXFLAGS = env.get('CXXFLAGS', '')
+ env['CXXFLAGS'] = ''
+ env.Append(CXXFLAGS=str(CXXFLAGS).split())
+
LINKFLAGS = env.get('LINKFLAGS', '')
env['LINKFLAGS'] = ''
-
env.Append(LINKFLAGS=str(LINKFLAGS).split())
flag_list = platform_flags[selected_platform]
@@ -322,15 +323,16 @@ if selected_platform in platform_list:
# FIXME: enable -Wlogical-op and -Wduplicated-branches once #27594 is merged
# Note: enable -Wimplicit-fallthrough for Clang (already part of -Wextra for GCC)
# once we switch to C++11 or later (necessary for our FALLTHROUGH macro).
- env.Append(CCFLAGS=['-Wall', '-Wextra', '-Wno-unused-parameter',
- '-Wctor-dtor-privacy', '-Wnon-virtual-dtor']
+ env.Append(CCFLAGS=['-Wall', '-Wextra', '-Wno-unused-parameter']
+ all_plus_warnings + shadow_local_warning)
+ env.Append(CXXFLAGS=['-Wctor-dtor-privacy', '-Wnon-virtual-dtor'])
if methods.using_gcc(env):
- env['CCFLAGS'] += ['-Wno-clobbered', '-Walloc-zero', '-Wnoexcept',
- '-Wduplicated-cond', '-Wplacement-new=1', '-Wstringop-overflow=4']
+ env.Append(CCFLAGS=['-Wno-clobbered', '-Walloc-zero',
+ '-Wduplicated-cond', '-Wstringop-overflow=4'])
+ env.Append(CXXFLAGS=['-Wnoexcept', '-Wplacement-new=1'])
version = methods.get_compiler_version(env)
if version != None and version[0] >= '9':
- env['CCFLAGS'] += ['-Wattribute-alias=2']
+ env.Append(CCFLAGS=['-Wattribute-alias=2'])
elif (env["warnings"] == 'all'):
env.Append(CCFLAGS=['-Wall'] + shadow_local_warning)
elif (env["warnings"] == 'moderate'):