|
@@ -0,0 +1,95 @@
|
|
|
+From da6b3b70cb852dd8e9f9e21aef95fa83e7f7ab0d Mon Sep 17 00:00:00 2001
|
|
|
+From: Pyry Kontio <pyry.kontio@drasa.eu>
|
|
|
+Date: Mon, 6 Jul 2020 12:57:35 +0900
|
|
|
+Subject: [PATCH] Makefile: Fix building on AArch64 NixOS
|
|
|
+
|
|
|
+The parsing of the output of archtest.c produced an unexpected
|
|
|
+value on AArch64 NixOS. For example, the make variable ARCH was set to:
|
|
|
+
|
|
|
+```
|
|
|
+bit outside of fd_set selected
|
|
|
+arm
|
|
|
+```
|
|
|
+
|
|
|
+This made the arch and OS checks fail.
|
|
|
+
|
|
|
+This commit simplifies the parsing, making it more robust.
|
|
|
+
|
|
|
+The C files archtest.c, endiantest.c and os.h used to set the
|
|
|
+TARGET_OS, ARCH and ENDIAN variables, respectively, output
|
|
|
+the result of the test as the final line, so just extracting
|
|
|
+the final line and removing double quoting is enough.
|
|
|
+
|
|
|
+This commit also fixes a bug with debug_shell lacking escaping
|
|
|
+single quotes, which prevented using the single quote in the
|
|
|
+debug_shell calls. It used to work by accident before this fix;
|
|
|
+the line in the call happened to contain a balanced pair of double
|
|
|
+quotes and lacked other characters that needed escaping, which
|
|
|
+didn't break the debug_shell, but this was accidental and very
|
|
|
+brittle.
|
|
|
+
|
|
|
+Signed-off-by: Pyry Kontio <pyry.kontio@drasa.eu>
|
|
|
+Change-Id: Iaa4477a71e758cf9ecad2c22f3b77bc6508a3510
|
|
|
+Reviewed-on: https://review.coreboot.org/c/flashrom/+/43140
|
|
|
+Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
|
|
|
+Reviewed-by: Angel Pons <th3fanbus@gmail.com>
|
|
|
+
|
|
|
+[Retrieved from:
|
|
|
+https://github.com/flashrom/flashrom/commit/da6b3b70cb852dd8e9f9e21aef95fa83e7f7ab0d]
|
|
|
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
|
+---
|
|
|
+ Makefile | 16 ++++++++++------
|
|
|
+ 1 file changed, 10 insertions(+), 6 deletions(-)
|
|
|
+
|
|
|
+diff --git a/Makefile b/Makefile
|
|
|
+index f3f7717e2..e475cbdbd 100644
|
|
|
+--- a/Makefile
|
|
|
++++ b/Makefile
|
|
|
+@@ -83,7 +83,8 @@ dummy_for_make_3_80:=$(shell printf "Build started on %s\n\n" "$$(date)" >$(BUIL
|
|
|
+
|
|
|
+ # Provide an easy way to execute a command, print its output to stdout and capture any error message on stderr
|
|
|
+ # in the build details file together with the original stdout output.
|
|
|
+-debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(1) ; }' >&2; { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))
|
|
|
++debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(subst ','\'',$(1)) ; }' >&2; \
|
|
|
++ { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))
|
|
|
+
|
|
|
+ ###############################################################################
|
|
|
+ # General OS-specific settings.
|
|
|
+@@ -106,7 +107,8 @@ endif
|
|
|
+ # IMPORTANT: The following line must be placed before TARGET_OS is ever used
|
|
|
+ # (of course), but should come after any lines setting CC because the line
|
|
|
+ # below uses CC itself.
|
|
|
+-override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
|
|
|
++override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null \
|
|
|
++ | tail -1 | cut -f 2 -d'"'))
|
|
|
+
|
|
|
+ ifeq ($(TARGET_OS), Darwin)
|
|
|
+ override CPPFLAGS += -I/opt/local/include -I/usr/local/include
|
|
|
+@@ -490,8 +492,10 @@ endif
|
|
|
+ # IMPORTANT: The following line must be placed before ARCH is ever used
|
|
|
+ # (of course), but should come after any lines setting CC because the line
|
|
|
+ # below uses CC itself.
|
|
|
+-override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
|
|
|
+-override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null | grep -v '^\#'))
|
|
|
++override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null \
|
|
|
++ | tail -1 | cut -f 2 -d'"'))
|
|
|
++override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null \
|
|
|
++ | tail -1))
|
|
|
+
|
|
|
+ # Disable the internal programmer on unsupported architectures (everything but x86 and mipsel)
|
|
|
+ ifneq ($(ARCH)-little, $(filter $(ARCH),x86 mips)-$(ENDIAN))
|
|
|
+@@ -1299,12 +1303,12 @@ compiler: featuresavailable
|
|
|
+ @printf "Target arch is "
|
|
|
+ @# FreeBSD wc will output extraneous whitespace.
|
|
|
+ @echo $(ARCH)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' || \
|
|
|
+- ( echo "unknown. Aborting."; exit 1)
|
|
|
++ ( echo "unknown (\"$(ARCH)\"). Aborting."; exit 1)
|
|
|
+ @printf "%s\n" '$(ARCH)'
|
|
|
+ @printf "Target OS is "
|
|
|
+ @# FreeBSD wc will output extraneous whitespace.
|
|
|
+ @echo $(TARGET_OS)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' || \
|
|
|
+- ( echo "unknown. Aborting."; exit 1)
|
|
|
++ ( echo "unknown (\"$(TARGET_OS)\"). Aborting."; exit 1)
|
|
|
+ @printf "%s\n" '$(TARGET_OS)'
|
|
|
+ ifeq ($(TARGET_OS), libpayload)
|
|
|
+ @$(CC) --version 2>&1 | grep -q coreboot || \
|