help-make
[Top][All Lists]
Advanced

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

Re: Shell for evaluating .SHELLFLAGS


From: Paul Smith
Subject: Re: Shell for evaluating .SHELLFLAGS
Date: Tue, 26 May 2015 08:14:22 -0400

On Mon, 2015-05-25 at 21:05 -0700, Afif Elghraoui wrote:
> Hello,
> I am trying to use sqlite3 as my Makefile shell. In order to have the
> query outputs go to a file, I need to pass a file in to sqlite using its
> -i flag. I rely on the process substitution feature in bash for the
> .SHELLFLAGS to provide the file:
> 
> SHELL=/usr/bin/env sqlite3
> .SHELLFLAGS=-init <(echo ".output $@") $(DB)
> 
> I get this error:
> /bin/sh: 1: Syntax error: "(" unexpected
> Makefile:13: recipe for target 'fq' failed
> 
> It looks like .SHELLFLAGS is evaluated with /bin/sh regardless of what
> SHELL is set to. Is there any way I could evaluate them with bash?

You're missing the main point: the values of SHELL and SHELLFLAGS aren't
being evaluated by /bin/sh, or bash... they're not being evaluated by
any shell at all!

The entire point of setting SHELL is you're choosing a shell that make
will invoke.  Make does not use a shell to start the shell that you
requested: it invokes the shell you requested directly (using the exec()
system calls).

The simplest way to do what you want is create a script (outside of
make) that will operate like this, then set SHELL in your makefile to
that script.  You can use #!/bin/bash at the top of that script to
request it be run in bash, if you like.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]