make reorganized

This commit is contained in:
tkl
2016-08-16 14:28:08 +02:00
parent caa360625b
commit a8a4cb263d
16 changed files with 268 additions and 116 deletions

44
config/make/rules.mk Normal file
View File

@@ -0,0 +1,44 @@
.PHONY: clean distclean doc test
ROOT_DIR := $(shell pwd | sed "s/\/source//g")
include $(ROOT_DIR)/config/make/tools.mk
ifeq ($(BOARD), stm32f4-discovery)
include $(ROOT_DIR)/config/make/stm32f4xx.mk
endif
OS_LIB = kosmos-$(ARCH)-$(BOARD)$(DBG_EXT)
LIBS += $(OS_LIB)
INCLUDES += \
$(SRC_DIR)/firmware
ifeq ($(DEBUG),y)
DBG_DIR = debug
else
DBG_DIR = release
endif
OBJ_DIR := $(ROOT_DIR)/release/object/$(ARCH)/$(DBG_DIR)
EXE_DIR := $(ROOT_DIR)/release/execute/$(ARCH)/$(DBG_DIR)
MAP_DIR := $(ROOT_DIR)/release/map/$(ARCH)/$(DBG_DIR)
SIZE_DIR := $(ROOT_DIR)/release/size/$(ARCH)/$(DBG_DIR)
TEST_OBJ_DIR := $(ROOT_DIR)/test/object
TEST_EXE_DIR := $(ROOT_DIR)/test/execute/
ELF_EXT = .elf
BIN_EXT = .bin
HEX_EXT = .hex
LIB_EXT = .a
SIZE_EXT = .size
TEST_EXT =
MAP_EXT = .map
define makedep
$(CC) -MM \
-MF $3 \
-MP \
-MT $2 \
$4 \
$1
endef

87
config/make/stm32f4xx.mk Normal file
View File

@@ -0,0 +1,87 @@
ARCH ?= arm
CPU ?= stm32f4xx
ifeq ($(CPU),stm32f4xx)
C_FLAGS += -DARCH_STM32F4XX
endif
ifeq ($(BOARD), stm32f4-discovery)
C_FLAGS += -DBOARD_STM32F4_DISCOVERY
endif
CROSS_COMPILE ?= arm-none-eabi-
INCLUDES += \
/opt/arm-2011.09/arm-none-eabi/include \
/opt/arm-2011.09/lib/gcc/arm-none-eabi/4.6.1/include
ifeq ($(DEBUG),y)
OPTIM = g
GEN_FLAGS += -g3
DBG_EXT = -dbg
else
OPTIM = s
DBG_EXT =
endif
GEN_FLAGS := \
-mcpu=cortex-m4 \
-mthumb \
-mfloat-abi=hard \
-mfpu=fpv4-sp-d16 \
-O$(OPTIM) \
-fmessage-length=0 \
-fsigned-char \
-ffunction-sections \
-fdata-sections \
-ffreestanding \
-fno-move-loop-invariants \
-Werror \
-Wunused \
-Wuninitialized \
-Wall \
-Wextra \
-Wmissing-declarations \
-Wconversion \
-Wpointer-arith \
-Wpadded \
-Wshadow \
-Wlogical-op \
-Waggregate-return \
-Wfloat-equal
C_FLAGS += \
-DDEBUG \
-DUSE_FULL_ASSERT \
-DTRACE \
-DOS_USE_TRACE_SEMIHOSTING_DEBUG \
-DSTM32F407xx \
-DUSE_HAL_DRIVER \
-DHSE_VALUE=8000000 \
$(addprefix -I, $(INCLUDES)) \
-std=gnu11 \
-Wmissing-prototypes \
-Wstrict-prototypes \
-Wbad-function-cast \
-Wno-bad-function-cast \
-Wno-conversion \
-Wno-sign-conversion \
-Wno-unused-parameter \
-Wno-sign-compare \
-Wno-missing-prototypes \
-Wno-missing-declarations
L_FLAGS := \
-T mem.ld \
-T libs.ld \
-T sections.ld \
-nostartfiles \
-Xlinker --gc-sections \
-L"config/linker" \
--specs=nano.specs
AS_FLAGS := -mapcs-32 -g
AR_FLAGS := rcs
OOCD_IMAGE=$(BIN_FILE)
OOCD_CFG_FILE=$(EXE_DIR)/openocd.cfg
PRE_PROGRAM = echo "telnet_port 4444\ninit\nreset halt\nflash write_image erase $(OOCD_IMAGE) 0x08000000 bin\nreset run\n shutdown\n" > $(OOCD_CFG_FILE)
PROGRAM = openocd -f /usr/share/openocd/scripts/board/stm32f4discovery.cfg -f $(OOCD_CFG_FILE)

13
config/make/tools.mk Normal file
View File

@@ -0,0 +1,13 @@
CC = $(CROSS_COMPILE)gcc
CXX = $(CROSS_COMPILE)g++
AR = $(CROSS_COMPILE)ar
SIZE = $(CROSS_COMPILE)size
NM = $(CROSS_COMPILE)nm
RANLIB = $(CROSS_COMPILE)ranlib
OBJCOPY=$(CROSS_COMPILE)objcopy
SED = sed
RM = rm -f
MV = mv
CP = cp
MKDIR = mkdir -p
CPPCHECK = cppcheck