2003-09-06 20:14:28

by Adrian Bunk

[permalink] [raw]
Subject: 2.6: spurious recompiles

When doing a "make" inside an already compiled kernel source there
shouldn't be anything rebuilt. I've identified three places where this
isn't the case in recent 2.6 kernels:

1. ikconfig
CC kernel/configs.o
even when the .config wasn't changed

2. pnmtologo
The following happens again once, but not when doing a third "make":
./scripts/pnmtologo -t mono -n logo_linux_mono -o drivers/video/logo/logo_linux_mono.c drivers/video/logo/logo_linux_mono.pbm
CC drivers/video/logo/logo_linux_mono.o
./scripts/pnmtologo -t vga16 -n logo_linux_vga16 -o drivers/video/logo/logo_linux_vga16.c drivers/video/logo/logo_linux_vga16.ppm
CC drivers/video/logo/logo_linux_vga16.o
./scripts/pnmtologo -t clut224 -n logo_linux_clut224 -o drivers/video/logo/logo_linux_clut224.c drivers/video/logo/logo_linux_clut224.ppm
CC drivers/video/logo/logo_linux_clut224.o
LD drivers/video/logo/built-in.o
LD drivers/video/built-in.o

3. aic7xxx
drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r
drivers/scsi/aic7xxx/aic79xx_reg.h \
-p drivers/scsi/aic7xxx/aic79xx_reg_print.c -i
aic79xx_osm.h -o drivers/scsi/aic7xxx/aic79xx_seq.h \
drivers/scsi/aic7xxx/aic79xx.seq
drivers/scsi/aic7xxx/aicasm/aicasm: 785 instructions used
CC drivers/scsi/aic7xxx/aic79xx_core.o
CC drivers/scsi/aic7xxx/aic79xx_pci.o
CC drivers/scsi/aic7xxx/aic79xx_reg_print.o
CC drivers/scsi/aic7xxx/aic79xx_osm.o
CC drivers/scsi/aic7xxx/aic79xx_proc.o
CC drivers/scsi/aic7xxx/aic79xx_osm_pci.o
drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r
drivers/scsi/aic7xxx/aic7xxx_reg.h \
-p drivers/scsi/aic7xxx/aic7xxx_reg_print.c -i
aic7xxx_osm.h -o drivers/scsi/aic7xxx/aic7xxx_seq.h \
drivers/scsi/aic7xxx/aic7xxx.seq
drivers/scsi/aic7xxx/aicasm/aicasm: 879 instructions used
CC drivers/scsi/aic7xxx/aic7xxx_core.o
CC drivers/scsi/aic7xxx/aic7xxx_93cx6.o
CC drivers/scsi/aic7xxx/aic7770.o
CC drivers/scsi/aic7xxx/aic7xxx_pci.o
CC drivers/scsi/aic7xxx/aic7xxx_reg_print.o
CC drivers/scsi/aic7xxx/aic7xxx_osm.o
CC drivers/scsi/aic7xxx/aic7xxx_proc.o
CC drivers/scsi/aic7xxx/aic7770_osm.o
CC drivers/scsi/aic7xxx/aic7xxx_osm_pci.o
LD drivers/scsi/aic7xxx/aic7xxx.o
LD drivers/scsi/aic7xxx/aic79xx.o
LD drivers/scsi/aic7xxx/built-in.o


cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed


2003-09-06 22:33:24

by Randy.Dunlap

[permalink] [raw]
Subject: Re: 2.6: spurious recompiles

> When doing a "make" inside an already compiled kernel source there
> shouldn't be anything rebuilt. I've identified three places where this
> isn't the case in recent 2.6 kernels:
>
> 1. ikconfig
> CC kernel/configs.o
> even when the .config wasn't changed

This is probably the same thing that Steve Hemminger posted about
yesterday:
http://marc.theaimsgroup.com/?l=linux-kernel&m=106270067411137&w=2

