On 2007-2-21 6:18 UTC, David Boyce wrote:
> How does one determine the exit status of the shell forked by $(shell
> ...)? I see nothing about it in the 3.81 online manual. I need to run
> a command for which the null string is a perfectly legal
> output value, so I can't get away with anything like this:
> 
> foo    :=    $(shell mycommand)
> 
> ifeq($foo),)
> <code to handle error conditions>
> endif
> 
> And I don't just need to abort on error either. If the command fails I
> have another (slower and less reliable) way to get the data whereas if
> it succeeds with null output I want to continue on happily. Which
> means I need exit status. Is this an oversight in the spec?

Consider this makefile:

x := $(shell false)

.PHONY: all
all:
        @echo $x

The command fails, and 'make' stops--on msw, e.g., I get:

  process_begin: CreateProcess(NULL, false, ...) failed.

But change the above variable definition to:

  x := $(shell false || echo "alternative")

and it does what I think you want:

  C:/tmp[0]$make
  alternative


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

Reply via email to