mirror of https://github.com/ArduPilot/ardupilot
waf: add support for dronecan on linux
This commit is contained in:
parent
ac905caae9
commit
50bfa516bc
|
@ -429,7 +429,7 @@ class Board:
|
||||||
]
|
]
|
||||||
|
|
||||||
if self.with_can and not cfg.env.AP_PERIPH:
|
if self.with_can and not cfg.env.AP_PERIPH:
|
||||||
if not cfg.env.SITL32BIT and cfg.env.BOARD == 'sitl':
|
if not cfg.env.FORCE32BIT and (cfg.env.BOARD == 'sitl' or cfg.env.BOARD == 'linux'):
|
||||||
env.DEFINES.update(
|
env.DEFINES.update(
|
||||||
HAL_ENABLE_LIBUAVCAN_DRIVERS = 0
|
HAL_ENABLE_LIBUAVCAN_DRIVERS = 0
|
||||||
)
|
)
|
||||||
|
@ -759,7 +759,7 @@ class sitl(Board):
|
||||||
'-fno-slp-vectorize' # compiler bug when trying to use SLP
|
'-fno-slp-vectorize' # compiler bug when trying to use SLP
|
||||||
]
|
]
|
||||||
|
|
||||||
if cfg.options.sitl_32bit:
|
if cfg.options.force_32bit:
|
||||||
# 32bit platform flags
|
# 32bit platform flags
|
||||||
env.CXXFLAGS += [
|
env.CXXFLAGS += [
|
||||||
'-m32',
|
'-m32',
|
||||||
|
@ -1134,7 +1134,15 @@ class chibios(Board):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
class linux(Board):
|
class linux(Board):
|
||||||
|
def __init__(self):
|
||||||
|
if self.toolchain == 'native':
|
||||||
|
self.with_can = True
|
||||||
|
else:
|
||||||
|
self.with_can = False
|
||||||
|
|
||||||
def configure_env(self, cfg, env):
|
def configure_env(self, cfg, env):
|
||||||
|
if cfg.options.board == 'linux' and cfg.options.force_32bit:
|
||||||
|
self.with_can = True
|
||||||
super(linux, self).configure_env(cfg, env)
|
super(linux, self).configure_env(cfg, env)
|
||||||
|
|
||||||
env.DEFINES.update(
|
env.DEFINES.update(
|
||||||
|
@ -1162,8 +1170,35 @@ class linux(Board):
|
||||||
'AP_HAL_Linux',
|
'AP_HAL_Linux',
|
||||||
]
|
]
|
||||||
|
|
||||||
if self.with_can:
|
if cfg.options.force_32bit:
|
||||||
|
env.DEFINES.update(
|
||||||
|
HAL_FORCE_32BIT = 1,
|
||||||
|
)
|
||||||
|
# 32bit platform flags
|
||||||
|
cfg.env.CXXFLAGS += [
|
||||||
|
'-m32',
|
||||||
|
]
|
||||||
|
cfg.env.CFLAGS += [
|
||||||
|
'-m32',
|
||||||
|
]
|
||||||
|
cfg.env.LDFLAGS += [
|
||||||
|
'-m32',
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
env.DEFINES.update(
|
||||||
|
HAL_FORCE_32BIT = 0,
|
||||||
|
)
|
||||||
|
if self.with_can and cfg.options.board == 'linux' and cfg.options.force_32bit:
|
||||||
|
cfg.env.HAL_NUM_CAN_IFACES = 2
|
||||||
|
cfg.define('HAL_NUM_CAN_IFACES', 2)
|
||||||
cfg.define('UAVCAN_EXCEPTIONS', 0)
|
cfg.define('UAVCAN_EXCEPTIONS', 0)
|
||||||
|
cfg.define('UAVCAN_SUPPORT_CANFD', 1)
|
||||||
|
cfg.define('HAL_CANFD_SUPPORTED', 1)
|
||||||
|
cfg.define('CANARD_ENABLE_CANFD', 1)
|
||||||
|
|
||||||
|
if self.with_can:
|
||||||
|
env.DEFINES.update(CANARD_MULTI_IFACE=1,
|
||||||
|
CANARD_IFACE_ALL = 0x3)
|
||||||
|
|
||||||
if cfg.options.apstatedir:
|
if cfg.options.apstatedir:
|
||||||
cfg.define('AP_STATEDIR', cfg.options.apstatedir)
|
cfg.define('AP_STATEDIR', cfg.options.apstatedir)
|
||||||
|
@ -1270,7 +1305,7 @@ class bbbmini(linux):
|
||||||
|
|
||||||
def configure_env(self, cfg, env):
|
def configure_env(self, cfg, env):
|
||||||
super(bbbmini, self).configure_env(cfg, env)
|
super(bbbmini, self).configure_env(cfg, env)
|
||||||
|
cfg.env.HAL_NUM_CAN_IFACES = 1
|
||||||
env.DEFINES.update(
|
env.DEFINES.update(
|
||||||
CONFIG_HAL_BOARD_SUBTYPE = 'HAL_BOARD_SUBTYPE_LINUX_BBBMINI',
|
CONFIG_HAL_BOARD_SUBTYPE = 'HAL_BOARD_SUBTYPE_LINUX_BBBMINI',
|
||||||
)
|
)
|
||||||
|
@ -1283,6 +1318,7 @@ class blue(linux):
|
||||||
|
|
||||||
def configure_env(self, cfg, env):
|
def configure_env(self, cfg, env):
|
||||||
super(blue, self).configure_env(cfg, env)
|
super(blue, self).configure_env(cfg, env)
|
||||||
|
cfg.env.HAL_NUM_CAN_IFACES = 1
|
||||||
|
|
||||||
env.DEFINES.update(
|
env.DEFINES.update(
|
||||||
CONFIG_HAL_BOARD_SUBTYPE = 'HAL_BOARD_SUBTYPE_LINUX_BLUE',
|
CONFIG_HAL_BOARD_SUBTYPE = 'HAL_BOARD_SUBTYPE_LINUX_BLUE',
|
||||||
|
@ -1296,6 +1332,7 @@ class pocket(linux):
|
||||||
|
|
||||||
def configure_env(self, cfg, env):
|
def configure_env(self, cfg, env):
|
||||||
super(pocket, self).configure_env(cfg, env)
|
super(pocket, self).configure_env(cfg, env)
|
||||||
|
cfg.env.HAL_NUM_CAN_IFACES = 1
|
||||||
|
|
||||||
env.DEFINES.update(
|
env.DEFINES.update(
|
||||||
CONFIG_HAL_BOARD_SUBTYPE = 'HAL_BOARD_SUBTYPE_LINUX_POCKET',
|
CONFIG_HAL_BOARD_SUBTYPE = 'HAL_BOARD_SUBTYPE_LINUX_POCKET',
|
||||||
|
|
14
wscript
14
wscript
|
@ -328,9 +328,9 @@ configuration in order to save typing.
|
||||||
default=False,
|
default=False,
|
||||||
help="Enable SITL RGBLed")
|
help="Enable SITL RGBLed")
|
||||||
|
|
||||||
g.add_option('--sitl-32bit', action='store_true',
|
g.add_option('--force-32bit', action='store_true',
|
||||||
default=False,
|
default=False,
|
||||||
help="Enable SITL 32bit")
|
help="Force 32bit build")
|
||||||
|
|
||||||
g.add_option('--build-dates', action='store_true',
|
g.add_option('--build-dates', action='store_true',
|
||||||
default=False,
|
default=False,
|
||||||
|
@ -440,7 +440,7 @@ def configure(cfg):
|
||||||
cfg.env.BOARD = cfg.options.board
|
cfg.env.BOARD = cfg.options.board
|
||||||
cfg.env.DEBUG = cfg.options.debug
|
cfg.env.DEBUG = cfg.options.debug
|
||||||
cfg.env.COVERAGE = cfg.options.coverage
|
cfg.env.COVERAGE = cfg.options.coverage
|
||||||
cfg.env.SITL32BIT = cfg.options.sitl_32bit
|
cfg.env.FORCE32BIT = cfg.options.force_32bit
|
||||||
cfg.env.ENABLE_ASSERTS = cfg.options.enable_asserts
|
cfg.env.ENABLE_ASSERTS = cfg.options.enable_asserts
|
||||||
cfg.env.BOOTLOADER = cfg.options.bootloader
|
cfg.env.BOOTLOADER = cfg.options.bootloader
|
||||||
cfg.env.ENABLE_MALLOC_GUARD = cfg.options.enable_malloc_guard
|
cfg.env.ENABLE_MALLOC_GUARD = cfg.options.enable_malloc_guard
|
||||||
|
@ -482,7 +482,7 @@ def configure(cfg):
|
||||||
cfg.load('dronecangen')
|
cfg.load('dronecangen')
|
||||||
else:
|
else:
|
||||||
cfg.load('uavcangen')
|
cfg.load('uavcangen')
|
||||||
if not (cfg.options.sitl_32bit and cfg.options.board != 'sitl'):
|
if cfg.options.force_32bit or (cfg.options.board != 'sitl' and cfg.options.board != 'linux'):
|
||||||
cfg.load('dronecangen')
|
cfg.load('dronecangen')
|
||||||
|
|
||||||
cfg.env.SUBMODULE_UPDATE = cfg.options.submodule_update
|
cfg.env.SUBMODULE_UPDATE = cfg.options.submodule_update
|
||||||
|
@ -542,8 +542,8 @@ def configure(cfg):
|
||||||
else:
|
else:
|
||||||
cfg.end_msg('disabled', color='YELLOW')
|
cfg.end_msg('disabled', color='YELLOW')
|
||||||
|
|
||||||
cfg.start_msg('SITL 32-bit build')
|
cfg.start_msg('Force 32-bit build')
|
||||||
if cfg.env.SITL32BIT:
|
if cfg.env.FORCE32BIT:
|
||||||
cfg.end_msg('enabled')
|
cfg.end_msg('enabled')
|
||||||
else:
|
else:
|
||||||
cfg.end_msg('disabled', color='YELLOW')
|
cfg.end_msg('disabled', color='YELLOW')
|
||||||
|
@ -680,7 +680,7 @@ def _build_dynamic_sources(bld):
|
||||||
bld.srcnode.find_dir('modules/uavcan/libuavcan/include').abspath()
|
bld.srcnode.find_dir('modules/uavcan/libuavcan/include').abspath()
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
if (not bld.env.SITL32BIT) and bld.env.BOARD == 'sitl':
|
if (not bld.env.FORCE32BIT) and (bld.env.BOARD == 'sitl' or bld.env.BOARD == 'linux'):
|
||||||
# remove generated files
|
# remove generated files
|
||||||
dronecan_dir = bld.bldnode.make_node('modules/DroneCAN/libcanard/dsdlc_generated/').abspath()
|
dronecan_dir = bld.bldnode.make_node('modules/DroneCAN/libcanard/dsdlc_generated/').abspath()
|
||||||
if os.path.exists(dronecan_dir):
|
if os.path.exists(dronecan_dir):
|
||||||
|
|
Loading…
Reference in New Issue