I posted a patch based on Sam Ravnborg's comments that might fix it,
but I haven't verified it yet... The patch is in this message:
http://marc.theaimsgroup.com/?l=linux-kernel&m=106272687506379&w=2

or it may be some other dependency. I'll look into it.

Thanks,
~Randy



2003-09-06 22:44:29

by Andi Kleen

[permalink] [raw]
Subject: Re: 2.6: spurious recompiles

"Randy.Dunlap" <[email protected]> writes:

> > When doing a "make" inside an already compiled kernel source there
> > shouldn't be anything rebuilt. I've identified three places where this
> > isn't the case in recent 2.6 kernels:
> >
> > 1. ikconfig
> > CC kernel/configs.o
> > even when the .config wasn't changed
>
> This is probably the same thing that Steve Hemminger posted about
> yesterday:
> http://marc.theaimsgroup.com/?l=linux-kernel&m=106270067411137&w=2
>
> I posted a patch based on Sam Ravnborg's comments that might fix it,
> but I haven't verified it yet... The patch is in this message:
> http://marc.theaimsgroup.com/?l=linux-kernel&m=106272687506379&w=2
>
> or it may be some other dependency. I'll look into it.

x86-64 has the same problem. It always rebuilds arch/x86_64/ia32/vsyscall32.so,
no matter if it has changed or not. I have not figured out why it does that.

vsyscall.S is an assembly file which depends on asm/offset.h, which
is regenerated each build. But the regeneration is written in a way to
not trigger rebuilds when nothing has changed. That works for everything
else, just apparently not for the vsyscall.S file.

-Andi

2003-09-07 05:36:33

by Sam Ravnborg

[permalink] [raw]
Subject: Re: 2.6: spurious recompiles

On Sun, Sep 07, 2003 at 12:44:24AM +0200, Andi Kleen wrote:
> "Randy.Dunlap" <[email protected]> writes:
>
> x86-64 has the same problem. It always rebuilds arch/x86_64/ia32/vsyscall32.so,
> no matter if it has changed or not. I have not figured out why it does that.
>
> vsyscall.S is an assembly file which depends on asm/offset.h, which
> is regenerated each build. But the regeneration is written in a way to
> not trigger rebuilds when nothing has changed. That works for everything
> else, just apparently not for the vsyscall.S file.

Hi Andi, I recall I have a mail from you about this.
Last time I looked I could not figure out what was wrong, but let
me try again.
Could you send me the output of "make V=1" for an otherwise clean compile.

Sam

2003-09-07 05:33:15

by Sam Ravnborg

[permalink] [raw]
Subject: Re: 2.6: spurious recompiles

On Sat, Sep 06, 2003 at 10:14:18PM +0200, Adrian Bunk wrote:
> When doing a "make" inside an already compiled kernel source there
> shouldn't be anything rebuilt. I've identified three places where this
> isn't the case in recent 2.6 kernels:
>
> 1. ikconfig
> CC kernel/configs.o
> even when the .config wasn't changed

configs.o included compile.h. Compile.h contains date when kernel was
compiled, and gets updated each time there is new .o files.
That is fixed in patch sent to Randy.

> 2. pnmtologo
> The following happens again once, but not when doing a third "make":
> ./scripts/pnmtologo -t mono -n logo_linux_mono -o drivers/video/logo/logo_linux_mono.c drivers/video/logo/logo_linux_mono.pbm
> CC drivers/video/logo/logo_linux_mono.o
> ./scripts/pnmtologo -t vga16 -n logo_linux_vga16 -o drivers/video/logo/logo_linux_vga16.c drivers/video/logo/logo_linux_vga16.ppm
> CC drivers/video/logo/logo_linux_vga16.o
> ./scripts/pnmtologo -t clut224 -n logo_linux_clut224 -o drivers/video/logo/logo_linux_clut224.c drivers/video/logo/logo_linux_clut224.ppm
> CC drivers/video/logo/logo_linux_clut224.o
> LD drivers/video/logo/built-in.o
> LD drivers/video/built-in.o

