2014-10-17 10:55:46 -07:00
|
|
|
ifndef ARCH_arm_TOOLCHAIN_INCLUDED
|
|
|
|
|
ARCH_arm_TOOLCHAIN_INCLUDED := 1
|
|
|
|
|
|
|
|
|
|
# try to find the toolchain
|
|
|
|
|
ifndef ARCH_arm_TOOLCHAIN_PREFIX
|
2015-06-16 18:36:20 -07:00
|
|
|
|
|
|
|
|
# if TOOLCHAIN_PREFIX is not empty, try to use it first
|
|
|
|
|
ifneq ($(TOOLCHAIN_PREFIX),)
|
|
|
|
|
ARCH_arm_TOOLCHAIN_PREFIX := $(TOOLCHAIN_PREFIX)
|
|
|
|
|
FOUNDTOOL=$(shell which $(ARCH_arm_TOOLCHAIN_PREFIX)gcc)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# try a series of common arm toolchain prefixes in the path
|
|
|
|
|
ifeq ($(FOUNDTOOL),)
|
2014-10-17 10:55:46 -07:00
|
|
|
ARCH_arm_TOOLCHAIN_PREFIX := arm-eabi-
|
|
|
|
|
FOUNDTOOL=$(shell which $(ARCH_arm_TOOLCHAIN_PREFIX)gcc)
|
2015-06-16 18:36:20 -07:00
|
|
|
endif
|
2014-10-17 10:55:46 -07:00
|
|
|
ifeq ($(FOUNDTOOL),)
|
|
|
|
|
ARCH_arm_TOOLCHAIN_PREFIX := arm-elf-
|
|
|
|
|
FOUNDTOOL=$(shell which $(ARCH_arm_TOOLCHAIN_PREFIX)gcc)
|
2015-06-16 18:36:20 -07:00
|
|
|
endif
|
2014-10-17 10:55:46 -07:00
|
|
|
ifeq ($(FOUNDTOOL),)
|
|
|
|
|
ARCH_arm_TOOLCHAIN_PREFIX := arm-none-eabi-
|
|
|
|
|
FOUNDTOOL=$(shell which $(ARCH_arm_TOOLCHAIN_PREFIX)gcc)
|
2015-06-16 18:36:20 -07:00
|
|
|
endif
|
2014-10-17 10:55:46 -07:00
|
|
|
ifeq ($(FOUNDTOOL),)
|
|
|
|
|
ARCH_arm_TOOLCHAIN_PREFIX := arm-linux-gnueabi-
|
|
|
|
|
FOUNDTOOL=$(shell which $(ARCH_arm_TOOLCHAIN_PREFIX)gcc)
|
|
|
|
|
|
|
|
|
|
# Set no stack protection if we found our gnueabi toolchain. We don't
|
|
|
|
|
# need it.
|
|
|
|
|
#
|
|
|
|
|
# Stack protection is default in this toolchain and we get such errors
|
|
|
|
|
# final linking stage:
|
|
|
|
|
#
|
|
|
|
|
# undefined reference to `__stack_chk_guard'
|
|
|
|
|
# undefined reference to `__stack_chk_fail'
|
|
|
|
|
# undefined reference to `__stack_chk_guard'
|
|
|
|
|
#
|
|
|
|
|
ifneq (,$(findstring arm-linux-gnueabi-,$(FOUNDTOOL)))
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -fno-stack-protector
|
|
|
|
|
endif
|
2015-06-16 18:36:20 -07:00
|
|
|
endif # arm-linux-gnueabi-
|
|
|
|
|
|
2015-09-01 12:31:49 -07:00
|
|
|
else
|
|
|
|
|
FOUNDTOOL=$(shell which $(ARCH_arm_TOOLCHAIN_PREFIX)gcc)
|
2015-06-16 18:36:20 -07:00
|
|
|
endif # ARCH_arm_TOOLCHAIN_PREFIX
|
2014-10-17 10:55:46 -07:00
|
|
|
|
|
|
|
|
ifeq ($(FOUNDTOOL),)
|
2021-09-18 16:52:38 -07:00
|
|
|
$(warning cannot find toolchain in path, assuming arm-eabi- prefix)
|
|
|
|
|
ARCH_arm_TOOLCHAIN_PREFIX := arm-eabi-
|
2014-10-17 10:55:46 -07:00
|
|
|
endif
|
|
|
|
|
|
2016-01-12 11:19:33 -08:00
|
|
|
ifeq ($(ARM_CPU),cortex-m0)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mthumb -mfloat-abi=soft
|
|
|
|
|
endif
|
2016-01-18 11:07:31 -08:00
|
|
|
ifeq ($(ARM_CPU),cortex-m0plus)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mthumb -mfloat-abi=soft
|
|
|
|
|
endif
|
2014-10-17 10:55:46 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-m3)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
|
|
|
|
endif
|
|
|
|
|
ifeq ($(ARM_CPU),cortex-m4)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
|
|
|
|
endif
|
2023-04-04 22:53:03 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-m55)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
|
|
|
|
endif
|
2015-07-08 02:24:15 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-m7)
|
2015-09-22 14:39:11 -07:00
|
|
|
# use cortex-m4 for now until better general toolchain support
|
2015-07-08 02:24:15 -07:00
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=cortex-m4
|
|
|
|
|
endif
|
2015-09-22 14:39:11 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-m7-fpu-sp-d16)
|
|
|
|
|
# use cortex-m4 for now until better general toolchain support
|
2024-05-14 01:18:38 -07:00
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=cortex-m4
|
|
|
|
|
ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=fpv4-sp-d16 -mfloat-abi=softfp
|
2015-09-22 14:39:11 -07:00
|
|
|
endif
|
2014-10-17 10:55:46 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-m4f)
|
2024-05-14 01:18:38 -07:00
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=cortex-m4
|
|
|
|
|
ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=fpv4-sp-d16 -mfloat-abi=softfp
|
2014-10-17 10:55:46 -07:00
|
|
|
endif
|
2015-04-18 14:25:26 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-a7)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
2024-05-14 01:18:38 -07:00
|
|
|
ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=vfpv3 -mfloat-abi=softfp
|
2015-04-18 14:25:26 -07:00
|
|
|
endif
|
2014-10-17 10:55:46 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-a8)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
2024-05-14 01:18:38 -07:00
|
|
|
ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=neon -mfloat-abi=softfp
|
2014-10-17 10:55:46 -07:00
|
|
|
endif
|
|
|
|
|
ifeq ($(ARM_CPU),cortex-a9)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
|
|
|
|
endif
|
|
|
|
|
ifeq ($(ARM_CPU),cortex-a9-neon)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=cortex-a9
|
2024-05-14 01:18:38 -07:00
|
|
|
ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=neon -mfloat-abi=softfp
|
2014-10-17 10:55:46 -07:00
|
|
|
endif
|
|
|
|
|
ifeq ($(ARM_CPU),cortex-a15)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
2024-05-14 01:18:38 -07:00
|
|
|
ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=neon -mfloat-abi=softfp
|
2014-10-07 15:52:53 -07:00
|
|
|
endif
|
2014-10-17 10:55:46 -07:00
|
|
|
ifeq ($(ARM_CPU),arm1136j-s)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
|
|
|
|
endif
|
|
|
|
|
ifeq ($(ARM_CPU),arm1176jzf-s)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
|
|
|
|
endif
|
2019-11-18 06:51:09 +00:00
|
|
|
ifeq ($(ARM_CPU),cortex-r4f)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -march=armv7-r
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -mbig-endian
|
2024-05-14 01:18:38 -07:00
|
|
|
ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=vfpv3-d16 -mfloat-abi=hard
|
2019-11-18 06:51:09 +00:00
|
|
|
GLOBAL_MODULE_LDFLAGS += -EB
|
|
|
|
|
endif
|
2015-08-28 16:34:08 -07:00
|
|
|
ifeq ($(ARM_CPU),armemu)
|
|
|
|
|
ARCH_arm_COMPILEFLAGS += -march=armv7-a
|
|
|
|
|
endif
|
2014-10-17 10:55:46 -07:00
|
|
|
|
|
|
|
|
endif
|