On Sun, 2011-12-18 at 10:43 -0800, Tom Rosmond wrote:
> I am trying to run this little makefile on my Scientific Linux
> workstation:
> all:
>         ifeq ($(HOST),cedar)
>         @echo $(HOST)
>         endif
> 
> and I get this error message when running 'make':
> 
> [2006]cedar /home/rosmond: make
> ifeq (cedar,cedar)
> /bin/sh: -c: line 0: syntax error near unexpected token `cedar,cedar'
> /bin/sh: -c: line 0: `ifeq (cedar,cedar)'
> make: *** [all] Error 2
> 
> It seems to be trying to execute the file as a shell script.  I have the
> necessary 'tab' prefixes in the lines of the 'all' rule.

That's exactly what's happening.  All lines prefixed by a TAB characters
are passed to the shell.  Make doesn't interpret those lines at all
except for expanding variable references; everything else is assumed to
be shell syntax and is given to the shell to run.

This is one of the most fundamental concepts in make: makefiles are a
combination of makefile syntax and shell syntax, and understanding which
syntax goes where and when it is evaluated by make, or by the shell, is
critical for being able to create correct makefiles.

Cheers!

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <[email protected]>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.mad-scientist.net
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist


_______________________________________________
Help-make mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-make

Reply via email to