You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.3 KiB
70 lines
2.3 KiB
#
|
|
# Build targets for a Cortex-M-based processor
|
|
#
|
|
|
|
# Cortex-M Environment Checks ##################################################
|
|
|
|
# If building for the Cortex-M target, ensure that the user has specified a path
|
|
# to the Cortex-M toolchain that they wish to use.
|
|
ifeq ($(CORTEXM_TOOLS_PREFIX),)
|
|
$(error "You must supply a CORTEXM_TOOLS_PREFIX environment variable \
|
|
containing a path to the Cortex-M toolchain. Example: \
|
|
export CORTEXM_TOOLS_PREFIX=$$HOME/bin/gcc-arm-none-eabi-5_3-2016q1")
|
|
endif
|
|
|
|
# Cortex-M Tools ###############################################################
|
|
|
|
TARGET_AR = $(CORTEXM_TOOLS_PREFIX)/bin/arm-none-eabi-ar
|
|
TARGET_CC = $(CORTEXM_TOOLS_PREFIX)/bin/arm-none-eabi-g++
|
|
TARGET_LD = $(CORTEXM_TOOLS_PREFIX)/bin/arm-none-eabi-g++
|
|
|
|
# Cortex-M Compiler Flags ######################################################
|
|
|
|
# Add Cortex-M compiler flags.
|
|
TARGET_CFLAGS += $(CORTEXM_CFLAGS)
|
|
|
|
# TODO: Add more Cortex-M flags from the Nanohub build
|
|
|
|
# Code generation flags.
|
|
TARGET_CFLAGS += -mthumb
|
|
TARGET_CFLAGS += -mfloat-abi=softfp
|
|
TARGET_CFLAGS += -mno-thumb-interwork
|
|
TARGET_CFLAGS += -ffast-math
|
|
TARGET_CFLAGS += -fsingle-precision-constant
|
|
|
|
# Sadly we must disable double promotion warnings due to logging macros. There
|
|
# is a bug for this here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
|
|
TARGET_CFLAGS += -Wno-double-promotion
|
|
|
|
# Cortex-M Shared Object Linker Flags ##########################################
|
|
|
|
TARGET_SO_LDFLAGS += -shared
|
|
|
|
# Supported Cortex-M Architectures #############################################
|
|
|
|
CORTEXM_SUPPORTED_ARCHS = m4
|
|
|
|
# Environment Checks ###########################################################
|
|
|
|
# Ensure that an architecture is chosen.
|
|
ifeq ($(filter $(CORTEXM_ARCH), $(CORTEXM_SUPPORTED_ARCHS)),)
|
|
$(error "The CORTEXM_ARCH argument must be set to a supported architecture (\
|
|
$(CORTEXM_SUPPORTED_ARCHS))")
|
|
endif
|
|
|
|
# Target Architecture ##########################################################
|
|
|
|
# Set the Cortex-M architecture.
|
|
ifeq ($(CORTEXM_ARCH), m4)
|
|
TARGET_CFLAGS += -mcpu=cortex-m4
|
|
TARGET_CFLAGS += -mfpu=fpv4-sp-d16
|
|
endif
|
|
|
|
# Optimization Level ###########################################################
|
|
|
|
TARGET_CFLAGS += -O$(OPT_LEVEL)
|
|
|
|
# Variant Specific Sources #####################################################
|
|
|
|
TARGET_VARIANT_SRCS += $(CORTEXM_SRCS)
|