summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Mauderer <christian.mauderer@embedded-brains.de>2018-03-28 13:04:53 +0200
committerChristian Mauderer <christian.mauderer@embedded-brains.de>2018-04-03 15:58:35 +0200
commit0504219600d6a6cac8775a8e95ebe56f473a9991 (patch)
treea2b9e022757b0f1208d59ff57c039ffe59be5586
parent40a631fd682da925cb8c857ef56a23eb4cf7ab68 (diff)
FIXME: waf: Read config.
-rwxr-xr-xbuilder.py6
-rw-r--r--buildset/base_conf.py61
-rw-r--r--buildset/ext_conf.py9
-rw-r--r--waf_libbsd.py6
-rw-r--r--wscript72
5 files changed, 130 insertions, 24 deletions
diff --git a/builder.py b/builder.py
index ac199a9b..23ae3f1c 100755
--- a/builder.py
+++ b/builder.py
@@ -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']:
diff --git a/wscript b/wscript
index 6c063965..90f997fa 100644
--- a/wscript
+++ b/wscript
@@ -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)