[project @ 1997-06-05 23:13:34 by sof]
[ghc-hetmet.git] / mk / target.mk
index 1880852..80d74ab 100644 (file)
@@ -66,17 +66,12 @@ ifneq "$(DOC_SRCS)" ""
        $(MKDEPENDLIT) -o .depend $(MKDEPENDLIT_OPTS) $(filter %.lit,$(DOC_SRCS))
 endif
 ifneq "$(MKDEPENDC_SRCS)" ""
-       $(MKDEPENDC) -f .depend $(MKDEPENDC_OPTS) \
-                -- $(CC_OPTS) -- $(MKDEPENDC_SRCS)
+       $(MKDEPENDC) -f .depend $(MKDEPENDC_OPTS) -- $(CC_OPTS) -- $(MKDEPENDC_SRCS)
 endif
 ifneq "$(MKDEPENDHS_SRCS)" ""
 ifeq ($(notdir $(MKDEPENDHS)),ghc)
 #      New way of doing dependencies: the ghc driver knows how to invoke script
-       $(MKDEPENDHS) -M -optdep-f -optdep.depend \
-               $(foreach way,$(WAYS),-optdep-s -optdep$(way)) \
-               $(MKDEPENDHS_OPTS) \
-               $(HC_OPTS) \
-               $(MKDEPENDHS_SRCS)
+       $(MKDEPENDHS) -M -optdep-f -optdep.depend $(foreach way,$(WAYS),-optdep-s -optdep$(way)) $(MKDEPENDHS_OPTS) $(HC_OPTS) $(MKDEPENDHS_SRCS)
 else
 #      Old way: call mkdependHS-1.2
        $(MKDEPENDHS) -f .depend $(MKDEPENDHS_OPTS) \
@@ -254,8 +249,8 @@ boot :: depend
 #      directories where files are installed, and their parent
 #      directories. There is a script called `mkinstalldirs' which is
 #      convenient for this; find it in the Texinfo package.
-#      (FPTOOLS: we don't use the suggested script, but rather the
-#       mkdirhier script in glafp_utils -- SOF)
+#      (FPTOOLS: we use a close relative of the suggested script, situated
+#       in glafp-utils/mkdirhier -- SOF)
 
 
 
@@ -381,17 +376,28 @@ all :: $(SCRIPT_PROG)
 $(SCRIPT_PROG) :: $(SCRIPT_OBJS)
        $(RM) $@
        @echo Creating $@...
+ifeq "$(INTERP)" "perl"
+ifneq "$(BIN_DIST)" "1"
+       @echo "#!/bin/sh -- # to stop perl from looping " > $@
+       @echo "eval 'exec perl -S $$$""0 $$""{1+\"$$$""@\"}'"  >> $@
+       @echo "      if $$""running_under_some_shell;"         >> $@
+else
+       @touch $@
+endif
+else
 ifneq "$(INTERP)" ""
        @echo "#!"$(INTERP) > $@
 else
        @touch $@
 endif
+endif
 ifneq "$(SCRIPT_PREFIX_FILES)" ""
        @cat $(SCRIPT_PREFIX_FILES) >> $@
 endif
        @eval $(SCRIPT_SUBST) 
        @cat $(SCRIPT_OBJS) >> $@
        @chmod a+x $@
+       @echo Done.
 endif
 
 
@@ -405,6 +411,7 @@ endif
 # get one install rule
 #
 #      INSTALL_PROGS    install these executable programs in $(bindir)
+#      INSTALL_SCRIPTS  install these executable scripts in $(bindir)
 #      INSTALL_LIBS     install these platform-dependent libraries in $(libdir)
 #      INSTALL_LIBEXECS install these platform-dependent execs in $(libdir)
 #      INSTALL_DATAS    install these platform-independent files in $(datadir)
@@ -416,39 +423,156 @@ endif
 # friends can be overridden from their original settings in mk/config.mk.in
 # || mk/build.mk
 #
