src/config-store/wscript
author Tom Henderson <tomh@tomh.org>
Wed, 29 Aug 2018 18:54:57 -0700
changeset 13763 4b8dcdcf3129
parent 13747 738ff05c155c
child 13855 2c86757b4511
permissions -rw-r--r--
config-store: (workaround for #2978) disable deprecation warning

## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-

import wutils
from waflib import Options

# Bug 2936 gcc version issue for GTK+ and -Wparentheses
gcc_version_gtkplus_warning_issue = (8, 0, 0)

def options(opt):
    opt.add_option('--disable-gtk',
                   help=('Disable GTK+ support'),
                   dest='disable_gtk', default=False, action="store_true")


def configure(conf):
    if Options.options.disable_gtk:
        conf.env['ENABLE_GTK'] = False
        conf.report_optional_feature("GtkConfigStore", "GtkConfigStore",
                                     conf.env['ENABLE_GTK'],
                                     "--disable-gtk option given")
    else:
        have_gtk = conf.check_cfg(package='gtk+-3.0', atleast_version='3.0',
                                  args=['--cflags', '--libs'], uselib_store='GTK',
                                  mandatory=False)

        conf.env['ENABLE_GTK'] = have_gtk
        conf.report_optional_feature("GtkConfigStore", "GtkConfigStore",
                                     conf.env['ENABLE_GTK'],
                                     "library 'gtk+-3.0 >= 3.0' not found")

        # Bug 2936 -Wparentheses issue for gcc >= 8
        if conf.env['ENABLE_GTK']: 
            if conf.env['CXX_NAME'] in ['gcc']:
                if tuple(map(int, conf.env['CC_VERSION'])) >= gcc_version_gtkplus_warning_issue:
                    conf.env.append_value('CXXFLAGS', '-Wno-parentheses')
            # Bug 2978 gcc and clang warnings about deprecated declarations
            if conf.env['CXX_NAME'] in ['clang', 'gcc']:
                    conf.env.append_value ('CXXFLAGS', '-Wno-error=deprecated-declarations')

    have_libxml2 = conf.check_cfg(package='libxml-2.0', atleast_version='2.7',
                                  args=['--cflags', '--libs'], uselib_store='LIBXML2',
                                  mandatory=False)

    conf.env['ENABLE_LIBXML2'] = have_libxml2
    conf.report_optional_feature("XmlIo", "XmlIo",
                                 conf.env['ENABLE_LIBXML2'],
                                 "library 'libxml-2.0 >= 2.7' not found")

    conf.write_config_header('ns3/config-store-config.h', top=True)


def build(bld):
    bld.install_files('${INCLUDEDIR}/%s%s/ns3' % (wutils.APPNAME, wutils.VERSION), '../../ns3/config-store-config.h')

    module = bld.create_ns3_module('config-store', ['core', 'network'])
    module.source = [
        'model/attribute-iterator.cc',
        'model/config-store.cc',
        'model/attribute-default-iterator.cc',
        'model/file-config.cc',
        'model/raw-text-config.cc',
        ]

    headers = bld(features='ns3header')
    headers.module = 'config-store'
    headers.source = [
        'model/file-config.h',
        'model/config-store.h',
        ]

    if bld.env['ENABLE_GTK']:
        headers.source.append('model/gtk-config-store.h')
        module.source.extend(['model/gtk-config-store.cc',
                              'model/model-node-creator.cc',
                              'model/model-typeid-creator.cc',
                              'model/display-functions.cc',
                              ])
        module.use.append('GTK')

    if bld.env['ENABLE_LIBXML2']:
        module.source.append('model/xml-config.cc')
        module.use.append('LIBXML2')

    if bld.env['ENABLE_EXAMPLES']:
        bld.recurse('examples')

    bld.ns3_python_bindings()