Makefile: move determination test for the architecture to Makefile.d

Move the test code for architecture detection in a extra directory to
split it from the main flashrom code.

Change-Id: I29ce73be9c5cbe259a2471f8eea2f8745b68cdfa
Signed-off-by: Thomas Heijligen <thomas.heijligen@secunet.de>
Original-Reviewed-on: https://review.coreboot.org/c/flashrom/+/58269
Original-Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72242
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/Makefile b/Makefile
index b47d51e..d34c289 100644
--- a/Makefile
+++ b/Makefile
@@ -165,8 +165,7 @@
 # is ever used (of course), but should come after any lines setting CC because
 # the lines below use CC itself.
 override TARGET_OS := $(call c_macro_test, Makefile.d/os_test.h)
-override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null \
-    | tail -1 | cut -f 2 -d'"'))
+override ARCH      := $(call c_macro_test, Makefile.d/arch_test.h)
 override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null \
     | tail -1))
 
@@ -841,11 +840,8 @@
 		echo "found." || { echo "not found."; \
 		rm -f .test.c .test$(EXEC_SUFFIX); exit 1; }; } 2>>$(BUILD_DETAILS_FILE); echo $? >&3 ; } | tee -a $(BUILD_DETAILS_FILE) >&4; } 3>&1;} | { read rc ; exit ${rc}; } } 4>&1
 	@rm -f .test.c .test$(EXEC_SUFFIX)
-	@printf "Target arch is "
-	@# FreeBSD wc will output extraneous whitespace.
-	@echo $(ARCH)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' ||	\
-		( echo "unknown (\"$(ARCH)\"). Aborting."; exit 1)
-	@printf "%s\n" '$(ARCH)'
+	@echo Target arch is $(ARCH)
+	@if [ $(ARCH) = unknown ]; then echo Aborting.; exit 1; fi
 	@echo Target OS is $(TARGET_OS)
 	@if [ $(TARGET_OS) = unknown ]; then echo Aborting.; exit 1; fi
 ifeq ($(TARGET_OS), libpayload)
diff --git a/Makefile.d/arch_test.h b/Makefile.d/arch_test.h
new file mode 100644
index 0000000..8ec4d41
--- /dev/null
+++ b/Makefile.d/arch_test.h
@@ -0,0 +1,51 @@
+/*
+ * This file is part of the flashrom project.
+ *
+ * Copyright (C) 2011 Carl-Daniel Hailfinger
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+/*
+ * This file determines the target architecture. It should only be used
+ * by the Makefile
+ */
+
+#if defined (__i386__) || defined (__x86_64__) || defined(__amd64__)
+	#define __FLASHROM_ARCH__ "x86"
+#elif defined (__mips) || defined (__mips__) || defined (__MIPS__) || defined (mips)
+	#define __FLASHROM_ARCH__ "mips"
+#elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || \
+      defined(__ppc__) || defined(__ppc64__) || defined(_M_PPC) || defined(_ARCH_PPC) || \
+      defined(_ARCH_PPC64) || defined(__ppc)
+	#define __FLASHROM_ARCH__ "ppc"
+#elif defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_ARM) || defined(_M_ARM) || defined(__arm) || \
+      defined(__aarch64__)
+	#define __FLASHROM_ARCH__ "arm"
+#elif defined (__sparc__) || defined (__sparc)
+	#define __FLASHROM_ARCH__ "sparc"
+#elif defined (__alpha__)
+	#define __FLASHROM_ARCH__ "alpha"
+#elif defined (__hppa__) || defined (__hppa)
+	#define __FLASHROM_ARCH__ "hppa"
+#elif defined (__m68k__)
+	#define __FLASHROM_ARCH__ "m68k"
+#elif defined (__riscv)
+	#define __FLASHROM_ARCH__ "riscv"
+#elif defined (__sh__)
+	#define __FLASHROM_ARCH__ "sh"
+#elif defined(__s390__) || defined(__s390x__) || defined(__zarch__)
+	#define __FLASHROM_ARCH__ "s390"
+#elif defined(__arc__)
+	#define __FLASHROM_ARCH__ "arc"
+#else
+	#define __FLASHROM_ARCH__ "unknown"
+#endif
+__FLASHROM_ARCH__
diff --git a/archtest.c b/archtest.c
deleted file mode 100644
index 791f1a3..0000000
--- a/archtest.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "platform.h"
-__FLASHROM_ARCH__
diff --git a/platform.h b/platform.h
index 04f1ab1..cd8e54b 100644
--- a/platform.h
+++ b/platform.h
@@ -39,43 +39,31 @@
 
 // Likewise for target architectures
 #if defined (__i386__) || defined (__x86_64__) || defined(__amd64__)
-	#define __FLASHROM_ARCH__ "x86"
 	#define IS_X86 1
 #elif defined (__mips) || defined (__mips__) || defined (__MIPS__) || defined (mips)
-	#define __FLASHROM_ARCH__ "mips"
 	#define IS_MIPS 1
 #elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || \
       defined(__ppc__) || defined(__ppc64__) || defined(_M_PPC) || defined(_ARCH_PPC) || \
       defined(_ARCH_PPC64) || defined(__ppc)
-	#define __FLASHROM_ARCH__ "ppc"
 	#define IS_PPC 1
 #elif defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_ARM) || defined(_M_ARM) || defined(__arm) || \
       defined(__aarch64__)
-	#define __FLASHROM_ARCH__ "arm"
 	#define IS_ARM 1
 #elif defined (__sparc__) || defined (__sparc)
-	#define __FLASHROM_ARCH__ "sparc"
 	#define IS_SPARC 1
 #elif defined (__alpha__)
-	#define __FLASHROM_ARCH__ "alpha"
 	#define IS_ALPHA 1
 #elif defined (__hppa__) || defined (__hppa)
-	#define __FLASHROM_ARCH__ "hppa"
 	#define IS_HPPA 1
 #elif defined (__m68k__)
-	#define __FLASHROM_ARCH__ "m68k"
 	#define IS_M68K 1
 #elif defined (__riscv)
-	#define __FLASHROM_ARCH__ "riscv"
 	#define IS_RISCV 1
 #elif defined (__sh__)
-	#define __FLASHROM_ARCH__ "sh"
 	#define IS_SH 1
 #elif defined(__s390__) || defined(__s390x__) || defined(__zarch__)
-	#define __FLASHROM_ARCH__ "s390"
 	#define IS_S390 1
 #elif defined(__arc__)
-	#define __FLASHROM_ARCH__ "arc"
 	#define IS_ARC 1
 #endif