diff -up ./SCons/Config/gnu.debug ./SCons/Config/gnu --- ./SCons/Config/gnu.debug 2009-02-13 12:41:42.000000000 +0100 +++ ./SCons/Config/gnu 2009-02-13 12:42:37.000000000 +0100 @@ -68,13 +68,16 @@ cross_env(stub_env) stub_env.Append(CPPPATH = ['#$BUILD_CONFIG']) -if not defenv['DEBUG']: - stub_env.Append(CCFLAGS = ['-Os']) # optimize for size +if defenv['DEBUG_SYMBOLS']: + stub_env.Append(LINKFLAGS = '-g') # debugging + stub_env.Append(CCFLAGS = '-g') # debugging +if not defenv['DEBUG'] and defenv['OPT']: + stub_env.Append(CCFLAGS = ['-O2']) # optimize stub_env.Append(CCFLAGS = ['-Wall']) # all warnings stub_env.Append(CCFLAGS = ['-xc']) # force compile as c stub_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict aliasing -if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']: +if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] and defenv['STRIP_W32']: stub_env.Append(LINKFLAGS = ['-s']) # strip stub_env.Append(LINKFLAGS = ['-mwindows']) # build windows executables stub_env.Append(LINKFLAGS = ['$NODEFLIBS_FLAG']) # no standard libraries @@ -88,15 +91,18 @@ makensis_env = defenv.Clone() makensis_env.Append(CPPPATH = ['#$BUILD_CONFIG']) -if not defenv['DEBUG']: - makensis_env.Append(CCFLAGS = ['-O2']) # optimize +if defenv['DEBUG_SYMBOLS']: + makensis_env.Append(LINKFLAGS = '-g') # debugging + makensis_env.Append(CCFLAGS = '-g') # debugging +if not defenv['DEBUG'] and defenv['OPT']: + makensis_env.Append(CCFLAGS = ['-O2']) # optimize makensis_env.Append(CFLAGS = ['-Wall']) # all warnings makensis_env.Append(CXXFLAGS = ['-Wno-non-virtual-dtor']) # ignore virtual dtor warnings makensis_env.Append(CXXFLAGS = ['-Wall']) # all warnings conf = FlagsConfigure(makensis_env) conf.CheckLinkFlag('$MAP_FLAG') # generate map file -if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']: +if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] and defenv['STRIP_CP']: TestStrip(conf) # strip conf.Finish() @@ -105,12 +111,15 @@ conf.Finish() plugin_env = defenv.Clone() cross_env(plugin_env) -if not defenv['DEBUG']: - plugin_env.Append(CCFLAGS = ['-Os']) # optimize for size +if defenv['DEBUG_SYMBOLS']: + plugin_env.Append(LINKFLAGS = '-g') # debugging + plugin_env.Append(CCFLAGS = '-g') # debugging +if not defenv['DEBUG'] and defenv['OPT']: + plugin_env.Append(CCFLAGS = ['-O2']) # optimize plugin_env.Append(CCFLAGS = ['-Wall']) # level 3 warnings plugin_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict aliasing -if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']: +if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] and defenv['STRIP_W32']: plugin_env.Append(LINKFLAGS = ['-s']) # strip plugin_env.Append(LINKFLAGS = ['-mwindows']) # build windows executables plugin_env.Append(LINKFLAGS = ['$ALIGN_FLAG']) # 512 bytes align @@ -122,7 +131,10 @@ cp_util_env = defenv.Clone() cp_util_env.Append(CPPPATH = ['#$BUILD_CONFIG']) -if not defenv['DEBUG']: +if defenv['DEBUG_SYMBOLS']: + cp_util_env.Append(LINKFLAGS = '-g') # debugging + cp_util_env.Append(CCFLAGS = '-g') # debugging +if not defenv['DEBUG'] and defenv['OPT']: cp_util_env.Append(CCFLAGS = ['-O2']) # optimize cp_util_env.Append(CCFLAGS = ['-Wall']) # all warnings cp_util_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict aliasing @@ -140,7 +152,7 @@ util_env.Append(LINKFLAGS = ['-mwindows' util_env.Append(LINKFLAGS = ['$ALIGN_FLAG']) # 512 bytes align conf = FlagsConfigure(util_env) -if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']: +if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] and defenv['STRIP_W32']: util_env.Append(LINKFLAGS = ['-s']) # strip conf.Finish() @@ -149,7 +161,7 @@ conf.Finish() conf = FlagsConfigure(cp_util_env) conf.CheckCompileFlag('-m32') conf.CheckLinkFlag('-m32') -if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']: +if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] and defenv['STRIP_CP']: TestStrip(conf) # strip conf.Finish() @@ -157,6 +169,9 @@ conf.Finish() test_env = defenv.Clone() test_env.Append(CPPPATH = ['#$BUILD_CONFIG']) +if defenv['DEBUG_SYMBOLS']: + test_env.Append(LINKFLAGS = '-g') # debugging + test_env.Append(CCFLAGS = '-g') # debugging conf = FlagsConfigure(test_env) conf.CheckCompileFlag('-m32') conf.CheckLinkFlag('-m32') diff -up ./SConstruct.debug ./SConstruct --- ./SConstruct.debug 2009-02-04 15:05:48.000000000 +0100 +++ ./SConstruct 2009-02-13 12:41:42.000000000 +0100 @@ -157,6 +157,8 @@ opts.Add(('APPEND_CCFLAGS', 'Additional opts.Add(('APPEND_LINKFLAGS', 'Additional linker flags')) # build options opts.Add(BoolVariable('DEBUG', 'Build executables with debugging information', 'no')) +opts.Add(BoolOption('DEBUG_SYMBOLS', 'Build with debugging information, but none of the side effects of DEBUG', 'no')) +opts.Add(BoolOption('OPT', 'Build with optimization', 'yes')) opts.Add(PathVariable('CODESIGNER', 'A program used to sign executables', None)) opts.Add(BoolVariable('STRIP', 'Strips executables of any unrequired data such as symbols', 'yes')) opts.Add(BoolVariable('STRIP_CP', 'Strips cross-platform executables of any unrequired data such as symbols', 'yes'))