>>> On 13.08.14 at 16:55, <mmarek@xxxxxxx> wrote: > On 2014-08-08 15:29, Jan Beulich wrote: >>>>> On 08.08.14 at 15:20, <mmarek@xxxxxxx> wrote: >>> On 2014-08-07 09:58, Jan Beulich wrote: >>>> It looks like commit 5180d5f483 ("firmware: Simplify directory >>>> creation") uncovered a latent bug: The cmd_fwbin make macro, which is >>>> being called without any arguments, referenced argument 2, which I >>>> suppose previously just happened to be set to the right value (from an >>>> enclosing macro invocation - some make versions don't always properly >>>> clear unused macro arguments on nested macro invocations). In 3.16 with >>>> such make versions it now points into the source tree instead, >>>> resulting in build failure when building outside the source tree. And >>>> obviously on make versions properly clearing unused arguments it would >>>> have resolved to empty. >>> >>> With which make version are you seeing the error? >> >> 3.80 and 3.81, albeit with the latter I can't construct a simple >> repro Makefile to demonstrate the problem (hence the mentioning >> of "make versions" _and_ "don't always"). > > It actually fails for me with the patch and works without: > > $ mkdir ~/fw > $ echo 'hello world' >~/fw/test.bin > $ grep FIRMWARE .config > CONFIG_PREVENT_FIRMWARE_BUILD=y > CONFIG_FIRMWARE_IN_KERNEL=y > CONFIG_EXTRA_FIRMWARE="test.bin" > CONFIG_EXTRA_FIRMWARE_DIR="/home/mmarek/fw" > # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set > # CONFIG_FIRMWARE_EDID is not set > CONFIG_FIRMWARE_MEMMAP=y > # CONFIG_GOOGLE_FIRMWARE is not set > $ make > ... > MK_FW firmware/test.bin.gen.S > AS firmware/test.bin.gen.o > firmware/test.bin.gen.S: Assembler messages: > firmware/test.bin.gen.S:5: Error: file not found: firmware/test.bin > make[1]: *** [firmware/test.bin.gen.o] Error 1 > make: *** [firmware] Error 2 > $ make --version > GNU Make 3.81 > ... > > What are the exact step to reproduce the bug you are seeing? Okay, I see now where the $(2) comes from and that this is the correct thing to use. The problem got introduced in a completely different place: $(objtree) all of the sudden is just . rather than $(CURDIR) (your commit 7e1c04779e), and I have # CONFIG_FIRMWARE_IN_KERNEL is not set CONFIG_EXTRA_FIRMWARE="tigon/tg3_tso.bin" CONFIG_EXTRA_FIRMWARE_DIR="${objtree}/firmware" in an attempt to avoid all kinds of other firmware to be put into the kernel too. The logic at the top of firmware/Makefile now wrongly tries to locate the file in the source tree rather than the object one (and note the final conversion being there just to get rid of the $(objtree) prefix, which seems pretty pointless with that change of yours). Jan -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html