diff mbox

build: build block-obj-y explicitly before recursing

Message ID 1393539728-27389-1-git-send-email-pbonzini@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini Feb. 27, 2014, 10:22 p.m. UTC
block-obj-y is not anymore part of common-obj-y, because "nesting"
variables is complicated and requires specifying the correct
ordering in the calls to unnest-vars.  However, because of this
we need to specify block-obj-y in the dependencies of the
target subdirectories.

Thanks to Stefan Weil and Jeff Cody for suggesting the cause of
the regression.

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jeff Cody Feb. 27, 2014, 10:50 p.m. UTC | #1
On Thu, Feb 27, 2014 at 11:22:08PM +0100, Paolo Bonzini wrote:
> block-obj-y is not anymore part of common-obj-y, because "nesting"
> variables is complicated and requires specifying the correct
> ordering in the calls to unnest-vars.  However, because of this
> we need to specify block-obj-y in the dependencies of the
> target subdirectories.
> 
> Thanks to Stefan Weil and Jeff Cody for suggesting the cause of
> the regression.
> 
> Reported-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index a443cd4..3938b6c 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -167,7 +167,7 @@ subdir-dtc:dtc/libfdt dtc/tests
>  dtc/%:
>  	mkdir -p $@
>  
> -$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y)
> +$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y) $(block-obj-y)
>  
>  ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
>  romsubdir-%:
> -- 
> 1.8.5.3
> 
>

Reviewed-by: Jeff Cody <jcody@redhat.com>
Stefan Weil Feb. 28, 2014, 5:27 a.m. UTC | #2
Am 27.02.2014 23:50, schrieb Jeff Cody:
> On Thu, Feb 27, 2014 at 11:22:08PM +0100, Paolo Bonzini wrote:
>> block-obj-y is not anymore part of common-obj-y, because "nesting"
>> variables is complicated and requires specifying the correct
>> ordering in the calls to unnest-vars.  However, because of this
>> we need to specify block-obj-y in the dependencies of the
>> target subdirectories.
>>
>> Thanks to Stefan Weil and Jeff Cody for suggesting the cause of
>> the regression.
>>
>> Reported-by: Peter Maydell <peter.maydell@linaro.org>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>>  Makefile | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/Makefile b/Makefile
>> index a443cd4..3938b6c 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -167,7 +167,7 @@ subdir-dtc:dtc/libfdt dtc/tests
>>  dtc/%:
>>  	mkdir -p $@
>>  
>> -$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y)
>> +$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y) $(block-obj-y)

Using SUBDIR_RULES here instead of SOFTMMU_SUBDIR_RULES (as in my patch)
includes more dependencies: $(block-obj-y) will also be built for the
user emulation code (i386-linux-user, ...) which does not need it. As
far as I see, SOFTMMU_SUBDIR_RULES is sufficient.

Stefan


>>  
>>  ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
>>  romsubdir-%:
>> -- 
>> 1.8.5.3
>>
>>
> 
> Reviewed-by: Jeff Cody <jcody@redhat.com>
> 
>
Stefan Weil Feb. 28, 2014, 5:49 a.m. UTC | #3
Am 28.02.2014 06:27, schrieb Stefan Weil:
> Am 27.02.2014 23:50, schrieb Jeff Cody:
>> On Thu, Feb 27, 2014 at 11:22:08PM +0100, Paolo Bonzini wrote:
>>> block-obj-y is not anymore part of common-obj-y, because "nesting"
>>> variables is complicated and requires specifying the correct
>>> ordering in the calls to unnest-vars.  However, because of this
>>> we need to specify block-obj-y in the dependencies of the
>>> target subdirectories.
>>>
>>> Thanks to Stefan Weil and Jeff Cody for suggesting the cause of
>>> the regression.
>>>
>>> Reported-by: Peter Maydell <peter.maydell@linaro.org>
>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>> ---
>>>  Makefile | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/Makefile b/Makefile
>>> index a443cd4..3938b6c 100644
>>> --- a/Makefile
>>> +++ b/Makefile
>>> @@ -167,7 +167,7 @@ subdir-dtc:dtc/libfdt dtc/tests
>>>  dtc/%:
>>>  	mkdir -p $@
>>>  
>>> -$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y)
>>> +$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y) $(block-obj-y)
> 
> Using SUBDIR_RULES here instead of SOFTMMU_SUBDIR_RULES (as in my patch)
> includes more dependencies: $(block-obj-y) will also be built for the
> user emulation code (i386-linux-user, ...) which does not need it. As
> far as I see, SOFTMMU_SUBDIR_RULES is sufficient.
> 
> Stefan

The additional dependencies break builds when system emulation and tools
are disabled (configure' '--enable-debug'
'--enable-trace-backend=stderr' '--disable-tools' --disable-docs
--disable-system):

make: Entering directory `/home/stefan/src/qemu'
  CC    async.o
  CC    qemu-timer.o
In file included from /home/stefan/src/qemu/include/ui/console.h:4:0,
                 from /home/stefan/src/qemu/qemu-timer.c:27:
/home/stefan/src/qemu/include/ui/qemu-pixman.h:14:20: fatal error:
pixman.h: No such file or directory
compilation terminated.
make: *** [qemu-timer.o] Error 1
make: Leaving directory `/home/stefan/src/qemu'
Paolo Bonzini Feb. 28, 2014, 10:45 a.m. UTC | #4
Il 28/02/2014 06:27, Stefan Weil ha scritto:
>>> >> -$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y)
>>> >> +$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y) $(block-obj-y)
> Using SUBDIR_RULES here instead of SOFTMMU_SUBDIR_RULES (as in my patch)
> includes more dependencies: $(block-obj-y) will also be built for the
> user emulation code (i386-linux-user, ...) which does not need it. As
> far as I see, SOFTMMU_SUBDIR_RULES is sufficient.

True, it's just ugly to have all the dependencies in different parts of 
the Makefile.

If you fix it, can you move this line close to the existing

$(SOFTMMU_SUBDIR_RULES): config-all-devices.mak

We have too many knobs. :(

Paolo
diff mbox

Patch

diff --git a/Makefile b/Makefile
index a443cd4..3938b6c 100644
--- a/Makefile
+++ b/Makefile
@@ -167,7 +167,7 @@  subdir-dtc:dtc/libfdt dtc/tests
 dtc/%:
 	mkdir -p $@
 
-$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y)
+$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y) $(block-obj-y)
 
 ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
 romsubdir-%: