diff mbox

[v2,3/5] kbuild: Use relative path for $(objtree)

Message ID 1399639944-20551-4-git-send-email-mmarek@suse.cz (mailing list archive)
State New, archived
Headers show

Commit Message

Michal Marek May 9, 2014, 12:52 p.m. UTC
The main Makefile sets its working directory to the object tree and
never changes it again. Therefore, we can use '.' instead of the
absolute path. The only case where we need the absolute path is when
creating the 'build' symlink in /lib/modules.

Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Michal Marek <mmarek@suse.cz>
---
v1->v2: Fix the 'build' symlink

 Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Richard Weinberger June 4, 2014, 9:03 a.m. UTC | #1
On Fri, May 9, 2014 at 2:52 PM, Michal Marek <mmarek@suse.cz> wrote:
> The main Makefile sets its working directory to the object tree and
> never changes it again. Therefore, we can use '.' instead of the
> absolute path. The only case where we need the absolute path is when
> creating the 'build' symlink in /lib/modules.
>
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> Signed-off-by: Michal Marek <mmarek@suse.cz>
> ---
> v1->v2: Fix the 'build' symlink
>
>  Makefile | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 60ccbfe..480503a 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -154,7 +154,7 @@ _all: modules
>  endif
>
>  srctree                := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
> -objtree                := $(CURDIR)
> +objtree                := .
>  src            := $(srctree)
>  obj            := $(objtree)
>
> @@ -1057,7 +1057,7 @@ _modinst_:
>         @ln -s $(srctree) $(MODLIB)/source
>         @if [ ! $(objtree) -ef  $(MODLIB)/build ]; then \
>                 rm -f $(MODLIB)/build ; \
> -               ln -s $(objtree) $(MODLIB)/build ; \
> +               ln -s $(CURDIR) $(MODLIB)/build ; \
>         fi
>         @cp -f $(objtree)/modules.order $(MODLIB)/
>         @cp -f $(objtree)/modules.builtin $(MODLIB)/

This commit breaks the of-of-tree build of UML.

  CC      arch/x86/um/user-offsets.s
/home/rw/linux-next/arch/x86/um/user-offsets.c:21:29: fatal error:
asm/syscalls_64.h: No such file or directory
compilation terminated.
make[2]: *** [arch/x86/um/user-offsets.s] Error 1
make[1]: *** [arch/x86/um/user-offsets.s] Error 2
make: *** [sub-make] Error 2

To reproduce run:
make defconfig ARCH=um O=/mnt/o && make linux ARCH=um O=/mnt/

If there is anything in UML which needs fixing, please tell. :-)
Michal Marek June 4, 2014, 9:43 a.m. UTC | #2
On 2014-06-04 11:03, Richard Weinberger wrote:
> On Fri, May 9, 2014 at 2:52 PM, Michal Marek <mmarek@suse.cz> wrote:
>> The main Makefile sets its working directory to the object tree and
>> never changes it again. Therefore, we can use '.' instead of the
>> absolute path. The only case where we need the absolute path is when
>> creating the 'build' symlink in /lib/modules.
>>
>> Acked-by: Sam Ravnborg <sam@ravnborg.org>
>> Signed-off-by: Michal Marek <mmarek@suse.cz>
>> ---
>> v1->v2: Fix the 'build' symlink
>>
>>  Makefile | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 60ccbfe..480503a 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -154,7 +154,7 @@ _all: modules
>>  endif
>>
>>  srctree                := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
>> -objtree                := $(CURDIR)
>> +objtree                := .
>>  src            := $(srctree)
>>  obj            := $(objtree)
>>
>> @@ -1057,7 +1057,7 @@ _modinst_:
>>         @ln -s $(srctree) $(MODLIB)/source
>>         @if [ ! $(objtree) -ef  $(MODLIB)/build ]; then \
>>                 rm -f $(MODLIB)/build ; \
>> -               ln -s $(objtree) $(MODLIB)/build ; \
>> +               ln -s $(CURDIR) $(MODLIB)/build ; \
>>         fi
>>         @cp -f $(objtree)/modules.order $(MODLIB)/
>>         @cp -f $(objtree)/modules.builtin $(MODLIB)/
> 
> This commit breaks the of-of-tree build of UML.
> 
>   CC      arch/x86/um/user-offsets.s
> /home/rw/linux-next/arch/x86/um/user-offsets.c:21:29: fatal error:
> asm/syscalls_64.h: No such file or directory
> compilation terminated.
> make[2]: *** [arch/x86/um/user-offsets.s] Error 1
> make[1]: *** [arch/x86/um/user-offsets.s] Error 2
> make: *** [sub-make] Error 2
> 
> To reproduce run:
> make defconfig ARCH=um O=/mnt/o && make linux ARCH=um O=/mnt/
> 
> If there is anything in UML which needs fixing, please tell. :-)

