Re: dpkg-buildflags
Pierre Habouzit <madcoder@madism.org> writes:
> On Wed, Jun 30, 2010 at 03:05:10PM +0200, Goswin von Brederlow wrote:
>> mrvn@book:~% cat Makefile
>> $(eval $(shell echo FOO=1; echo BAR=2))
>> $(info FOO=$(FOO))
>> $(info BAR=$(BAR))
>> all:
>>
>> mrvn@book:~% make
>> FOO=1 BAR=2
>> BAR=
>> make: Nothing to be done for `all'.
>>
>>
>> How do you get make to honor line breaks in $(eval ...)?
>
> gah, make is annoying. Well there is always the possibility:
>
> -include dpkg-buildflags.mk
> dpkg-buildflags.mk:
> $(shell dpkg-buildflags --export=make) > $@
>
> Which is probably a hell of a lot simpler.
> Stupid make....
Indeed.
> (for those not very comfortable with make, the -include
> dpkg-buildflags.mk will check if the file exist, if not won't complain
> but will find if there is a target named 'dpkg-buildflags.mk', if yes
> will do its rules and retry to include the file.
>
> Which in the end does what is meant.
Except it won't make the file ever again even if the dpkg-buildflags
output changes. So if you want to preserve timestamps unless the output
changes you need something like this. If the timestamp doesn't matter
you just need the .PHONY.
-include dpkg-buildflags.mk
dpkg-buildflags.mk:
$(shell dpkg-buildflags --export=make) > $@.new
@if ! cmp 2>/dev/null --quiet $@.new $@; then \
echo Updating $@; \
mv $@.new $@; \
else \
rm $@.new; \
fi
.PHONY: dpkg-buildflags.mk
MfG
Goswin
Reply to: