Allow for included target.mk files.

Saves modifying Makefile with new targets that are similar to others.
This commit is contained in:
blckmn 2016-06-13 15:20:33 +10:00 committed by blckmn
parent 3c0354f8a5
commit b520de7158
2 changed files with 112 additions and 78 deletions

179
Makefile
View File

@ -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

View File

@ -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