summaryrefslogtreecommitdiffstats
path: root/extras/autowaf.py
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-07-04 16:36:00 +0200
committerDavid Robillard <d@drobilla.net>2020-07-04 16:36:00 +0200
commit1c6811a5a10f37d0cbb8774db58e432f0d36d230 (patch)
tree9207b5fe63edbd55750d57e4c77bafb2751ef6b0 /extras/autowaf.py
parent158a547ad7b9a01f991d2c378e17f704a99c6584 (diff)
downloadautowaf-1c6811a5a10f37d0cbb8774db58e432f0d36d230.tar.gz
autowaf-1c6811a5a10f37d0cbb8774db58e432f0d36d230.tar.bz2
autowaf-1c6811a5a10f37d0cbb8774db58e432f0d36d230.zip
Change warning functions to work with any environment
This allows them to be used in special build targets, for example to test stricter warnings for headers.
Diffstat (limited to 'extras/autowaf.py')
-rw-r--r--extras/autowaf.py56
1 files changed, 32 insertions, 24 deletions
diff --git a/extras/autowaf.py b/extras/autowaf.py
index 8fb30da..65d1c1f 100644
--- a/extras/autowaf.py
+++ b/extras/autowaf.py
@@ -418,36 +418,44 @@ gcc_cxx_warnings = [
]
-def remove_all_warning_flags(conf):
+def remove_all_warning_flags(env):
"""Removes all warning flags except Werror or equivalent"""
- if 'clang' in conf.env.CC_NAME or 'gcc' in conf.env.CC_NAME:
+ if 'clang' in env.CC_NAME or 'gcc' in env.CC_NAME:
for var in ['CFLAGS', 'CXXFLAGS']:
- flags = conf.env[var]
- conf.env[var] = [f for f in flags
- if not (f.startswith('-W') and f != '-Werror')]
- elif 'msvc' in conf.env.CC_NAME:
+ flags = env[var]
+ env[var] = [f for f in flags
+ if not (f.startswith('-W') and f != '-Werror')]
+ elif 'msvc' in env.CC_NAME:
for var in ['CFLAGS', 'CXXFLAGS']:
- flags = conf.env[var]
- conf.env[var] = [f for f in flags
+ flags = env[var]
+ env[var] = [f for f in flags
if not (f.startswith('/W') and f != '/WX')]
-def enable_all_warnings(conf):
+def enable_all_warnings(env):
"""Enables all known warnings"""
- if 'clang' in conf.env.CC_NAME:
- conf.env.append_unique('CFLAGS', ['-Weverything'])
- conf.env.append_unique('CXXFLAGS', ['-Weverything'])
- elif 'gcc' in conf.env.CC_NAME:
- conf.env.append_unique('CFLAGS', gcc_common_warnings)
- conf.env.append_unique('CXXFLAGS', gcc_common_warnings)
- conf.env.append_unique('CFLAGS', gcc_c_warnings)
- conf.env.append_unique('CXXFLAGS', gcc_cxx_warnings)
- elif conf.env.MSVC_COMPILER:
- conf.env.append_unique('CFLAGS', ['/Wall'])
- conf.env.append_unique('CXXFLAGS', ['/Wall'])
+ if 'clang' in env.CC_NAME:
+ env.append_unique('CFLAGS', ['-Weverything'])
+ env.append_unique('CXXFLAGS', ['-Weverything'])
+ elif 'gcc' in env.CC_NAME:
+ env.append_unique('CFLAGS', gcc_common_warnings)
+ env.append_unique('CXXFLAGS', gcc_common_warnings)
+ env.append_unique('CFLAGS', gcc_c_warnings)
+ env.append_unique('CXXFLAGS', gcc_cxx_warnings)
+ elif env.MSVC_COMPILER:
+ env.append_unique('CFLAGS', ['/Wall'])
+ env.append_unique('CXXFLAGS', ['/Wall'])
else:
- Logs.warn('Unknown compiler "%s", not enabling warnings'
- % conf.env.CC_NAME)
+ Logs.warn('Unknown compiler "%s", not enabling warnings' % env.CC_NAME)
+
+
+def set_warnings_as_errors(env):
+ if 'clang' in env.CC_NAME or 'gcc' in env.CC_NAME:
+ env.append_unique('CFLAGS', ['-Werror'])
+ env.append_unique('CXXFLAGS', ['-Werror'])
+ elif env.MSVC_COMPILER:
+ env.append_unique('CFLAGS', ['/WX'])
+ env.append_unique('CXXFLAGS', ['/WX'])
def configure(conf):
@@ -504,8 +512,8 @@ def configure(conf):
if Options.options.ultra_strict:
Options.options.strict = True
- remove_all_warning_flags(conf)
- enable_all_warnings(conf)
+ remove_all_warning_flags(conf.env)
+ enable_all_warnings(conf.env)
if conf.env.MSVC_COMPILER:
Options.options.no_coverage = True