Somewhat OT: Using Pipes Inside a GNU Make File

Tim Daneliuk tundra at tundraware.com
Thu Sep 6 16:16:51 UTC 2012


On 09/05/2012 09:15 PM, Warren Block wrote:
> On Wed, 5 Sep 2012, Tim Daneliuk wrote:
>
>> On 09/05/2012 07:24 PM, Bryan Drewery wrote:
>>> On 9/5/2012 7:02 PM, Tim Daneliuk wrote:
>>>> A bit off topic, but I'm kind of stuck.  I am using gmake and want to
>>>> do something like this:
>>>>
>>>>     FOO := $(shell a | b | c)
>>>>
>>>> But this appears not to work.  Only the 'a' command is executed.  The
>>>> remainder
>>>> of the pipeline is ignored.  Is there some clean way to implement this
>>>> kind of thing?
>>>>
>>>>
>>>
>>> I use this in a GNUMakefile and it works fine.
>>>
>>>      BRANCH := $(shell git branch --no-color | grep "^*" | sed -e 's/^\* //')
>>>
>>>
>>> You may need to post a more specific example.
>>>
>>> Bryan> _______________________________________________
>>
>> Here's the line that is failing:
>>
>> 2LATEX   = $(shell which rst2latex.py rst2latex | tr '\012' ' ' | awk '{print $1}')  --stylesheet=parskip
>
> Bryan's example is using := for assignment.


That wasn't it, as it turned out.  The problem was in the awk statement.

Instead of:

     awk '{print $1}'

I had to use:

     awk '{print $$1}'    


This is necessary because $1 is a *make* variable but $$1 is the awk variable I wanted ($1)....

D'uh ....





-----------------------------------------------------------------------
Tim Daneliuk


More information about the freebsd-questions mailing list