Allow for included target.mk files.
Saves modifying Makefile with new targets that are similar to others.
This commit is contained in:
parent
3c0354f8a5
commit
b520de7158
179
Makefile
179
Makefile
|
@ -43,35 +43,65 @@ FLASH_SIZE ?=
|
|||
|
||||
FORKNAME = betaflight
|
||||
|
||||
# Working directories
|
||||
ROOT := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
|
||||
SRC_DIR = $(ROOT)/src/main
|
||||
OBJECT_DIR = $(ROOT)/obj/main
|
||||
BIN_DIR = $(ROOT)/obj
|
||||
CMSIS_DIR = $(ROOT)/lib/main/CMSIS
|
||||
INCLUDE_DIRS = $(SRC_DIR) \
|
||||
$(ROOT)/src/main/target
|
||||
LINKER_DIR = $(ROOT)/src/main/target
|
||||
|
||||
# default xtal value for F4 targets
|
||||
HSE_VALUE = 8000000
|
||||
|
||||
# used for turning on features like VCP and SDCARD
|
||||
OPTIONS =
|
||||
|
||||
CC3D_TARGETS = CC3D CC3D_OPBL
|
||||
NAZE_TARGETS = AFROMINI ALIENFLIGHTF1
|
||||
SPRACINGF3_TARGETS = IRCFUSIONF3 RMDO
|
||||
|
||||
SDCARD_TARGETS = ALIENFLIGHTF4 AQ32_V2 BLUEJAYF4 FURYF3 FURYF4 SPRACINGF3MINI
|
||||
SDCARD_TARGETS = ALIENFLIGHTF4 AQ32_V2 FURYF3 FURYF4 SPRACINGF3MINI
|
||||
SERIAL_USB_TARGETS = IRCFUSIONF3 SPRACINGF3
|
||||
|
||||
# Valid targets for STM VCP support
|
||||
VCP_TARGETS = $(CC3D_TARGETS) BLUEJAYF4 FURYF3 FURYF4 REVO REVO_OPBL
|
||||
VCP_TARGETS = $(CC3D_TARGETS) FURYF3 FURYF4 REVO
|
||||
|
||||
# Valid targets for OP BootLoader support
|
||||
OPBL_TARGETS = CC3D_OPBL REVO_OPBL
|
||||
OPBL_TARGETS = CC3D_OPBL
|
||||
|
||||
|
||||
F405_TARGETS = ALIENFLIGHTF4 BLUEJAYF4 FURYF4 REVO REVO_OPBL
|
||||
F405_TARGETS_16 =
|
||||
F405_TARGETS = ALIENFLIGHTF4 FURYF4 REVO
|
||||
F411_TARGETS =
|
||||
|
||||
F1_TARGETS = $(CC3D_TARGETS) AFROMINI ALIENFLIGHTF1 NAZE OLIMEXINO PORT103R
|
||||
F3_TARGETS = ALIENFLIGHTF3 CHEBUZZF3 COLIBRI_RACE DOGE FURYF3 IRCFUSIONF3 KISSFC LUX_RACE MOTOLAB NAZE32PRO RMDO SINGULARITY SPARKY SPRACINGF3 SPRACINGF3EVO SPRACINGF3MINI STM32F3DISCOVERY
|
||||
F4_TARGETS = $(F405_TARGETS) $(F405_TARGETS_16) $(F411_TARGETS)
|
||||
# silently ignore if the file is not present. Allows for target specific.
|
||||
-include $(ROOT)/src/main/target/$(TARGET)/target.mk
|
||||
|
||||
F1_TARGETS += $(CC3D_TARGETS) AFROMINI ALIENFLIGHTF1 NAZE OLIMEXINO PORT103R
|
||||
F3_TARGETS += ALIENFLIGHTF3 CHEBUZZF3 COLIBRI_RACE DOGE FURYF3 IRCFUSIONF3 KISSFC LUX_RACE MOTOLAB NAZE32PRO RMDO SINGULARITY SPARKY SPRACINGF3 SPRACINGF3EVO SPRACINGF3MINI STM32F3DISCOVERY
|
||||
F4_TARGETS = $(F405_TARGETS) $(F411_TARGETS)
|
||||
|
||||
VALID_TARGETS = $(F1_TARGETS) $(F3_TARGETS) $(F4_TARGETS)
|
||||
|
||||
ifeq ($(filter $(TARGET),$(VALID_TARGETS)),)
|
||||
$(error Target '$(TARGET)' is not valid, must be one of $(VALID_TARGETS))
|
||||
endif
|
||||
|
||||
# can get rid of these if all targets that want options get a target.mk
|
||||
ifeq ($(TARGET),$(filter $(TARGET),$(SDCARD_TARGETS)))
|
||||
OPTIONS += SDCARD
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET),$(filter $(TARGET),$(VCP_TARGETS)))
|
||||
OPTIONS += VCP
|
||||
endif
|
||||
|
||||
64K_TARGETS = CJMCU
|
||||
128K_TARGETS = $(CC3D_TARGETS) AFROMINI ALIENFLIGHTF1 NAZE OLIMEXINO RMDO
|
||||
256K_TARGETS = $(F3_TARGETS) EUSTM32F103RC PORT103R
|
||||
512K_TARGETS = $(F411_TARGETS)
|
||||
1024K_TARGETS = $(F405_TARGETS) $(F405_TARGETS_16)
|
||||
1024K_TARGETS = $(F405_TARGETS)
|
||||
|
||||
# Configure default flash sizes for the targets
|
||||
ifeq ($(FLASH_SIZE),)
|
||||
|
@ -106,16 +136,6 @@ FC_VER_PATCH := $(shell grep " FC_VERSION_PATCH" src/main/version.h | awk '{prin
|
|||
|
||||
FC_VER := $(FC_VER_MAJOR).$(FC_VER_MINOR).$(FC_VER_PATCH)
|
||||
|
||||
# Working directories
|
||||
ROOT := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
|
||||
SRC_DIR = $(ROOT)/src/main
|
||||
OBJECT_DIR = $(ROOT)/obj/main
|
||||
BIN_DIR = $(ROOT)/obj
|
||||
CMSIS_DIR = $(ROOT)/lib/main/CMSIS
|
||||
INCLUDE_DIRS = $(SRC_DIR) \
|
||||
$(ROOT)/src/main/target
|
||||
LINKER_DIR = $(ROOT)/src/main/target
|
||||
|
||||
# Search path for sources
|
||||
VPATH := $(SRC_DIR):$(SRC_DIR)/startup
|
||||
USBFS_DIR = $(ROOT)/lib/main/STM32_USB-FS-Device_Driver
|
||||
|
@ -158,7 +178,7 @@ DEVICE_STDPERIPH_SRC := $(DEVICE_STDPERIPH_SRC)\
|
|||
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET),$(filter $(TARGET), $(SDCARD_TARGETS)))
|
||||
ifneq ($(filter SDCARD, $(OPTIONS)),)
|
||||
INCLUDE_DIRS := $(INCLUDE_DIRS) \
|
||||
$(FATFS_DIR) \
|
||||
|
||||
|
@ -243,7 +263,7 @@ INCLUDE_DIRS := $(INCLUDE_DIRS) \
|
|||
$(CMSIS_DIR)/CM4/DeviceSupport/ST/STM32F4xx \
|
||||
$(ROOT)/src/main/vcpf4
|
||||
|
||||
ifeq ($(TARGET),$(filter $(TARGET),$(SDCARD_TARGETS)))
|
||||
ifneq ($(filter SDCARD,$(OPTIONS)),)
|
||||
INCLUDE_DIRS := $(INCLUDE_DIRS) \
|
||||
$(FATFS_DIR)
|
||||
VPATH := $(VPATH):$(FATFS_DIR)
|
||||
|
@ -254,19 +274,14 @@ ARCH_FLAGS = -mthumb -mcpu=cortex-m4 -march=armv7e-m -mfloat-abi=hard -mfpu
|
|||
|
||||
ifeq ($(TARGET),$(filter $(TARGET),$(F411_TARGETS)))
|
||||
DEVICE_FLAGS = -DSTM32F411xE
|
||||
DEVICE_FLAGS += -DHSE_VALUE=8000000
|
||||
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f411.ld
|
||||
else ifeq ($(TARGET),$(filter $(TARGET),$(F405_TARGETS_16)))
|
||||
DEVICE_FLAGS = -DSTM32F40_41xxx
|
||||
DEVICE_FLAGS += -DHSE_VALUE=16000000
|
||||
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f405.ld
|
||||
else ifeq ($(TARGET),$(filter $(TARGET),$(F405_TARGETS)))
|
||||
DEVICE_FLAGS = -DSTM32F40_41xxx
|
||||
DEVICE_FLAGS += -DHSE_VALUE=8000000
|
||||
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f405.ld
|
||||
else
|
||||
$(error Unknown MCU for F4 target)
|
||||
endif
|
||||
DEVICE_FLAGS += -DHSE_VALUE=$(HSE_VALUE)
|
||||
|
||||
TARGET_FLAGS = -D$(TARGET)
|
||||
## End F4 targets
|
||||
|
@ -324,7 +339,7 @@ INCLUDE_DIRS := $(INCLUDE_DIRS) \
|
|||
|
||||
DEVICE_STDPERIPH_SRC = $(STDPERIPH_SRC)
|
||||
|
||||
ifeq ($(TARGET),$(filter $(TARGET), $(VCP_TARGETS)))
|
||||
ifeq ($(TARGET),$(filter $(TARGET),$(VCP_TARGETS)))
|
||||
INCLUDE_DIRS := $(INCLUDE_DIRS) \
|
||||
$(USBFS_DIR)/inc \
|
||||
$(ROOT)/src/main/vcp
|
||||
|
@ -351,7 +366,7 @@ DEVICE_FLAGS := $(DEVICE_FLAGS) -DFLASH_SIZE=$(FLASH_SIZE)
|
|||
endif
|
||||
|
||||
TARGET_DIR = $(ROOT)/src/main/target/$(TARGET)
|
||||
TARGET_SRC = $(notdir $(wildcard $(TARGET_DIR)/*.c))
|
||||
TARGET_DIR_SRC = $(notdir $(wildcard $(TARGET_DIR)/*.c))
|
||||
|
||||
# VARIANTS
|
||||
|
||||
|
@ -380,26 +395,14 @@ endif
|
|||
TARGET_DIR = $(ROOT)/src/main/target/CC3D
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET),$(filter $(TARGET), REVO_OPBL))
|
||||
TARGET_FLAGS := $(TARGET_FLAGS) -DREVO
|
||||
TARGET_DIR = $(ROOT)/src/main/target/REVO
|
||||
TARGET_SRC = $(notdir $(wildcard $(TARGET_DIR)/*.c))
|
||||
endif
|
||||
|
||||
ifneq ($(filter $(TARGET),$(OPBL_TARGETS)),)
|
||||
OPBL=yes
|
||||
endif
|
||||
|
||||
ifeq ($(OPBL),yes)
|
||||
ifeq ($(TARGET),$(filter $(TARGET),$(OPBL_TARGETS)))
|
||||
ifneq ($(filter $(TARGET),$(OPBL_TARGETS)),)
|
||||
TARGET_FLAGS := -DOPBL $(TARGET_FLAGS)
|
||||
ifeq ($(TARGET),$(filter $(TARGET),$(F411_TARGETS)))
|
||||
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f411_bl.ld
|
||||
else ifeq ($(TARGET),$(filter $(TARGET),$(F405_TARGETS)))
|
||||
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f405_bl.ld
|
||||
else
|
||||
LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f103_$(FLASH_SIZE)k_opbl.ld
|
||||
endif
|
||||
.DEFAULT_GOAL := binary
|
||||
else
|
||||
$(error OPBL specified with a unsupported target)
|
||||
|
@ -415,7 +418,7 @@ COMMON_SRC = \
|
|||
build_config.c \
|
||||
debug.c \
|
||||
version.c \
|
||||
$(TARGET_SRC) \
|
||||
$(TARGET_DIR_SRC) \
|
||||
main.c \
|
||||
mw.c \
|
||||
scheduler.c \
|
||||
|
@ -497,6 +500,15 @@ HIGHEND_SRC = \
|
|||
telemetry/smartport.c \
|
||||
telemetry/ltm.c
|
||||
|
||||
ifeq ($(TARGET),$(filter $(TARGET),$(F4_TARGETS)))
|
||||
VCP_SRC = \
|
||||
vcpf4/stm32f4xx_it.c \
|
||||
vcpf4/usb_bsp.c \
|
||||
vcpf4/usbd_desc.c \
|
||||
vcpf4/usbd_usr.c \
|
||||
vcpf4/usbd_cdc_vcp.c \
|
||||
drivers/serial_usb_vcp.c
|
||||
else
|
||||
VCP_SRC = \
|
||||
vcp/hw_config.c \
|
||||
vcp/stm32_it.c \
|
||||
|
@ -507,14 +519,7 @@ VCP_SRC = \
|
|||
vcp/usb_pwr.c \
|
||||
drivers/serial_usb_vcp.c \
|
||||
drivers/usb_io.c
|
||||
|
||||
VCPF4_SRC = \
|
||||
vcpf4/stm32f4xx_it.c \
|
||||
vcpf4/usb_bsp.c \
|
||||
vcpf4/usbd_desc.c \
|
||||
vcpf4/usbd_usr.c \
|
||||
vcpf4/usbd_cdc_vcp.c \
|
||||
drivers/serial_usb_vcp.c
|
||||
endif
|
||||
|
||||
STM32F10x_COMMON_SRC = \
|
||||
startup_stm32f10x_md_gcc.S \
|
||||
|
@ -938,20 +943,7 @@ ALIENFLIGHTF4_SRC = \
|
|||
io/asyncfatfs/fat_standard.c \
|
||||
$(HIGHEND_SRC) \
|
||||
$(COMMON_SRC) \
|
||||
$(VCPF4_SRC)
|
||||
|
||||
BLUEJAYF4_SRC = \
|
||||
$(STM32F4xx_COMMON_SRC) \
|
||||
drivers/accgyro_spi_mpu6500.c \
|
||||
drivers/accgyro_mpu6500.c \
|
||||
drivers/barometer_ms5611.c \
|
||||
drivers/sdcard.c \
|
||||
drivers/sdcard_standard.c \
|
||||
io/asyncfatfs/asyncfatfs.c \
|
||||
io/asyncfatfs/fat_standard.c \
|
||||
$(HIGHEND_SRC) \
|
||||
$(COMMON_SRC) \
|
||||
$(VCPF4_SRC)
|
||||
$(VCP_SRC)
|
||||
|
||||
REVO_SRC = \
|
||||
$(STM32F4xx_COMMON_SRC) \
|
||||
|
@ -960,9 +952,7 @@ REVO_SRC = \
|
|||
drivers/compass_hmc5883l.c \
|
||||
$(HIGHEND_SRC) \
|
||||
$(COMMON_SRC) \
|
||||
$(VCPF4_SRC)
|
||||
|
||||
REVO_OPBL_SRC = $(REVO_SRC)
|
||||
$(VCP_SRC)
|
||||
|
||||
FURYF4_SRC = \
|
||||
$(STM32F4xx_COMMON_SRC) \
|
||||
|
@ -976,7 +966,48 @@ FURYF4_SRC = \
|
|||
io/asyncfatfs/fat_standard.c \
|
||||
$(HIGHEND_SRC) \
|
||||
$(COMMON_SRC) \
|
||||
$(VCPF4_SRC)
|
||||
$(VCP_SRC)
|
||||
|
||||
# check if target.mk supplied
|
||||
ifneq ($(TARGET_SRC),)
|
||||
ifeq ($(TARGET),$(filter $(TARGET),$(F4_TARGETS)))
|
||||
TARGET_SRC := $(STM32F4xx_COMMON_SRC) $(TARGET_SRC)
|
||||
|
||||
else ifeq ($(TARGET),$(filter $(TARGET),$(F3_TARGETS)))
|
||||
TARGET_SRC := $(STM32F30x_COMMON_SRC) $(TARGET_SRC)
|
||||
else ifeq ($(TARGET),$(filter $(TARGET),$(F1_TARGETS)))
|
||||
TARGET_SRC := $(STM32F10x_COMMON_SRC) $(TARGET_SRC)
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET),$(filter $(TARGET),$(F4_TARGETS) $(F3_TARGETS)))
|
||||
TARGET_SRC += $(HIGHEND_SRC)
|
||||
endif
|
||||
|
||||
TARGET_SRC += $(COMMON_SRC)
|
||||
|
||||
ifneq ($(filter SDCARD,$(OPTIONS)),)
|
||||
TARGET_SRC += \
|
||||
drivers/sdcard.c \
|
||||
drivers/sdcard_standard.c \
|
||||
io/asyncfatfs/asyncfatfs.c \
|
||||
io/asyncfatfs/fat_standard.c
|
||||
endif
|
||||
|
||||
ifneq ($(filter VCP,$(OPTIONS)),)
|
||||
TARGET_SRC += $(VCP_SRC)
|
||||
endif
|
||||
|
||||
# end target.mk supplied - now know the source was supplied above.
|
||||
else
|
||||
ifeq ($($(TARGET)_SRC),)
|
||||
$(error Target source files not found. Have you prepared a target.mk?)
|
||||
else
|
||||
TARGET_SRC = $($(TARGET)_SRC)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
|
||||
|
||||
# Search path and source files for the ST stdperiph library
|
||||
VPATH := $(VPATH):$(STDPERIPH_DIR)/src
|
||||
|
@ -1053,15 +1084,11 @@ CPPCHECK = cppcheck $(CSOURCES) --enable=all --platform=unix64 \
|
|||
#
|
||||
# Things we will build
|
||||
#
|
||||
ifeq ($(filter $(TARGET),$(VALID_TARGETS)),)
|
||||
$(error Target '$(TARGET)' is not valid, must be one of $(VALID_TARGETS))
|
||||
endif
|
||||
|
||||
TARGET_BIN = $(BIN_DIR)/$(FORKNAME)_$(FC_VER)_$(TARGET).bin
|
||||
TARGET_HEX = $(BIN_DIR)/$(FORKNAME)_$(FC_VER)_$(TARGET).hex
|
||||
TARGET_ELF = $(OBJECT_DIR)/$(FORKNAME)_$(TARGET).elf
|
||||
TARGET_OBJS = $(addsuffix .o,$(addprefix $(OBJECT_DIR)/$(TARGET)/,$(basename $($(TARGET)_SRC))))
|
||||
TARGET_DEPS = $(addsuffix .d,$(addprefix $(OBJECT_DIR)/$(TARGET)/,$(basename $($(TARGET)_SRC))))
|
||||
TARGET_OBJS = $(addsuffix .o,$(addprefix $(OBJECT_DIR)/$(TARGET)/,$(basename $(TARGET_SRC))))
|
||||
TARGET_DEPS = $(addsuffix .d,$(addprefix $(OBJECT_DIR)/$(TARGET)/,$(basename $(TARGET_SRC))))
|
||||
TARGET_MAP = $(OBJECT_DIR)/$(FORKNAME)_$(TARGET).map
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
F405_TARGETS += $(TARGET)
|
||||
OPTIONS += SDCARD VCP
|
||||
|
||||
TARGET_SRC = \
|
||||
drivers/accgyro_spi_mpu6500.c \
|
||||
drivers/accgyro_mpu6500.c \
|
||||
drivers/barometer_ms5611.c
|
Loading…
Reference in New Issue