View | Details | Raw Unified | Return to bug 2181
Collapse All | Expand All

(-)a/wscript (-58 / +57 lines)
 Lines 36-45    Link Here 
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
 Lines 124-130    Link Here 
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,):
 Lines 147-153    Link Here 
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,
 Lines 319-333    Link Here 
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'
 Lines 384-390    Link Here 
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
 Lines 394-404    Link Here 
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')
 Lines 424-437    Link Here 
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:
 Lines 451-457    Link Here 
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:
 Lines 470-490    Link Here 
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':
 Lines 495-508    Link Here 
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
 Lines 546-556    Link Here 
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:
 Lines 567-577    Link Here 
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:
 Lines 584-590    Link Here 
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'):
 Lines 661-667    Link Here 
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
 Lines 732-738    Link Here 
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
 Lines 832-838    Link Here 
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
 Lines 893-902    Link Here 
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:
 Lines 943-949    Link Here 
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
 Lines 967-979    Link Here 
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", []):
 Lines 1030-1036    Link Here 
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)
 Lines 1135-1141    Link Here 
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
 Lines 1147-1153    Link Here 
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
 Lines 1172-1178    Link Here 
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():
 Lines 1186-1192    Link Here 
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
 Lines 1222-1228    Link Here 
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")
 Lines 1233-1239    Link Here 
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:
 Lines 1258-1264    Link Here 
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
 Lines 1311-1317    Link Here 
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):
 Lines 1327-1344    Link Here 
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
 Lines 1367-1370    Link Here 
1367
            raise SystemExit(1)
1367
            raise SystemExit(1)
1368
    finally:
1368
    finally:
1369
        os.chdir("..")
1369
        os.chdir("..")
1370

Return to bug 2181