wscript: when needed, force gcc optimizations in order to enable -Wuninitialized

This commit is contained in:
Nedko Arnaudov 2010-06-05 15:32:37 +03:00
parent 6b6ba6c9ca
commit 0a3ee8cd54
1 changed files with 28 additions and 0 deletions

28
wscript
View File

@ -52,6 +52,17 @@ def add_cflag(conf, flag):
def add_linkflag(conf, flag):
conf.env.append_unique('LINKFLAGS', flag)
def check_gcc_optimizations_enabled(flags):
gcc_optimizations_enabled = False
for flag in flags:
if len(flag) < 2 or flag[0] != '-' or flag[1] != 'O':
continue
if len(flag) == 2:
gcc_optimizations_enabled = True;
else:
gcc_optimizations_enabled = flag[2] != '0';
return gcc_optimizations_enabled
def configure(conf):
conf.check_tool('compiler_cc')
conf.check_tool('compiler_cxx')
@ -141,6 +152,20 @@ def configure(conf):
if conf.env['BUILD_WERROR']:
add_cflag(conf, '-Wall')
add_cflag(conf, '-Werror')
# for pre gcc-4.4, enable optimizations so use of uninitialized variables gets detected
try:
is_gcc = conf.env['CC_NAME'] == 'gcc'
if is_gcc:
gcc_ver = []
for n in conf.env['CC_VERSION']:
gcc_ver.append(int(n))
if gcc_ver[0] < 4 or gcc_ver[1] < 4:
#print "optimize force enable is required"
if not check_gcc_optimizations_enabled(conf.env['CCFLAGS']):
print "C optimization forced in order to enable -Wuninitialized"
conf.env.append_unique('CCFLAGS', "-O")
except:
pass
conf.env['BUILD_DEBUG'] = not RELEASE or Options.options.debug
if conf.env['BUILD_DEBUG']:
@ -191,6 +216,9 @@ def configure(conf):
display_line(conf, 'WARNING: You can override dbus service install directory', 'RED')
display_line(conf, 'WARNING: with --enable-pkg-config-dbus-service-dir option to this script', 'RED')
display_msg(conf, 'C compiler flags', conf.env['CCFLAGS'])
display_msg(conf, 'C++ compiler flags', conf.env['CXXFLAGS'])
display_msg(conf)
def build(bld):