diff options
author | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2018-03-28 13:04:53 +0200 |
---|---|---|
committer | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2018-04-03 15:58:35 +0200 |
commit | 0504219600d6a6cac8775a8e95ebe56f473a9991 (patch) | |
tree | a2b9e022757b0f1208d59ff57c039ffe59be5586 | |
parent | 40a631fd682da925cb8c857ef56a23eb4cf7ab68 (diff) |
FIXME: waf: Read config.
-rwxr-xr-x | builder.py | 6 | ||||
-rw-r--r-- | buildset/base_conf.py | 61 | ||||
-rw-r--r-- | buildset/ext_conf.py | 9 | ||||
-rw-r--r-- | waf_libbsd.py | 6 | ||||
-rw-r--r-- | wscript | 72 |
5 files changed, 130 insertions, 24 deletions
@@ -44,6 +44,7 @@ import getopt import filecmp import difflib import codecs +import copy # # Global controls. @@ -664,11 +665,14 @@ class ModuleManager(object): self.modules[m].processSource(direction) def setConfiguration(self, config): - self.configuration = config + self.configuration = copy.deepcopy(config) def getConfiguration(self): return self.configuration + def updateConfiguration(self, config): + return self.configuration.update(config) + def setModuleConfigiuration(self): mods = sorted(self.modules.keys()) self.configuration['modules'] = mods diff --git a/buildset/base_conf.py b/buildset/base_conf.py new file mode 100644 index 00000000..e7d455e1 --- /dev/null +++ b/buildset/base_conf.py @@ -0,0 +1,61 @@ +# +# Default configuration. +# + +def get_configuration(): + configuration = { + 'name' : "base", + 'modules-enabled' : [ + 'altq', + 'base', + 'cam', + 'contrib_expat', + 'contrib_libpcap', + 'crypto', + 'crypto_openssl', + 'dev_input', + 'dev_net', + 'dev_nic', + 'dev_nic_broadcomm', + 'dev_nic_dc', + 'dev_nic_e1000', + 'dev_nic_fxp', + 'dev_nic_re', + 'dev_nic_smc', + 'dev_usb', + 'dev_usb_controller', + 'dev_usb_controller_bbb', + 'dev_usb_input', + 'dev_usb_net', + 'dev_usb_quirk', + 'dev_usb_serial', + 'dev_usb_storage', + 'dev_usb_wlan', + 'dev_wlan_rtwn', + 'dhcpcd', + 'dpaa', + 'evdev', + 'fdt', + 'in_cksum', + 'ipfw', + 'mdnsresponder', + 'mghttpd', + 'mmc', + 'mmc_ti', + 'net', + 'net80211', + 'netinet', + 'netinet6', + 'opencrypto', + 'pci', + 'pf', + 'rtems', + 'tests', + 'tty', + 'user_space', + 'user_space_wlanstats', + 'usr_sbin_tcpdump', + 'usr_sbin_wpa_supplicant', + ] + } + return configuration diff --git a/buildset/ext_conf.py b/buildset/ext_conf.py new file mode 100644 index 00000000..e9c8e2e0 --- /dev/null +++ b/buildset/ext_conf.py @@ -0,0 +1,9 @@ +def get_configuration(): + import base_conf + + configuration = base_conf.get_configuration() + configuration['name'] = "ext" + #configuration['modules-enabled'].extend([ + # 'some_mod' + # ]) + return configuration diff --git a/waf_libbsd.py b/waf_libbsd.py index ae8a1ea0..b17bac5a 100644 --- a/waf_libbsd.py +++ b/waf_libbsd.py @@ -295,12 +295,6 @@ class Builder(builder.ModuleManager): import pprint pprint.pprint(self.data) - def init(self, ctx): - pass - - def options(self, opt): - pass - def bsp_configure(self, conf, arch_bsp): if 'configure' in self.data: for cfg in self.data['configure']: @@ -44,23 +44,43 @@ except: #import libbsd_waf import libbsd import waf_libbsd +import os.path +import runpy +import sys -builder = None +# FIXME: Remove me +import pprint -def create_builder(): - global builder - if builder is None: - builder = waf_libbsd.Builder() - libbsd.load(builder) - builder.generate(rtems_version) +builders = None + +BUILDSET_DIR = "buildset" + +def load_conf_from_file(f): + pathsave = sys.path[:] + sys.path.append(BUILDSET_DIR) + sys.path.append(os.path.dirname(f)) + ns = runpy.run_path(f) + conf = ns['get_configuration']() + sys.path = pathsave + return conf + +def create_builder(conf): + global builders + if builders is None: + builders = [] + for bs in conf.env.BUILDSET: + print("Prepare for buildset " + bs) + builder = waf_libbsd.Builder() + libbsd.load(builder) + bsconfig = load_conf_from_file(bs) + builder.updateConfiguration(bsconfig) + builder.generate(rtems_version) + builders.append(builder) def init(ctx): - create_builder(); rtems.init(ctx, version = rtems_version, long_commands = True) - builder.init(ctx) def options(opt): - create_builder(); rtems.options(opt) opt.add_option("--enable-auto-regen", action = "store_true", @@ -86,20 +106,25 @@ def options(opt): default = "2", dest = "optimization", help = "Set optimization level to OPTIMIZATION (-On compiler flag). Default is 2 (-O2).") - builder.options(opt) + opt.add_option("--buildset", + action = "append", + default = [], + dest = "buildset", + help = "Select build sets to build. If set to a directory, all .py file in this directory will be used.") def bsp_configure(conf, arch_bsp): - create_builder(); + create_builder(conf); conf.check(header_name = "dlfcn.h", features = "c") conf.check(header_name = "rtems/pci.h", features = "c", mandatory = False) if not rtems.check_posix(conf): conf.fatal("RTEMS kernel POSIX support is disabled; configure RTEMS with --enable-posix") if rtems.check_networking(conf): conf.fatal("RTEMS kernel contains the old network support; configure RTEMS with --disable-networking") - builder.bsp_configure(conf, arch_bsp) + for builder in builders: + builder.bsp_configure(conf, arch_bsp) def configure(conf): - create_builder(); + create_builder(conf); if conf.options.auto_regen: conf.find_program("lex", mandatory = True) conf.find_program("rpcgen", mandatory = True) @@ -109,10 +134,23 @@ def configure(conf): conf.env.NET_CONFIG = conf.options.net_config conf.env.FREEBSD_OPTIONS =conf.options.freebsd_options conf.env.OPTIMIZATION = conf.options.optimization + conf.env.BUILDSET = [] + if conf.options.buildset == []: + conf.options.buildset.append(BUILDSET_DIR) + for bs in conf.options.buildset: + if os.path.isdir(bs): + for f in os.listdir(bs): + if f[-3:] == ".py": + conf.env.BUILDSET.append(os.path.join(bs,f)) + else: + conf.env.BUILDSET.append(bs) rtems.configure(conf, bsp_configure) - builder.configure(conf) + for builder in builders: + builder.configure(conf) def build(bld): - create_builder(); + create_builder(bld); rtems.build(bld) - builder.build(bld) + for builder in builders: + pprint.pprint(builder.getConfiguration()) + builder.build(bld) |