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 */