diff options
author | David Robillard <d@drobilla.net> | 2020-07-04 16:36:00 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-07-04 16:36:00 +0200 |
commit | 1c6811a5a10f37d0cbb8774db58e432f0d36d230 (patch) | |
tree | 9207b5fe63edbd55750d57e4c77bafb2751ef6b0 | |
parent | 158a547ad7b9a01f991d2c378e17f704a99c6584 (diff) | |
download | autowaf-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.
-rw-r--r-- | extras/autowaf.py | 56 |
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 |