Re: [PATCH] kbuild: create a build directory automatically for out-of-tree build

From: Randy Dunlap
Date: Tue Apr 01 2014 - 13:45:13 EST


On 03/31/2014 01:36 PM, Sam Ravnborg wrote:
> On Mon, Mar 31, 2014 at 04:41:36PM +0900, Masahiro Yamada wrote:
>> Kbuild supports saving output files in a separate directory.
>> But the build directory must be created beforehand. For example,
>>
>> $ mkdir -p dir/to/store/output/files
>> $ make O=dir/to/store/output/files defconfig
>>
>> Creating a build directory automatically would be useful.
>>
>> Signed-off-by: Masahiro Yamada <yamada.m@xxxxxxxxxxxxxxxx>
>> ---
>> Makefile | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 575e1f8..35b5b7e 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -120,9 +120,10 @@ ifneq ($(KBUILD_OUTPUT),)
>> # Invoke a second make in the output directory, passing relevant variables
>> # check that the output directory actually exists
>> saved-output := $(KBUILD_OUTPUT)
>> -KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
>> +KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
>> + && /bin/pwd)
>> $(if $(KBUILD_OUTPUT),, \
>> - $(error output directory "$(saved-output)" does not exist))
>> + $(error failed to create output directory "$(saved-output)"))
>>
>> PHONY += $(MAKECMDGOALS) sub-make
>
> Hi Masahiro.
>
> In the past I have rejected such patches - but today I fail to recall why.

I believe that it was due this kind of patch allowing typos to cause
builds that one does not want to make.

E.g., if I already have O=OUT1 directory and I mistype O=OUT2, this will cause
a full build (potentially) in OUT2, even if it should do a small rebuild in
OUT1 instead.

I think this is bad, but I won't exactly nak it.

> I did a very quick test-spin on this and worked nicely.
>
> So you get my:
>
> Acked-by: Sam Ravnborg <sam@xxxxxxxxxxxx>


--
~Randy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/