I have sent a patch to James Simmons some time ago. I will try to dig it
up and see if it still applies, and fixes the problem.


> 3. aic7xxx
> drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r
> drivers/scsi/aic7xxx/aic79xx_reg.h \
> -p drivers/scsi/aic7xxx/aic79xx_reg_print.c -i
> aic79xx_osm.h -o drivers/scsi/aic7xxx/aic79xx_seq.h \
> drivers/scsi/aic7xxx/aic79xx.seq
> drivers/scsi/aic7xxx/aicasm/aicasm: 785 instructions used
> CC drivers/scsi/aic7xxx/aic79xx_core.o

New to me, I will take a look.

Sam

2003-09-07 05:51:49

by Sam Ravnborg

[permalink] [raw]
Subject: Re: 2.6: spurious recompiles

On Sat, Sep 06, 2003 at 10:14:18PM +0200, Adrian Bunk wrote:
> 2. pnmtologo
> The following happens again once, but not when doing a third "make":
> ./scripts/pnmtologo -t mono -n logo_linux_mono -o drivers/video/logo/logo_linux_mono.c drivers/video/logo/logo_linux_mono.pbm

Would you mind to give this patch a spin. Only lightly tested here.

===== drivers/video/aty/Makefile 1.10 vs edited =====
--- 1.10/drivers/video/aty/Makefile Thu May 1 18:32:15 2003
+++ edited/drivers/video/aty/Makefile Sun Sep 7 07:45:54 2003
@@ -4,4 +4,3 @@
atyfb-y := atyfb_base.o mach64_accel.o
atyfb-$(CONFIG_FB_ATY_GX) += mach64_gx.o
atyfb-$(CONFIG_FB_ATY_CT) += mach64_ct.o mach64_cursor.o
-atyfb-objs := $(atyfb-y)
===== drivers/video/console/Makefile 1.15 vs edited =====
--- 1.15/drivers/video/console/Makefile Mon Feb 3 23:19:38 2003
+++ edited/drivers/video/console/Makefile Sun Sep 7 07:45:55 2003
@@ -3,18 +3,16 @@
# Rewritten to use lists instead of if-statements.

# Font handling
-font-objs := fonts.o
+font-y := fonts.o

-font-objs-$(CONFIG_FONT_SUN8x16) += font_sun8x16.o
-font-objs-$(CONFIG_FONT_SUN12x22) += font_sun12x22.o
-font-objs-$(CONFIG_FONT_8x8) += font_8x8.o
-font-objs-$(CONFIG_FONT_8x16) += font_8x16.o
-font-objs-$(CONFIG_FONT_6x11) += font_6x11.o
-font-objs-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
-font-objs-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
-font-objs-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o
-
-font-objs += $(font-objs-y)
+font-$(CONFIG_FONT_SUN8x16) += font_sun8x16.o
+font-$(CONFIG_FONT_SUN12x22) += font_sun12x22.o
+font-$(CONFIG_FONT_8x8) += font_8x8.o
+font-$(CONFIG_FONT_8x16) += font_8x16.o
+font-$(CONFIG_FONT_6x11) += font_6x11.o
+font-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
+font-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
+font-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o

# Each configuration option enables a list of files.

@@ -31,8 +29,11 @@
# Files generated that shall be removed upon make clean
clean-files := promcon_tbl.c

-$(obj)/promcon_tbl.c: $(src)/prom.uni
- $(objtree)/scripts/conmakehash $< | \
+
+quiet_cmd_promtbl = GEN $@
+ cmd_promtbl = scripts/conmakehash $< | \
sed -e '/#include <[^>]*>/p' -e 's/types/init/' \
-e 's/dfont\(_uni.*\]\)/promfont\1 __initdata/' > $@

