|
|
|
@ -40,14 +40,16 @@ export PX4_BASE := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))/
@@ -40,14 +40,16 @@ export PX4_BASE := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))/
|
|
|
|
|
include $(PX4_BASE)makefiles/setup.mk |
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Canned firmware configurations that we build.
|
|
|
|
|
# Canned firmware configurations that we (know how to) build.
|
|
|
|
|
#
|
|
|
|
|
CONFIGS ?= $(subst config_,,$(basename $(notdir $(wildcard $(PX4_MK_DIR)config_*.mk))))
|
|
|
|
|
KNOWN_CONFIGS := $(subst config_,,$(basename $(notdir $(wildcard $(PX4_MK_DIR)config_*.mk))))
|
|
|
|
|
CONFIGS ?= $(KNOWN_CONFIGS)
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Boards that we build NuttX export kits for.
|
|
|
|
|
# Boards that we (know how to) build NuttX export kits for.
|
|
|
|
|
#
|
|
|
|
|
BOARDS := $(subst board_,,$(basename $(notdir $(wildcard $(PX4_MK_DIR)board_*.mk))))
|
|
|
|
|
KNOWN_BOARDS := $(subst board_,,$(basename $(notdir $(wildcard $(PX4_MK_DIR)board_*.mk))))
|
|
|
|
|
BOARDS ?= $(KNOWN_BOARDS)
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Debugging
|
|
|
|
@ -87,10 +89,11 @@ endif
@@ -87,10 +89,11 @@ endif
|
|
|
|
|
#
|
|
|
|
|
# Built products
|
|
|
|
|
#
|
|
|
|
|
STAGED_FIRMWARES = $(foreach config,$(CONFIGS),$(IMAGE_DIR)$(config).px4)
|
|
|
|
|
FIRMWARES = $(foreach config,$(CONFIGS),$(BUILD_DIR)$(config).build/firmware.px4)
|
|
|
|
|
DESIRED_FIRMWARES = $(foreach config,$(CONFIGS),$(IMAGE_DIR)$(config).px4)
|
|
|
|
|
STAGED_FIRMWARES = $(foreach config,$(KNOWN_CONFIGS),$(IMAGE_DIR)$(config).px4)
|
|
|
|
|
FIRMWARES = $(foreach config,$(KNOWN_CONFIGS),$(BUILD_DIR)$(config).build/firmware.px4)
|
|
|
|
|
|
|
|
|
|
all: $(STAGED_FIRMWARES) |
|
|
|
|
all: $(DESIRED_FIRMWARES) |
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Copy FIRMWARES into the image directory.
|
|
|
|
@ -114,13 +117,26 @@ $(FIRMWARES): $(BUILD_DIR)%.build/firmware.px4:
@@ -114,13 +117,26 @@ $(FIRMWARES): $(BUILD_DIR)%.build/firmware.px4:
|
|
|
|
|
@$(ECHO) %%%%
|
|
|
|
|
@$(ECHO) %%%% Building $(config) in $(work_dir)
|
|
|
|
|
@$(ECHO) %%%%
|
|
|
|
|
$(Q) mkdir -p $(work_dir)
|
|
|
|
|
$(Q) make -r -C $(work_dir) \
|
|
|
|
|
$(Q) $(MKDIR) -p $(work_dir)
|
|
|
|
|
$(Q) $(MAKE) -r -C $(work_dir) \
|
|
|
|
|
-f $(PX4_MK_DIR)firmware.mk \
|
|
|
|
|
CONFIG=$(config) \
|
|
|
|
|
WORK_DIR=$(work_dir) \
|
|
|
|
|
$(FIRMWARE_GOAL)
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Make FMU firmwares depend on the corresponding IO firmware.
|
|
|
|
|
#
|
|
|
|
|
# This is a pretty vile hack, since it hard-codes knowledge of the FMU->IO dependency
|
|
|
|
|
# and forces the _default config in all cases. There has to be a better way to do this...
|
|
|
|
|
#
|
|
|
|
|
FMU_VERSION = $(patsubst px4fmu-%,%,$(word 1, $(subst _, ,$(1))))
|
|
|
|
|
define FMU_DEP |
|
|
|
|
$(BUILD_DIR)$(1).build/firmware.px4: $(IMAGE_DIR)px4io-$(call FMU_VERSION,$(1))_default.px4 |
|
|
|
|
endef |
|
|
|
|
FMU_CONFIGS := $(filter px4fmu%,$(CONFIGS))
|
|
|
|
|
$(foreach config,$(FMU_CONFIGS),$(eval $(call FMU_DEP,$(config)))) |
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Build the NuttX export archives.
|
|
|
|
|
#
|
|
|
|
@ -147,12 +163,12 @@ $(ARCHIVE_DIR)%.export: configuration = nsh
@@ -147,12 +163,12 @@ $(ARCHIVE_DIR)%.export: configuration = nsh
|
|
|
|
|
$(NUTTX_ARCHIVES): $(ARCHIVE_DIR)%.export: $(NUTTX_SRC) |
|
|
|
|
@$(ECHO) %% Configuring NuttX for $(board)
|
|
|
|
|
$(Q) (cd $(NUTTX_SRC) && $(RMDIR) nuttx-export)
|
|
|
|
|
$(Q) make -r -j1 -C $(NUTTX_SRC) -r $(MQUIET) distclean
|
|
|
|
|
$(Q) $(MAKE) -r -j1 -C $(NUTTX_SRC) -r $(MQUIET) distclean
|
|
|
|
|
$(Q) (cd $(NUTTX_SRC)/configs && $(COPYDIR) $(PX4_BASE)nuttx-configs/$(board) .)
|
|
|
|
|
$(Q) (cd $(NUTTX_SRC)tools && ./configure.sh $(board)/$(configuration))
|
|
|
|
|
@$(ECHO) %% Exporting NuttX for $(board)
|
|
|
|
|
$(Q) make -r -j1 -C $(NUTTX_SRC) -r $(MQUIET) CONFIG_ARCH_BOARD=$(board) export
|
|
|
|
|
$(Q) mkdir -p $(dir $@)
|
|
|
|
|
$(Q) $(MAKE) -r -j1 -C $(NUTTX_SRC) -r $(MQUIET) CONFIG_ARCH_BOARD=$(board) export
|
|
|
|
|
$(Q) $(MKDIR) -p $(dir $@)
|
|
|
|
|
$(Q) $(COPY) $(NUTTX_SRC)nuttx-export.zip $@
|
|
|
|
|
$(Q) (cd $(NUTTX_SRC)/configs && $(RMDIR) $(board))
|
|
|
|
|
|
|
|
|
@ -168,11 +184,11 @@ BOARD = $(BOARDS)
@@ -168,11 +184,11 @@ BOARD = $(BOARDS)
|
|
|
|
|
menuconfig: $(NUTTX_SRC) |
|
|
|
|
@$(ECHO) %% Configuring NuttX for $(BOARD)
|
|
|
|
|
$(Q) (cd $(NUTTX_SRC) && $(RMDIR) nuttx-export)
|
|
|
|
|
$(Q) make -r -j1 -C $(NUTTX_SRC) -r $(MQUIET) distclean
|
|
|
|
|
$(Q) $(MAKE) -r -j1 -C $(NUTTX_SRC) -r $(MQUIET) distclean
|
|
|
|
|
$(Q) (cd $(NUTTX_SRC)/configs && $(COPYDIR) $(PX4_BASE)nuttx-configs/$(BOARD) .)
|
|
|
|
|
$(Q) (cd $(NUTTX_SRC)tools && ./configure.sh $(BOARD)/nsh)
|
|
|
|
|
@$(ECHO) %% Running menuconfig for $(BOARD)
|
|
|
|
|
$(Q) make -r -j1 -C $(NUTTX_SRC) -r $(MQUIET) menuconfig
|
|
|
|
|
$(Q) $(MAKE) -r -j1 -C $(NUTTX_SRC) -r $(MQUIET) menuconfig
|
|
|
|
|
@$(ECHO) %% Saving configuration file
|
|
|
|
|
$(Q)$(COPY) $(NUTTX_SRC).config $(PX4_BASE)nuttx-configs/$(BOARD)/nsh/defconfig
|
|
|
|
|
else |
|
|
|
@ -191,7 +207,7 @@ $(NUTTX_SRC):
@@ -191,7 +207,7 @@ $(NUTTX_SRC):
|
|
|
|
|
# Testing targets
|
|
|
|
|
#
|
|
|
|
|
testbuild: |
|
|
|
|
$(Q) (cd $(PX4_BASE) && make distclean && make archives && make -j8)
|
|
|
|
|
$(Q) (cd $(PX4_BASE) && $(MAKE) distclean && $(MAKE) archives && $(MAKE) -j8)
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Cleanup targets. 'clean' should remove all built products and force
|
|
|
|
@ -206,8 +222,8 @@ clean:
@@ -206,8 +222,8 @@ clean:
|
|
|
|
|
.PHONY: distclean |
|
|
|
|
distclean: clean |
|
|
|
|
$(Q) $(REMOVE) $(ARCHIVE_DIR)*.export
|
|
|
|
|
$(Q) make -C $(NUTTX_SRC) -r $(MQUIET) distclean
|
|
|
|
|
$(Q) (cd $(NUTTX_SRC)/configs && find . -maxdepth 1 -type l -delete)
|
|
|
|
|
$(Q) $(MAKE) -C $(NUTTX_SRC) -r $(MQUIET) distclean
|
|
|
|
|
$(Q) (cd $(NUTTX_SRC)/configs && $(FIND) . -maxdepth 1 -type l -delete)
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Print some help text
|
|
|
|
@ -229,9 +245,9 @@ help:
@@ -229,9 +245,9 @@ help:
|
|
|
|
|
@$(ECHO) " A limited set of configs can be built with CONFIGS=<list-of-configs>"
|
|
|
|
|
@$(ECHO) ""
|
|
|
|
|
@for config in $(CONFIGS); do \
|
|
|
|
|
echo " $$config"; \
|
|
|
|
|
echo " Build just the $$config firmware configuration."; \
|
|
|
|
|
echo ""; \
|
|
|
|
|
$(ECHO) " $$config"; \
|
|
|
|
|
$(ECHO) " Build just the $$config firmware configuration."; \
|
|
|
|
|
$(ECHO) ""; \
|
|
|
|
|
done
|
|
|
|
|
@$(ECHO) " clean"
|
|
|
|
|
@$(ECHO) " Remove all firmware build pieces."
|
|
|
|
|