Bug 16533

Summary: Kernel compiling fails with make-3.82 if I use an object dir and compile firmware into the kernel
Product: Other Reporter: Andrew Benton (b3nton)
Component: OtherAssignee: other_other
Status: RESOLVED CODE_FIX    
Severity: normal CC: akpm
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: Subsystem:
Regression: No Bisected commit-id:
Attachments: kernel config which shows the problem

Description Andrew Benton 2010-08-07 09:54:34 UTC
Created attachment 27370 [details]
kernel config which shows the problem

I recently upgraded to make-3.82. It seems to have broken kernel compiling. If I enable CONFIG_FIRMWARE_IN_KERNEL=y and compile in an object directory like this:make-3.81 O=/tmp/linux-build-dir
then the build fails like this:

  LD      sound/usb/misc/built-in.o
  LD      sound/usb/usx2y/built-in.o
  LD      sound/usb/built-in.o
  CC      sound/last.o
  LD      sound/built-in.o
make[2]: *** No rule to make target `/tmp/linux-build-dir/firmware/radeon/', needed by `firmware/radeon/R100_cp.bin.gen.S'.  Stop.
make[1]: *** [firmware] Error 2
make: *** [sub-make] Error 2
andy:~$ 


If I build in the kernel source with a straightforward make then the build succeeds. If I use an object dir but disable CONFIG_FIRMWARE_IN_KERNEL then the build succeeds. If I use make-3.81 then the build succeeds.

The combination of three things makes the build fail:
1 using an object dir
2 CONFIG_FIRMWARE_IN_KERNEL=y
3 make-3.82
Comment 1 Andrew Benton 2010-08-07 10:00:48 UTC
Doh typo on the third line: "make-3.81 O=/tmp/linux-build-dir" succeeds. The build fails if I do: make O=/tmp/linux-build-dir
Comment 2 Andrew Benton 2010-08-16 13:21:41 UTC
This patch fixes the problem:
http://lkml.org/lkml/2010/8/16/80
Comment 3 Andrew Morton 2010-08-25 23:48:35 UTC
mmarek merged the patch.