+$(obj)/promcon_tbl.c: $(src)/prom.uni
+ $(call cmd,promtbl)
===== drivers/video/i810/Makefile 1.2 vs edited =====
--- 1.2/drivers/video/i810/Makefile Wed Jan 1 14:00:16 2003
+++ edited/drivers/video/i810/Makefile Sun Sep 7 07:45:56 2003
@@ -1,15 +1,8 @@
#
# Makefile for the Intel 810/815 framebuffer driver
#
-# Note! Dependencies are done automagically by 'make dep', which also
-# removes any old dependencies. DON'T put your own dependencies here
-# unless it's something special (ie not a .c file).
-#
-# Note 2! The CFLAGS definitions are now in the main makefile...
-

obj-$(CONFIG_FB_I810) += i810fb.o
-

i810fb-objs := i810_main.o i810_accel.o

===== drivers/video/logo/Makefile 1.3 vs edited =====
--- 1.3/drivers/video/logo/Makefile Mon Jul 21 23:30:38 2003
+++ edited/drivers/video/logo/Makefile Sun Sep 7 07:47:00 2003
@@ -25,18 +25,23 @@

# How to generate them

+# Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
+quiet_cmd_logo = LOGO $@
+ cmd_logo = scripts/pnmtologo \
+ -t $(patsubst $*_%,%,$(notdir $(basename $<))) \
+ -n $(notdir $(basename $<)) -o $@ $<
+
$(obj)/%_mono.c: $(src)/%_mono.pbm
- $(objtree)/scripts/pnmtologo -t mono -n $*_mono -o $@ $<
+ $(call cmd,logo)

$(obj)/%_vga16.c: $(src)/%_vga16.ppm
- $(objtree)/scripts/pnmtologo -t vga16 -n $*_vga16 -o $@ $<
+ $(call cmd,logo)

$(obj)/%_clut224.c: $(src)/%_clut224.ppm
- $(objtree)/scripts/pnmtologo -t clut224 -n $*_clut224 -o $@ $<
+ $(call cmd,logo)

$(obj)/%_gray256.c: $(src)/%_gray256.pgm
- $(objtree)/scripts/pnmtologo -t gray256 -n $*_gray256 -o $@ $<
-
+ $(call cmd,logo)

# Files generated that shall be removed upon make clean
clean-files := *_mono.c *_vga16.c *_clut224.c *_gray256.c

2003-09-07 07:00:39

by Sam Ravnborg

[permalink] [raw]
Subject: Re: 2.6: spurious recompiles

On Sun, Sep 07, 2003 at 07:51:44AM +0200, Sam Ravnborg wrote:
> On Sat, Sep 06, 2003 at 10:14:18PM +0200, Adrian Bunk wrote:
> > 2. pnmtologo
> > The following happens again once, but not when doing a third "make":
> > ./scripts/pnmtologo -t mono -n logo_linux_mono -o drivers/video/logo/logo_linux_mono.c drivers/video/logo/logo_linux_mono.pbm
>
> Would you mind to give this patch a spin. Only lightly tested here.
Tested it a bit more, it was not good. Corrected patch follows.
I had to spell out the dependencies, otherwise make saw them
as implicit targets, and deleted the .c files afterwards.

Btw the patch contains some general clean-up as well, unrelated to
the 'spurious recompile' issue.

Sam

===== drivers/video/aty/Makefile 1.10 vs edited =====
--- 1.10/drivers/video/aty/Makefile Thu May 1 18:32:15 2003
+++ edited/drivers/video/aty/Makefile Sun Sep 7 07:45:54 2003
@@ -4,4 +4,3 @@
atyfb-y := atyfb_base.o mach64_accel.o
atyfb-$(CONFIG_FB_ATY_GX) += mach64_gx.o
atyfb-$(CONFIG_FB_ATY_CT) += mach64_ct.o mach64_cursor.o
-atyfb-objs := $(atyfb-y)
===== drivers/video/console/Makefile 1.15 vs edited =====
--- 1.15/drivers/video/console/Makefile Mon Feb 3 23:19:38 2003
+++ edited/drivers/video/console/Makefile Sun Sep 7 07:45:55 2003
@@ -3,18 +3,16 @@
# Rewritten to use lists instead of if-statements.

