aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerome Forissier <jerome.forissier@linaro.org>2016-02-24 13:01:45 +0100
committerJerome Forissier <jerome.forissier@linaro.org>2016-02-29 10:46:37 +0100
commitb09cddcab1eee090886ca94ab9a4958ec6e174e0 (patch)
tree18210c4c584cea39c8193a30668882153924d0af
parent92db3e0c5a6797849a081225cd48c7e6a22348c8 (diff)
Introduce CFLAGS32 and CFLAGS64
Previously, compile.mk and gcc.mk were using $(CFLAGS) which cannot properly handle 32-bit and 64-bit compiles. This commit introduces CFLAGS32 and CFLAGS64 instead, which are set to $(CFLAGS) by defaut for convenience. For each submodule (core, ta_arm32, ta_arm64) a new internal variable is defined in the architecture makefile (core/arch/arm/arm.mk): arch-bits-$(sm). Its value is either 32 or 64. This can later be used to reference the proper CFLAGS. Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Pascal Brand <pascal.brand@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
-rw-r--r--core/arch/arm/arm.mk11
-rw-r--r--mk/compile.mk2
-rw-r--r--mk/config.mk6
-rw-r--r--mk/gcc.mk2
4 files changed, 15 insertions, 6 deletions
diff --git a/core/arch/arm/arm.mk b/core/arch/arm/arm.mk
index a2a514c8..b9528325 100644
--- a/core/arch/arm/arm.mk
+++ b/core/arch/arm/arm.mk
@@ -64,14 +64,14 @@ core-platform-aflags += $(platform-aflags-generic)
core-platform-aflags += $(platform-aflags-debug-info)
ifeq ($(CFG_ARM64_core),y)
-CROSS_COMPILE_core ?= $(CROSS_COMPILE64)
+arch-bits-core := 64
core-platform-cppflags += $(arm64-platform-cppflags)
core-platform-cflags += $(arm64-platform-cflags)
core-platform-cflags += $(arm64-platform-cflags-generic)
core-platform-cflags += $(arm64-platform-cflags-no-hard-float)
core-platform-aflags += $(arm64-platform-aflags)
else
-CROSS_COMPILE_core ?= $(CROSS_COMPILE32)
+arch-bits-core := 32
core-platform-cppflags += $(arm32-platform-cppflags)
core-platform-cflags += $(arm32-platform-cflags)
core-platform-cflags += $(arm32-platform-cflags-no-hard-float)
@@ -86,7 +86,7 @@ endif
ifneq ($(filter ta_arm32,$(ta-targets)),)
# Variables for ta-target/sm "ta_arm32"
CFG_ARM32_ta_arm32 := y
-CROSS_COMPILE_ta_arm32 ?= $(CROSS_COMPILE32)
+arch-bits-ta_arm32 := 32
ta_arm32-platform-cppflags += $(arm32-platform-cppflags)
ta_arm32-platform-cflags += $(arm32-platform-cflags)
ta_arm32-platform-cflags += $(platform-cflags-optimization)
@@ -113,7 +113,7 @@ endif
ifneq ($(filter ta_arm64,$(ta-targets)),)
# Variables for ta-target/sm "ta_arm64"
CFG_ARM64_ta_arm64 := y
-CROSS_COMPILE_ta_arm64 ?= $(CROSS_COMPILE64)
+arch-bits-ta_arm64 := 64
ta_arm64-platform-cppflags += $(arm64-platform-cppflags)
ta_arm64-platform-cflags += $(arm64-platform-cflags)
ta_arm64-platform-cflags += $(platform-cflags-optimization)
@@ -136,3 +136,6 @@ ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-aflags
ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE64 ?= $$(CROSS_COMPILE)_nl_
ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE_ta_arm64 ?= $$(CROSS_COMPILE64)_nl_
endif
+
+# Set cross compiler prefix for each submodule
+$(foreach sm, core $(ta-targets), $(eval CROSS_COMPILE_$(sm) ?= $(CROSS_COMPILE$(arch-bits-$(sm)))))
diff --git a/mk/compile.mk b/mk/compile.mk
index 729197a9..7a587e22 100644
--- a/mk/compile.mk
+++ b/mk/compile.mk
@@ -71,7 +71,7 @@ ifeq ($$(filter %.c,$1),$1)
comp-q-$2 := CC
comp-flags-$2 = $$(filter-out $$(CFLAGS_REMOVE) $$(cflags-remove) \
$$(cflags-remove-$2), \
- $$(CFLAGS) $$(CFLAGS_WARNS) \
+ $$(CFLAGS$$(arch-bits-$$(comp-sm-$2))) $$(CFLAGS_WARNS) \
$$(comp-cflags$$(comp-sm-$2)) $$(cflags$$(comp-sm-$2)) \
$$(cflags-lib$$(comp-lib-$2)) $$(cflags-$2))
ifeq ($C,1)
diff --git a/mk/config.mk b/mk/config.mk
index 306cc833..25b7702f 100644
--- a/mk/config.mk
+++ b/mk/config.mk
@@ -22,6 +22,12 @@ CROSS_COMPILE32 ?= $(CROSS_COMPILE)
CROSS_COMPILE64 ?= aarch64-linux-gnu-
COMPILER ?= gcc
+# For convenience
+ifdef CFLAGS
+CFLAGS32 ?= $(CFLAGS)
+CFLAGS64 ?= $(CFLAGS)
+endif
+
# Compiler warning level.
# Supported values: undefined, 1, 2 and 3. 3 gives more warnings.
WARNS ?= 3
diff --git a/mk/gcc.mk b/mk/gcc.mk
index 514f7ff6..76ad1257 100644
--- a/mk/gcc.mk
+++ b/mk/gcc.mk
@@ -12,7 +12,7 @@ nostdinc$(sm) := -nostdinc -isystem $(shell $(CC$(sm)) \
-print-file-name=include 2> /dev/null)
# Get location of libgcc from gcc
-libgcc$(sm) := $(shell $(CC$(sm)) $(CFLAGS) $(comp-cflags$(sm)) \
+libgcc$(sm) := $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) $(comp-cflags$(sm)) \
-print-libgcc-file-name 2> /dev/null)
# Define these to something to discover accidental use