-.PHONY: install installdirs install-strip install-dirs uninstall install-docs
+.PHONY: install installdirs install-strip install-dirs uninstall install-docs show-install
+
+show-install :
+       @echo "bindir = $(bindir)"
+       @echo "libdir = $(libdir)"
+       @echo "libexecdir = $(libexecdir)  # by default, same as libdir"
+       @echo "datadir = $(datadir)  # unused for ghc project"
 
 #
 # Sometimes useful to separate out the creation of install directories 
 # from the installation itself.
 #
-installdirs ::
-       $(INSTALL_DIR) $(bindir)
-       $(INSTALL_DIR) $(libdir)
-       $(INSTALL_DIR) $(libexecdir)
-       $(INSTALL_DIR) $(datadir)
+install-dirs ::
+       @$(INSTALL_DIR) $(bindir)
+       @$(INSTALL_DIR) $(libdir)
+       @$(INSTALL_DIR) $(libexecdir)
+       @$(INSTALL_DIR) $(datadir)
 
 # Better do this first...
-install:: installdirs
+# but we won't for the moment, do it on-demand from
+# within the various install targets instead.
+#install:: install-dirs
 
 ifneq "$(INSTALL_PROGS)" ""
 install:: $(INSTALL_PROGS)
-       $(INSTALL_PROGRAM) $(INSTALL_OPTS) $(INSTALL_PROGS) $(bindir)
+       @$(INSTALL_DIR) $(bindir)
+       for i in $(INSTALL_PROGS); do \
+               $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir); \
+       done
+endif
+
+#
+# Just like INSTALL_PROGS, but prefix with install sites bin/lib/data and
+# install without stripping.
+#
+ifneq "$(INSTALL_SCRIPTS)" ""
+install:: $(INSTALL_SCRIPTS)
+       @$(INSTALL_DIR) $(bindir)
+ifeq "$(INTERP)" "perl"
+ifneq "$(BIN_DIST)" "1"
+       @for i in $(INSTALL_SCRIPTS); do \
+          $(RM) $$i.tmp; \
+          @echo "#!/bin/sh -- # to stop perl from looping "        > $$i.tmp ; \
+          echo "eval 'exec $(PERL) -S $$$""0 $$""{1+\"$$$""@\"}'" >> $$i.tmp ; \
+          echo "      if $$""running_under_some_shell;"           >> $$i.tmp ; \
+          echo $$"bindir='$(bindir)';"                            >> $$i.tmp ; \
+          echo $$"libdir='$(libdir)';"                            >> $$i.tmp ; \
+          echo $$"libexecdir='$(libexecdir)';"                    >> $$i.tmp ; \
+          echo $$"datadir='$(datadir)';"                          >> $$i.tmp ; \
+          cat  $$i                                                >> $$i.tmp ; \
+          echo $(INSTALL_PROGRAM) $(filter-out -s,$(INSTALL_OPTS)) $$i.tmp $(bindir)/$$i ;    \
+          $(INSTALL_PROGRAM) $(filter-out -s,$(INSTALL_BIN_OPTS)) $$i.tmp $(bindir)/$$i ; \
+          $(RM) $$i.tmp; \
+       done
+else
+       for i in $(INSTALL_SCRIPTS); do \
+               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(bindir); \
+       done
+endif
+else
+       for i in $(INSTALL_SCRIPTS); do \
+               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(bindir); \
+       done
+endif
+endif
+
+ifneq "$(INSTALL_LIB_SCRIPTS)" ""
+install:: $(INSTALL_LIB_SCRIPTS)
+       @$(INSTALL_DIR) $(libdir)
+ifeq "$(INTERP)" "perl"
+ifneq "$(BIN_DIST)" "1"
+       @for i in $(INSTALL_LIB_SCRIPTS); do \
+          $(RM) $$i.tmp; \
+          @echo "#!/bin/sh -- # to stop perl from looping "        > $$i.tmp ; \
+          echo "eval 'exec $(PERL) -S $$$""0 $$""{1+\"$$$""@\"}'" >> $$i.tmp ; \
+          echo "      if $$""running_under_some_shell;"           >> $$i.tmp ; \
+          echo $$"bindir='$(bindir)';"                            >> $$i.tmp ; \
+          echo $$"libdir='$(libdir)';"                            >> $$i.tmp ; \
+          echo $$"libexecdir='$(libexecdir)';"                    >> $$i.tmp ; \
+          echo $$"datadir='$(datadir)';"                          >> $$i.tmp ; \
+          cat  $$i                                                >> $$i.tmp ; \
+          echo $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libdir) ;    \
+          $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i.tmp $(libdir)/$$i ; \
+          $(RM) $$i.tmp; \
+       done
+else
+       for i in $(INSTALL_LIB_SCRIPTS); do \
+               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libdir); \
+       done
+endif
+else
+       for i in $(INSTALL_LIB_SCRIPTS); do \
+               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libdir); \
+       done
+endif
+endif
+
+ifneq "$(INSTALL_LIBEXEC_SCRIPTS)" ""
+install:: $(INSTALL_LIBEXEC_SCRIPTS)
+       @$(INSTALL_DIR) $(libexecdir)
+ifeq "$(INTERP)" "perl"
+ifneq "$(BIN_DIST)" "1"
+       @for i in $(INSTALL_LIBEXEC_SCRIPTS); do \
+          $(RM) $$i.tmp; \
+          @echo "#!/bin/sh -- # to stop perl from looping "        > $$i.tmp ; \
+          echo "eval 'exec $(PERL) -S $$$""0 $$""{1+\"$$$""@\"}'" >> $$i.tmp ; \
+          echo "      if $$""running_under_some_shell;"           >> $$i.tmp ; \
+          echo $$"bindir='$(bindir)';"                            >> $$i.tmp ; \
+          echo $$"libdir='$(libdir)';"                            >> $$i.tmp ; \
+          echo $$"libexecdir='$(libexecdir)';"                    >> $$i.tmp ; \
+          echo $$"datadir='$(datadir)';"                          >> $$i.tmp ; \
+          cat  $$i                                                >> $$i.tmp ; \
+          echo $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libexecdir) ;    \
+          $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i.tmp $(libexecdir)/$$i ; \
+          $(RM) $$i.tmp; \
+       done
+else
+       for i in $(INSTALL_LIBEXEC_SCRIPTS); do \
+               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libexecdir); \
+       done
+endif
+else
+       for i in $(INSTALL_LIBEXEC_SCRIPTS); do \
+               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libexecdir); \
+       done
+endif
 endif
 
 ifneq "$(INSTALL_LIBS)" ""
 install:: $(INSTALL_LIBS)
