From 9eb3a976bccf9bd19670de70b4701fde16a36384 Mon Sep 17 00:00:00 2001 From: bugobliterator Date: Mon, 6 Dec 2021 10:22:46 +0530 Subject: [PATCH] waf: allow build with ardupilot as a module --- Tools/ardupilotwaf/boards.py | 11 +++++++++++ Tools/ardupilotwaf/chibios.py | 11 ++++++++--- Tools/ardupilotwaf/mavgen.py | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Tools/ardupilotwaf/boards.py b/Tools/ardupilotwaf/boards.py index a07f48f6be..69281fc861 100644 --- a/Tools/ardupilotwaf/boards.py +++ b/Tools/ardupilotwaf/boards.py @@ -439,6 +439,15 @@ def add_dynamic_boards_chibios(): if os.path.exists(hwdef): newclass = type(d, (chibios,), {'name': d}) +@conf +def get_chibios_board_cls(ctx, name, hwdef): + if name in _board_classes.keys(): + _board_classes[name].hwdef = hwdef + return _board_classes[name] + newclass = type(name, (chibios,), {'name': name}) + newclass.hwdef = hwdef + return newclass + def add_dynamic_boards_esp32(): '''add boards based on existance of hwdef.dat in subdirectories for ESP32''' dirname, dirlist, filenames = next(os.walk('libraries/AP_HAL_ESP32/hwdef')) @@ -759,6 +768,8 @@ class chibios(Board): toolchain = 'arm-none-eabi' def configure_env(self, cfg, env): + if hasattr(self, 'hwdef'): + cfg.env.HWDEF = self.hwdef super(chibios, self).configure_env(cfg, env) cfg.load('chibios') diff --git a/Tools/ardupilotwaf/chibios.py b/Tools/ardupilotwaf/chibios.py index 760dea8991..b52dcac2b6 100644 --- a/Tools/ardupilotwaf/chibios.py +++ b/Tools/ardupilotwaf/chibios.py @@ -455,13 +455,18 @@ def configure(cfg): def generate_hwdef_h(env): '''run chibios_hwdef.py''' import subprocess - if env.BOOTLOADER: - env.HWDEF = os.path.join(env.SRCROOT, 'libraries/AP_HAL_ChibiOS/hwdef/%s/hwdef-bl.dat' % env.BOARD) + if len(env.HWDEF) == 0: + env.HWDEF = os.path.join(env.SRCROOT, 'libraries/AP_HAL_ChibiOS/hwdef/%s/hwdef-bl.dat' % env.BOARD) + else: + # update to using hwdef-bl.dat + env.HWDEF = env.HWDEF.replace('hwdef.dat', 'hwdef-bl.dat') env.BOOTLOADER_OPTION="--bootloader" else: - env.HWDEF = os.path.join(env.SRCROOT, 'libraries/AP_HAL_ChibiOS/hwdef/%s/hwdef.dat' % env.BOARD) + if len(env.HWDEF) == 0: + env.HWDEF = os.path.join(env.SRCROOT, 'libraries/AP_HAL_ChibiOS/hwdef/%s/hwdef.dat' % env.BOARD) env.BOOTLOADER_OPTION="" + hwdef_script = os.path.join(env.SRCROOT, 'libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py') hwdef_out = env.BUILDROOT if not os.path.exists(hwdef_out): diff --git a/Tools/ardupilotwaf/mavgen.py b/Tools/ardupilotwaf/mavgen.py index c7b9c9a39a..8920dc84fc 100644 --- a/Tools/ardupilotwaf/mavgen.py +++ b/Tools/ardupilotwaf/mavgen.py @@ -77,7 +77,7 @@ def process_mavgen(self): if not hasattr(self, 'output_dir'): self.bld.fatal('mavgen: missing option output_dir') - inputs = self.to_nodes(self.source) + inputs = self.to_nodes(self.bld.srcnode.find_node(self.source)) outputs = [] self.source = []