Working on improvements to Makefile...

pull/154/head
Gerad Munsch 3 years ago
parent d76ebc6e56
commit ee57a79426

@ -16,58 +16,98 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# MMDVM source files # MMDVM source files
MMDVM_HS_PATH = . MMDVM_HS_PATH := .
# Optimization Level
OPTLVL := s
# Debug Level
DBGLVL := 0
# C Standard
CSTD := gnu11
# C++ Standard
CXXSTD := gnu++14
# sleep delays for multi-stage flashing processes
STLINK_SLEEP_DELAY := 3
SERIAL_SLEEP_DELAY := 3
# STM32 library paths # STM32 library paths
F1_LIB_PATH = ./STM32F10X_Lib F1_LIB_PATH := ./STM32F10X_Lib
F4_LIB_PATH = ./STM32F4XX_Lib F4_LIB_PATH := ./STM32F4XX_Lib
F7_LIB_PATH = ./STM32F7XX_Lib F7_LIB_PATH := ./STM32F7XX_Lib
# MCU external clock frequency (Hz) # MCU external clock frequency (Hz)
CLK_PI_F4 = 12000000 CLK_PI_F4 := 12000000
CLK_DEF = 8000000 CLK_DEF := 8000000
# Directory Structure # Directory Structure
BINDIR = bin BINDIR := bin
OBJDIR_F1 = obj_f1 OBJDIR_F1 := obj_f1
OBJDIR_F4 = obj_f4 OBJDIR_F4 := obj_f4
OBJDIR_F7 = obj_f7 OBJDIR_F7 := obj_f7
# Output files # Output files
BINELF_F1=mmdvm_f1.elf BINELF_F1 = mmdvm_f1.elf
BINHEX_F1=mmdvm_f1.hex BINHEX_F1 = mmdvm_f1.hex
BINBIN_F1=mmdvm_f1.bin BINBIN_F1 = mmdvm_f1.bin
BINELF_F1BL=mmdvm_f1bl.elf
BINHEX_F1BL=mmdvm_f1bl.hex BINELF_F1BL = mmdvm_f1bl.elf
BINBIN_F1BL=mmdvm_f1bl.bin BINHEX_F1BL = mmdvm_f1bl.hex
BINELF_F1NOBL=mmdvm_f1nobl.elf BINBIN_F1BL = mmdvm_f1bl.bin
BINHEX_F1NOBL=mmdvm_f1nobl.hex
BINBIN_F1NOBL=mmdvm_f1nobl.bin BINELF_F1NOBL = mmdvm_f1nobl.elf
BINELF_F4=mmdvm_f4.elf BINHEX_F1NOBL = mmdvm_f1nobl.hex
BINHEX_F4=mmdvm_f4.hex BINBIN_F1NOBL = mmdvm_f1nobl.bin
BINBIN_F4=mmdvm_f4.bin
BINELF_F7=mmdvm_f7.elf BINELF_F4 = mmdvm_f4.elf
BINHEX_F7=mmdvm_f7.hex BINHEX_F4 = mmdvm_f4.hex
BINBIN_F7=mmdvm_f7.bin BINBIN_F4 = mmdvm_f4.bin
BINELF_F7 = mmdvm_f7.elf
BINHEX_F7 = mmdvm_f7.hex
BINBIN_F7 = mmdvm_f7.bin
# Header directories # Header directories
INC_F1 = . $(F1_LIB_PATH)/CMSIS/ $(F1_LIB_PATH)/Device/ $(F1_LIB_PATH)/STM32F10x_StdPeriph_Driver/inc/ $(F1_LIB_PATH)/usb/inc/ INC_F1 := .
INCLUDES_F1 = $(INC_F1:%=-I%) INC_F1 += $(F1_LIB_PATH)/CMSIS/
INC_F4 = . $(F4_LIB_PATH)/CMSIS/Include/ $(F4_LIB_PATH)/Device/ $(F4_LIB_PATH)/STM32F4xx_StdPeriph_Driver/include/ INC_F1 += $(F1_LIB_PATH)/Device/
INCLUDES_F4 = $(INC_F4:%=-I%) INC_F1 += $(F1_LIB_PATH)/STM32F10x_StdPeriph_Driver/inc/
INC_F7 = . $(F7_LIB_PATH)/CMSIS/Include/ $(F7_LIB_PATH)/Device/ $(F7_LIB_PATH)/STM32F7xx_StdPeriph_Driver/inc/ INC_F1 += $(F1_LIB_PATH)/usb/inc/
INCLUDES_F7 = $(INC_F7:%=-I%) INCLUDES_F1 := $(INC_F1:%=-I%)
INC_F4 := .
INC_F4 += $(F4_LIB_PATH)/CMSIS/Include/
INC_F4 += $(F4_LIB_PATH)/Device/
INC_F4 += $(F4_LIB_PATH)/STM32F4xx_StdPeriph_Driver/include/
INCLUDES_F4 := $(INC_F4:%=-I%)
INC_F7 := .
INC_F7 += $(F7_LIB_PATH)/CMSIS/Include/
INC_F7 += $(F7_LIB_PATH)/Device/
INC_F7 += $(F7_LIB_PATH)/STM32F7xx_StdPeriph_Driver/inc/
INCLUDES_F7 := $(INC_F7:%=-I%)
# CMSIS libraries # CMSIS libraries
INCLUDES_LIBS_F1 = INCLUDES_LIBS_F1 :=
INCLUDES_LIBS_F4 = $(F4_LIB_PATH)/CMSIS/Lib/GCC/libarm_cortexM4lf_math.a INCLUDES_LIBS_F4 := $(F4_LIB_PATH)/CMSIS/Lib/GCC/libarm_cortexM4lf_math.a
INCLUDES_LIBS_F7 = $(F7_LIB_PATH)/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a INCLUDES_LIBS_F7 := $(F7_LIB_PATH)/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a
# STM32F1 Standard Peripheral Libraries source path # STM32F1 Standard Peripheral Libraries source path
STD_LIB_F1 = $(F1_LIB_PATH)/STM32F10x_StdPeriph_Driver/src STD_LIB_F1 := $(F1_LIB_PATH)/STM32F10x_StdPeriph_Driver/src
# STM32F1 USB support source path # STM32F1 USB support source path
USB_F1 = $(F1_LIB_PATH)/usb USB_F1 := $(F1_LIB_PATH)/usb
# STM32F4 Standard Peripheral Libraries source path # STM32F4 Standard Peripheral Libraries source path
STD_LIB_F4 = $(F4_LIB_PATH)/STM32F4xx_StdPeriph_Driver/source STD_LIB_F4 = $(F4_LIB_PATH)/STM32F4xx_StdPeriph_Driver/source
@ -80,53 +120,52 @@ SYS_DIR_F1 = $(F1_LIB_PATH)/Device
STARTUP_DIR_F1 = $(F1_LIB_PATH)/Device/startup STARTUP_DIR_F1 = $(F1_LIB_PATH)/Device/startup
# STM32F4 system source path # STM32F4 system source path
SYS_DIR_F4=$(F4_LIB_PATH)/Device SYS_DIR_F4 = $(F4_LIB_PATH)/Device
STARTUP_DIR_F4=$(F4_LIB_PATH)/Device/startup STARTUP_DIR_F4 = $(F4_LIB_PATH)/Device/startup
# STM32F7 system source path # STM32F7 system source path
SYS_DIR_F7=$(F7_LIB_PATH)/Device SYS_DIR_F7 = $(F7_LIB_PATH)/Device
STARTUP_DIR_F7=$(F7_LIB_PATH)/Device/startup STARTUP_DIR_F7 = $(F7_LIB_PATH)/Device/startup
# GNU ARM Embedded Toolchain # GNU ARM Embedded Toolchain
CROSS := arm-none-eabi- CROSS := arm-none-eabi-
CC := $(CROSS)gcc
CC := $(CROSS)gcc CXX := $(CROSS)g++
CXX := $(CROSS)g++ LD := $(CROSS)ld
LD := arm-none-eabi-ld AR := $(CROSS)ar
AR := arm-none-eabi-ar AS := $(CROSS)as
AS := arm-none-eabi-as CP := $(CROSS)objcopy
CP := arm-none-eabi-objcopy OD := $(CROSS)objdump
OD := arm-none-eabi-objdump NM := $(CROSS)nm
NM := arm-none-eabi-nm SIZE := $(CROSS)size
SIZE := arm-none-eabi-size A2L := $(CROSS)addr2line
A2L := arm-none-eabi-addr2line
# Configure vars depending on OS # Configure vars depending on OS
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
CLEANCMD=del /S *.o *.hex *.bin *.elf CLEANCMD := del /S *.o *.hex *.bin *.elf
MDDIRS=md $@ MDDIRS := md $@
DFU_UTIL=./$(F1_LIB_PATH)/utils/win/dfu-util.exe DFU_UTIL := ./$(F1_LIB_PATH)/utils/win/dfu-util.exe
STM32FLASH=./$(F1_LIB_PATH)/utils/win/stm32flash.exe STM32FLASH := ./$(F1_LIB_PATH)/utils/win/stm32flash.exe
else else
CLEANCMD=rm -f $(OBJ_F1BL) $(OBJ_F4) $(OBJ_F7) $(BINDIR)/*.hex $(BINDIR)/mmdvm_f1.bin $(BINDIR)/mmdvm_f1bl.bin $(BINDIR)/mmdvm_f1nobl.bin $(BINDIR)/*.elf CLEANCMD := rm -f $(OBJ_F1) $(OBJ_F1BL) $(OBJ_F4) $(OBJ_F7) $(BINDIR)/*.hex $(BINDIR)/mmdvm_f1.bin $(BINDIR)/mmdvm_f1bl.bin $(BINDIR)/mmdvm_f1nobl.bin $(BINDIR)/*.elf
MDDIRS=mkdir $@ MDDIRS := mkdir $@
ifeq ($(shell uname -s),Linux) ifeq ($(shell uname -s),Linux)
ST_FLASH_ON_PATH=$(shell which st-flash) ST_FLASH_ON_PATH = $(shell which st-flash)
ST_FLASH_IS_ON_PATH=$(.SHELLSTATUS) ST_FLASH_IS_ON_PATH = $(.SHELLSTATUS)
ifeq ($(shell uname -m),x86_64) ifeq ($(shell uname -m),x86_64)
DFU_RST=./$(F1_LIB_PATH)/utils/linux64/upload-reset DFU_RST = ./$(F1_LIB_PATH)/utils/linux64/upload-reset
DFU_UTIL=./$(F1_LIB_PATH)/utils/linux64/dfu-util DFU_UTIL = ./$(F1_LIB_PATH)/utils/linux64/dfu-util
DFU_RST=./$(F1_LIB_PATH)/utils/linux64/upload-reset DFU_RST = ./$(F1_LIB_PATH)/utils/linux64/upload-reset
DFU_UTIL=./$(F1_LIB_PATH)/utils/linux64/dfu-util DFU_UTIL = ./$(F1_LIB_PATH)/utils/linux64/dfu-util
ifeq ($(ST_FLASH_IS_ON_PATH),0) ifeq ($(ST_FLASH_IS_ON_PATH),0)
ST_FLASH=$(ST_FLASH_ON_PATH) ST_FLASH = $(ST_FLASH_ON_PATH)
ST_FLASH_OPTS=--flash=128k ST_FLASH_OPTS = --flash=128k
else else
ST_FLASH=./$(F1_LIB_PATH)/utils/linux64/st-flash ST_FLASH = ./$(F1_LIB_PATH)/utils/linux64/st-flash
ST_FLASH_OPTS= ST_FLASH_OPTS =
endif endif
STM32FLASH=./$(F1_LIB_PATH)/utils/linux64/stm32flash STM32FLASH = ./$(F1_LIB_PATH)/utils/linux64/stm32flash
else ifeq ($(shell uname -m),armv7l) else ifeq ($(shell uname -m),armv7l)
DFU_RST=./$(F1_LIB_PATH)/utils/rpi32/upload-reset DFU_RST=./$(F1_LIB_PATH)/utils/rpi32/upload-reset
DFU_UTIL=./$(F1_LIB_PATH)/utils/rpi32/dfu-util DFU_UTIL=./$(F1_LIB_PATH)/utils/rpi32/dfu-util
@ -144,117 +183,133 @@ else
ST_FLASH=$(ST_FLASH_ON_PATH) ST_FLASH=$(ST_FLASH_ON_PATH)
ST_FLASH_OPTS=--flash=128k ST_FLASH_OPTS=--flash=128k
else else
ST_FLASH=./$(F1_LIB_PATH)/utils/linux/st-flash ST_FLASH = ./$(F1_LIB_PATH)/utils/linux/st-flash
ST_FLASH_OPTS= ST_FLASH_OPTS =
endif endif
STM32FLASH=./$(F1_LIB_PATH)/utils/linux/stm32flash STM32FLASH=./$(F1_LIB_PATH)/utils/linux/stm32flash
endif endif
endif endif
ifeq ($(shell uname -s),Darwin) ifeq ($(shell uname -s),Darwin)
DFU_RST=./$(F1_LIB_PATH)/utils/macosx/upload-reset DFU_RST = ./$(F1_LIB_PATH)/utils/macosx/upload-reset
DFU_UTIL=./$(F1_LIB_PATH)/utils/macosx/dfu-util DFU_UTIL = ./$(F1_LIB_PATH)/utils/macosx/dfu-util
ST_FLASH=./$(F1_LIB_PATH)/utils/macosx/st-flash ST_FLASH = ./$(F1_LIB_PATH)/utils/macosx/st-flash
STM32FLASH=./$(F1_LIB_PATH)/utils/macosx/stm32flash STM32FLASH = ./$(F1_LIB_PATH)/utils/macosx/stm32flash
endif endif
endif endif
# Default reference oscillator frequencies # Default reference oscillator frequencies
ifndef $(OSC) ifndef $(OSC)
ifeq ($(MAKECMDGOALS),pi-f4) ifeq ($(MAKECMDGOALS),pi-f4)
OSC=$(CLK_PI_F4) OSC := $(CLK_PI_F4)
else else
OSC=$(CLK_DEF) OSC := $(CLK_DEF)
endif endif
endif endif
# Build object lists # Build object lists
CXXSRC=$(wildcard $(MMDVM_HS_PATH)/*.cpp) CXXSRC := $(wildcard $(MMDVM_HS_PATH)/*.cpp)
CSRC_STD_F1=$(wildcard $(STD_LIB_F1)/*.c) CSRC_STD_F1 := $(wildcard $(STD_LIB_F1)/*.c)
SYS_F1=$(wildcard $(SYS_DIR_F1)/*.c) SYS_F1 := $(wildcard $(SYS_DIR_F1)/*.c)
STARTUP_F1=$(wildcard $(STARTUP_DIR_F1)/*.c) STARTUP_F1 := $(wildcard $(STARTUP_DIR_F1)/*.c)
CXX_USB_F1=$(wildcard $(USB_F1)/*.cpp) CXX_USB_F1 := $(wildcard $(USB_F1)/*.cpp)
C_USB_F1=$(wildcard $(USB_F1)/*.c) C_USB_F1 := $(wildcard $(USB_F1)/*.c)
CSRC_STD_F4=$(wildcard $(STD_LIB_F4)/*.c) CSRC_STD_F4 := $(wildcard $(STD_LIB_F4)/*.c)
SYS_F4=$(wildcard $(SYS_DIR_F4)/*.c) SYS_F4 := $(wildcard $(SYS_DIR_F4)/*.c)
STARTUP_F4=$(wildcard $(STARTUP_DIR_F4)/*.c) STARTUP_F4 := $(wildcard $(STARTUP_DIR_F4)/*.c)
CSRC_STD_F7=$(wildcard $(STD_LIB_F7)/*.c) CSRC_STD_F7 := $(wildcard $(STD_LIB_F7)/*.c)
SYS_F7=$(wildcard $(SYS_DIR_F7)/*.c) SYS_F7 := $(wildcard $(SYS_DIR_F7)/*.c)
STARTUP_F7=$(wildcard $(STARTUP_DIR_F7)/*.c) STARTUP_F7 := $(wildcard $(STARTUP_DIR_F7)/*.c)
OBJ_F1=$(CXXSRC:$(MMDVM_HS_PATH)/%.cpp=$(OBJDIR_F1)/%.o) $(CSRC_STD_F1:$(STD_LIB_F1)/%.c=$(OBJDIR_F1)/%.o) $(SYS_F1:$(SYS_DIR_F1)/%.c=$(OBJDIR_F1)/%.o) $(STARTUP_F1:$(STARTUP_DIR_F1)/%.c=$(OBJDIR_F1)/%.o)
OBJ_F1BL=$(CXXSRC:$(MMDVM_HS_PATH)/%.cpp=$(OBJDIR_F1)/%.o) $(CSRC_STD_F1:$(STD_LIB_F1)/%.c=$(OBJDIR_F1)/%.o) $(SYS_F1:$(SYS_DIR_F1)/%.c=$(OBJDIR_F1)/%.o) $(STARTUP_F1:$(STARTUP_DIR_F1)/%.c=$(OBJDIR_F1)/%.o) $(CXX_USB_F1:$(USB_F1)/%.cpp=$(OBJDIR_F1)/%.o) $(C_USB_F1:$(USB_F1)/%.c=$(OBJDIR_F1)/%.o) OBJ_F1 := $(CXXSRC:$(MMDVM_HS_PATH)/%.cpp=$(OBJDIR_F1)/%.o) $(CSRC_STD_F1:$(STD_LIB_F1)/%.c=$(OBJDIR_F1)/%.o) $(SYS_F1:$(SYS_DIR_F1)/%.c=$(OBJDIR_F1)/%.o) $(STARTUP_F1:$(STARTUP_DIR_F1)/%.c=$(OBJDIR_F1)/%.o)
OBJ_F4=$(CXXSRC:$(MMDVM_HS_PATH)/%.cpp=$(OBJDIR_F4)/%.o) $(CSRC_STD_F4:$(STD_LIB_F4)/%.c=$(OBJDIR_F4)/%.o) $(SYS_F4:$(SYS_DIR_F4)/%.c=$(OBJDIR_F4)/%.o) $(STARTUP_F4:$(STARTUP_DIR_F4)/%.c=$(OBJDIR_F4)/%.o) OBJ_F1BL := $(CXXSRC:$(MMDVM_HS_PATH)/%.cpp=$(OBJDIR_F1)/%.o) $(CSRC_STD_F1:$(STD_LIB_F1)/%.c=$(OBJDIR_F1)/%.o) $(SYS_F1:$(SYS_DIR_F1)/%.c=$(OBJDIR_F1)/%.o) $(STARTUP_F1:$(STARTUP_DIR_F1)/%.c=$(OBJDIR_F1)/%.o) $(CXX_USB_F1:$(USB_F1)/%.cpp=$(OBJDIR_F1)/%.o) $(C_USB_F1:$(USB_F1)/%.c=$(OBJDIR_F1)/%.o)
OBJ_F7=$(CXXSRC:$(MMDVM_HS_PATH)/%.cpp=$(OBJDIR_F7)/%.o) $(CSRC_STD_F7:$(STD_LIB_F7)/%.c=$(OBJDIR_F7)/%.o) $(SYS_F7:$(SYS_DIR_F7)/%.c=$(OBJDIR_F7)/%.o) $(STARTUP_F7:$(STARTUP_DIR_F7)/%.c=$(OBJDIR_F7)/%.o) OBJ_F4 := $(CXXSRC:$(MMDVM_HS_PATH)/%.cpp=$(OBJDIR_F4)/%.o) $(CSRC_STD_F4:$(STD_LIB_F4)/%.c=$(OBJDIR_F4)/%.o) $(SYS_F4:$(SYS_DIR_F4)/%.c=$(OBJDIR_F4)/%.o) $(STARTUP_F4:$(STARTUP_DIR_F4)/%.c=$(OBJDIR_F4)/%.o)
OBJ_F7 := $(CXXSRC:$(MMDVM_HS_PATH)/%.cpp=$(OBJDIR_F7)/%.o) $(CSRC_STD_F7:$(STD_LIB_F7)/%.c=$(OBJDIR_F7)/%.o) $(SYS_F7:$(SYS_DIR_F7)/%.c=$(OBJDIR_F7)/%.o) $(STARTUP_F7:$(STARTUP_DIR_F7)/%.c=$(OBJDIR_F7)/%.o)
# MCU flags # MCU flags
MCFLAGS_F1 = -mcpu=cortex-m3 -march=armv7-m -mthumb -Wall -Wextra MCFLAGS_F1 := -mcpu=cortex-m3 -march=armv7-m -mthumb -Wall -Wextra
MCFLAGS_F4 = -mcpu=cortex-m4 -mthumb -mlittle-endian -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb-interwork MCFLAGS_F4 := -mcpu=cortex-m4 -mthumb -mlittle-endian -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb-interwork
MCFLAGS_F7 = -mcpu=cortex-m7 -mthumb -mlittle-endian -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mthumb-interwork MCFLAGS_F7 := -mcpu=cortex-m7 -mthumb -mlittle-endian -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mthumb-interwork
# Compile flags # Compile flags
DEFS_F1_HS=-DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD -DHSE_VALUE=$(OSC) -DVECT_TAB_OFFSET=0x0 -DMADEBYMAKEFILE DEFS_F1_HS := -DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD -DHSE_VALUE=$(OSC) -DVECT_TAB_OFFSET=0x0 -DMADEBYMAKEFILE
DEFS_F1_HS_BL=-DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD -DHSE_VALUE=$(OSC) -DVECT_TAB_OFFSET=0x2000 -DMADEBYMAKEFILE DEFS_F1_HS_BL := -DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD -DHSE_VALUE=$(OSC) -DVECT_TAB_OFFSET=0x2000 -DMADEBYMAKEFILE
# STM32F446 Pi-Hat board: # STM32F446 Pi-Hat board:
DEFS_PI_F4=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F446xx -DSTM32F4_PI -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE DEFS_PI_F4 := -DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F446xx -DSTM32F4_PI -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
# STM32F4 Nucleo-64 F446RE board: # STM32F4 Nucleo-64 F446RE board:
DEFS_F446=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F446xx -DSTM32F4_NUCLEO -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE DEFS_F446 := -DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F446xx -DSTM32F4_NUCLEO -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
# STM32F7 Nucleo-144 F767ZI board: # STM32F7 Nucleo-144 F767ZI board:
DEFS_F767=-DUSE_HAL_DRIVER -DSTM32F767xx -DSTM32F7XX -DSTM32F7_NUCLEO -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE DEFS_F767 := -DUSE_HAL_DRIVER -DSTM32F767xx -DSTM32F7XX -DSTM32F7_NUCLEO -DHSE_VALUE=$(OSC) -DMADEBYMAKEFILE
# Build compiler flags # Build compiler flags
CFLAGS_F1 = -c $(MCFLAGS_F1) $(INCLUDES_F1) CFLAGS_F1 := -c $(MCFLAGS_F1) $(INCLUDES_F1)
CXXFLAGS_F1 = -c $(MCFLAGS_F1) $(INCLUDES_F1) CXXFLAGS_F1 := -c $(MCFLAGS_F1) $(INCLUDES_F1)
CFLAGS_F4 = -c $(MCFLAGS_F4) $(INCLUDES_F4) CFLAGS_F4 := -c $(MCFLAGS_F4) $(INCLUDES_F4)
CXXFLAGS_F4 = -c $(MCFLAGS_F4) $(INCLUDES_F4) CXXFLAGS_F4 := -c $(MCFLAGS_F4) $(INCLUDES_F4)
CFLAGS_F7 = -c $(MCFLAGS_F7) $(INCLUDES_F7) CFLAGS_F7 := -c $(MCFLAGS_F7) $(INCLUDES_F7)
CXXFLAGS_F7 = -c $(MCFLAGS_F7) $(INCLUDES_F7) CXXFLAGS_F7 := -c $(MCFLAGS_F7) $(INCLUDES_F7)
# Linker flags # Linker flags
LDFLAGS_F1_N = -T normal.ld $(MCFLAGS_F1) $(INCLUDES_LIBS_F1) LDFLAGS_F1_N := -T normal.ld $(MCFLAGS_F1) $(INCLUDES_LIBS_F1)
LDFLAGS_F1_BL = -T bootloader.ld $(MCFLAGS_F1) $(INCLUDES_LIBS_F1) LDFLAGS_F1_BL := -T bootloader.ld $(MCFLAGS_F1) $(INCLUDES_LIBS_F1)
LDFLAGS_F4 = -T stm32f4xx_link.ld $(MCFLAGS_F4) $(INCLUDES_LIBS_F4) LDFLAGS_F4 := -T stm32f4xx_link.ld $(MCFLAGS_F4) $(INCLUDES_LIBS_F4)
LDFLAGS_F7 = -T stm32f7xx_link.ld $(MCFLAGS_F7) $(INCLUDES_LIBS_F7) LDFLAGS_F7 := -T stm32f7xx_link.ld $(MCFLAGS_F7) $(INCLUDES_LIBS_F7)
# Common flags # Common flags
CFLAGS = -Os -ffunction-sections -fdata-sections -nostdlib -DCUSTOM_NEW -DNO_EXCEPTIONS -Wno-unused-parameter -nostdlib DEFINES := -DCUSTOM_NEW
CXXFLAGS = -Os -fno-exceptions -ffunction-sections -fdata-sections -nostdlib -fno-rtti -DCUSTOM_NEW -DNO_EXCEPTIONS -Wno-unused-parameter DEFINES += -DNO_EXCEPTIONS
LDFLAGS = -Os --specs=nano.specs --specs=nosys.specs
CFLAGS := -O$(OPTLVL) -ffunction-sections -fdata-sections -nostdlib $(DEFINES) -Wno-unused-parameter -nostdlib
CXXFLAGS := -O$(OPTLVL) -fno-exceptions -ffunction-sections -fdata-sections -nostdlib -fno-rtti $(DEFINES) -Wno-unused-parameter
LDFLAGS := -O$(OPTLVL) --specs=nano.specs --specs=nosys.specs
# Build Rules # Build Rules
.PHONY: all release_f1 release_f4 release_f7 hs bl nobl pi-f4 f446 f767 clean .PHONY: all release_f1 release_f4 release_f7 hs bl nobl pi-f4 f446 f767 clean
all: hs all: hs
pi-f4: CFLAGS+=$(CFLAGS_F4) $(DEFS_PI_F4) pi-f4: CFLAGS += $(CFLAGS_F4) $(DEFS_PI_F4)
pi-f4: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_PI_F4) pi-f4: CXXFLAGS += $(CXXFLAGS_F4) $(DEFS_PI_F4)
pi-f4: LDFLAGS+=$(LDFLAGS_F4) pi-f4: LDFLAGS += $(LDFLAGS_F4)
pi-f4: release_f4 pi-f4: release_f4
f446: CFLAGS+=$(CFLAGS_F4) $(DEFS_F446) f446: CFLAGS += $(CFLAGS_F4) $(DEFS_F446)
f446: CXXFLAGS+=$(CXXFLAGS_F4) $(DEFS_F446) f446: CXXFLAGS += $(CXXFLAGS_F4) $(DEFS_F446)
f446: LDFLAGS+=$(LDFLAGS_F4) f446: LDFLAGS += $(LDFLAGS_F4)
f446: release_f4 f446: release_f4
f767: CFLAGS+=$(CFLAGS_F7) $(DEFS_F767) f767: CFLAGS += $(CFLAGS_F7) $(DEFS_F767)
f767: CXXFLAGS+=$(CXXFLAGS_F7) $(DEFS_F767) f767: CXXFLAGS += $(CXXFLAGS_F7) $(DEFS_F767)
f767: LDFLAGS+=$(LDFLAGS_F7) f767: LDFLAGS += $(LDFLAGS_F7)
f767: release_f7 f767: release_f7
hs: CFLAGS+=$(CFLAGS_F1) $(DEFS_F1_HS) hs: CFLAGS += $(CFLAGS_F1) $(DEFS_F1_HS)
hs: CXXFLAGS+=$(CXXFLAGS_F1) $(DEFS_F1_HS) hs: CXXFLAGS += $(CXXFLAGS_F1) $(DEFS_F1_HS)
hs: LDFLAGS+=$(LDFLAGS_F1_N) hs: LDFLAGS += $(LDFLAGS_F1_N)
hs: release_f1 hs: release_f1
bl: CFLAGS+=$(CFLAGS_F1) $(DEFS_F1_HS_BL) bl: CFLAGS += $(CFLAGS_F1) $(DEFS_F1_HS_BL)
bl: CXXFLAGS+=$(CXXFLAGS_F1) $(DEFS_F1_HS_BL) bl: CXXFLAGS += $(CXXFLAGS_F1) $(DEFS_F1_HS_BL)
bl: LDFLAGS+=$(LDFLAGS_F1_BL) bl: LDFLAGS += $(LDFLAGS_F1_BL)
bl: release_f1bl bl: release_f1bl
nobl: CFLAGS+=$(CFLAGS_F1) $(DEFS_F1_HS) nobl: CFLAGS += $(CFLAGS_F1) $(DEFS_F1_HS)
nobl: CXXFLAGS+=$(CXXFLAGS_F1) $(DEFS_F1_HS) nobl: CXXFLAGS += $(CXXFLAGS_F1) $(DEFS_F1_HS)
nobl: LDFLAGS+=$(LDFLAGS_F1_N) nobl: LDFLAGS += $(LDFLAGS_F1_N)
nobl: release_f1nobl nobl: release_f1nobl
release_f1: GitVersion.h release_f1: GitVersion.h
release_f1: $(BINDIR) release_f1: $(BINDIR)
release_f1: $(OBJDIR_F1) release_f1: $(OBJDIR_F1)
@ -285,6 +340,8 @@ release_f7: $(OBJDIR_F7)
release_f7: $(BINDIR)/$(BINHEX_F7) release_f7: $(BINDIR)/$(BINHEX_F7)
release_f7: $(BINDIR)/$(BINBIN_F7) release_f7: $(BINDIR)/$(BINBIN_F7)
$(BINDIR): $(BINDIR):
$(MDDIRS) $(MDDIRS)
@ -418,42 +475,53 @@ $(OBJDIR_F1)/%.o: $(USB_F1)/%.c
$(CC) $(CFLAGS) $< -o $@ $(CC) $(CFLAGS) $< -o $@
@echo "Compiled "$<"!\n" @echo "Compiled "$<"!\n"
clean: clean:
@echo "Cleaning project...\n"
$(CLEANCMD) $(CLEANCMD)
$(RM) GitVersion.h $(RM) GitVersion.h
stlink: stlink:
$(ST_FLASH) $(ST_FLASH_OPTS) write bin/$(BINBIN_F1) 0x8000000 $(ST_FLASH) $(ST_FLASH_OPTS) write bin/$(BINBIN_F1) 0x8000000
stlink-nobl: stlink-nobl:
$(ST_FLASH) $(ST_FLASH_OPTS) write bin/$(BINBIN_F1NOBL) 0x8000000 $(ST_FLASH) $(ST_FLASH_OPTS) write bin/$(BINBIN_F1NOBL) 0x8000000
stlink-bl: stlink-bl:
$(ST_FLASH) $(ST_FLASH_OPTS) write $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13_long_rst.bin 0x8000000 $(ST_FLASH) $(ST_FLASH_OPTS) write $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13_long_rst.bin 0x8000000
sleep 3 sleep $(STLINK_SLEEP_DELAY)
$(ST_FLASH) $(ST_FLASH_OPTS) write bin/$(BINBIN_F1BL) 0x8002000 $(ST_FLASH) $(ST_FLASH_OPTS) write bin/$(BINBIN_F1BL) 0x8002000
stlink-bl-old: stlink-bl-old:
$(ST_FLASH) $(ST_FLASH_OPTS) write $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13.bin 0x8000000 $(ST_FLASH) $(ST_FLASH_OPTS) write $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13.bin 0x8000000
sleep 3 sleep $(STLINK_SLEEP_DELAY)
$(ST_FLASH) $(ST_FLASH_OPTS) write bin/$(BINBIN_F1BL) 0x8002000 $(ST_FLASH) $(ST_FLASH_OPTS) write bin/$(BINBIN_F1BL) 0x8002000
serial: serial:
$(STM32FLASH) -v -w bin/$(BINBIN_F1) -g 0x0 $(devser) $(STM32FLASH) -v -w bin/$(BINBIN_F1) -g 0x0 $(devser)
serial-nobl: serial-nobl:
$(STM32FLASH) -v -w bin/$(BINBIN_F1NOBL) -g 0x0 $(devser) $(STM32FLASH) -v -w bin/$(BINBIN_F1NOBL) -g 0x0 $(devser)
serial-bl: serial-bl:
$(STM32FLASH) -v -w $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13_long_rst.bin -g 0x0 $(devser) $(STM32FLASH) -v -w $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13_long_rst.bin -g 0x0 $(devser)
sleep 3 sleep $(SERIAL_SLEEP_DELAY)
$(STM32FLASH) -v -w bin/$(BINBIN_F1BL) -g 0x0 -S 0x08002000 $(devser) $(STM32FLASH) -v -w bin/$(BINBIN_F1BL) -g 0x0 -S 0x08002000 $(devser)
serial-bl-old: serial-bl-old:
$(STM32FLASH) -v -w $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13.bin -g 0x0 $(devser) $(STM32FLASH) -v -w $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13.bin -g 0x0 $(devser)
sleep 3 sleep $(SERIAL_SLEEP_DELAY)
$(STM32FLASH) -v -w bin/$(BINBIN_F1BL) -g 0x0 -S 0x08002000 $(devser) $(STM32FLASH) -v -w bin/$(BINBIN_F1BL) -g 0x0 -S 0x08002000 $(devser)
nano-hotspot: nano-hotspot:
ifneq ($(wildcard /usr/local/bin/stm32flash),) ifneq ($(wildcard /usr/local/bin/stm32flash),)
/usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 200,-3,3:-200,3 /dev/ttyAMA0 /usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 200,-3,3:-200,3 /dev/ttyAMA0
@ -463,6 +531,7 @@ ifneq ($(wildcard /usr/bin/stm32flash),)
/usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 200,-3,3:-200,3 /dev/ttyAMA0 /usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 200,-3,3:-200,3 /dev/ttyAMA0
endif endif
nano-dv: nano-dv:
ifneq ($(wildcard /usr/local/bin/stm32flash),) ifneq ($(wildcard /usr/local/bin/stm32flash),)
/usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 66,-67,67:-66,67 /dev/ttyAMA0 /usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 66,-67,67:-66,67 /dev/ttyAMA0
@ -472,6 +541,7 @@ ifneq ($(wildcard /usr/bin/stm32flash),)
/usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 66,-67,67:-66,67 /dev/ttyAMA0 /usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 66,-67,67:-66,67 /dev/ttyAMA0
endif endif
d2rg_mmdvm_hs: d2rg_mmdvm_hs:
ifneq ($(wildcard /usr/local/bin/stm32flash),) ifneq ($(wildcard /usr/local/bin/stm32flash),)
/usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 23,-22,22:-23,22 /dev/ttySC0 /usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 23,-22,22:-23,22 /dev/ttySC0
@ -481,6 +551,7 @@ ifneq ($(wildcard /usr/bin/stm32flash),)
/usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 23,-22,22:-23,22 /dev/ttySC0 /usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 23,-22,22:-23,22 /dev/ttySC0
endif endif
zumspot-pi: zumspot-pi:
ifneq ($(wildcard /usr/local/bin/stm32flash),) ifneq ($(wildcard /usr/local/bin/stm32flash),)
/usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 20,-21,21:-20,21 /dev/ttyAMA0 /usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 20,-21,21:-20,21 /dev/ttyAMA0
@ -490,12 +561,16 @@ ifneq ($(wildcard /usr/bin/stm32flash),)
/usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 20,-21,21:-20,21 /dev/ttyAMA0 /usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 20,-21,21:-20,21 /dev/ttyAMA0
endif endif
mmdvm_hs_hat: zumspot-pi mmdvm_hs_hat: zumspot-pi
mmdvm_hs_dual_hat: zumspot-pi mmdvm_hs_dual_hat: zumspot-pi
skybridge: zumspot-pi skybridge: zumspot-pi
hotpot-opipc_opipcplus: hotpot-opipc_opipcplus:
ifneq ($(wildcard /usr/local/bin/stm32flash),) ifneq ($(wildcard /usr/local/bin/stm32flash),)
/usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 198,-199,199:-198,199 /dev/ttyS3 /usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 198,-199,199:-198,199 /dev/ttyS3
@ -505,16 +580,20 @@ ifneq ($(wildcard /usr/bin/stm32flash),)
/usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 198,-199,199:-198,199 /dev/ttyS3 /usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 198,-199,199:-198,199 /dev/ttyS3
endif endif
mmdvm_hs_hat_opi: hotpot-opipc_opipcplus mmdvm_hs_hat_opi: hotpot-opipc_opipcplus
mmdvm_hs_dual_hat_opi: hotpot-opipc_opipcplus mmdvm_hs_dual_hat_opi: hotpot-opipc_opipcplus
dfu: dfu:
ifdef devser ifdef devser
$(DFU_RST) $(devser) 750 $(DFU_RST) $(devser) 750
endif endif
$(DFU_UTIL) -D bin/$(BINBIN_F1BL) -d 1eaf:0003 -a 2 -R -R $(DFU_UTIL) -D bin/$(BINBIN_F1BL) -d 1eaf:0003 -a 2 -R -R
ocd: ocd:
ifneq ($(wildcard /usr/bin/openocd),) ifneq ($(wildcard /usr/bin/openocd),)
/usr/bin/openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINELF_F1) verify reset exit" /usr/bin/openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINELF_F1) verify reset exit"
@ -528,6 +607,7 @@ ifneq ($(wildcard /opt/openocd/bin/openocd),)
/opt/openocd/bin/openocd -f /opt/openocd/scripts/interface/stlink-v2-1.cfg -f /opt/openocd/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINELF_F1) verify reset exit" /opt/openocd/bin/openocd -f /opt/openocd/scripts/interface/stlink-v2-1.cfg -f /opt/openocd/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINELF_F1) verify reset exit"
endif endif
ocd-nobl: ocd-nobl:
ifneq ($(wildcard /usr/bin/openocd),) ifneq ($(wildcard /usr/bin/openocd),)
/usr/bin/openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINELF_F1NOBL) verify reset exit" /usr/bin/openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINELF_F1NOBL) verify reset exit"
@ -541,6 +621,7 @@ ifneq ($(wildcard /opt/openocd/bin/openocd),)
/opt/openocd/bin/openocd -f /opt/openocd/scripts/interface/stlink-v2-1.cfg -f /opt/openocd/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINELF_F1NOBL) verify reset exit" /opt/openocd/bin/openocd -f /opt/openocd/scripts/interface/stlink-v2-1.cfg -f /opt/openocd/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINELF_F1NOBL) verify reset exit"
endif endif
ocd-bl: ocd-bl:
ifneq ($(wildcard /usr/bin/openocd),) ifneq ($(wildcard /usr/bin/openocd),)
/usr/bin/openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "program $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13_long_rst.bin verify reset exit 0x08000000" /usr/bin/openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "program $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13_long_rst.bin verify reset exit 0x08000000"
@ -557,6 +638,7 @@ ifneq ($(wildcard /opt/openocd/bin/openocd),)
/opt/openocd/bin/openocd -f /opt/openocd/scripts/interface/stlink-v2-1.cfg -f /opt/openocd/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINBIN_F1BL) verify reset exit 0x08002000" /opt/openocd/bin/openocd -f /opt/openocd/scripts/interface/stlink-v2-1.cfg -f /opt/openocd/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINBIN_F1BL) verify reset exit 0x08002000"
endif endif
ocd-bl-old: ocd-bl-old:
ifneq ($(wildcard /usr/bin/openocd),) ifneq ($(wildcard /usr/bin/openocd),)
/usr/bin/openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "program $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13.bin verify reset exit 0x08000000" /usr/bin/openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "program $(F1_LIB_PATH)/utils/bootloader/generic_boot20_pc13.bin verify reset exit 0x08000000"
@ -573,6 +655,7 @@ ifneq ($(wildcard /opt/openocd/bin/openocd),)
/opt/openocd/bin/openocd -f /opt/openocd/scripts/interface/stlink-v2-1.cfg -f /opt/openocd/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINBIN_F1BL) verify reset exit 0x08002000" /opt/openocd/bin/openocd -f /opt/openocd/scripts/interface/stlink-v2-1.cfg -f /opt/openocd/share/openocd/scripts/target/stm32f1x.cfg -c "program bin/$(BINBIN_F1BL) verify reset exit 0x08002000"
endif endif
# Export the current git version if the index file exists, else 000... # Export the current git version if the index file exists, else 000...
GitVersion.h: .FORCE GitVersion.h: .FORCE
ifdef SYSTEMROOT ifdef SYSTEMROOT

Loading…
Cancel
Save

Powered by TurnKey Linux.