diff mbox

[U-Boot,v2,2/6] config.mk: Make cc-option create a file under include/generated

Message ID 1329174126-21460-3-git-send-email-trini@ti.com
State Changes Requested, archived
Headers show

Commit Message

Tom Rini Feb. 13, 2012, 11:02 p.m. UTC
Testing for -fstack-usage requires the creation of an output file, which
isnt possible with /dev/null.

Signed-off-by: Tom Rini <trini@ti.com>
---
 config.mk |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

Comments

Mike Frysinger Feb. 14, 2012, 5:43 a.m. UTC | #1
On Monday 13 February 2012 18:02:02 Tom Rini wrote:
> isnt possible with /dev/null.

isn't

> --- a/config.mk
> +++ b/config.mk
>
> -cc-option-sys = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
> -		> /dev/null 2>&1; then \
> +cc-option-sys = $(shell mkdir -p $(dir $(CC_TEST_FILE)); \
> +		touch $(CC_TEST_FILE); \
> +		if $(CC) $(CFLAGS) $(1) -S -o $(CC_TEST_FILE) \
> +		-xc $(CC_TEST_FILE) > /dev/null 2>&1; then \

why do you need to touch the file first ?  why do you source this test file
instead of continuing to source /dev/null ?  don't you run into problems if
you use cc-option-sys more than once and a previous run wrote something to
that file ?  then cc-option-sys could fail on later runs ...

seems like you should drop the `touch` and keep the -xc /dev/null and only
change the -o to $(CC_TEST_FILE) ...
-mike
Tom Rini Feb. 14, 2012, 2:35 p.m. UTC | #2
On Mon, Feb 13, 2012 at 10:43 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> On Monday 13 February 2012 18:02:02 Tom Rini wrote:
>> isnt possible with /dev/null.
>
> isn't
>
>> --- a/config.mk
>> +++ b/config.mk
>>
>> -cc-option-sys = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
>> -             > /dev/null 2>&1; then \
>> +cc-option-sys = $(shell mkdir -p $(dir $(CC_TEST_FILE)); \
>> +             touch $(CC_TEST_FILE); \
>> +             if $(CC) $(CFLAGS) $(1) -S -o $(CC_TEST_FILE) \
>> +             -xc $(CC_TEST_FILE) > /dev/null 2>&1; then \
>
> why do you need to touch the file first ?  why do you source this test file
> instead of continuing to source /dev/null ?  don't you run into problems if
> you use cc-option-sys more than once and a previous run wrote something to
> that file ?  then cc-option-sys could fail on later runs ...
>
> seems like you should drop the `touch` and keep the -xc /dev/null and only
> change the -o to $(CC_TEST_FILE) ...

I've also changed the variable to CC_TEST_OFILE and that works, thanks.
diff mbox

Patch

diff --git a/config.mk b/config.mk
index ddaa477..519bc1b 100644
--- a/config.mk
+++ b/config.mk
@@ -108,14 +108,14 @@  HOSTCFLAGS	+= -pedantic
 # only supported compiler options are used
 #
 CC_OPTIONS_CACHE_FILE := $(OBJTREE)/include/generated/cc_options.mk
-
-$(if $(wildcard $(CC_OPTIONS_CACHE_FILE)),,\
-	$(shell mkdir -p $(dir $(CC_OPTIONS_CACHE_FILE))))
+CC_TEST_FILE := $(OBJTREE)/include/generated/cc_test_file.c
 
 -include $(CC_OPTIONS_CACHE_FILE)
 
-cc-option-sys = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
-		> /dev/null 2>&1; then \
+cc-option-sys = $(shell mkdir -p $(dir $(CC_TEST_FILE)); \
+		touch $(CC_TEST_FILE); \
+		if $(CC) $(CFLAGS) $(1) -S -o $(CC_TEST_FILE) \
+		-xc $(CC_TEST_FILE) > /dev/null 2>&1; then \
 		echo 'CC_OPTIONS += $(strip $1)' >> $(CC_OPTIONS_CACHE_FILE); \
 		echo "$(1)"; fi)