On 15.11.2015 16:40, Stefan Tauner wrote:
> Previously we have hid almost all error messages from called tools like
> pkg-config or the compiler in the "configure" step. Only exceptions were
> the library checks because Carl-Daniel felt it improved usability in
> case of missing headers etc.
>
> However, this makes the output of the makefile less readable and in the
> case of pkg-config fallbacks the error messages are actually expected.
> Instead of throwing a part of the detailed stderr outputs of the tools into 
> the
> face of the users and completely hiding others, write all of them into
> a separate log file instead.

Agreed.

Should we eventually move to "make config; make" to simplify the makefile?


> Also, disable implicit rules because we don't need them and they just
> make the build slower.

Good idea.


> Signed-off-by: Stefan Tauner <[email protected]>

Comments inline.


> diff --git a/Makefile b/Makefile
> index e68b106..3f96a15 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -37,6 +37,8 @@ MANDIR  ?= $(PREFIX)/share/man
>  CFLAGS  ?= -Os -Wall -Wshadow
>  EXPORTDIR ?= .
>  RANLIB  ?= ranlib
> +PKG_CONFIG ?= pkg-config
> +BUILD_DETAILS_FILE ?= build_details.txt
>  
>  # The following parameter changes the default programmer that will be used 
> if there is no -p/--programmer
>  # argument given when running flashrom. The predefined setting does not 
> enable any default so that every
> @@ -70,6 +72,8 @@ LDFLAGS += -L$(LIBS_BASE)/lib -Wl,-rpath 
> -Wl,$(LIBS_BASE)/lib
>  PKG_CONFIG_LIBDIR ?= $(LIBS_BASE)/lib/pkgconfig
>  endif
>  
> +dummy_for_make_3_80:=$(shell printf "Build started on " 
> >$(BUILD_DETAILS_FILE) ; date >>$(BUILD_DETAILS_FILE) ; echo 
> >>$(BUILD_DETAILS_FILE))

What's the oldest make version where the new makefile works reliably? Do
we have to document that somewhere or test+abort?


> +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))

I'd love to learn how this works. Do you have any pointers?


>  
> ###############################################################################
>  # General OS-specific settings.
>  # 1. Prepare for later by gathering information about host and target OS
> @@ -90,7 +94,7 @@ 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 $(shell LC_ALL=C $(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 | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
>  
>  ifeq ($(TARGET_OS), Darwin)
>  CPPFLAGS += -I/opt/local/include -I/usr/local/include
> [...]
> @@ -824,11 +834,11 @@ endef
>  export COMPILER_TEST
>  
>  compiler: featuresavailable
> -     @printf "Checking for a C compiler... "
> +     @printf "Checking for a C compiler... " | tee -a $(BUILD_DETAILS_FILE)
>       @echo "$$COMPILER_TEST" > .test.c
> -     @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test.c -o .test$(EXEC_SUFFIX) 
> >/dev/null &&    \
> -             echo "found." || ( echo "not found."; \
> -             rm -f .test.c .test$(EXEC_SUFFIX); exit 1)
> +     @{ { { { { $(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)
>       @printf "Target arch is "
>       @# FreeBSD wc will output extraneous whitespace.

Hm. Is this compatible with classic sh, or do you introduce a dependency
on bash here?

Regards,
Carl-Daniel

_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to