From b6fc8be2c43c4e1b068613abadc48c1d86caee2b Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Fri, 28 Jul 2017 12:47:06 +0100 Subject: [PATCH] [build] Conditionalise use of -mabi=lp64 for ARM64 builds The -mabi option was added in GCC 4.9. Test for the existence of this option to allow for building with earlier versions of GCC. Reported-by: Benjamin S. Allen Signed-off-by: Michael Brown --- src/arch/arm64/Makefile | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/arch/arm64/Makefile b/src/arch/arm64/Makefile index d121871f..9b9dd5ec 100644 --- a/src/arch/arm64/Makefile +++ b/src/arch/arm64/Makefile @@ -4,10 +4,21 @@ SRCDIRS += arch/arm64/core # ARM64-specific flags # -CFLAGS += -mabi=lp64 -mlittle-endian -mcmodel=small +CFLAGS += -mlittle-endian -mcmodel=small CFLAGS += -fomit-frame-pointer ASFLAGS += -mabi=lp64 -EL +# We want to specify the LP64 model. There is an explicit -mabi=lp64 +# on GCC 4.9 and later, and no guarantee as to which is the default +# model. In earlier versions of GCC, there is no -mabi option and the +# default appears to be LP64 anyway. +# +ifeq ($(CCTYPE),gcc) +LP64_TEST = $(CC) -mabi=lp64 -x c -c /dev/null -o /dev/null >/dev/null 2>&1 +LP64_FLAGS := $(shell $(LP64_TEST) && $(ECHO) '-mabi=lp64') +WORKAROUND_CFLAGS += $(LP64_FLAGS) +endif + # EFI requires -fshort-wchar, and nothing else currently uses wchar_t # CFLAGS += -fshort-wchar