|
36 |
# Bug 2181: clang warnings about unused local typedefs and potentially |
36 |
# Bug 2181: clang warnings about unused local typedefs and potentially |
37 |
# evaluated expressions affecting darwin clang/LLVM version 7.0.0 (Xcode 7) |
37 |
# evaluated expressions affecting darwin clang/LLVM version 7.0.0 (Xcode 7) |
38 |
# or clang/LLVM version 3.6 or greater. We must make this platform-specific. |
38 |
# or clang/LLVM version 3.6 or greater. We must make this platform-specific. |
39 |
darwin_clang_version_warn_unused_local_typedefs = ('7', '0', '0') |
39 |
darwin_clang_version_warn_unused_local_typedefs = (7, 0, 0) |
40 |
darwin_clang_version_warn_potentially_evaluated = ('7', '0', '0') |
40 |
darwin_clang_version_warn_potentially_evaluated = (7, 0, 0) |
41 |
clang_version_warn_unused_local_typedefs = ('3', '6', '0') |
41 |
clang_version_warn_unused_local_typedefs = (3, 6, 0) |
42 |
clang_version_warn_potentially_evaluated = ('3', '6', '0') |
42 |
clang_version_warn_potentially_evaluated = (3, 6, 0) |
43 |
|
43 |
|
44 |
# Get the information out of the NS-3 configuration file. |
44 |
# Get the information out of the NS-3 configuration file. |
45 |
config_file_exists = False |
45 |
config_file_exists = False |
|
124 |
print() |
124 |
print() |
125 |
|
125 |
|
126 |
# return types of some APIs differ in Python 2/3 (type string vs class bytes) |
126 |
# return types of some APIs differ in Python 2/3 (type string vs class bytes) |
127 |
# This method will decode('utf-8') a byte object in Python 3, |
127 |
# This method will decode('utf-8') a byte object in Python 3, |
128 |
# and do nothing in Python 2 |
128 |
# and do nothing in Python 2 |
129 |
def maybe_decode(input): |
129 |
def maybe_decode(input): |
130 |
if sys.version_info < (3,): |
130 |
if sys.version_info < (3,): |
|
147 |
help=('Print the current configuration.'), |
147 |
help=('Print the current configuration.'), |
148 |
action="store_true", default=False, |
148 |
action="store_true", default=False, |
149 |
dest="check_config") |
149 |
dest="check_config") |
150 |
|
150 |
|
151 |
opt.add_option('--cwd', |
151 |
opt.add_option('--cwd', |
152 |
help=('Set the working directory for a program.'), |
152 |
help=('Set the working directory for a program.'), |
153 |
action="store", type="string", default=None, |
153 |
action="store", type="string", default=None, |
|
319 |
profile = get_build_profile(env) |
319 |
profile = get_build_profile(env) |
320 |
else: |
320 |
else: |
321 |
profile = get_build_profile() |
321 |
profile = get_build_profile() |
322 |
|
322 |
|
323 |
print("---- Summary of optional NS-3 features:") |
323 |
print("---- Summary of optional NS-3 features:") |
324 |
print("%-30s: %s%s%s" % ("Build profile", Logs.colors('GREEN'), |
324 |
print("%-30s: %s%s%s" % ("Build profile", Logs.colors('GREEN'), |
325 |
profile, Logs.colors('NORMAL'))) |
325 |
profile, Logs.colors('NORMAL'))) |
326 |
bld = wutils.bld |
326 |
bld = wutils.bld |
327 |
print("%-30s: %s%s%s" % ("Build directory", Logs.colors('GREEN'), |
327 |
print("%-30s: %s%s%s" % ("Build directory", Logs.colors('GREEN'), |
328 |
Options.options.out, Logs.colors('NORMAL'))) |
328 |
Options.options.out, Logs.colors('NORMAL'))) |
329 |
|
329 |
|
330 |
|
330 |
|
331 |
for (name, caption, was_enabled, reason_not_enabled) in sorted(env['NS3_OPTIONAL_FEATURES'], key=lambda s : s[1]): |
331 |
for (name, caption, was_enabled, reason_not_enabled) in sorted(env['NS3_OPTIONAL_FEATURES'], key=lambda s : s[1]): |
332 |
if was_enabled: |
332 |
if was_enabled: |
333 |
status = 'enabled' |
333 |
status = 'enabled' |
|
384 |
env['BUILD_SUFFIX'] = '' |
384 |
env['BUILD_SUFFIX'] = '' |
385 |
else: |
385 |
else: |
386 |
env['BUILD_SUFFIX'] = '-'+Options.options.build_profile |
386 |
env['BUILD_SUFFIX'] = '-'+Options.options.build_profile |
387 |
|
387 |
|
388 |
env['APPNAME'] = wutils.APPNAME |
388 |
env['APPNAME'] = wutils.APPNAME |
389 |
env['VERSION'] = wutils.VERSION |
389 |
env['VERSION'] = wutils.VERSION |
390 |
|
390 |
|
|
394 |
('.'.join(conf.env['CC_VERSION']), '.'.join(map(str, gcc_min_version)))) |
394 |
('.'.join(conf.env['CC_VERSION']), '.'.join(map(str, gcc_min_version)))) |
395 |
|
395 |
|
396 |
if conf.env['CXX_NAME'] in ['gcc', 'icc']: |
396 |
if conf.env['CXX_NAME'] in ['gcc', 'icc']: |
397 |
if Options.options.build_profile == 'release': |
397 |
if Options.options.build_profile == 'release': |
398 |
env.append_value('CXXFLAGS', '-fomit-frame-pointer') |
398 |
env.append_value('CXXFLAGS', '-fomit-frame-pointer') |
399 |
if Options.options.build_profile == 'optimized': |
399 |
if Options.options.build_profile == 'optimized': |
400 |
if conf.check_compilation_flag('-march=native'): |
400 |
if conf.check_compilation_flag('-march=native'): |
401 |
env.append_value('CXXFLAGS', '-march=native') |
401 |
env.append_value('CXXFLAGS', '-march=native') |
402 |
env.append_value('CXXFLAGS', '-fstrict-overflow') |
402 |
env.append_value('CXXFLAGS', '-fstrict-overflow') |
403 |
if conf.env['CXX_NAME'] in ['gcc']: |
403 |
if conf.env['CXX_NAME'] in ['gcc']: |
404 |
env.append_value('CXXFLAGS', '-Wstrict-overflow=2') |
404 |
env.append_value('CXXFLAGS', '-Wstrict-overflow=2') |
|
424 |
# bug 2181 on clang warning suppressions |
424 |
# bug 2181 on clang warning suppressions |
425 |
if conf.env['CXX_NAME'] in ['clang']: |
425 |
if conf.env['CXX_NAME'] in ['clang']: |
426 |
if Utils.unversioned_sys_platform() == 'darwin': |
426 |
if Utils.unversioned_sys_platform() == 'darwin': |
427 |
if conf.env['CC_VERSION'] >= darwin_clang_version_warn_unused_local_typedefs: |
427 |
if tuple(map(int, conf.env['CC_VERSION'])) >= darwin_clang_version_warn_unused_local_typedefs: |
428 |
env.append_value('CXXFLAGS', '-Wno-unused-local-typedefs') |
428 |
env.append_value('CXXFLAGS', '-Wno-unused-local-typedefs') |
429 |
if conf.env['CC_VERSION'] >= darwin_clang_version_warn_potentially_evaluated: |
429 |
if tuple(map(int, conf.env['CC_VERSION'])) >= darwin_clang_version_warn_potentially_evaluated: |
430 |
env.append_value('CXXFLAGS', '-Wno-potentially-evaluated-expression') |
430 |
env.append_value('CXXFLAGS', '-Wno-potentially-evaluated-expression') |
431 |
else: |
431 |
else: |
432 |
if conf.env['CC_VERSION'] >= clang_version_warn_unused_local_typedefs: |
432 |
if tuple(map(int, conf.env['CC_VERSION'])) >= clang_version_warn_unused_local_typedefs: |
433 |
env.append_value('CXXFLAGS', '-Wno-unused-local-typedefs') |
433 |
env.append_value('CXXFLAGS', '-Wno-unused-local-typedefs') |
434 |
if conf.env['CC_VERSION'] >= clang_version_warn_potentially_evaluated: |
434 |
if tuple(map(int, conf.env['CC_VERSION'])) >= clang_version_warn_potentially_evaluated: |
435 |
env.append_value('CXXFLAGS', '-Wno-potentially-evaluated-expression') |
435 |
env.append_value('CXXFLAGS', '-Wno-potentially-evaluated-expression') |
436 |
env['ENABLE_STATIC_NS3'] = False |
436 |
env['ENABLE_STATIC_NS3'] = False |
437 |
if Options.options.enable_static: |
437 |
if Options.options.enable_static: |
|
451 |
"Link flag -Wl,--whole-archive,-Bstatic does not work") |
451 |
"Link flag -Wl,--whole-archive,-Bstatic does not work") |
452 |
|
452 |
|
453 |
# Enables C++-11 support by default, unless user specified another option |
453 |
# Enables C++-11 support by default, unless user specified another option |
454 |
# Warn the user if the CXX Standard flag provided was not recognized |
454 |
# Warn the user if the CXX Standard flag provided was not recognized |
455 |
if conf.check_compilation_flag(Options.options.cxx_standard): |
455 |
if conf.check_compilation_flag(Options.options.cxx_standard): |
456 |
env.append_value('CXXFLAGS', Options.options.cxx_standard) |
456 |
env.append_value('CXXFLAGS', Options.options.cxx_standard) |
457 |
else: |
457 |
else: |
|
470 |
|
470 |
|
471 |
# Set the list of enabled modules. |
471 |
# Set the list of enabled modules. |
472 |
if Options.options.enable_modules: |
472 |
if Options.options.enable_modules: |
473 |
# Use the modules explicitly enabled. |
473 |
# Use the modules explicitly enabled. |
474 |
_enabled_mods = [] |
474 |
_enabled_mods = [] |
475 |
_enabled_contrib_mods = [] |
475 |
_enabled_contrib_mods = [] |
476 |
for mod in Options.options.enable_modules.split(','): |
476 |
for mod in Options.options.enable_modules.split(','): |
477 |
if mod in conf.env['NS3_MODULES'] and mod.startswith('ns3-'): |
477 |
if mod in conf.env['NS3_MODULES'] and mod.startswith('ns3-'): |
478 |
_enabled_mods.append(mod) |
478 |
_enabled_mods.append(mod) |
479 |
elif 'ns3-' + mod in conf.env['NS3_MODULES']: |
479 |
elif 'ns3-' + mod in conf.env['NS3_MODULES']: |
480 |
_enabled_mods.append('ns3-' + mod) |
480 |
_enabled_mods.append('ns3-' + mod) |
481 |
elif mod in conf.env['NS3_CONTRIBUTED_MODULES'] and mod.startswith('ns3-'): |
481 |
elif mod in conf.env['NS3_CONTRIBUTED_MODULES'] and mod.startswith('ns3-'): |
482 |
_enabled_contrib_mods.append(mod) |
482 |
_enabled_contrib_mods.append(mod) |
483 |
elif 'ns3-' + mod in conf.env['NS3_CONTRIBUTED_MODULES']: |
483 |
elif 'ns3-' + mod in conf.env['NS3_CONTRIBUTED_MODULES']: |
484 |
_enabled_contrib_mods.append('ns3-' + mod) |
484 |
_enabled_contrib_mods.append('ns3-' + mod) |
485 |
conf.env['NS3_ENABLED_MODULES'] = _enabled_mods |
485 |
conf.env['NS3_ENABLED_MODULES'] = _enabled_mods |
486 |
conf.env['NS3_ENABLED_CONTRIBUTED_MODULES'] = _enabled_contrib_mods |
486 |
conf.env['NS3_ENABLED_CONTRIBUTED_MODULES'] = _enabled_contrib_mods |
487 |
|
487 |
|
488 |
else: |
488 |
else: |
489 |
# Use the enabled modules list from the ns3 configuration file. |
489 |
# Use the enabled modules list from the ns3 configuration file. |
490 |
if modules_enabled[0] == 'all_modules': |
490 |
if modules_enabled[0] == 'all_modules': |
|
495 |
# Enable the modules from the list. |
495 |
# Enable the modules from the list. |
496 |
_enabled_mods = [] |
496 |
_enabled_mods = [] |
497 |
_enabled_contrib_mods = [] |
497 |
_enabled_contrib_mods = [] |
498 |
for mod in modules_enabled: |
498 |
for mod in modules_enabled: |
499 |
if mod in conf.env['NS3_MODULES'] and mod.startswith('ns3-'): |
499 |
if mod in conf.env['NS3_MODULES'] and mod.startswith('ns3-'): |
500 |
_enabled_mods.append(mod) |
500 |
_enabled_mods.append(mod) |
501 |
elif 'ns3-' + mod in conf.env['NS3_MODULES']: |
501 |
elif 'ns3-' + mod in conf.env['NS3_MODULES']: |
502 |
_enabled_mods.append('ns3-' + mod) |
502 |
_enabled_mods.append('ns3-' + mod) |
503 |
elif mod in conf.env['NS3_CONTRIBUTED_MODULES'] and mod.startswith('ns3-'): |
503 |
elif mod in conf.env['NS3_CONTRIBUTED_MODULES'] and mod.startswith('ns3-'): |
504 |
_enabled_contrib_mods.append(mod) |
504 |
_enabled_contrib_mods.append(mod) |
505 |
elif 'ns3-' + mod in conf.env['NS3_CONTRIBUTED_MODULES']: |
505 |
elif 'ns3-' + mod in conf.env['NS3_CONTRIBUTED_MODULES']: |
506 |
_enabled_contrib_mods.append('ns3-' + mod) |
506 |
_enabled_contrib_mods.append('ns3-' + mod) |
507 |
conf.env['NS3_ENABLED_MODULES'] = _enabled_mods |
507 |
conf.env['NS3_ENABLED_MODULES'] = _enabled_mods |
508 |
conf.env['NS3_ENABLED_CONTRIBUTED_MODULES'] = _enabled_contrib_mods |
508 |
conf.env['NS3_ENABLED_CONTRIBUTED_MODULES'] = _enabled_contrib_mods |
|
546 |
|
546 |
|
547 |
# Decide if tests will be built or not. |
547 |
# Decide if tests will be built or not. |
548 |
if Options.options.enable_tests: |
548 |
if Options.options.enable_tests: |
549 |
# Tests were explicitly enabled. |
549 |
# Tests were explicitly enabled. |
550 |
env['ENABLE_TESTS'] = True |
550 |
env['ENABLE_TESTS'] = True |
551 |
why_not_tests = "option --enable-tests selected" |
551 |
why_not_tests = "option --enable-tests selected" |
552 |
elif Options.options.disable_tests: |
552 |
elif Options.options.disable_tests: |
553 |
# Tests were explicitly disabled. |
553 |
# Tests were explicitly disabled. |
554 |
env['ENABLE_TESTS'] = False |
554 |
env['ENABLE_TESTS'] = False |
555 |
why_not_tests = "option --disable-tests selected" |
555 |
why_not_tests = "option --disable-tests selected" |
556 |
else: |
556 |
else: |
|
567 |
|
567 |
|
568 |
# Decide if examples will be built or not. |
568 |
# Decide if examples will be built or not. |
569 |
if Options.options.enable_examples: |
569 |
if Options.options.enable_examples: |
570 |
# Examples were explicitly enabled. |
570 |
# Examples were explicitly enabled. |
571 |
env['ENABLE_EXAMPLES'] = True |
571 |
env['ENABLE_EXAMPLES'] = True |
572 |
why_not_examples = "option --enable-examples selected" |
572 |
why_not_examples = "option --enable-examples selected" |
573 |
elif Options.options.disable_examples: |
573 |
elif Options.options.disable_examples: |
574 |
# Examples were explicitly disabled. |
574 |
# Examples were explicitly disabled. |
575 |
env['ENABLE_EXAMPLES'] = False |
575 |
env['ENABLE_EXAMPLES'] = False |
576 |
why_not_examples = "option --disable-examples selected" |
576 |
why_not_examples = "option --disable-examples selected" |
577 |
else: |
577 |
else: |
|
584 |
else: |
584 |
else: |
585 |
why_not_examples = "defaults to disabled" |
585 |
why_not_examples = "defaults to disabled" |
586 |
|
586 |
|
587 |
conf.report_optional_feature("ENABLE_EXAMPLES", "Examples", env['ENABLE_EXAMPLES'], |
587 |
conf.report_optional_feature("ENABLE_EXAMPLES", "Examples", env['ENABLE_EXAMPLES'], |
588 |
why_not_examples) |
588 |
why_not_examples) |
589 |
try: |
589 |
try: |
590 |
for dir in os.listdir('examples'): |
590 |
for dir in os.listdir('examples'): |
|
661 |
conf.env.append_value(confvar, value) |
661 |
conf.env.append_value(confvar, value) |
662 |
|
662 |
|
663 |
print_config(env) |
663 |
print_config(env) |
664 |
|
664 |
|
665 |
|
665 |
|
666 |
class SuidBuild_task(Task.Task): |
666 |
class SuidBuild_task(Task.Task): |
667 |
"""task that makes a binary Suid |
667 |
"""task that makes a binary Suid |
|
732 |
else: |
732 |
else: |
733 |
if program.env.DEST_BINFMT == 'elf': |
733 |
if program.env.DEST_BINFMT == 'elf': |
734 |
# All ELF platforms are impacted but only the gcc compiler has a flag to fix it. |
734 |
# All ELF platforms are impacted but only the gcc compiler has a flag to fix it. |
735 |
if 'gcc' in (program.env.CXX_NAME, program.env.CC_NAME): |
735 |
if 'gcc' in (program.env.CXX_NAME, program.env.CC_NAME): |
736 |
program.env.append_value ('SHLIB_MARKER', '-Wl,--no-as-needed') |
736 |
program.env.append_value ('SHLIB_MARKER', '-Wl,--no-as-needed') |
737 |
|
737 |
|
738 |
return program |
738 |
return program |
|
832 |
if Options.options.check_profile: |
832 |
if Options.options.check_profile: |
833 |
profile = get_build_profile() |
833 |
profile = get_build_profile() |
834 |
print("Build profile: %s" % profile) |
834 |
print("Build profile: %s" % profile) |
835 |
|
835 |
|
836 |
if Options.options.check_profile or Options.options.check_config: |
836 |
if Options.options.check_profile or Options.options.check_config: |
837 |
raise SystemExit(0) |
837 |
raise SystemExit(0) |
838 |
return |
838 |
return |
|
893 |
if not dep.startswith('ns3-'): |
893 |
if not dep.startswith('ns3-'): |
894 |
continue |
894 |
continue |
895 |
if dep not in modules and dep not in contribModules: |
895 |
if dep not in modules and dep not in contribModules: |
896 |
if dep in env['NS3_MODULES']: |
896 |
if dep in env['NS3_MODULES']: |
897 |
modules.append(dep) |
897 |
modules.append(dep) |
898 |
changed = True |
898 |
changed = True |
899 |
elif dep in env['NS3_CONTRIBUTED_MODULES']: |
899 |
elif dep in env['NS3_CONTRIBUTED_MODULES']: |
900 |
contribModules.append(dep) |
900 |
contribModules.append(dep) |
901 |
changed = True |
901 |
changed = True |
902 |
else: |
902 |
else: |
|
943 |
# Add this program to the list if all of its |
943 |
# Add this program to the list if all of its |
944 |
# dependencies will be built. |
944 |
# dependencies will be built. |
945 |
if program_built: |
945 |
if program_built: |
946 |
object_name = "%s%s-%s%s" % (wutils.APPNAME, wutils.VERSION, |
946 |
object_name = "%s%s-%s%s" % (wutils.APPNAME, wutils.VERSION, |
947 |
obj.name, bld.env.BUILD_SUFFIX) |
947 |
obj.name, bld.env.BUILD_SUFFIX) |
948 |
|
948 |
|
949 |
# Get the relative path to the program from the |
949 |
# Get the relative path to the program from the |
|
967 |
# disable the ns3header_taskgen |
967 |
# disable the ns3header_taskgen |
968 |
if 'ns3header' in getattr(obj, "features", []): |
968 |
if 'ns3header' in getattr(obj, "features", []): |
969 |
if ("ns3-%s" % obj.module) not in modules and ("ns3-%s" % obj.module) not in contribModules: |
969 |
if ("ns3-%s" % obj.module) not in modules and ("ns3-%s" % obj.module) not in contribModules: |
970 |
obj.mode = 'remove' # tell it to remove headers instead of installing |
970 |
obj.mode = 'remove' # tell it to remove headers instead of installing |
971 |
|
971 |
|
972 |
# disable the ns3privateheader_taskgen |
972 |
# disable the ns3privateheader_taskgen |
973 |
if 'ns3privateheader' in getattr(obj, "features", []): |
973 |
if 'ns3privateheader' in getattr(obj, "features", []): |
974 |
if ("ns3-%s" % obj.module) not in modules and ("ns3-%s" % obj.module) not in contribModules: |
974 |
if ("ns3-%s" % obj.module) not in modules and ("ns3-%s" % obj.module) not in contribModules: |
975 |
|
975 |
|
976 |
obj.mode = 'remove' # tell it to remove headers instead of installing |
976 |
obj.mode = 'remove' # tell it to remove headers instead of installing |
977 |
|
977 |
|
978 |
# disable pcfile taskgens for disabled modules |
978 |
# disable pcfile taskgens for disabled modules |
979 |
if 'ns3pcfile' in getattr(obj, "features", []): |
979 |
if 'ns3pcfile' in getattr(obj, "features", []): |
|
1030 |
gen.post() |
1030 |
gen.post() |
1031 |
|
1031 |
|
1032 |
if Options.options.run or Options.options.pyrun: |
1032 |
if Options.options.run or Options.options.pyrun: |
1033 |
bld.env['PRINT_BUILT_MODULES_AT_END'] = False |
1033 |
bld.env['PRINT_BUILT_MODULES_AT_END'] = False |
1034 |
|
1034 |
|
1035 |
if Options.options.doxygen_no_build: |
1035 |
if Options.options.doxygen_no_build: |
1036 |
_doxygen(bld) |
1036 |
_doxygen(bld) |
|
1135 |
bld.options = Options.options # provided for convenience |
1135 |
bld.options = Options.options # provided for convenience |
1136 |
bld.cmd = "build" |
1136 |
bld.cmd = "build" |
1137 |
bld.execute() |
1137 |
bld.execute() |
1138 |
|
1138 |
|
1139 |
wutils.bld = bld |
1139 |
wutils.bld = bld |
1140 |
wutils.run_python_program("test.py -n -c core", bld.env) |
1140 |
wutils.run_python_program("test.py -n -c core", bld.env) |
1141 |
|
1141 |
|
|
1147 |
def __init__(self, bld): |
1147 |
def __init__(self, bld): |
1148 |
self.bld = bld |
1148 |
self.bld = bld |
1149 |
super(print_introspected_doxygen_task, self).__init__(generator=self) |
1149 |
super(print_introspected_doxygen_task, self).__init__(generator=self) |
1150 |
|
1150 |
|
1151 |
def __str__(self): |
1151 |
def __str__(self): |
1152 |
return 'print-introspected-doxygen\n' |
1152 |
return 'print-introspected-doxygen\n' |
1153 |
|
1153 |
|
|
1172 |
if subprocess.Popen([prog], stdout=doxygen_out, env=proc_env).wait(): |
1172 |
if subprocess.Popen([prog], stdout=doxygen_out, env=proc_env).wait(): |
1173 |
raise SystemExit(1) |
1173 |
raise SystemExit(1) |
1174 |
doxygen_out.close() |
1174 |
doxygen_out.close() |
1175 |
|
1175 |
|
1176 |
# Create a text file with the introspected information. |
1176 |
# Create a text file with the introspected information. |
1177 |
text_out = open(os.path.join('doc', 'ns3-object.txt'), 'w') |
1177 |
text_out = open(os.path.join('doc', 'ns3-object.txt'), 'w') |
1178 |
if subprocess.Popen([prog, '--output-text'], stdout=text_out, env=proc_env).wait(): |
1178 |
if subprocess.Popen([prog, '--output-text'], stdout=text_out, env=proc_env).wait(): |
|
1186 |
def __init__(self, bld): |
1186 |
def __init__(self, bld): |
1187 |
self.bld = bld |
1187 |
self.bld = bld |
1188 |
super(run_python_unit_tests_task, self).__init__(generator=self) |
1188 |
super(run_python_unit_tests_task, self).__init__(generator=self) |
1189 |
|
1189 |
|
1190 |
def __str__(self): |
1190 |
def __str__(self): |
1191 |
return 'run-python-unit-tests\n' |
1191 |
return 'run-python-unit-tests\n' |
1192 |
|
1192 |
|
|
1222 |
class Ns3ShellContext(Context.Context): |
1222 |
class Ns3ShellContext(Context.Context): |
1223 |
"""run a shell with an environment suitably modified to run locally built programs""" |
1223 |
"""run a shell with an environment suitably modified to run locally built programs""" |
1224 |
cmd = 'shell' |
1224 |
cmd = 'shell' |
1225 |
|
1225 |
|
1226 |
def execute(self): |
1226 |
def execute(self): |
1227 |
# first we execute the build |
1227 |
# first we execute the build |
1228 |
bld = Context.create_context("build") |
1228 |
bld = Context.create_context("build") |
|
1233 |
# Set this so that the lists won't be printed when the user |
1233 |
# Set this so that the lists won't be printed when the user |
1234 |
# exits the shell. |
1234 |
# exits the shell. |
1235 |
bld.env['PRINT_BUILT_MODULES_AT_END'] = False |
1235 |
bld.env['PRINT_BUILT_MODULES_AT_END'] = False |
1236 |
|
1236 |
|
1237 |
if sys.platform == 'win32': |
1237 |
if sys.platform == 'win32': |
1238 |
shell = os.environ.get("COMSPEC", "cmd.exe") |
1238 |
shell = os.environ.get("COMSPEC", "cmd.exe") |
1239 |
else: |
1239 |
else: |
|
1258 |
|
1258 |
|
1259 |
try: |
1259 |
try: |
1260 |
program_obj = wutils.find_program('print-introspected-doxygen', env) |
1260 |
program_obj = wutils.find_program('print-introspected-doxygen', env) |
1261 |
except ValueError: |
1261 |
except ValueError: |
1262 |
Logs.warn("print-introspected-doxygen does not exist") |
1262 |
Logs.warn("print-introspected-doxygen does not exist") |
1263 |
raise SystemExit(1) |
1263 |
raise SystemExit(1) |
1264 |
return |
1264 |
return |
|
1311 |
|
1311 |
|
1312 |
class Ns3SphinxContext(Context.Context): |
1312 |
class Ns3SphinxContext(Context.Context): |
1313 |
"""build the Sphinx documentation: manual, tutorial, models""" |
1313 |
"""build the Sphinx documentation: manual, tutorial, models""" |
1314 |
|
1314 |
|
1315 |
cmd = 'sphinx' |
1315 |
cmd = 'sphinx' |
1316 |
|
1316 |
|
1317 |
def sphinx_build(self, path): |
1317 |
def sphinx_build(self, path): |
|
1327 |
_getVersion() |
1327 |
_getVersion() |
1328 |
for sphinxdir in ["manual", "models", "tutorial", "tutorial-pt-br"] : |
1328 |
for sphinxdir in ["manual", "models", "tutorial", "tutorial-pt-br"] : |
1329 |
self.sphinx_build(os.path.join("doc", sphinxdir)) |
1329 |
self.sphinx_build(os.path.join("doc", sphinxdir)) |
1330 |
|
1330 |
|
1331 |
|
1331 |
|
1332 |
class Ns3DocContext(Context.Context): |
1332 |
class Ns3DocContext(Context.Context): |
1333 |
"""build all the documentation: doxygen, manual, tutorial, models""" |
1333 |
"""build all the documentation: doxygen, manual, tutorial, models""" |
1334 |
|
1334 |
|
1335 |
cmd = 'docs' |
1335 |
cmd = 'docs' |
1336 |
|
1336 |
|
1337 |
def execute(self): |
1337 |
def execute(self): |
1338 |
steps = ['doxygen', 'sphinx'] |
1338 |
steps = ['doxygen', 'sphinx'] |
1339 |
Options.commands = steps + Options.commands |
1339 |
Options.commands = steps + Options.commands |
1340 |
|
1340 |
|
1341 |
|
1341 |
|
1342 |
def lcov_report(bld): |
1342 |
def lcov_report(bld): |
1343 |
env = bld.env |
1343 |
env = bld.env |
1344 |
|
1344 |
|
|
1367 |
raise SystemExit(1) |
1367 |
raise SystemExit(1) |
1368 |
finally: |
1368 |
finally: |
1369 |
os.chdir("..") |
1369 |
os.chdir("..") |
1370 |
|
|
|