# Font handling
-font-objs := fonts.o
+font-y := fonts.o

-font-objs-$(CONFIG_FONT_SUN8x16) += font_sun8x16.o
-font-objs-$(CONFIG_FONT_SUN12x22) += font_sun12x22.o
-font-objs-$(CONFIG_FONT_8x8) += font_8x8.o
-font-objs-$(CONFIG_FONT_8x16) += font_8x16.o
-font-objs-$(CONFIG_FONT_6x11) += font_6x11.o
-font-objs-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
-font-objs-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
-font-objs-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o
-
-font-objs += $(font-objs-y)
+font-$(CONFIG_FONT_SUN8x16) += font_sun8x16.o
+font-$(CONFIG_FONT_SUN12x22) += font_sun12x22.o
+font-$(CONFIG_FONT_8x8) += font_8x8.o
+font-$(CONFIG_FONT_8x16) += font_8x16.o
+font-$(CONFIG_FONT_6x11) += font_6x11.o
+font-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
+font-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
+font-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o

# Each configuration option enables a list of files.

@@ -31,8 +29,11 @@
# Files generated that shall be removed upon make clean
clean-files := promcon_tbl.c

-$(obj)/promcon_tbl.c: $(src)/prom.uni
- $(objtree)/scripts/conmakehash $< | \
+
+quiet_cmd_promtbl = GEN $@
+ cmd_promtbl = scripts/conmakehash $< | \
sed -e '/#include <[^>]*>/p' -e 's/types/init/' \
-e 's/dfont\(_uni.*\]\)/promfont\1 __initdata/' > $@

+$(obj)/promcon_tbl.c: $(src)/prom.uni
+ $(call cmd,promtbl)
===== drivers/video/i810/Makefile 1.2 vs edited =====
--- 1.2/drivers/video/i810/Makefile Wed Jan 1 14:00:16 2003
+++ edited/drivers/video/i810/Makefile Sun Sep 7 07:45:56 2003
@@ -1,15 +1,8 @@
#
# Makefile for the Intel 810/815 framebuffer driver
#
-# Note! Dependencies are done automagically by 'make dep', which also
-# removes any old dependencies. DON'T put your own dependencies here
-# unless it's something special (ie not a .c file).
-#
-# Note 2! The CFLAGS definitions are now in the main makefile...
-

obj-$(CONFIG_FB_I810) += i810fb.o
-

i810fb-objs := i810_main.o i810_accel.o

===== drivers/video/logo/Makefile 1.3 vs edited =====
--- 1.3/drivers/video/logo/Makefile Mon Jul 21 23:30:38 2003
+++ edited/drivers/video/logo/Makefile Sun Sep 7 08:57:22 2003
@@ -14,29 +14,38 @@
obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o

# Dependencies on generated files need to be listed explicitly
-
-$(obj)/%_mono.o: $(src)/%_mono.c
-
-$(obj)/%_vga16.o: $(src)/%_vga16.c
-
-$(obj)/%_clut224.o: $(src)/%_clut224.c
-
-$(obj)/%_gray256.o: $(src)/%_gray256.c
+# mono logo's
+$(obj)/logo_linux_mono.o: $(obj)/logo_linux_mono.c
+$(obj)/logo_superh_mono.o: $(obj)/logo_superh_mono.c
+
+# vga16 logo's
+$(obj)/logo_linux_vga16.o: $(obj)/logo_linux_vga16.c
+$(obj)/logo_superh_vga16.o: $(obj)/logo_superh_vga16.c
+
+# clut224 logo's
+$(obj)/logo_linux_clut224.o: $(obj)/logo_linux_clut224.c
+$(obj)/logo_dec_clut224.o: $(obj)/logo_dec_clut224.c
+$(obj)/logo_mac_clut224.o: $(obj)/logo_mac_clut224.c
+$(obj)/logo_sgi_clut224.o: $(obj)/logo_sgi_clut224.c
+$(obj)/logo_sun_clut224.o: $(obj)/logo_sun_clut224.c
+$(obj)/logo_superh_clut224.o: $(obj)/logo_superh_clut224.c

