1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/makefiles/arch/cortexm.inc.mk
Marian Buschsieweke 8448aa33ae
makefiles/arch/cortexm.inc.mk: fix ASMFLAGS
Drop `CFLAGS_DBG` from `ASFLAGS` to fix

    make RIOT_CI_BUILD=1 CC_NOCOLOR=1 --no-print-directory -C /home/maribu/Repos/software/RIOT/tests/pkg_qdsa clean all
    rm -rf /home/maribu/Repos/software/RIOT/tests/pkg_qdsa/bin/samr21-xpro/pkg-build/qdsa
    Building application "tests_pkg_qdsa" for "samr21-xpro" with MCU "samd21".

    Assembler messages:
    Fatal error: unknown option `-ggdb'
    make[3]: *** [/home/maribu/Repos/software/RIOT/Makefile.base:176: /home/maribu/Repos/software/RIOT/tests/pkg_qdsa/bin/samr21-xpro/qdsa_asm/bigint_red.o] Error 1
    make[2]: *** [/home/maribu/Repos/software/RIOT/Makefile.base:31: ALL--/home/maribu/Repos/software/RIOT/build/pkg/qdsa/arm/asm] Error 2
    make[1]: *** [Makefile:11: all] Error 2
    make: *** [/home/maribu/Repos/software/RIOT/tests/pkg_qdsa/../../Makefile.include:803: pkg-build] Error 2

    Return value: 2
2022-11-11 23:11:07 +01:00

112 lines
3.6 KiB
Makefile

ifeq (,$(CPU_MODEL))
$(error CPU_MODEL must have been defined by the board/cpu Makefile.features)
endif
# Target triple for the build. Use arm-none-eabi if you are unsure.
TARGET_ARCH_CORTEXM ?= arm-none-eabi
TARGET_ARCH ?= $(TARGET_ARCH_CORTEXM)
# define build specific options
CFLAGS_CPU = -mcpu=$(MCPU) -mlittle-endian -mthumb $(CFLAGS_FPU)
ifneq (llvm,$(TOOLCHAIN))
# Clang (observed with v3.7) does not understand -mno-thumb-interwork, only add if
# not building with LLVM
CFLAGS += -mno-thumb-interwork
# work around https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85606
ifeq (armv6m,$(CPU_ARCH))
CFLAGS_CPU += -march=armv6s-m
endif
endif
CFLAGS_LINK = -ffunction-sections -fdata-sections -fshort-enums
CFLAGS_DBG ?= -ggdb -g3
CFLAGS_OPT ?= -Os
CFLAGS += $(CFLAGS_CPU) $(CFLAGS_LINK) $(CFLAGS_DBG) $(CFLAGS_OPT)
ASFLAGS += $(CFLAGS_CPU)
LINKFLAGS += -L$(RIOTCPU)/$(CPU)/ldscripts -L$(RIOTCPU)/cortexm_common/ldscripts
LINKER_SCRIPT ?= $(CPU_MODEL).ld
LINKFLAGS += -T$(LINKER_SCRIPT) -Wl,--fatal-warnings
LINKFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG) $(CFLAGS_OPT) -static -lgcc -nostartfiles
LINKFLAGS += -Wl,--gc-sections
# extract version inside the first parentheses
ARM_GCC_VERSION = $(shell $(TARGET_ARCH)-gcc --version | sed -n '1 s/[^(]*(\([^\)]*\)).*/\1/p')
# Ubuntu bionic gcc-arm-none-eabi compiler is not supported
# Both when using gnu and llvm toolchains
#
# /usr/bin/arm-none-eabi-gcc --version | head -n 1
# arm-none-eabi-gcc (15:6.3.1+svn253039-1build1) 6.3.1 20170620
#
ARM_GCC_UNSUPPORTED += 15:6.3.1% # ubuntu bionic, ignore 'svn' build part
# Should not raise an error on the host system version when building in docker
ifneq (1,$(BUILD_IN_DOCKER))
ifneq (,$(filter $(ARM_GCC_UNSUPPORTED),$(ARM_GCC_VERSION)))
$(warning $(TARGET_ARCH)-gcc version not supported)
$(warning $(shell $(TARGET_ARCH)-gcc --version | head -n 1))
$(warning The currently recommanded version is the one installed in the riotdocker image)
$(warning https://github.com/RIOT-OS/riotdocker/blob/master/Dockerfile)
ifeq (1,$(WERROR))
$(error This check can be ignored by building with 'WERROR=0')
endif # WERROR
endif # ARM_GCC_UNSUPPORTED
endif # BUILD_IN_DOCKER
CFLAGS += -DCPU_MODEL_$(call uppercase_and_underscore,$(CPU_MODEL))
CFLAGS += -DCPU_CORE_$(call uppercase_and_underscore,$(CPU_CORE))
# Add soft or hard FPU CFLAGS depending on the module
ifneq (,$(filter cortexm_fpu,$(USEMODULE)))
ifneq (,$(filter $(CPU_CORE),cortex-m33 cortex-m7))
CFLAGS_FPU ?= -mfloat-abi=hard -mfpu=fpv5-sp-d16
else
CFLAGS_FPU ?= -mfloat-abi=hard -mfpu=fpv4-sp-d16
endif
else
CFLAGS_FPU ?= -mfloat-abi=soft
endif
ifeq ($(CPU_CORE),cortex-m4f)
MCPU = cortex-m4
else
MCPU ?= $(CPU_CORE)
endif
# CMSIS DSP needs to know about the CPU core
ifneq (,$(filter cmsis-dsp,$(USEPKG)))
# definition needed to use cmsis-dsp headers
ifeq ($(CPU_CORE),cortex-m0)
CFLAGS += -DARM_MATH_CM0
else ifeq ($(CPU_CORE),cortex-m0plus)
CFLAGS += -DARM_MATH_CM0PLUS
else ifeq ($(CPU_CORE),cortex-m23)
CFLAGS += -DARM_MATH_CM23
else ifeq ($(CPU_CORE),cortex-m3)
CFLAGS += -DARM_MATH_CM3
else ifeq ($(CPU_CORE),cortex-m33)
CFLAGS += -DARM_MATH_CM33
else ifeq ($(CPU_CORE),cortex-m4)
CFLAGS += -DARM_MATH_CM4
else ifeq ($(CPU_CORE),cortex-m4f)
CFLAGS += -DARM_MATH_CM4
else ifeq ($(CPU_CORE),cortex-m7)
CFLAGS += -DARM_MATH_CM7
endif
endif
# CPU depends on the cortex-m common module, so include it:
include $(RIOTCPU)/cortexm_common/Makefile.include
# Avoid overriding the default rule:
all:
# Rule to generate assembly listings from ELF files:
%.lst: %.elf
$(OBJDUMP) $(OBJDUMPFLAGS) $< > $@