13
0

new version of autowaf.py (requires rebuild of waf to be used)

This commit is contained in:
Paul Davis 2014-12-17 13:58:42 -05:00
parent da2043e179
commit 58148819d5

View File

@ -183,13 +183,32 @@ def ensure_visible_symbols(bld, visible):
bld.cxxflags += [ '-fvisibility=hidden' ] bld.cxxflags += [ '-fvisibility=hidden' ]
bld.cflags += [ '-fvisibility=hidden' ] bld.cflags += [ '-fvisibility=hidden' ]
def set_basic_compiler_flags (conf,flag_dict):
if Options.options.debug:
conf.env.append_value('CFLAGS',flag_dict['debuggable'])
conf.env.append_value('CXXFLAGS',flag_dict['debuggable'])
conf.env.append_value('LINKFLAGS',flag_dict['linker-debuggable'])
else:
conf.env.append_value('CFLAGS',flag_dict['nondebuggable'])
conf.env.append_value('CXXFLAGS',flag_dict['nondebuggable'])
if Options.options.ultra_strict:
Options.options.strict = True
conf.env.append_value('CFLAGS', flag_dict['ultra-strict'])
if Options.options.strict:
conf.env.append_value('CFLAGS', flag_dict['c-strict'])
conf.env.append_value('CXXFLAGS', flag_dict['cxx-strict'])
conf.env.append_value('CFLAGS', flag_dict['strict'])
conf.env.append_value('CXXFLAGS', flag_dict['strict'])
conf.env.append_value('CFLAGS', flag_dict['show-column'])
conf.env.append_value('CXXFLAGS', flag_dict['show-column'])
def configure(conf): def configure(conf):
global g_step global g_step
if g_step > 1: if g_step > 1:
return return
def append_cxx_flags(flags):
conf.env.append_value('CFLAGS', flags)
conf.env.append_value('CXXFLAGS', flags)
print('') print('')
display_header('Global Configuration') display_header('Global Configuration')
@ -227,58 +246,6 @@ def configure(conf):
if not dot: if not dot:
conf.fatal("Graphviz (dot) is required to build with --docs") conf.fatal("Graphviz (dot) is required to build with --docs")
if Options.options.debug:
if conf.env['MSVC_COMPILER']:
conf.env['CFLAGS'] = ['/Od', '/Zi', '/MTd']
conf.env['CXXFLAGS'] = ['/Od', '/Zi', '/MTd']
conf.env['LINKFLAGS'] = ['/DEBUG']
else:
conf.env['CFLAGS'] = ['-O0', '-g']
conf.env['CXXFLAGS'] = ['-O0', '-g']
else:
if conf.env['MSVC_COMPILER']:
conf.env['CFLAGS'] = ['/MD']
conf.env['CXXFLAGS'] = ['/MD']
append_cxx_flags(['-DNDEBUG'])
if Options.options.ultra_strict:
Options.options.strict = True
conf.env.append_value('CFLAGS', ['-Wredundant-decls',
'-Wstrict-prototypes',
'-Wmissing-prototypes'])
if Options.options.strict:
conf.env.append_value('CFLAGS', ['-std=c99', '-pedantic', '-Wshadow'])
conf.env.append_value('CXXFLAGS', ['-ansi',
'-Wnon-virtual-dtor',
'-Woverloaded-virtual'])
append_cxx_flags(['-Wall',
'-Wcast-align',
'-Wextra',
'-Wwrite-strings'])
if sys.platform != "darwin":
# this is really only to be avoid on OLD apple gcc, but not sure how to version check
append_cxx_flags(['-fstrict-overflow'])
if not conf.check_cc(fragment = '''
#ifndef __clang__
#error
#endif
int main() { return 0; }''',
features = 'c',
mandatory = False,
execute = False,
msg = 'Checking for clang'):
if sys.platform != "darwin":
# this is really only to be avoid on OLD apple gcc, but not sure how to version check
append_cxx_flags(['-Wunsafe-loop-optimizations'])
# this is invalid (still) on Lion apple gcc
append_cxx_flags(['-Wlogical-op'])
if not conf.env['MSVC_COMPILER']:
append_cxx_flags(['-fshow-column'])
conf.env.prepend_value('CFLAGS', '-I' + os.path.abspath('.')) conf.env.prepend_value('CFLAGS', '-I' + os.path.abspath('.'))
conf.env.prepend_value('CXXFLAGS', '-I' + os.path.abspath('.')) conf.env.prepend_value('CXXFLAGS', '-I' + os.path.abspath('.'))
@ -289,13 +256,6 @@ int main() { return 0; }''',
g_step = 2 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_local_lib(conf, name, has_objects): def set_local_lib(conf, name, has_objects):
var_name = 'HAVE_' + nameify(name.upper()) var_name = 'HAVE_' + nameify(name.upper())
define(conf, var_name, 1) define(conf, var_name, 1)