%% "Johan Eriksson" <[EMAIL PROTECTED]> writes:

  >> I would like make to stop immediatelly if an error occurs. How can I
  >> make this happen in a recursive make builds ??

Make stops whenever a command it invokes fails, whether that command is
a compiler or a sub-make or whatever.

  >> I have a number of directories and sub-directories that I would
  >> like make to traverse. If an error occurs while compiling a file in
  >> one of the directories, make shall stop and not conitinue with the
  >> files in the next directory.
  >> 
  >> To get make traverse I use a "for i in $DIRS" statement, where $DIRS
  >> contains the directories.

Don't do that.  If you have to do that, then you have to manage the exit
yourself, because make takes your entire script and hands it to shell,
then make sits around waiting for the shell to be done.  If you put a
loop into your command script, then the shell will execute it and
there's nothing make can do (or know) about whether it worked or not
until it's done.

If you have to do it in a list you should use something like:

    for i in $(DIRS); do $(MAKE) -C $$i || exit 1; done

But the better way is to not use a loop at all (this latter method also
allows you to make full use of parallel or distributed builds should you
want to):

    subdirs: $(DIRS)

    $(DIRS):
            $(MAKE) -C $@

    .PHONY: subdirs $(DIRS)

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


_______________________________________________
Help-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/help-make

Reply via email to