diff --git a/src/simulator/wscript b/src/simulator/wscript index 3f038d813..fec0412c0 100644 --- a/src/simulator/wscript +++ b/src/simulator/wscript @@ -7,7 +7,9 @@ import Params def set_options(opt): opt.add_option('--high-precision-as-double', help=('Whether to use a double floating point' - ' type for high precision time values'), + ' type for high precision time values' + ' WARNING: this option only has effect ' + 'with the configure command.'), action="store_true", default=False, dest='high_precision_as_double') diff --git a/wscript b/wscript index d67039a54..b5be10dda 100644 --- a/wscript +++ b/wscript @@ -7,6 +7,7 @@ import shutil import Params import Object import pproc as subprocess +import optparse Params.g_autoconfig = 1 @@ -23,11 +24,32 @@ def dist_hook(srcdir, blddir): shutil.rmtree("doc/latex") def set_options(opt): + + def debug_option_callback(option, opt, value, parser): + if value == 'debug': + setattr(parser.values, option.dest, 'ultradebug') + elif value == 'optimized': + setattr(parser.values, option.dest, 'optimized') + else: + raise optparse.OptionValueError("allowed --debug-level values" + " are debug, optimized.") + + opt.add_option('-d', '--debug-level', + action='callback', + type=str, dest='debug_level', default='debug', + help=('Specify the debug level, does nothing if CFLAGS is set' + ' in the environment. [Allowed Values: debug, optimized].' + ' WARNING: this option only has effect ' + 'with the configure command.'), + callback=debug_option_callback) + # options provided by the modules opt.tool_options('compiler_cxx') opt.add_option('--enable-gcov', - help=('Enable code coverage analysis'), + help=('Enable code coverage analysis.' + ' WARNING: this option only has effect ' + 'with the configure command.'), action="store_true", default=False, dest='enable_gcov') @@ -59,10 +81,13 @@ def configure(conf): if not conf.check_tool('compiler_cxx'): Params.fatal("No suitable compiler found") - # create the second environment, set the variant and set its name variant_env = conf.env.copy() - variant_name = Params.g_options.debug_level.lower() + debug_level = Params.g_options.debug_level.lower() + if debug_level == 'ultradebug': + variant_name = 'debug' + else: + variant_name = debug_level if Params.g_options.enable_gcov: variant_name += '-gcov' @@ -79,13 +104,17 @@ def configure(conf): conf.setenv(variant_name) variant_env.append_value('CXXDEFINES', 'RUN_SELF_TESTS') - variant_env.append_value('CXXFLAGS', ['-Wall', '-Werror']) + + if os.path.basename(conf.env['CXX']).startswith("g++"): + variant_env.append_value('CXXFLAGS', ['-Wall', '-Werror']) + if 'debug' in Params.g_options.debug_level.lower(): variant_env.append_value('CXXDEFINES', 'NS3_DEBUG_ENABLE') variant_env.append_value('CXXDEFINES', 'NS3_ASSERT_ENABLE') if sys.platform == 'win32': - variant_env.append_value("LINKFLAGS", "-Wl,--enable-runtime-pseudo-reloc") + if os.path.basename(conf.env['CXX']).startswith("g++"): + variant_env.append_value("LINKFLAGS", "-Wl,--enable-runtime-pseudo-reloc") conf.sub_config('src')