From 36fa20d1764acd5d84e35e66e8c7efb1e7c523ad Mon Sep 17 00:00:00 2001 From: Thomas Heijligen Date: Tue, 26 Oct 2021 11:26:32 +0200 Subject: Makefile: Revise C compiler check Clean up the compiler target by outsourcing the test to an own variable. Change the print output and don't write to the build-details file. This is in preparation for further changes. Change-Id: I3d6f08ef030744c772b4ec0dc2c9e614fb90461d Signed-off-by: Thomas Heijligen Reviewed-on: https://review.coreboot.org/c/flashrom/+/58616 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber --- Makefile | 13 ++++++------- Makefile.d/cc_test.c | 6 ++++++ Makefile.include | 10 ++-------- 3 files changed, 14 insertions(+), 15 deletions(-) create mode 100644 Makefile.d/cc_test.c diff --git a/Makefile b/Makefile index be1d59c25..1c3181a51 100644 --- a/Makefile +++ b/Makefile @@ -158,6 +158,8 @@ ifeq ($(findstring MINGW, $(HOST_OS)), MINGW) CC = gcc endif +CC_WORKING := $(call c_compile_test, Makefile.d/cc_test.c) + # Determine the destination OS, architecture and endian # IMPORTANT: The following lines must be placed before TARGET_OS, ARCH or ENDIAN # is ever used (of course), but should come after any lines setting CC because @@ -887,13 +889,10 @@ strip: $(PROGRAM)$(EXEC_SUFFIX) # to environment variables and are referenced with $$ later compiler: featuresavailable - @printf "Checking for a C compiler... " | tee -a $(BUILD_DETAILS_FILE) - @echo "$$COMPILER_TEST" > .test.c - @printf "\nexec: %s\n" "$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test.c -o .test$(EXEC_SUFFIX)" >>$(BUILD_DETAILS_FILE) - @{ { { { { $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test.c -o .test$(EXEC_SUFFIX) >&2 && \ - 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) + @echo -n "C compiler found: " + @if [ $(CC_WORKING) = yes ]; \ + then $(CC) --version 2>/dev/null | head -1; \ + else echo no; echo Aborting.; exit 1; fi @echo Target arch is $(ARCH) @if [ $(ARCH) = unknown ]; then echo Aborting.; exit 1; fi @echo Target OS is $(TARGET_OS) diff --git a/Makefile.d/cc_test.c b/Makefile.d/cc_test.c new file mode 100644 index 000000000..0610964d8 --- /dev/null +++ b/Makefile.d/cc_test.c @@ -0,0 +1,6 @@ +int main(int argc, char **argv) +{ + (void)argc; + (void)argv; + return 0; +} diff --git a/Makefile.include b/Makefile.include index ca70d0514..2b5a3447d 100644 --- a/Makefile.include +++ b/Makefile.include @@ -36,15 +36,9 @@ define c_macro_test $(strip $(shell $(CC) -E $1 2>/dev/null | tail -1 | tr -d '"')) endef -define COMPILER_TEST -int main(int argc, char **argv) -{ - (void) argc; - (void) argv; - return 0; -} +define c_compile_test +$(shell $(CC) -c -Wall -Werror -o /dev/null $1 2>/dev/null && echo yes || echo no) endef -export COMPILER_TEST define LIBPCI_TEST /* Avoid a failing test due to libpci header symbol shadowing breakage */ -- cgit v1.2.3