# How to generate them

+# Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
+quiet_cmd_logo = LOGO $@
+ cmd_logo = scripts/pnmtologo \
+ -t $(patsubst $*_%,%,$(notdir $(basename $<))) \
+ -n $(notdir $(basename $<)) -o $@ $<
+
$(obj)/%_mono.c: $(src)/%_mono.pbm
- $(objtree)/scripts/pnmtologo -t mono -n $*_mono -o $@ $<
+ $(call cmd,logo)

$(obj)/%_vga16.c: $(src)/%_vga16.ppm
- $(objtree)/scripts/pnmtologo -t vga16 -n $*_vga16 -o $@ $<
+ $(call cmd,logo)

$(obj)/%_clut224.c: $(src)/%_clut224.ppm
- $(objtree)/scripts/pnmtologo -t clut224 -n $*_clut224 -o $@ $<
-
-$(obj)/%_gray256.c: $(src)/%_gray256.pgm
- $(objtree)/scripts/pnmtologo -t gray256 -n $*_gray256 -o $@ $<
-
+ $(call cmd,logo)

# Files generated that shall be removed upon make clean
-clean-files := *_mono.c *_vga16.c *_clut224.c *_gray256.c
+clean-files := *_mono.c *_vga16.c *_clut224.c

2003-09-07 10:17:44

by Adrian Bunk

[permalink] [raw]
Subject: Re: 2.6: spurious recompiles

On Sun, Sep 07, 2003 at 09:00:25AM +0200, Sam Ravnborg wrote:
> On Sun, Sep 07, 2003 at 07:51:44AM +0200, Sam Ravnborg wrote:
> > On Sat, Sep 06, 2003 at 10:14:18PM +0200, Adrian Bunk wrote:
> > > 2. pnmtologo
> > > The following happens again once, but not when doing a third "make":
> > > ./scripts/pnmtologo -t mono -n logo_linux_mono -o drivers/video/logo/logo_linux_mono.c drivers/video/logo/logo_linux_mono.pbm
> >
> > Would you mind to give this patch a spin. Only lightly tested here.
> Tested it a bit more, it was not good. Corrected patch follows.
> I had to spell out the dependencies, otherwise make saw them
> as implicit targets, and deleted the .c files afterwards.

Thanks, this patch seems to fix it.

> Btw the patch contains some general clean-up as well, unrelated to
> the 'spurious recompile' issue.

These are the places where I got rejects in 2.6.0-test4-mm6 (these
changes are already in the -mm tree).

> Sam
>...

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2003-09-07 10:38:08

by Adrian Bunk

[permalink] [raw]
Subject: Re: 2.6: spurious recompiles

On Sat, Sep 06, 2003 at 03:33:21PM -0700, Randy.Dunlap wrote:
> > When doing a "make" inside an already compiled kernel source there
> > shouldn't be anything rebuilt. I've identified three places where this
> > isn't the case in recent 2.6 kernels:
> >
> > 1. ikconfig
> > CC kernel/configs.o
> > even when the .config wasn't changed
>...
> I posted a patch based on Sam Ravnborg's comments that might fix it,
> but I haven't verified it yet... The patch is in this message:
> http://marc.theaimsgroup.com/?l=linux-kernel&m=106272687506379&w=2
>...

It seems I missed this mail.

The patch in this mail seems to fix the recompiles.

> Thanks,
> ~Randy

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2003-09-08 23:46:36

by James Simmons

[permalink] [raw]
Subject: Re: 2.6: spurious recompiles


I have most of this patch already. I applied your logo Makefile changes. I
will test them tonight.


