summaryrefslogtreecommitdiffstats
path: root/autowaf.py
diff options
context:
space:
mode:
Diffstat (limited to 'autowaf.py')
-rw-r--r--autowaf.py26
1 files changed, 23 insertions, 3 deletions
diff --git a/autowaf.py b/autowaf.py
index d6f5c8b..0123b1d 100644
--- a/autowaf.py
+++ b/autowaf.py
@@ -229,9 +229,6 @@ def configure(conf):
else:
append_cxx_flags(['-DNDEBUG'])
- set_modern_c_flags(conf)
- set_modern_cxx_flags(conf)
-
if conf.env.MSVC_COMPILER:
Options.options.no_coverage = True
if Options.options.strict:
@@ -307,7 +304,29 @@ def display_summary(conf):
display_msg(conf, "Debuggable build", bool(conf.env['DEBUG']))
display_msg(conf, "Build documentation", bool(conf.env['DOCS']))
+def set_c_lang(conf, lang):
+ "Set a specific C language standard, like 'c99' or 'c11'"
+ 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:
+ flag = '-std=%s' % lang
+ conf.check(cflags=['-Werror', flag], msg="Checking for flag '%s'" % flag)
+ conf.env.append_unique('CFLAGS', [flag])
+
+def set_cxx_lang(conf, lang):
+ "Set a specific C++ language standard, like 'c++11', 'c++14', or 'c++17'"
+ if conf.env.MSVC_COMPILER:
+ if lang != 'c++14':
+ lang = 'c++latest'
+ conf.env.append_unique('CXXFLAGS', ['/std:%s' % lang])
+ else:
+ flag = '-std=%s' % lang
+ conf.check(cxxflags=['-Werror', flag], msg="Checking for flag '%s'" % flag)
+ conf.env.append_unique('CXXFLAGS', [flag])
+
def set_modern_c_flags(conf):
+ "Use the most modern C language available"
if 'COMPILER_CC' in conf.env:
if conf.env.MSVC_COMPILER:
# MSVC has no hope or desire to compile C99, just compile as C++
@@ -320,6 +339,7 @@ def set_modern_c_flags(conf):
break
def set_modern_cxx_flags(conf, mandatory=False):
+ "Use the most modern C++ language available"
if 'COMPILER_CXX' in conf.env:
if conf.env.MSVC_COMPILER:
conf.env.append_unique('CXXFLAGS', ['/std:c++latest'])