summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile13
-rw-r--r--Makefile.d/os_test.h (renamed from os.h)4
-rw-r--r--Makefile.include4
-rw-r--r--util/ich_descriptors_tool/Makefile5
5 files changed, 15 insertions, 12 deletions
diff --git a/.gitignore b/.gitignore
index 2d621dcd9..7c45abacb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
*.d
+!Makefile.d/
*.o
/.features
/.dependencies
diff --git a/Makefile b/Makefile
index a94f9f646..f8ff09732 100644
--- a/Makefile
+++ b/Makefile
@@ -162,14 +162,12 @@ endif
# 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
# the lines below use CC itself.
-override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null \
- | tail -1 | cut -f 2 -d'"'))
+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 ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null \
| tail -1))
-
ifeq ($(TARGET_OS), $(filter $(TARGET_OS), FreeBSD OpenBSD DragonFlyBSD))
override CPPFLAGS += -I/usr/local/include
override LDFLAGS += -L/usr/local/lib
@@ -848,7 +846,7 @@ TAROPTIONS = $(shell LC_ALL=C tar --version|grep -q GNU && echo "--owner=root --
# This includes all frontends and libflashrom.
# We don't use EXEC_SUFFIX here because we want to clean everything.
clean:
- rm -f $(PROGRAM) $(PROGRAM).exe libflashrom.a *.o *.d $(PROGRAM).8 $(PROGRAM).8.html $(BUILD_DETAILS_FILE)
+ rm -f $(PROGRAM) $(PROGRAM).exe libflashrom.a $(filter-out Makefile.d, $(wildcard *.d *.o)) $(PROGRAM).8 $(PROGRAM).8.html $(BUILD_DETAILS_FILE)
@+$(MAKE) -C util/ich_descriptors_tool/ clean
distclean: clean
@@ -873,11 +871,8 @@ compiler: featuresavailable
@echo $(ARCH)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' || \
( 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 (\"$(TARGET_OS)\"). Aborting."; exit 1)
- @printf "%s\n" '$(TARGET_OS)'
+ @echo Target OS is $(TARGET_OS)
+ @if [ $(TARGET_OS) = unknown ]; then echo Aborting.; exit 1; fi
ifeq ($(TARGET_OS), libpayload)
@$(CC) --version 2>&1 | grep -q coreboot || \
( echo "Warning: It seems you are not using coreboot's reference compiler."; \
diff --git a/os.h b/Makefile.d/os_test.h
index d6fbfe0be..17045b254 100644
--- a/os.h
+++ b/Makefile.d/os_test.h
@@ -14,7 +14,7 @@
*/
/*
- * Header file for OS checking.
+ * This file determinate the target os. It should only be used my the Makefile
*/
// Solaris
@@ -61,5 +61,7 @@
#else
#define __FLASHROM_OS__ "Linux"
#endif
+#else
+#define __FLASHROM_OS__ "unknown"
#endif
__FLASHROM_OS__
diff --git a/Makefile.include b/Makefile.include
index 36746c805..ca70d0514 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -31,6 +31,10 @@ $(foreach p,$1, \
$(eval override $(p) := no))
endef
+# Run the C Preprocessor with file $1 and return the last line, removing quotes.
+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)
diff --git a/util/ich_descriptors_tool/Makefile b/util/ich_descriptors_tool/Makefile
index 896243129..168220ca8 100644
--- a/util/ich_descriptors_tool/Makefile
+++ b/util/ich_descriptors_tool/Makefile
@@ -4,6 +4,8 @@
# This Makefile works standalone, but it is usually called from the main
# Makefile in the flashrom directory.
+include ../../Makefile.include
+
PROGRAM=ich_descriptors_tool
EXTRAINCDIRS = ../../ .
DEPPATH = .dep
@@ -32,8 +34,7 @@ EXEC_SUFFIX := .exe
FLASHROM_CFLAGS += -D__USE_MINGW_ANSI_STDIO=1
endif
-override TARGET_OS := $(shell $(CC) $(CPPFLAGS) -E $(SHAREDSRCDIR)/os.h | grep -v '^\#' | grep '"' | \
- cut -f 2 -d'"')
+override TARGET_OS := $(call c_macro_test, ../../Makefile.d/os_test.h)
ifeq ($(TARGET_OS), DOS)
EXEC_SUFFIX := .exe