diff mbox

kbuild: create a build directory automatically for out-of-tree build

Message ID 1396251696-14815-1-git-send-email-yamada.m@jp.panasonic.com (mailing list archive)
State New, archived
Headers show

Commit Message

Masahiro Yamada March 31, 2014, 7:41 a.m. UTC
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@jp.panasonic.com>
---
 Makefile | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Sam Ravnborg March 31, 2014, 8:36 p.m. UTC | #1
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@jp.panasonic.com>
> ---
>  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 did a very quick test-spin on this and worked nicely.

So you get my:

Acked-by: Sam Ravnborg <sam@ravnborg.org>

	Sam
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michal Marek March 31, 2014, 8:50 p.m. UTC | #2
Dne 31.3.2014 22:36, Sam Ravnborg napsal(a):
> 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@jp.panasonic.com>
>> ---
>>  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 did a very quick test-spin on this and worked nicely.
> 
> So you get my:
> 
> Acked-by: Sam Ravnborg <sam@ravnborg.org>

Applied to kbuild.git#kbuild, thanks.

Michal

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Randy Dunlap April 1, 2014, 5:44 p.m. UTC | #3
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@jp.panasonic.com>
>> ---
>>  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@ravnborg.org>
Michal Marek April 8, 2014, 3:19 p.m. UTC | #4
On 2014-04-01 19:44, Randy Dunlap wrote:
> On 03/31/2014 01:36 PM, Sam Ravnborg wrote:
>> 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 thought about this possibility before applying the patch. But if this
happens, then a build in the mistyped directory will immediately fail
due to lack of .config.

Michal

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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