-       $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_LIBS) $(libdir)
+       @$(INSTALL_DIR) $(libdir)
+       for i in $(INSTALL_LIBS); do \
+               $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \
+       done
 endif
 
 ifneq "$(INSTALL_LIBEXECS)" ""
 install:: $(INSTALL_LIBEXECS)
-       $(INSTALL_PROGRAM) $(INSTALL_OPTS) $(INSTALL_LIBEXECS) $(libexecdir)
+       @$(INSTALL_DIR) $(libexecdir)
+       -for i in $(INSTALL_LIBEXECS); do \
+               $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(libexecdir); \
+       done
 endif
 
 ifneq "$(INSTALL_DATAS)" ""
 install:: $(INSTALL_DATAS)
-       $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_DATAS) $(datadir)
+       @$(INSTALL_DIR) $(datadir)
+       for i in $(INSTALL_DATAS); do \
+               $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(datadir); \
+       done
 endif
 
 #
@@ -514,7 +638,7 @@ endif
 #   
 # does not expand the {}, it has to be a separate argument (i.e. `a {}').
 # GNU find is (IMHO) more sensible here, expanding any {} it comes across
-# inside an -exec, whether it is a separate argument or part of a word:
+# inside an -exec, whether it is a separate arg or part of a word:
 #
 #  $ touch yes
 #  $ find --version
@@ -522,8 +646,8 @@ endif
 #  $ find yes -exec echo oh,{}! \;
 #    oh,yes!
 #
-# I'm not claiming that the above is not possible to achieve with
-# other finds, just that GNU find does the Patently Right Thing here :)
+# Of course, the above is not impossible to achieve with other finds,
+# just that GNU find does the Patently Right Thing here :)
 #
 # ====> if you're using these dist rules, get hold of GNU findutils.
 #
