2000-11-02 14:56:52

by TenThumbs

[permalink] [raw]
Subject: 2.2.18pre18: many calls to kwhich

I noticed that kwhich is called a lot:

make oldconfig: 10
make dep: 65
make bzImage modules: 142

Assuming that this is unintentional, this patch helps a lot.

--- Makefile.orig Sun Oct 29 09:09:16 2000
+++ Makefile Tue Oct 31 11:39:11 2000
@@ -28,7 +28,7 @@
# kgcc for Conectiva and Red Hat 7
# otherwise 'cc'
#
-CC =$(shell if [ -n "$(CROSS_COMPILE)" ]; then echo $(CROSS_COMPILE)gcc; else \
+CC :=$(shell if [ -n "$(CROSS_COMPILE)" ]; then echo $(CROSS_COMPILE)gcc; else \
$(CONFIG_SHELL) scripts/kwhich gcc272 2>/dev/null || $(CONFIG_SHELL) scripts/kwhich kgcc 2>/dev/null || echo cc; fi) \
-D__KERNEL__ -I$(HPATH)
CPP =$(CC) -E

(If it gets wrapped, it's just "=" -> ":=").

It's also interesting that make dep calls kwhich an odd number
of times including one case where it looked for "gcc." I suspect
a makefile isn't playing nice but I haven't looked for it.


2000-11-04 01:28:53

by Peter Samuelson

[permalink] [raw]
Subject: Re: 2.2.18pre18: many calls to kwhich


[TenThumbs]
> I noticed that kwhich is called a lot:
>
> make oldconfig: 10
> make dep: 65
> make bzImage modules: 142

Yes indeed, I suggested the ':=' when kwhich first went in, for this
reason. I suspect my mail was either ignored or overlooked.

That whole raft of variables uses '=' instead of ':=' and I've
occasionally wondered if this was intentional. Possibly so, because
arch/{mips,m68k}/Makefile both set CROSS_COMPILE, which wouldn't work
if the toplevel used ':='.

I don't like it, though. I think the user should be assumed to either
have a standard toolchain installed, in which case gcc and binutils
should be in the path under standard names --- or the user should know
enough to specify ARCH= and CROSS_COMPILE= on the compile line.


Alan: to avoid the 'CROSS_COMPILE defined too early' problem in the
stable series, I suggest the following, which will at least prevent the
kwhich script from being execed 200 times as reported.

Peter

--- 2.2.18pre19/Makefile~ Fri Nov 3 19:20:31 2000
+++ 2.2.18pre19/Makefile Fri Nov 3 19:26:08 2000
@@ -28,8 +28,8 @@
# kgcc for Conectiva and Red Hat 7
# otherwise 'cc'
#
-CC =$(shell if [ -n "$(CROSS_COMPILE)" ]; then echo $(CROSS_COMPILE)gcc; else \
- $(CONFIG_SHELL) scripts/kwhich gcc272 2>/dev/null || $(CONFIG_SHELL) scripts/kwhich kgcc 2>/dev/null || echo cc; fi) \
+FOUNDCC := $(shell $(CONFIG_SHELL) scripts/kwhich gcc272 kgcc cc 2>/dev/null)
+CC =$(shell if [ -n "$(CROSS_COMPILE)" ]; then echo $(CROSS_COMPILE)gcc; else echo $(FOUNDCC); fi) \
-D__KERNEL__ -I$(HPATH)
CPP =$(CC) -E
AR =$(CROSS_COMPILE)ar