[Skiboot] [PATCH] external: remove CROSS_COMPILE from get_arch.sh

Oliver O'Halloran oohall at gmail.com
Wed Aug 3 13:41:19 AEST 2016


The intended usage of CROSS_COMPILE is to supply the common toolchain
prefix so that CC, LD, etc can be set automatically by make. Build systems
that set these variables directly don't need (or want) this behaviour so
using CROSS_COMPILE for any other purpose is inherently broken.

Currently CROSS_COMPILE is used to set CC/LD (as above), but it is also
used when determining the target architecture. The implementation of this
only requires CROSS_COMPILE set be set so get_arch.sh can use the cross
toolchain's the C preprocessor directly. This is unnecessary since
equivalent functionality can be achieved using CC in preprocessor mode
with the -E flag which is supported by both gcc and clang.

Cc: Cyril Bur <cyril.bur at au1.ibm.com>
Cc: Patrick Williams <patrick at stwcx.xyz>
Signed-off-by: Oliver O'Halloran <oohall at gmail.com>
---
 external/common/get_arch.sh | 2 +-
 external/common/rules.mk    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/external/common/get_arch.sh b/external/common/get_arch.sh
index f4beb1df4faf..084cf79acdcf 100755
--- a/external/common/get_arch.sh
+++ b/external/common/get_arch.sh
@@ -7,5 +7,5 @@ echo -n ARCH_X86
 echo -n ARCH_ARM
 #else
 echo -n ARCH_UNKNOWN
-#endif" | $1cpp | /bin/sh
+#endif" | $1 -E - | /bin/sh
 
diff --git a/external/common/rules.mk b/external/common/rules.mk
index bb12fd5b286b..172dda7113d8 100644
--- a/external/common/rules.mk
+++ b/external/common/rules.mk
@@ -1,6 +1,6 @@
 CC ?= $(CROSS_COMPILE)gcc
 LD ?= $(CROSS_COMPILE)ld
-ARCH := $(shell $(GET_ARCH) "$(CROSS_COMPILE)")
+ARCH := $(shell $(GET_ARCH) "$(CC)")
 
 ifeq ($(ARCH),ARCH_ARM)
 arch := arm
-- 
2.5.5



More information about the Skiboot mailing list