@@ -531,27 +655,35 @@ endif
 #
 .PHONY: dist dist-pre dist-post
 
+#
+# The dist rules leaves out CVS, SRC (from mkshadowdir) and tests
+# directories when creating shadow source distrib tree
+#
 dist-pre::
        -rm -rf $(SRC_DIST_DIR)
        -rm -f $(SRC_DIST_NAME).tar.gz
-       (cd $(FPTOOLS_TOP_ABS); find $(SRC_DIST_DIRS) -type d \( -name CVS -prune -o -name SRC -prune -o -exec $(MKDIRHIER) $(SRC_DIST_DIR)/{} \; \) ; )
-       (cd $(FPTOOLS_TOP_ABS); find $(SRC_DIST_DIRS) -name CVS -prune -o -name SRC -prune -o -name "*~" -prune -o -name ".cvsignore" -prune -o -type l -exec $(LN_S) $(FPTOOLS_TOP_ABS)/{} $(SRC_DIST_DIR)/{} \; )
+       (cd $(FPTOOLS_TOP_ABS); find $(SRC_DIST_DIRS) -type d \( -name CVS -prune -o -name SRC -prune -o -name tests -prune -o -exec $(MKDIRHIER) $(SRC_DIST_DIR)/{} \; \) ; )
+       (cd $(FPTOOLS_TOP_ABS); find $(SRC_DIST_DIRS) -name CVS -prune -o -name SRC -prune -o -name tests -prune -o -name "*~" -prune -o -name ".cvsignore" -prune -o -type l -exec $(LN_S) $(FPTOOLS_TOP_ABS)/{} $(SRC_DIST_DIR)/{} \; )
 
 #
 # After having created a shadow distribution tree and copied/linked
 # all the necessary files to it, `dist-post' makes sure the permissions
-# are set right and packages up the tree.
+# are set right and then package up the tree. Empty directories are also removed.
 #
 # For now, we make the packaging a separate rule, so as to allow
 # the inspection of the dist tree before eventually packaging it up.
 #
 dist-post::
+       @echo Deleting the following empty directories..
+       ( cd $(SRC_DIST_DIR) ; cd .. ; find $(SRC_DIST_NAME) -type d -exec sh -c 'test x`ls $$0 | wc -l | sed -e "s/ //g"` = x0' {} \; -print -exec rm -rf {} \; -prune )
        ( cd $(SRC_DIST_DIR) ; cd .. ; chmod -R a+rw $(SRC_DIST_NAME) ) 
 
 dist-package::
        cd $(SRC_DIST_DIR); cd ..; $(TAR) chzf $(SRC_DIST_NAME).tar.gz $(SRC_DIST_NAME)
 
 #
+
+
 # The default dist rule:
 #
 # copy/link the contents of $(SRC_DIST_FILES) into the
@@ -583,14 +715,26 @@ binary-dist-pre::
        -rm -f $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME).tar.gz
        @for i in $(BIN_DIST_DIRS); do                   \
          if (test -d "$$i"); then                       \