> ===== drivers/video/aty/Makefile 1.10 vs edited =====
> --- 1.10/drivers/video/aty/Makefile Thu May 1 18:32:15 2003
> +++ edited/drivers/video/aty/Makefile Sun Sep 7 07:45:54 2003
> @@ -4,4 +4,3 @@
> atyfb-y := atyfb_base.o mach64_accel.o
> atyfb-$(CONFIG_FB_ATY_GX) += mach64_gx.o
> atyfb-$(CONFIG_FB_ATY_CT) += mach64_ct.o mach64_cursor.o
> -atyfb-objs := $(atyfb-y)
> ===== drivers/video/console/Makefile 1.15 vs edited =====
> --- 1.15/drivers/video/console/Makefile Mon Feb 3 23:19:38 2003
> +++ edited/drivers/video/console/Makefile Sun Sep 7 07:45:55 2003
> @@ -3,18 +3,16 @@
> # Rewritten to use lists instead of if-statements.
>
> # Font handling
> -font-objs := fonts.o
> +font-y := fonts.o
>
> -font-objs-$(CONFIG_FONT_SUN8x16) += font_sun8x16.o
> -font-objs-$(CONFIG_FONT_SUN12x22) += font_sun12x22.o
> -font-objs-$(CONFIG_FONT_8x8) += font_8x8.o
> -font-objs-$(CONFIG_FONT_8x16) += font_8x16.o
> -font-objs-$(CONFIG_FONT_6x11) += font_6x11.o
> -font-objs-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
> -font-objs-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
> -font-objs-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o
> -
> -font-objs += $(font-objs-y)
> +font-$(CONFIG_FONT_SUN8x16) += font_sun8x16.o
> +font-$(CONFIG_FONT_SUN12x22) += font_sun12x22.o
> +font-$(CONFIG_FONT_8x8) += font_8x8.o
> +font-$(CONFIG_FONT_8x16) += font_8x16.o
> +font-$(CONFIG_FONT_6x11) += font_6x11.o
> +font-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o
> +font-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o
> +font-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o
>
> # Each configuration option enables a list of files.
>
> @@ -31,8 +29,11 @@
> # Files generated that shall be removed upon make clean
> clean-files := promcon_tbl.c
>
> -$(obj)/promcon_tbl.c: $(src)/prom.uni
> - $(objtree)/scripts/conmakehash $< | \
> +
> +quiet_cmd_promtbl = GEN $@
> + cmd_promtbl = scripts/conmakehash $< | \
> sed -e '/#include <[^>]*>/p' -e 's/types/init/' \
> -e 's/dfont\(_uni.*\]\)/promfont\1 __initdata/' > $@
>
> +$(obj)/promcon_tbl.c: $(src)/prom.uni
> + $(call cmd,promtbl)
> ===== drivers/video/i810/Makefile 1.2 vs edited =====
> --- 1.2/drivers/video/i810/Makefile Wed Jan 1 14:00:16 2003
> +++ edited/drivers/video/i810/Makefile Sun Sep 7 07:45:56 2003
> @@ -1,15 +1,8 @@
> #
> # Makefile for the Intel 810/815 framebuffer driver
> #
> -# Note! Dependencies are done automagically by 'make dep', which also
> -# removes any old dependencies. DON'T put your own dependencies here
> -# unless it's something special (ie not a .c file).
> -#
> -# Note 2! The CFLAGS definitions are now in the main makefile...
> -
>
> obj-$(CONFIG_FB_I810) += i810fb.o
> -
>
> i810fb-objs := i810_main.o i810_accel.o
>
> ===== drivers/video/logo/Makefile 1.3 vs edited =====
> --- 1.3/drivers/video/logo/Makefile Mon Jul 21 23:30:38 2003
> +++ edited/drivers/video/logo/Makefile Sun Sep 7 08:57:22 2003
> @@ -14,29 +14,38 @@
> obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
>
> # Dependencies on generated files need to be listed explicitly
> -
> -$(obj)/%_mono.o: $(src)/%_mono.c
> -
> -$(obj)/%_vga16.o: $(src)/%_vga16.c
> -
> -$(obj)/%_clut224.o: $(src)/%_clut224.c
> -
> -$(obj)/%_gray256.o: $(src)/%_gray256.c
> +# mono logo's
> +$(obj)/logo_linux_mono.o: $(obj)/logo_linux_mono.c
> +$(obj)/logo_superh_mono.o: $(obj)/logo_superh_mono.c
> +
> +# vga16 logo's
> +$(obj)/logo_linux_vga16.o: $(obj)/logo_linux_vga16.c
> +$(obj)/logo_superh_vga16.o: $(obj)/logo_superh_vga16.c
> +
> +# clut224 logo's
> +$(obj)/logo_linux_clut224.o: $(obj)/logo_linux_clut224.c
> +$(obj)/logo_dec_clut224.o: $(obj)/logo_dec_clut224.c
> +$(obj)/logo_mac_clut224.o: $(obj)/logo_mac_clut224.c
> +$(obj)/logo_sgi_clut224.o: $(obj)/logo_sgi_clut224.c
> +$(obj)/logo_sun_clut224.o: $(obj)/logo_sun_clut224.c
> +$(obj)/logo_superh_clut224.o: $(obj)/logo_superh_clut224.c
>
> # How to generate them
>
> +# Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
> +quiet_cmd_logo = LOGO $@
> + cmd_logo = scripts/pnmtologo \
> + -t $(patsubst $*_%,%,$(notdir $(basename $<))) \
> + -n $(notdir $(basename $<)) -o $@ $<
> +
> $(obj)/%_mono.c: $(src)/%_mono.pbm
> - $(objtree)/scripts/pnmtologo -t mono -n $*_mono -o $@ $<
> + $(call cmd,logo)
>
> $(obj)/%_vga16.c: $(src)/%_vga16.ppm
> - $(objtree)/scripts/pnmtologo -t vga16 -n $*_vga16 -o $@ $<
> + $(call cmd,logo)
>
> $(obj)/%_clut224.c: $(src)/%_clut224.ppm
> - $(objtree)/scripts/pnmtologo -t clut224 -n $*_clut224 -o $@ $<
> -
> -$(obj)/%_gray256.c: $(src)/%_gray256.pgm
> - $(objtree)/scripts/pnmtologo -t gray256 -n $*_gray256 -o $@ $<
> -
> + $(call cmd,logo)
>
> # Files generated that shall be removed upon make clean
> -clean-files := *_mono.c *_vga16.c *_clut224.c *_gray256.c
> +clean-files := *_mono.c *_vga16.c *_clut224.c
>

2003-09-08 23:45:19

by James Simmons

[permalink] [raw]
Subject: Re: 2.6: spurious recompiles


> > 2. pnmtologo
> > The following happens again once, but not when doing a third "make":
> > ./scripts/pnmtologo -t mono -n logo_linux_mono -o drivers/video/logo/logo_linux_mono.c drivers/video/logo/logo_linux_mono.pbm
> > CC drivers/video/logo/logo_linux_mono.o
> > ./scripts/pnmtologo -t vga16 -n logo_linux_vga16 -o drivers/video/logo/logo_linux_vga16.c drivers/video/logo/logo_linux_vga16.ppm
> > CC drivers/video/logo/logo_linux_vga16.o
> > ./scripts/pnmtologo -t clut224 -n logo_linux_clut224 -o drivers/video/logo/logo_linux_clut224.c drivers/video/logo/logo_linux_clut224.ppm
> > CC drivers/video/logo/logo_linux_clut224.o
> > LD drivers/video/logo/built-in.o
> > LD drivers/video/built-in.o
>
> I have sent a patch to James Simmons some time ago. I will try to dig it
> up and see if it still applies, and fixes the problem.

I have the patch in the fbdev BK tree.