mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-01 21:48:28 -04:00
waf: px4: keep ELF files around
Including px4io. We need them for the build summary. Also, that makes it easier to use gdb on them.
This commit is contained in:
parent
260de62f94
commit
d65a7897e4
@ -79,11 +79,12 @@ class px4_add_git_hashes(Task.Task):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.outputs[0].path_from(self.outputs[0].ctx.launch_node())
|
return self.outputs[0].path_from(self.outputs[0].ctx.launch_node())
|
||||||
|
|
||||||
def _update_firmware_sig(fw_task, firmware):
|
def _update_firmware_sig(fw_task, firmware, elf):
|
||||||
original_post_run = fw_task.post_run
|
original_post_run = fw_task.post_run
|
||||||
def post_run():
|
def post_run():
|
||||||
original_post_run()
|
original_post_run()
|
||||||
firmware.sig = firmware.cache_sig = Utils.h_file(firmware.abspath())
|
firmware.sig = firmware.cache_sig = Utils.h_file(firmware.abspath())
|
||||||
|
elf.sig = elf.cache_sig = Utils.h_file(elf.abspath())
|
||||||
fw_task.post_run = post_run
|
fw_task.post_run = post_run
|
||||||
|
|
||||||
_cp_px4io = None
|
_cp_px4io = None
|
||||||
@ -96,12 +97,18 @@ def px4_firmware(self):
|
|||||||
global _cp_px4io, _firmware_semaphorish_tasks, _upload_task
|
global _cp_px4io, _firmware_semaphorish_tasks, _upload_task
|
||||||
version = self.env.get_flat('PX4_VERSION')
|
version = self.env.get_flat('PX4_VERSION')
|
||||||
|
|
||||||
|
px4 = self.bld.cmake('px4')
|
||||||
|
px4.vars['APM_PROGRAM_LIB'] = self.link_task.outputs[0].abspath()
|
||||||
|
|
||||||
if self.env.PX4_USE_PX4IO and not _cp_px4io:
|
if self.env.PX4_USE_PX4IO and not _cp_px4io:
|
||||||
px4io_task = self.create_cmake_build_task('px4', 'fw_io')
|
px4io_task = self.create_cmake_build_task('px4', 'fw_io')
|
||||||
px4io = px4io_task.cmake.bldnode.make_node(
|
px4io = px4io_task.cmake.bldnode.make_node(
|
||||||
'src/modules/px4iofirmware/px4io-v%s.bin' % version,
|
'src/modules/px4iofirmware/px4io-v%s.bin' % version,
|
||||||
)
|
)
|
||||||
px4io_task.set_outputs(px4io)
|
px4io_elf = px4.bldnode.make_node(
|
||||||
|
'src/modules/px4iofirmware/px4io-v%s' % version
|
||||||
|
)
|
||||||
|
px4io_task.set_outputs([px4io, px4io_elf])
|
||||||
|
|
||||||
romfs = self.bld.bldnode.make_node(self.env.PX4_ROMFS_BLD)
|
romfs = self.bld.bldnode.make_node(self.env.PX4_ROMFS_BLD)
|
||||||
romfs_px4io = romfs.make_node('px4io/px4io.bin')
|
romfs_px4io = romfs.make_node('px4io/px4io.bin')
|
||||||
@ -109,8 +116,8 @@ def px4_firmware(self):
|
|||||||
_cp_px4io = self.create_task('px4_copy', px4io, romfs_px4io)
|
_cp_px4io = self.create_task('px4_copy', px4io, romfs_px4io)
|
||||||
_cp_px4io.keyword = lambda: 'PX4: Copying PX4IO to ROMFS'
|
_cp_px4io.keyword = lambda: 'PX4: Copying PX4IO to ROMFS'
|
||||||
|
|
||||||
px4 = self.bld.cmake('px4')
|
px4io_elf_dest = self.bld.bldnode.make_node(self.env.PX4IO_ELF_DEST)
|
||||||
px4.vars['APM_PROGRAM_LIB'] = self.link_task.outputs[0].abspath()
|
cp_px4io_elf = self.create_task('px4_copy', px4io_elf, px4io_elf_dest)
|
||||||
|
|
||||||
fw_task = self.create_cmake_build_task(
|
fw_task = self.create_cmake_build_task(
|
||||||
'px4',
|
'px4',
|
||||||
@ -129,7 +136,10 @@ def px4_firmware(self):
|
|||||||
firmware = px4.bldnode.make_node(
|
firmware = px4.bldnode.make_node(
|
||||||
'src/firmware/nuttx/nuttx-px4fmu-v%s-apm.px4' % version,
|
'src/firmware/nuttx/nuttx-px4fmu-v%s-apm.px4' % version,
|
||||||
)
|
)
|
||||||
_update_firmware_sig(fw_task, firmware)
|
fw_elf = px4.bldnode.make_node(
|
||||||
|
'src/firmware/nuttx/firmware_nuttx',
|
||||||
|
)
|
||||||
|
_update_firmware_sig(fw_task, firmware, fw_elf)
|
||||||
|
|
||||||
fw_dest = self.bld.bldnode.make_node(
|
fw_dest = self.bld.bldnode.make_node(
|
||||||
os.path.join(self.program_dir, '%s.px4' % self.program_name)
|
os.path.join(self.program_dir, '%s.px4' % self.program_name)
|
||||||
@ -138,6 +148,13 @@ def px4_firmware(self):
|
|||||||
git_hashes.set_run_after(fw_task)
|
git_hashes.set_run_after(fw_task)
|
||||||
_firmware_semaphorish_tasks.append(git_hashes)
|
_firmware_semaphorish_tasks.append(git_hashes)
|
||||||
|
|
||||||
|
fw_elf_dest = self.bld.bldnode.make_node(
|
||||||
|
os.path.join(self.program_dir, self.program_name)
|
||||||
|
)
|
||||||
|
cp_elf = self.create_task('px4_copy', fw_elf, fw_elf_dest)
|
||||||
|
cp_elf.set_run_after(fw_task)
|
||||||
|
_firmware_semaphorish_tasks.append(cp_elf)
|
||||||
|
|
||||||
if self.bld.options.upload:
|
if self.bld.options.upload:
|
||||||
if _upload_task:
|
if _upload_task:
|
||||||
Logs.warn('PX4: upload for %s ignored' % self.name)
|
Logs.warn('PX4: upload for %s ignored' % self.name)
|
||||||
@ -217,6 +234,9 @@ def configure(cfg):
|
|||||||
env.PX4_NUTTX_ROOT = srcpath('modules/PX4NuttX')
|
env.PX4_NUTTX_ROOT = srcpath('modules/PX4NuttX')
|
||||||
env.PX4_UAVCAN_ROOT = srcpath('modules/uavcan')
|
env.PX4_UAVCAN_ROOT = srcpath('modules/uavcan')
|
||||||
|
|
||||||
|
if env.PX4_USE_PX4IO:
|
||||||
|
env.PX4IO_ELF_DEST = 'px4-extra-files/px4io'
|
||||||
|
|
||||||
env.PX4_CMAKE_VARS = dict(
|
env.PX4_CMAKE_VARS = dict(
|
||||||
CONFIG='nuttx_px4fmu-v%s_apm' % env.get_flat('PX4_VERSION'),
|
CONFIG='nuttx_px4fmu-v%s_apm' % env.get_flat('PX4_VERSION'),
|
||||||
CMAKE_MODULE_PATH=srcpath('Tools/ardupilotwaf/px4/cmake'),
|
CMAKE_MODULE_PATH=srcpath('Tools/ardupilotwaf/px4/cmake'),
|
||||||
|
Loading…
Reference in New Issue
Block a user