2018-01-12 17:34:19 -04:00
|
|
|
##############################################################################
|
|
|
|
# Build global options
|
|
|
|
# NOTE: Can be overridden externally.
|
|
|
|
#
|
|
|
|
|
|
|
|
# Compiler options here.
|
|
|
|
ifeq ($(USE_OPT),)
|
2023-05-10 03:07:13 -03:00
|
|
|
USE_OPT = -fomit-frame-pointer -falign-functions=16
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ENABLE_DEBUG_SYMBOLS), yes)
|
2024-06-26 02:00:29 -03:00
|
|
|
USE_OPT += -g3
|
2018-01-12 17:34:19 -04:00
|
|
|
endif
|
|
|
|
|
|
|
|
# C specific options here (added to USE_OPT).
|
|
|
|
ifeq ($(USE_COPT),)
|
2019-02-14 08:07:34 -04:00
|
|
|
USE_COPT = -Os
|
2018-01-12 17:34:19 -04:00
|
|
|
endif
|
|
|
|
|
|
|
|
# C++ specific options here (added to USE_OPT).
|
|
|
|
ifeq ($(USE_CPPOPT),)
|
2018-08-02 07:59:45 -03:00
|
|
|
USE_CPPOPT = -fno-rtti -std=gnu++11
|
2018-01-12 17:34:19 -04:00
|
|
|
endif
|
|
|
|
|
2022-08-16 00:10:27 -03:00
|
|
|
# Assembly specific options here (added to USE_OPT).
|
|
|
|
ifeq ($(USE_ASOPT),)
|
|
|
|
USE_ASOPT =
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Assembly specific options here (added to USE_ASXOPT).
|
|
|
|
ifeq ($(USE_ASXOPT),)
|
|
|
|
USE_ASXOPT =
|
|
|
|
endif
|
|
|
|
|
2018-01-12 17:34:19 -04:00
|
|
|
# Enable this if you want the linker to remove unused code and data
|
|
|
|
ifeq ($(USE_LINK_GC),)
|
|
|
|
USE_LINK_GC = yes
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Linker extra options here.
|
|
|
|
ifeq ($(USE_LDOPT),)
|
|
|
|
USE_LDOPT =
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Enable this if you want link time optimizations (LTO)
|
|
|
|
ifeq ($(USE_LTO),)
|
|
|
|
USE_LTO = no
|
|
|
|
endif
|
|
|
|
|
|
|
|
# If enabled, this option allows to compile the application in THUMB mode.
|
|
|
|
ifeq ($(USE_THUMB),)
|
|
|
|
USE_THUMB = yes
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Enable this if you want to see the full log while compiling.
|
|
|
|
ifeq ($(USE_VERBOSE_COMPILE),)
|
|
|
|
USE_VERBOSE_COMPILE = no
|
|
|
|
endif
|
|
|
|
|
|
|
|
# If enabled, this option makes the build process faster by not compiling
|
|
|
|
# modules not used in the current configuration.
|
|
|
|
ifeq ($(USE_SMART_BUILD),)
|
|
|
|
USE_SMART_BUILD = no
|
|
|
|
endif
|
|
|
|
|
2018-03-26 20:56:01 -03:00
|
|
|
include $(CHIBIOS)/os/various/cpp_wrappers/chcpp.mk
|
|
|
|
ifeq ($(USE_FATFS),yes)
|
|
|
|
include $(CHIBIOS)/os/various/fatfs_bindings/fatfs.mk
|
2018-01-13 17:17:57 -04:00
|
|
|
endif
|
|
|
|
|
2018-01-12 17:34:19 -04:00
|
|
|
#
|
|
|
|
# Build global options
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
# Architecture or project specific options
|
|
|
|
#
|
|
|
|
HWDEF = $(AP_HAL)/hwdef
|
|
|
|
# Stack size to be allocated to the Cortex-M process stack. This stack is
|
|
|
|
# the stack used by the main() thread.
|
|
|
|
ifeq ($(USE_PROCESS_STACKSIZE),)
|
|
|
|
USE_PROCESS_STACKSIZE = 0x400
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Stack size to the allocated to the Cortex-M main/exceptions stack. This
|
|
|
|
# stack is used for processing interrupts and exceptions.
|
|
|
|
ifeq ($(USE_EXCEPTIONS_STACKSIZE),)
|
|
|
|
USE_EXCEPTIONS_STACKSIZE = 0x400
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Enables the use of FPU (no, softfp, hard).
|
|
|
|
ifeq ($(USE_FPU),)
|
|
|
|
USE_FPU = hard
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Architecture or project specific options
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
# Project, sources and paths
|
|
|
|
#
|
|
|
|
|
|
|
|
# Define project name here
|
|
|
|
PROJECT = ch
|
|
|
|
|
|
|
|
# Imported source files and paths
|
|
|
|
# Startup files.
|
2018-03-05 21:33:30 -04:00
|
|
|
include $(CHIBIOS)/$(CHIBIOS_STARTUP_MK)
|
2018-01-12 17:34:19 -04:00
|
|
|
# HAL-OSAL files (optional).
|
|
|
|
include $(CHIBIOS)/os/hal/hal.mk
|
2018-03-05 21:33:30 -04:00
|
|
|
include $(CHIBIOS)/$(CHIBIOS_PLATFORM_MK)
|
2020-01-19 23:20:30 -04:00
|
|
|
include $(CHIBIOS)/os/hal/osal/rt-nil/osal.mk
|
2018-01-12 17:34:19 -04:00
|
|
|
# RTOS files (optional).
|
|
|
|
include $(CHIBIOS)/os/rt/rt.mk
|
2022-11-10 12:49:54 -04:00
|
|
|
include $(CHIBIOS)/os/common/ports/ARMv7-M/compilers/GCC/mk/port.mk
|
2018-01-12 17:34:19 -04:00
|
|
|
# Other files (optional).
|
|
|
|
#include $(CHIBIOS)/test/rt/test.mk
|
|
|
|
include $(CHIBIOS)/os/hal/lib/streams/streams.mk
|
2018-01-13 17:17:57 -04:00
|
|
|
|
|
|
|
ifeq ($(USE_FATFS),yes)
|
2018-02-02 18:02:01 -04:00
|
|
|
include $(CHIBIOS)/os/various/cpp_wrappers/chcpp.mk
|
2018-01-12 17:34:19 -04:00
|
|
|
include $(CHIBIOS)/os/various/fatfs_bindings/fatfs.mk
|
2018-01-13 17:17:57 -04:00
|
|
|
endif
|
2018-01-12 17:34:19 -04:00
|
|
|
|
|
|
|
# C sources that can be compiled in ARM or THUMB mode depending on the global
|
|
|
|
# setting.
|
2018-06-02 12:58:03 -03:00
|
|
|
|
|
|
|
CSRC = $(sort $(ALLCSRC))
|
|
|
|
|
|
|
|
CSRC += $(HWDEF)/common/stubs.c \
|
2018-01-12 17:34:19 -04:00
|
|
|
$(HWDEF)/common/board.c \
|
|
|
|
$(HWDEF)/common/usbcfg.c \
|
2019-04-08 10:27:54 -03:00
|
|
|
$(HWDEF)/common/usbcfg_dualcdc.c \
|
|
|
|
$(HWDEF)/common/usbcfg_common.c \
|
2018-01-12 17:34:19 -04:00
|
|
|
$(HWDEF)/common/flash.c \
|
|
|
|
$(HWDEF)/common/malloc.c \
|
2018-04-25 20:10:27 -03:00
|
|
|
$(HWDEF)/common/hrt.c \
|
2019-04-11 05:01:49 -03:00
|
|
|
$(HWDEF)/common/stm32_util.c \
|
|
|
|
$(HWDEF)/common/bouncebuffer.c \
|
|
|
|
$(HWDEF)/common/watchdog.c
|
2018-01-12 17:34:19 -04:00
|
|
|
|
2023-02-21 07:03:13 -04:00
|
|
|
ifeq ($(USE_USB_MSD),yes)
|
|
|
|
CSRC += $(CHIBIOS)/os/various/scsi_bindings/lib_scsi.c \
|
|
|
|
$(CHIBIOS)/os/hal/src/hal_usb_msd.c
|
|
|
|
endif
|
|
|
|
|
2018-01-12 17:34:19 -04:00
|
|
|
# $(TESTSRC) \
|
|
|
|
# test.c
|
2021-10-29 08:32:03 -03:00
|
|
|
ifneq ($(CRASHCATCHER),)
|
2021-10-21 07:47:59 -03:00
|
|
|
LIBCC_CSRC = $(CRASHCATCHER)/Core/src/CrashCatcher.c \
|
2021-10-23 03:36:39 -03:00
|
|
|
$(HWDEF)/common/crashdump.c
|
2021-10-21 07:47:59 -03:00
|
|
|
|
|
|
|
LIBCC_ASMXSRC = $(CRASHCATCHER)/Core/src/CrashCatcher_armv7m.S
|
2021-10-29 08:32:03 -03:00
|
|
|
endif
|
2021-10-21 07:47:59 -03:00
|
|
|
|
2018-01-12 17:34:19 -04:00
|
|
|
# C++ sources that can be compiled in ARM or THUMB mode depending on the global
|
|
|
|
# setting.
|
2018-06-02 12:58:03 -03:00
|
|
|
CPPSRC = $(sort $(ALLCPPSRC))
|
2018-01-12 17:34:19 -04:00
|
|
|
|
|
|
|
# C sources to be compiled in ARM mode regardless of the global setting.
|
|
|
|
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
|
|
|
|
# option that results in lower performance and larger code size.
|
|
|
|
ACSRC =
|
|
|
|
|
|
|
|
# C++ sources to be compiled in ARM mode regardless of the global setting.
|
|
|
|
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
|
|
|
|
# option that results in lower performance and larger code size.
|
|
|
|
ACPPSRC =
|
|
|
|
|
|
|
|
# C sources to be compiled in THUMB mode regardless of the global setting.
|
|
|
|
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
|
|
|
|
# option that results in lower performance and larger code size.
|
|
|
|
TCSRC =
|
|
|
|
|
|
|
|
# C sources to be compiled in THUMB mode regardless of the global setting.
|
|
|
|
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
|
|
|
|
# option that results in lower performance and larger code size.
|
|
|
|
TCPPSRC =
|
|
|
|
|
|
|
|
# List ASM source files here
|
2018-06-02 12:58:03 -03:00
|
|
|
ASMSRC = $(ALLASMSRC)
|
|
|
|
ASMXSRC = $(ALLXASMSRC)
|
2018-01-12 17:34:19 -04:00
|
|
|
|
|
|
|
INCDIR = $(CHIBIOS)/os/license \
|
2021-10-29 08:32:03 -03:00
|
|
|
$(ALLINC) $(HWDEF)/common
|
2018-01-12 17:34:19 -04:00
|
|
|
|
2021-10-29 08:32:03 -03:00
|
|
|
ifneq ($(CRASHCATCHER),)
|
|
|
|
INCDIR += $(CRASHCATCHER)/include
|
|
|
|
endif
|
2023-02-21 07:03:13 -04:00
|
|
|
|
|
|
|
ifeq ($(USE_USB_MSD),yes)
|
|
|
|
INCDIR += $(CHIBIOS)/os/various/scsi_bindings
|
|
|
|
endif
|
|
|
|
|
2018-01-12 17:34:19 -04:00
|
|
|
#
|
|
|
|
# Project, sources and paths
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
# Compiler settings
|
|
|
|
#
|
|
|
|
|
|
|
|
#TRGT = arm-elf-
|
|
|
|
TRGT = arm-none-eabi-
|
|
|
|
CC = $(TRGT)gcc
|
|
|
|
CPPC = $(TRGT)g++
|
|
|
|
# Enable loading with g++ only if you need C++ runtime support.
|
|
|
|
# NOTE: You can use C++ even without C++ support if you are careful. C++
|
|
|
|
# runtime support makes code size explode.
|
|
|
|
LD = $(TRGT)gcc
|
|
|
|
#LD = $(TRGT)g++
|
|
|
|
CP = $(TRGT)objcopy
|
|
|
|
AS = $(TRGT)gcc -x assembler-with-cpp
|
|
|
|
AR = $(TRGT)ar
|
|
|
|
OD = $(TRGT)objdump
|
|
|
|
SZ = $(TRGT)size
|
|
|
|
HEX = $(CP) -O ihex
|
|
|
|
BIN = $(CP) -O binary
|
|
|
|
|
|
|
|
# ARM-specific options here
|
|
|
|
AOPT =
|
|
|
|
|
|
|
|
# THUMB-specific options here
|
|
|
|
TOPT = -mthumb -DTHUMB
|
|
|
|
|
|
|
|
# Define C warning options here
|
2021-10-05 02:52:41 -03:00
|
|
|
CWARN = -Wall -Wextra -Wundef -Wstrict-prototypes -Werror
|
2018-01-12 17:34:19 -04:00
|
|
|
|
|
|
|
# Define C++ warning options here
|
2021-10-05 02:52:41 -03:00
|
|
|
CPPWARN = -Wall -Wextra -Wundef -Werror
|
2018-01-12 17:34:19 -04:00
|
|
|
|
|
|
|
#
|
|
|
|
# Compiler settings
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
# Start of user section
|
|
|
|
#
|
|
|
|
|
|
|
|
# List all user C define here, like -D_DEBUG=1
|
2021-10-23 03:36:39 -03:00
|
|
|
UDEFS = $(ENV_UDEFS) $(FATFS_FLAGS) -DHAL_BOARD_NAME=\"$(HAL_BOARD_NAME)\" \
|
|
|
|
-DHAL_MAX_STACK_FRAME_SIZE=$(HAL_MAX_STACK_FRAME_SIZE)
|
2018-01-12 17:34:19 -04:00
|
|
|
|
2018-08-02 02:23:10 -03:00
|
|
|
ifeq ($(ENABLE_ASSERTS),yes)
|
|
|
|
UDEFS += -DHAL_CHIBIOS_ENABLE_ASSERTS
|
|
|
|
ASXFLAGS += -DHAL_CHIBIOS_ENABLE_ASSERTS
|
|
|
|
endif
|
|
|
|
|
2020-11-13 01:11:19 -04:00
|
|
|
ifeq ($(ENABLE_MALLOC_GUARD),yes)
|
|
|
|
UDEFS += -DHAL_CHIBIOS_ENABLE_MALLOC_GUARD
|
|
|
|
ASXFLAGS += -DHAL_CHIBIOS_ENABLE_MALLOC_GUARD
|
|
|
|
endif
|
|
|
|
|
2021-04-13 17:47:36 -03:00
|
|
|
ifeq ($(ENABLE_STATS),yes)
|
|
|
|
UDEFS += -DHAL_ENABLE_THREAD_STATISTICS
|
|
|
|
ASXFLAGS += -DHAL_ENABLE_THREAD_STATISTICS
|
|
|
|
endif
|
|
|
|
|
2023-03-23 04:39:23 -03:00
|
|
|
ifneq ($(AP_BOARD_START_TIME),)
|
|
|
|
UDEFS += -DAP_BOARD_START_TIME=$(AP_BOARD_START_TIME)
|
|
|
|
endif
|
|
|
|
|
2018-01-12 17:34:19 -04:00
|
|
|
# Define ASM defines here
|
|
|
|
UADEFS =
|
|
|
|
|
2023-06-01 12:50:09 -03:00
|
|
|
ifeq ($(COPY_VECTORS_TO_RAM),yes)
|
|
|
|
UADEFS += -DCRT0_INIT_VECTORS=1
|
|
|
|
endif
|
|
|
|
|
2018-01-12 17:34:19 -04:00
|
|
|
# List all user directories here
|
|
|
|
UINCDIR =
|
|
|
|
|
|
|
|
# List the user directory to look for the libraries here
|
|
|
|
ULIBDIR =
|
|
|
|
|
|
|
|
# List all user libraries here
|
|
|
|
ULIBS =
|
|
|
|
|
|
|
|
#
|
|
|
|
# End of user defines
|
|
|
|
##############################################################################
|
|
|
|
include $(HWDEF)/common/chibios_common.mk
|