summaryrefslogtreecommitdiffstats
path: root/autowaf.py
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2017-12-16 13:56:42 +0100
committerDavid Robillard <d@drobilla.net>2017-12-18 11:06:02 +0100
commit31e37d4a37fd45c4aaa29aec105f829fab6e4256 (patch)
tree1e489286a2041614a29b44ae295d3dc47471a283 /autowaf.py
parent91d92e665da5be5414885d0a616e58b6435bbe8a (diff)
downloadautowaf-31e37d4a37fd45c4aaa29aec105f829fab6e4256.tar.gz
autowaf-31e37d4a37fd45c4aaa29aec105f829fab6e4256.tar.bz2
autowaf-31e37d4a37fd45c4aaa29aec105f829fab6e4256.zip
Use modern language standards when available
Diffstat (limited to 'autowaf.py')
-rw-r--r--autowaf.py36
1 files changed, 22 insertions, 14 deletions
diff --git a/autowaf.py b/autowaf.py
index 36db3c8..0240727 100644
--- a/autowaf.py
+++ b/autowaf.py
@@ -212,6 +212,9 @@ def configure(conf):
conf.env['CXXFLAGS'] = ['/MD']
append_cxx_flags(['-DNDEBUG'])
+ set_modern_c_flags(conf)
+ set_modern_cxx_flags(conf)
+
if Options.options.ultra_strict:
Options.options.strict = True
conf.env.append_value('CFLAGS', ['-Wredundant-decls',
@@ -277,20 +280,25 @@ int main() { return 0; }''',
g_step = 2
-def set_c99_mode(conf):
- if conf.env.MSVC_COMPILER:
- # MSVC has no hope or desire to compile C99, just compile as C++
- conf.env.append_unique('CFLAGS', ['-TP'])
- else:
- conf.env.append_unique('CFLAGS', ['-std=c99'])
-
-def set_cxx11_mode(conf, mandatory=False):
- if conf.check_cxx(cxxflags=['-std=c++11'], mandatory=False):
- conf.env.append_unique('CXXFLAGS', ['-std=c++11'])
- elif conf.check_cxx(cxxflags=['-std=c++0x'], mandatory=False):
- conf.env.append_unique('CXXFLAGS', ['-std=c++0x'])
- elif mandatory:
- Logs.error('No C++11 compiler flags supported')
+def set_modern_c_flags(conf):
+ if 'COMPILER_CC' in conf.env:
+ if conf.env.MSVC_COMPILER:
+ # MSVC has no hope or desire to compile C99, just compile as C++
+ conf.env.append_unique('CFLAGS', ['-TP'])
+ else:
+ for flag in ['-std=c11', '-std=c99']:
+ if conf.check(cflags=['-Werror', flag], mandatory=False,
+ msg="Checking for flag '%s'" % flag):
+ conf.env.append_unique('CFLAGS', [flag])
+ break
+
+def set_modern_cxx_flags(conf, mandatory=False):
+ if 'COMPILER_CXX' in conf.env:
+ for flag in ['-std=c++14', '-std=c++1y', '-std=c++11', '-std=c++0x']:
+ if conf.check(cxxflags=['-Werror', flag], mandatory=False,
+ msg="Checking for flag '%s'" % flag):
+ conf.env.append_unique('CXXFLAGS', [flag])
+ break
def set_local_lib(conf, name, has_objects):
var_name = 'HAVE_' + nameify(name.upper())