[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: