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.
_______________________________________________
Help-make mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/help-make