Skip to contentSkip to conversation

CCFOUND and more

DISCUSSION J . A . Magallon 2 participants 3 messages Dec 26, 2000 – Dec 29, 2000

lore
Share & tools
lore
#0 lore raw

Hi everyone.

Solving other things, I have realized that all that problem on fast CC detection (CCFOUND) is easily solved by doing:

	CC  := $(.................)
instead of
	CC = $(.........)

The find of the suitable CC command is repeated many times along a kernel build. And CC is not anything that can change along a kernel build. So former syntax solves all the problems, CC detection can be so complex as you want because is done only once.

Same is valid for other Makefile variables:
CPP = $(CC) -E ===> CPP := $(CC) -E

(If you want to test how many shells are spawned when using CC, try CC = $(shell echo "===== CC EVAL ===============" >&2; if ........ vs
CC := $(shell echo "===== CC EVAL ===============" >&2; if .......

Is there something I am missing ?

Signature · 9 lines
J.A. Magallon                                         $> cd pub
mailto:[email protected]                             $> more beer

Linux werewolf 2.2.19-pre3-aa2 #9 SMP Tue Dec 26 12:26:43 CET 2000 i686

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
#1 lore raw
Quoted 11 lines · J . A . Magallon

Solving other things, I have realized that all that problem on fast CC detection (CCFOUND) is easily solved by doing:

	CC  := $(.................)
instead of
	CC = $(.........)

The find of the suitable CC command is repeated many times along a kernel build. And CC is not anything that can change along a kernel build. So former syntax solves all the problems, CC detection can be so complex as you want because is done only once.

Is there something I am missing ?

Yes. Some arch files change CROSS_COMPILE after CC has been set and expect the change to flow into the definition of CC. This "feature" only works because '=' stores the value as text and reevaluates the text each time, automatically picking up any changes to CROSS_COMPILE. Using CC := might break m68k and mips. The makefile redesign for 2.5 will fix this problem once and for all.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#2 lore raw
In reply to J . A . Magallon
Quoted 8 lines · On 2000.12.28 Keith Owens wrote:

Yes. Some arch files change CROSS_COMPILE after CC has been set and expect the change to flow into the definition of CC. This "feature" only works because '=' stores the value as text and reevaluates the text each time, automatically picking up any changes to CROSS_COMPILE. Using CC := might break m68k and mips. The makefile redesign for 2.5 will fix this problem once and for all.

OK, understrood. Anyway, I know there is not too much impact of this issue, but you could always convert-to-fast-version the more critical vars with something like:

CC = .........
CPP = $(CC) -E
..
include arch/$(ARCH)/Makefile

# Eval them once forever
CC:=$(CC)
CPP:=$(CPP)

Signature · 9 lines
J.A. Magallon                                         $> cd pub
mailto:[email protected]                             $> more beer

Linux werewolf 2.2.19-pre3-aa3 #3 SMP Wed Dec 27 10:25:32 CET 2000 i686

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/