I'll have a look, thanks for the report.

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
Michal Marek June 4, 2014, 1:12 p.m. UTC | #3
On 2014-06-04 11:43, Michal Marek wrote:
> On 2014-06-04 11:03, Richard Weinberger wrote:
>> On Fri, May 9, 2014 at 2:52 PM, Michal Marek <mmarek@suse.cz> wrote:
>>> The main Makefile sets its working directory to the object tree and
>>> never changes it again. Therefore, we can use '.' instead of the
>>> absolute path. The only case where we need the absolute path is when
>>> creating the 'build' symlink in /lib/modules.
>>>
>>> Acked-by: Sam Ravnborg <sam@ravnborg.org>
>>> Signed-off-by: Michal Marek <mmarek@suse.cz>
>>> ---
>>> v1->v2: Fix the 'build' symlink
>>>
>>>  Makefile | 4 ++--
>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/Makefile b/Makefile
>>> index 60ccbfe..480503a 100644
>>> --- a/Makefile
>>> +++ b/Makefile
>>> @@ -154,7 +154,7 @@ _all: modules
>>>  endif
>>>
>>>  srctree                := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
>>> -objtree                := $(CURDIR)
>>> +objtree                := .
>>>  src            := $(srctree)
>>>  obj            := $(objtree)
>>>
>>> @@ -1057,7 +1057,7 @@ _modinst_:
>>>         @ln -s $(srctree) $(MODLIB)/source
>>>         @if [ ! $(objtree) -ef  $(MODLIB)/build ]; then \
>>>                 rm -f $(MODLIB)/build ; \
>>> -               ln -s $(objtree) $(MODLIB)/build ; \
>>> +               ln -s $(CURDIR) $(MODLIB)/build ; \
>>>         fi
>>>         @cp -f $(objtree)/modules.order $(MODLIB)/
>>>         @cp -f $(objtree)/modules.builtin $(MODLIB)/
>>
>> This commit breaks the of-of-tree build of UML.
>>
>>   CC      arch/x86/um/user-offsets.s
>> /home/rw/linux-next/arch/x86/um/user-offsets.c:21:29: fatal error:
>> asm/syscalls_64.h: No such file or directory
>> compilation terminated.
>> make[2]: *** [arch/x86/um/user-offsets.s] Error 1
>> make[1]: *** [arch/x86/um/user-offsets.s] Error 2
>> make: *** [sub-make] Error 2
>>
>> To reproduce run:
>> make defconfig ARCH=um O=/mnt/o && make linux ARCH=um O=/mnt/
>>
>> If there is anything in UML which needs fixing, please tell. :-)
> 
> I'll have a look, thanks for the report.

Findings so far: For some reason, syscalls_32.h is generated in the
source tree (which is wrong) and syscalls_64.h is not generated at all.
Looking further.

Also, it looks like make O=/dir bzImage on x86_64 non-um has been broken
even before this commit. 'make all' works fine. Not sure if it is related.

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 60ccbfe..480503a 100644
--- a/Makefile
+++ b/Makefile
@@ -154,7 +154,7 @@  _all: modules
 endif
 
 srctree		:= $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
-objtree		:= $(CURDIR)
+objtree		:= .
 src		:= $(srctree)
 obj		:= $(objtree)
 
@@ -1057,7 +1057,7 @@  _modinst_:
 	@ln -s $(srctree) $(MODLIB)/source
 	@if [ ! $(objtree) -ef  $(MODLIB)/build ]; then \
 		rm -f $(MODLIB)/build ; \
-		ln -s $(objtree) $(MODLIB)/build ; \
+		ln -s $(CURDIR) $(MODLIB)/build ; \
 	fi
 	@cp -f $(objtree)/modules.order $(MODLIB)/
 	@cp -f $(objtree)/modules.builtin $(MODLIB)/