293 env['ENABLE_STATIC_NS3'] = False |
293 env['ENABLE_STATIC_NS3'] = False |
294 if Options.options.enable_static: |
294 if Options.options.enable_static: |
295 if env['PLATFORM'].startswith('linux') and \ |
295 if env['PLATFORM'].startswith('linux') and \ |
296 env['CXX_NAME'] == 'gcc': |
296 env['CXX_NAME'] == 'gcc': |
297 if os.uname()[4] == 'i386': |
297 if os.uname()[4] == 'i386': |
298 conf.report_optional_feature("static", "Static build", True, |
298 conf.report_optional_feature("static", "Static build", True, '') |
299 "Enabled by user request") |
|
300 env['ENABLE_STATIC_NS3'] = True |
299 env['ENABLE_STATIC_NS3'] = True |
301 elif os.uname()[4] == 'x86_64': |
300 elif os.uname()[4] == 'x86_64': |
302 if env['ENABLE_PYTHON_BINDINGS'] and \ |
301 if env['ENABLE_PYTHON_BINDINGS'] and \ |
303 not conf.check_compilation_flag('-mcmodel=large'): |
302 not conf.check_compilation_flag('-mcmodel=large'): |
304 conf.report_optional_feature("static", "Static build", False, |
303 conf.report_optional_feature("static", "Static build", False, |
305 "Can't enable static builds because " + \ |
304 "Can't enable static builds because " + \ |
306 "of python and no -mcmodel=large compiler " \ |
305 "of python and no -mcmodel=large compiler " \ |
307 "option. Try --disable-python or upgrade your " \ |
306 "option. Try --disable-python or upgrade your " \ |
308 "compiler.") |
307 "compiler.") |
309 else: |
308 else: |
310 conf.report_optional_feature("static", "Static build", True, |
309 conf.report_optional_feature("static", "Static build", True, '') |
311 "Enabled by user request. Try --disable-python " \ |
310 env['ENABLE_STATIC_NS3'] = True |
312 "to get higher performance.") |
311 elif env['PLATFORM'].startswith('darwin') and \ |
313 env['ENABLE_STATIC_NS3'] = True |
312 env['CXX_NAME'] == 'gcc': |
314 |
313 conf.report_optional_feature("static", "Static build", True, '') |
|
314 env['ENABLE_STATIC_NS3'] = True |
315 else: |
315 else: |
316 conf.report_optional_feature("static", "Static build", False, |
316 conf.report_optional_feature("static", "Static build", False, |
317 "Unsupported platform") |
317 "Unsupported platform") |
318 else: |
318 else: |
319 conf.report_optional_feature("static", "Static build", False, |
319 conf.report_optional_feature("static", "Static build", False, |
385 program.name = name |
385 program.name = name |
386 program.target = program.name |
386 program.target = program.name |
387 program.uselib_local = 'ns3' |
387 program.uselib_local = 'ns3' |
388 program.ns3_module_dependencies = ['ns3-'+dep for dep in dependencies] |
388 program.ns3_module_dependencies = ['ns3-'+dep for dep in dependencies] |
389 if program.env['ENABLE_STATIC_NS3']: |
389 if program.env['ENABLE_STATIC_NS3']: |
390 program.env.append_value('LINKFLAGS', '-Wl,--whole-archive,-Bstatic') |
390 if sys.platform == 'darwin': |
391 program.env.append_value('LINKFLAGS', '-lns3') |
391 program.env.append_value('LINKFLAGS', '-Wl,-all_load') |
392 program.env.append_value('LINKFLAGS', '-Wl,-Bdynamic,--no-whole-archive') |
392 program.env.append_value('LINKFLAGS', '-lns3') |
|
393 else: |
|
394 program.env.append_value('LINKFLAGS', '-Wl,--whole-archive,-Bstatic') |
|
395 program.env.append_value('LINKFLAGS', '-lns3') |
|
396 program.env.append_value('LINKFLAGS', '-Wl,-Bdynamic,--no-whole-archive') |
393 return program |
397 return program |
394 |
398 |
395 def add_scratch_programs(bld): |
399 def add_scratch_programs(bld): |
396 all_modules = [mod[len("ns3-"):] for mod in bld.env['NS3_MODULES']] |
400 all_modules = [mod[len("ns3-"):] for mod in bld.env['NS3_MODULES']] |
397 for filename in os.listdir("scratch"): |
401 for filename in os.listdir("scratch"): |