-          echo $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM) \
-          $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM) \
-          echo $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion) \
-          $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion) \
-          echo $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/share/$$i-$(ProjectVersion) \
-          $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/share/$$i-$(ProjectVersion) \
-          echo $(MAKE) -C $$i $(MFLAGS) install BIN_DIST=1 BIN_DIST_NAME=$(BIN_DIST_NAME) prefix=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) exec_prefix=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) bindir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM) libdir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion) libexecdir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion) datadir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/share/$$i-$(ProjectVersion); \
-          $(MAKE) -C $$i $(MFLAGS) install BIN_DIST=1 BIN_DIST_NAME=$(BIN_DIST_NAME) prefix=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) exec_prefix=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) bindir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM) libdir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion) libexecdir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion) datadir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/share/$$i-$(ProjectVersion); \
+          echo $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM)/$$i-$(ProjectVersion); \
+          $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM)/$$i-$(ProjectVersion); \
+          echo $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion); \
+          $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion); \
+          echo $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/share/$$i-$(ProjectVersion); \
+          $(MKDIRHIER) $(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/share/$$i-$(ProjectVersion); \
+          echo $(MAKE) -C $$i $(MFLAGS) install BIN_DIST=1 BIN_DIST_NAME=$(BIN_DIST_NAME) \
+                       prefix=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) \
+                       exec_prefix=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) \
+                       bindir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM)/$$i-$(ProjectVersion) \
+                       libdir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion) \
+                       libexecdir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion) \
+                       datadir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/share/$$i-$(ProjectVersion) ; \
+          $(MAKE) -C $$i $(MFLAGS) install BIN_DIST=1 BIN_DIST_NAME=$(BIN_DIST_NAME) \
+                       prefix=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) \
+                       exec_prefix=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME) \
+                       bindir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/bin/$(TARGETPLATFORM)/$$i-$(ProjectVersion) \
+                       libdir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion) \
+                       libexecdir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/lib/$(TARGETPLATFORM)/$$i-$(ProjectVersion) \
+                       datadir=$(BIN_DIST_TMPDIR)/$(BIN_DIST_NAME)/share/$$i-$(ProjectVersion) ; \
          fi; \
        done
 
@@ -600,6 +744,17 @@ binary-dist-pre::
 binary-pack::
        ( cd $(BIN_DIST_TMPDIR); $(TAR) chzf $(BIN_DIST_NAME).tar.gz $(BIN_DIST_NAME); rm -rf $(BIN_DIST_NAME) )
 
+ifneq "$(way)" ""
+package-way-dist::
+       ( cd $(BIN_DIST_TMPDIR); find $(BIN_DIST_NAME)/ \( -name "*$(_way).a" -o -name "*.$(way_)hi" \) -print | xargs tar cvf $(BIN_DIST_TMPDIR)/ghc-$(ProjectVersion)-$(way)-$(TARGETPLATFORM).tar )
+       gzip $(BIN_DIST_TMPDIR)/ghc-$(ProjectVersion)-$(way)-$(TARGETPLATFORM).tar
+endif
+
+ifneq "$(way)" ""
+remove-way-dist::
+       ( cd $(BIN_DIST_TMPDIR); find $(BIN_DIST_NAME)/ \( -name "*$(_way).a" -o -name "*.$(way_)hi" \) -print -exec rm -f {} \; )
+endif
+
 ###########################################
 #
 #      Targets: check tags show info
@@ -648,7 +803,7 @@ show:
 
 .PHONY: dvi ps html info txt
 
-info:: $(filter %.texinfo, $(DOC_SRCS)) $(filter %.texi,$(DOC_SRCS))
+info:: $(DOC_INFO)
 dvi:: $(DOC_DVI)
 ps::  $(DOC_PS)
 html:: $(DOC_HTML)
@@ -792,9 +947,11 @@ WAY_TARGETS     = $(foreach way,$(WAYS),$(foreach suffix, $(FPTOOLS_SUFFIXES), %
 LIB_WAY_TARGETS = $(foreach way,$(WAYS),%_$(way).a %_$(way))
 
 # $@ will be something like Foo.p_o
-# $(suffix $@) will be .p_o
-# The sed script extracts the "p" part.
-
+# $(suffix $@)     returns .p_o
+# $(subst .,.p_o)  returns p_o
+# $(subst _,.,p_o) returns p.o   (clever)
+# $(basename p.o)  returns p
+# 
 $(WAY_TARGETS) :
        $(MAKE) way=$(basename $(subst _,.,$(subst .,,$(suffix $@)))) $@
 
@@ -890,7 +1047,7 @@ all docs runtests TAGS clean veryclean maintainer-clean install ::
          $(MAKE) way=$$i --no-print-directory $(MFLAGS) $@ ; \
        done
        @echo "------------------------------------------------------------------------"
-       @echo "===fptools== Finished recusrively making \`$@' for ways: $(WAYS) ..."
+       @echo "===fptools== Finished recursively making \`$@' for ways: $(WAYS) ..."
        @echo "PWD = $(shell pwd)"
        @echo "------------------------------------------------------------------------"