[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Proper use of unnest-vars
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] Proper use of unnest-vars |
Date: |
Fri, 15 Feb 2019 10:26:41 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) |
Paolo Bonzini <address@hidden> writes:
> On 15/02/19 08:53, Markus Armbruster wrote:
>> This time, $(obj-y) is very much not blank, and...
>>
>> @qapi/ final qapi-introspect.o qapi-types-target.o qapi-types.o
>> qapi-visit-target.o qapi-visit.o qapi-events-target.o qapi-events.o
>> qapi-commands-target.o qapi-commands.o
>> [Trailing make output elided]
>>
>> ... qapi/Makefile.obj-y *does* clobber it. Oww.
>>
>> How come this works anyway?
>
> It works because at this point obj-y is not used anymore, it is assigned
> to all-obj-y a couple lines before:
>
> all-obj-y := $(obj-y)
Confirms my findings.
> As an aside, target-obj-y seems unnecessary to me.
I have no idea :)
$ git-grep target-obj-y
Makefile.objs:target-obj-y += trace/
Makefile.target:target-obj-y :=
Makefile.target:dummy := $(call unnest-vars,,target-obj-y)
Makefile.target:target-obj-y-save := $(target-obj-y)
Makefile.target:target-obj-y := $(target-obj-y-save)
Makefile.target:all-obj-y += $(target-obj-y)
trace/Makefile.objs:target-obj-y += generated-helpers.o
trace/Makefile.objs:target-obj-y += control-target.o
>> Perhaps unnest-vars could be more hygienic.
>
> Macro hygiene and Make in the same sentence? (well, not sentence but
> still...).
You're right. My "perhaps could" should be read like "Perhaps we could
make pigs fly, if we apply enough force, say with a trebuchet".
>> But that's not my immediate
>> concern. All I want to know right now is whether I should refrain from
>> = and := in Makefile.objs. Paolo, Fam?
>
> No, there is no need for that.
Thanks!
> Really the answer is that we are kind of pushing Makefiles to the limit
> here. We do get good expressiveness, but at the cost of hiding things
> behind black magic. In the end I think it's a net benefit, but the cost
> does exist.
Concur.
It's actually not bad most of the time. Once in a great while, I need
to do something more fancy, and then I'm prone to waste a few hours on
(re-)learning how to work with the magic.
- [Qemu-devel] [PATCH v5 05/18] qapi: Generate QAPIEvent stuff into separate files, (continued)
- [Qemu-devel] [PATCH v5 05/18] qapi: Generate QAPIEvent stuff into separate files, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 12/18] qapi: make query-gic-capabilities depend on TARGET_ARM, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 17/18] qmp: Deprecate query-events in favor of query-qmp-schema, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 14/18] qapi: make query-cpu-definitions depend on specific targets, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 18/18] qapi: move RTC_CHANGE to the target schema, Markus Armbruster, 2019/02/14
- [Qemu-devel] [PATCH v5 02/18] qapi: Fix up documentation for recent commit a95291007b2, Markus Armbruster, 2019/02/14
- Re: [Qemu-devel] [PATCH v5 00/18] qapi: add #if pre-processor conditions to generated code (part 3), Markus Armbruster, 2019/02/14