Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
#######################################
# Base paths
#######################################
SRC_DIR = ../src
LIB_DIR = ../lib
BOARD_DIR = $(SRC_DIR)/board/$(BOARD)
BOARD_SRC_DIR = $(BOARD_DIR)
MATH_DIR = $(SRC_DIR)/math
MATH_SRC_DIR = $(MATH_DIR)
MAZE_DIR = $(SRC_DIR)/maze
MAZE_SRC_DIR = $(MAZE_DIR)
MODULE_DIR = $(SRC_DIR)/module
MODULE_SRC_DIR = $(MODULE_DIR)
PERIPHERAL_DIR = $(SRC_DIR)/peripheral
PERIPHERAL_SRC_DIR = $(PERIPHERAL_DIR)
SYSTEM_DIR = $(SRC_DIR)/system
SYSTEM_SRC_DIR = $(SYSTEM_DIR)
# Libs dirs
STM32_HAL_DIR = $(LIB_DIR)/STM32F4xx_HAL_Driver
STM32_HAL_SRC_DIR = $(STM32_HAL_DIR)/Src
FREERTOS_DIR = $(LIB_DIR)/FreeRTOS/Source
FREERTOS_SRC_DIR = $(FREERTOS_DIR)
NEWLIB_DIR = $(SYSTEM_DIR)/newlib
NEWLIB_SRC_DIR = $(NEWLIB_DIR)
#######################################
# paths
#######################################
# source path
SOURCES_DIR = \
$(LIB_DIR)/STM32F4xx_HAL_Driver \
$(LIB_DIR)/FreeRTOS \
$(LIB_DIR)/CMSIS \
$(BOARD_DIR) \
$(MATH_DIR) \
$(MAZE_DIR) \
$(MODULE_DIR) \
$(PERIPHERAL_DIR) \
$(SYSTEM_DIR)
# Build path
BUILD_DIR := build
######################################
# source
######################################
# C sources
C_SOURCES = $(wildcard ./*.c)
C_SOURCES += $(wildcard ./*.cc)
# board sources
BOARD_SOURCES := $(addsuffix /*.c,$(BOARD_SRC_DIR))
BOARD_SOURCES := $(wildcard $(BOARD_SOURCES))
BOARD_SOURCES_CXX := $(addsuffix /*.cc,$(BOARD_SRC_DIR))
BOARD_SOURCES += $(wildcard $(BOARD_SOURCES_CXX))
C_SOURCES += $(BOARD_SOURCES)
# math sources
MATH_SOURCES := $(addprefix $(MATH_SRC_DIR)/, $(MATH_FILES))
C_SOURCES += $(MATH_SOURCES)
# maze sources
MAZE_SOURCES := $(addprefix $(MAZE_SRC_DIR)/, $(MAZE_FILES))
C_SOURCES += $(MAZE_SOURCES)
# module sources
MODULE_SOURCES := $(addprefix $(MODULE_SRC_DIR)/, $(MODULE_FILES))
MODULE_EXCLUDE_FILES := terminal_test.c
MODULE_EXCLUDE_FILES := $(addprefix $(MODULE_SRC_DIR)/, $(MODULE_EXCLUDE_FILES))
MODULE_SOURCES := $(filter-out $(MODULE_EXCLUDE_FILES),$(MODULE_SOURCES))
C_SOURCES += $(MODULE_SOURCES)
# peripheral sources
PERIPHERAL_SOURCES := $(addprefix $(PERIPHERAL_SRC_DIR)/, $(PERIPHERAL_FILES))
C_SOURCES += $(PERIPHERAL_SOURCES)
# system sources
SYSTEM_SOURCES := $(addsuffix /*.c,$(SYSTEM_SRC_DIR))
SYSTEM_SOURCES := $(wildcard $(SYSTEM_SOURCES))
SYSTEM_EXCLUDE_FILES := system_config_tmplate.c
SYSTEM_EXCLUDE_FILES := $(addprefix $(SYSTEM_SRC_DIR)/, $(SYSTEM_EXCLUDE_FILES))
SYSTEM_SOURCES := $(filter-out $(SYSTEM_EXCLUDE_FILES),$(SYSTEM_SOURCES))
C_SOURCES += $(SYSTEM_SOURCES)
# STM32 HAL sources
ifndef STM32_HAL_FILES
$(error STM32_HAL_FILES is undefined)
endif
STM32_HAL_SOURCES := $(addprefix $(STM32_HAL_SRC_DIR)/, $(STM32_HAL_FILES))
C_SOURCES += $(STM32_HAL_SOURCES)
# FreeRTOS sources
FREERTOS_HEAP_FILE ?= heap_4.c
FREERTOS_SOURCES := \
$(FREERTOS_SRC_DIR)/portable/MemMang/$(FREERTOS_HEAP_FILE) \
$(FREERTOS_SRC_DIR)/event_groups.c \
$(FREERTOS_SRC_DIR)/queue.c \
$(FREERTOS_SRC_DIR)/list.c \
$(FREERTOS_SRC_DIR)/tasks.c \
$(FREERTOS_SRC_DIR)/croutine.c \
$(FREERTOS_SRC_DIR)/timers.c \
$(FREERTOS_SRC_DIR)/portable/GCC/ARM_CM4F/port.c \
$(FREERTOS_SRC_DIR)/CMSIS_RTOS/cmsis_os.c
C_SOURCES += $(FREERTOS_SOURCES)
# newlib implementation sources
NEWLIB_SOURCES := $(addsuffix /*.c,$(NEWLIB_SRC_DIR))
NEWLIB_SOURCES := $(wildcard $(NEWLIB_SOURCES))
C_SOURCES += $(NEWLIB_SOURCES)
# ASM sources
STARTUP_ASM ?= $(BOARD_DIR)/startup.s
ASM_SOURCES = \
$(STARTUP_ASM)
# AS includes
AS_INCLUDES = \
# C includes
C_INCLUDES = \
-I./ \
-I$(LIB_DIR)/CMSIS/Include \
-I$(LIB_DIR)/CMSIS/Device/ST/STM32F4xx/Include \
-I$(STM32_HAL_DIR)/Inc \
-I$(STM32_HAL_DIR)/Inc/Legacy \
-I$(FREERTOS_DIR)/portable/GCC/ARM_CM4F \
-I$(FREERTOS_DIR)/include \
-I$(FREERTOS_DIR)/CMSIS_RTOS \
-I$(BOARD_SRC_DIR) \
-I$(MATH_SRC_DIR) \
-I$(MAZE_SRC_DIR) \
-I$(MODULE_SRC_DIR) \
-I$(PERIPHERAL_SRC_DIR) \
-I$(SYSTEM_SRC_DIR) \
#######################################
# LDFLAGS
#######################################
# link script
LDSCRIPT ?= $(BOARD_DIR)/linker_script.ld
#######################################
# Objects and file path
#######################################
# Divide C and CPP
CPP_SOURCES := $(filter-out %.c,$(C_SOURCES))
C_SOURCES := $(filter-out %.cc,$(C_SOURCES))
# list of C objects
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
# list of CPP objects
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(CPP_SOURCES:.cc=.o)))
vpath %.cc $(sort $(dir $(CPP_SOURCES)))
# list of ASM program objects
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))
1fc1053c2This file is pinned to the selected release. Download the original to open it in your design tool.