waf: allow any custom build option to be specified in waf configure
this makes it easy to configure with any option from build_options.py
This commit is contained in:
parent
236b3e5eb3
commit
b2b9226863
@ -16,6 +16,7 @@ _board = None
|
||||
# modify our search path:
|
||||
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), '../../libraries/AP_HAL_ChibiOS/hwdef/scripts'))
|
||||
import chibios_hwdef
|
||||
import build_options
|
||||
|
||||
class BoardMeta(type):
|
||||
def __init__(cls, name, bases, dct):
|
||||
@ -159,8 +160,16 @@ class Board:
|
||||
)
|
||||
cfg.msg("Enabled custom controller", 'no', color='YELLOW')
|
||||
|
||||
if cfg.options.enable_ppp:
|
||||
env.CXXFLAGS += ['-DAP_NETWORKING_BACKEND_PPP=1']
|
||||
# support enabling any option in build_options.py
|
||||
for opt in build_options.BUILD_OPTIONS:
|
||||
enable_option = opt.config_option().replace("-","_")
|
||||
disable_option = "disable_" + enable_option[len("enable-"):]
|
||||
if getattr(cfg.options, enable_option, False):
|
||||
env.CXXFLAGS += ['-D%s=1' % opt.define]
|
||||
cfg.msg("Enabled %s" % opt.label, 'yes', color='GREEN')
|
||||
elif getattr(cfg.options, disable_option, False):
|
||||
env.CXXFLAGS += ['-D%s=0' % opt.define]
|
||||
cfg.msg("Enabled %s" % opt.label, 'no', color='YELLOW')
|
||||
|
||||
if cfg.options.disable_networking:
|
||||
env.CXXFLAGS += ['-DAP_NETWORKING_ENABLED=0']
|
||||
@ -487,12 +496,6 @@ class Board:
|
||||
# We always want to use PRI format macros
|
||||
cfg.define('__STDC_FORMAT_MACROS', 1)
|
||||
|
||||
if cfg.options.enable_ekf2:
|
||||
env.CXXFLAGS += ['-DHAL_NAVEKF2_AVAILABLE=1']
|
||||
|
||||
if cfg.options.disable_ekf3:
|
||||
env.CXXFLAGS += ['-DHAL_NAVEKF3_AVAILABLE=0']
|
||||
|
||||
if cfg.options.postype_single:
|
||||
env.CXXFLAGS += ['-DHAL_WITH_POSTYPE_DOUBLE=0']
|
||||
|
||||
|
@ -23,6 +23,10 @@ class Feature:
|
||||
self.default = default
|
||||
self.dependency = dependency
|
||||
|
||||
def config_option(self):
|
||||
'''the name of the configure option to be used by waf'''
|
||||
return "enable-" + self.label.replace(" ", "-")
|
||||
|
||||
|
||||
# list of build options to offer NOTE: the dependencies must be
|
||||
# written as a single string with commas and no spaces,
|
||||
@ -384,14 +388,14 @@ BUILD_OPTIONS = [
|
||||
|
||||
|
||||
Feature('Airspeed Drivers', 'Analog', 'AP_AIRSPEED_ANALOG_ENABLED', 'Enable Analog Airspeed', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'ASP5033', 'AP_AIRSPEED_ASP5033_ENABLED', 'ENABLE ASP5033 AIRSPEED', 0, 'AIRSPEED'), # NOQA: E501
|
||||
Feature('Airspeed Drivers', 'DLVR', 'AP_AIRSPEED_DLVR_ENABLED', 'ENABLE DLVR AIRSPEED', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'MS4525', 'AP_AIRSPEED_MS4525_ENABLED', 'ENABLE MS4525 AIRSPEED', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'MS5525', 'AP_AIRSPEED_MS5525_ENABLED', 'ENABLE MS5525 AIRSPEED', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'MSP_AIRSPEED', 'AP_AIRSPEED_MSP_ENABLED', 'ENABLE MSP AIRSPEED', 0, 'AIRSPEED,MSP,OSD'),
|
||||
Feature('Airspeed Drivers', 'NMEA_AIRSPEED', 'AP_AIRSPEED_NMEA_ENABLED', 'ENABLE NMEA AIRSPEED', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'SDP3X', 'AP_AIRSPEED_SDP3X_ENABLED', 'ENABLE SDP3X AIRSPEED', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'DRONECAN_ASPD', 'AP_AIRSPEED_DRONECAN_ENABLED', 'ENABLE DroneCAN AIRSPEED', 0, 'AIRSPEED,DroneCAN'), # NOQA: E501
|
||||
Feature('Airspeed Drivers', 'ASP5033', 'AP_AIRSPEED_ASP5033_ENABLED', 'Enable ASP5033 AIRSPEED', 0, 'AIRSPEED'), # NOQA: E501
|
||||
Feature('Airspeed Drivers', 'DLVR', 'AP_AIRSPEED_DLVR_ENABLED', 'Enable DLVR AIRSPEED', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'MS4525', 'AP_AIRSPEED_MS4525_ENABLED', 'Enable MS4525 AIRSPEED', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'MS5525', 'AP_AIRSPEED_MS5525_ENABLED', 'Enable MS5525 AIRSPEED', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'MSP_AIRSPEED', 'AP_AIRSPEED_MSP_ENABLED', 'Enable MSP AIRSPEED', 0, 'AIRSPEED,MSP,OSD'),
|
||||
Feature('Airspeed Drivers', 'NMEA_AIRSPEED', 'AP_AIRSPEED_NMEA_ENABLED', 'Enable NMEA AIRSPEED', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'SDP3X', 'AP_AIRSPEED_SDP3X_ENABLED', 'Enable SDP3X AIRSPEED', 0, 'AIRSPEED'),
|
||||
Feature('Airspeed Drivers', 'DRONECAN_ASPD', 'AP_AIRSPEED_DRONECAN_ENABLED', 'Enable DroneCAN AIRSPEED', 0, 'AIRSPEED,DroneCAN'), # NOQA: E501
|
||||
|
||||
Feature('Actuators', 'Volz', 'AP_VOLZ_ENABLED', 'Enable Volz Protocol', 0, None),
|
||||
Feature('Actuators', 'Volz_DroneCAN', 'AP_DRONECAN_VOLZ_FEEDBACK_ENABLED', 'Enable Volz DroneCAN Feedback', 0, "DroneCAN,Volz"), # noqa: E501
|
||||
|
35
wscript
35
wscript
@ -10,10 +10,12 @@ import subprocess
|
||||
import json
|
||||
import fnmatch
|
||||
sys.path.insert(0, 'Tools/ardupilotwaf/')
|
||||
sys.path.insert(0, 'Tools/scripts/')
|
||||
|
||||
import ardupilotwaf
|
||||
import boards
|
||||
import shutil
|
||||
import build_options
|
||||
|
||||
from waflib import Build, ConfigSet, Configure, Context, Utils
|
||||
from waflib.Configure import conf
|
||||
@ -204,11 +206,6 @@ def options(opt):
|
||||
default=False,
|
||||
help='enable OS level thread statistics.')
|
||||
|
||||
g.add_option('--enable-ppp',
|
||||
action='store_true',
|
||||
default=False,
|
||||
help='enable PPP networking.')
|
||||
|
||||
g.add_option('--bootloader',
|
||||
action='store_true',
|
||||
default=False,
|
||||
@ -388,16 +385,6 @@ configuration in order to save typing.
|
||||
default=False,
|
||||
help='Use flash storage emulation.')
|
||||
|
||||
g.add_option('--enable-ekf2',
|
||||
action='store_true',
|
||||
default=False,
|
||||
help='Configure with EKF2.')
|
||||
|
||||
g.add_option('--disable-ekf3',
|
||||
action='store_true',
|
||||
default=False,
|
||||
help='Configure without EKF3.')
|
||||
|
||||
g.add_option('--ekf-double',
|
||||
action='store_true',
|
||||
default=False,
|
||||
@ -447,6 +434,24 @@ configuration in order to save typing.
|
||||
default=False,
|
||||
help='enables checking of new to ensure NEW_NOTHROW is used')
|
||||
|
||||
# support enabling any option in build_options.py
|
||||
for opt in build_options.BUILD_OPTIONS:
|
||||
enable_option = "--" + opt.config_option()
|
||||
disable_option = enable_option.replace("--enable", "--disable")
|
||||
enable_description = opt.description
|
||||
if not enable_description.lower().startswith("enable"):
|
||||
enable_description = "Enable " + enable_description
|
||||
disable_description = "Disable " + enable_description[len("Enable "):]
|
||||
g.add_option(enable_option,
|
||||
action='store_true',
|
||||
default=False,
|
||||
help=enable_description)
|
||||
g.add_option(disable_option,
|
||||
action='store_true',
|
||||
default=False,
|
||||
help=disable_description)
|
||||
|
||||
|
||||
def _collect_autoconfig_files(cfg):
|
||||
for m in sys.modules.values():
|
||||
paths = []
|
||||
|
Loading…
Reference in New Issue
Block a user