[project @ 2006-01-04 12:49:38 by simonmar]
[ghc-hetmet.git] / mk / target.mk
index 6749e29..a6793c9 100644 (file)
@@ -19,7 +19,7 @@
 #       install-docs*
 #      clean* distclean* mostlyclean* maintainer-clean*
 #      tags*
-#      dvi ps (no info) FPTOOLS adds: pdf rtf html
+#      dvi ps (no info) FPTOOLS adds: pdf rtf html chm HxS
 #      check
 #
 # 3. Some of the above targets have a version that
@@ -178,7 +178,7 @@ endif
 # `TAGS'
 #      Update a tags table for this program.
 # 
-# `dvi' `ps' `pdf' `html' `rtf' 
+# `dvi' `ps' `pdf' `html' `chm' `HxS' `rtf' 
 #      Generate DVI/PS/PDF files for LaTeX/DocBook docs. Not everything is
 #      supported everywhere, but the intention is to standardise on DocBook
 #      producing all formats.
@@ -357,7 +357,7 @@ SRC_HC_POST_OPTS += $(HC_SPLIT_POST);
 #
 
 extraclean ::
-       $(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o' -print | xargs $(RM) __rm_food
+       $(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o' -print -o -name ld.script -print | xargs $(RM) __rm_food
        -rmdir $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) > /dev/null 2>&1
 
 endif # $(SplitObjs)
@@ -709,7 +709,7 @@ SRC_INSTALL_OPTS += -g $(INSTALL_GROUP)
 endif
 
 
-ifneq "$(INSTALL_PROGS)" ""
+ifneq "$(strip $(INSTALL_PROGS))" ""
 
 #
 # Here's an interesting one - when using the win32 version
@@ -727,6 +727,9 @@ install:: $(INSTALL_PROGS)
        @for i in $(INSTALL_PROGS); do \
                    echo $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir); \
                    $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir) ;  \
+                    if test "$(darwin_TARGET_OS)" = "1"; then \
+                      sh $(FPTOOLS_TOP)/mk/fix_install_names.sh $(libdir) $(bindir)/$$i ; \
+                    fi ; \
        done
 endif
 
@@ -734,7 +737,7 @@ endif
 # Just like INSTALL_PROGS, but prefix with install sites bin/lib/data and
 # install without stripping.
 #
-ifneq "$(INSTALL_SCRIPTS)" ""
+ifneq "$(strip $(INSTALL_SCRIPTS))" ""
 install:: $(INSTALL_SCRIPTS)
        @$(INSTALL_DIR) $(bindir)
        for i in $(INSTALL_SCRIPTS); do \
@@ -742,7 +745,7 @@ install:: $(INSTALL_SCRIPTS)
        done
 endif
 
-ifneq "$(INSTALL_LIB_SCRIPTS)" ""
+ifneq "$(strip $(INSTALL_LIB_SCRIPTS))" ""
 install:: $(INSTALL_LIB_SCRIPTS)
        @$(INSTALL_DIR) $(libdir)
        for i in $(INSTALL_LIB_SCRIPTS); do \
@@ -750,7 +753,7 @@ install:: $(INSTALL_LIB_SCRIPTS)
        done
 endif
 
-ifneq "$(INSTALL_LIBEXEC_SCRIPTS)" ""
+ifneq "$(strip $(INSTALL_LIBEXEC_SCRIPTS))" ""
 install:: $(INSTALL_LIBEXEC_SCRIPTS)
        @$(INSTALL_DIR) $(libexecdir)
        for i in $(INSTALL_LIBEXEC_SCRIPTS); do \
@@ -758,7 +761,7 @@ install:: $(INSTALL_LIBEXEC_SCRIPTS)
        done
 endif
 
-ifneq "$(INSTALL_LIBS)" ""
+ifneq "$(strip $(INSTALL_LIBS))" ""
 install:: $(INSTALL_LIBS)
        @$(INSTALL_DIR) $(libdir)
        for i in $(INSTALL_LIBS); do \
@@ -779,7 +782,7 @@ install:: $(INSTALL_LIBS)
        done
 endif
 
-ifneq "$(INSTALL_LIBEXECS)" ""
+ifneq "$(strip $(INSTALL_LIBEXECS))" ""
 #
 # See above comment next to defn of INSTALL_PROGS for what
 # the purpose of this one-liner is.
@@ -790,10 +793,13 @@ install:: $(INSTALL_LIBEXECS)
        @$(INSTALL_DIR) $(libexecdir)
        -for i in $(INSTALL_LIBEXECS); do \
                $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(libexecdir); \
+                if test "$(darwin_TARGET_OS)" = "1"; then \
+                        sh $(FPTOOLS_TOP)/mk/fix_install_names.sh $(libdir) $(libexecdir)/`basename $$i` ; \
+                fi ; \
        done
 endif
 
-ifneq "$(INSTALL_DATAS)" ""
+ifneq "$(strip $(INSTALL_DATAS))" ""
 install:: $(INSTALL_DATAS)
        @$(INSTALL_DIR) $(datadir)
        for i in $(INSTALL_DATAS); do \
@@ -801,7 +807,7 @@ install:: $(INSTALL_DATAS)
        done
 endif
 
-ifneq "$(INSTALL_IFACES)" ""
+ifneq "$(strip $(INSTALL_IFACES))" ""
 install:: $(INSTALL_IFACES)
        @$(INSTALL_DIR) $(ifacedir)
        for i in $(INSTALL_IFACES); do \
@@ -809,7 +815,7 @@ install:: $(INSTALL_IFACES)
        done
 endif
 
-ifneq "$(INSTALL_IFACES_WITH_DIRS)" ""
+ifneq "$(strip $(INSTALL_IFACES_WITH_DIRS))" ""
 install:: $(INSTALL_IFACES_WITH_DIRS)
        @$(INSTALL_DIR) $(ifacedir)
        for i in $(INSTALL_IFACES_WITH_DIRS); do \
@@ -817,7 +823,7 @@ install:: $(INSTALL_IFACES_WITH_DIRS)
        done
 endif
 
-ifneq "$(INSTALL_INCLUDES)" ""
+ifneq "$(strip $(INSTALL_INCLUDES))" ""
 install:: $(INSTALL_INCLUDES)
        @$(INSTALL_DIR) $(includedir)
        for i in $(INSTALL_INCLUDES); do \
@@ -825,7 +831,7 @@ install:: $(INSTALL_INCLUDES)
        done
 endif
 
-ifneq "$(INSTALL_DOCS)" ""
+ifneq "$(strip $(INSTALL_DOCS))" ""
 ifneq "$(XMLDocWays)" ""
 install-docs:: $(INSTALL_DOCS)
        @$(INSTALL_DIR) $(datadir)      
@@ -836,9 +842,9 @@ endif
 endif
 
 # TODO: The following could be an entry for an Obfuscated Makefile Contest...
-ifneq "$(INSTALL_XML_DOC)" ""
+ifneq "$(strip $(INSTALL_XML_DOC))" ""
 ifneq "$(XMLDocWays)" ""
-install-docs:: $(foreach i,$(XMLDocWays),$(INSTALL_XML_DOC)$(patsubst %.html-no-chunks,%.html,$(patsubst %.htmlhelp,%.chm,$(patsubst %.html,%/index.html,.$(i)))))
+install-docs:: $(foreach i,$(XMLDocWays),$(INSTALL_XML_DOC)$(patsubst %.html-no-chunks,%.html,$(patsubst %.html,%/index.html,.$(i))))
        @$(INSTALL_DIR) $(datadir)      
        @for i in $(XMLDocWays); do \
                if [ $$i = "html" ]; then \
@@ -847,12 +853,13 @@ install-docs:: $(foreach i,$(XMLDocWays),$(INSTALL_XML_DOC)$(patsubst %.html-no-
                        echo "( cd $(INSTALL_XML_DOC) && $(CP) * $(datadir)/html/$(INSTALL_XML_DOC) )" ; \
                        ( cd $(INSTALL_XML_DOC) && $(CP) * $(datadir)/html/$(INSTALL_XML_DOC) ) ; \
                else \
-                       echo $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_XML_DOC)`echo .$$i | sed s/\.htmlhelp/.chm/ | sed s/\.html-no-chunks/.html/` $(datadir); \
-                       $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_XML_DOC)`echo .$$i | sed s/\.htmlhelp/.chm/ | sed s/\.html-no-chunks/.html/` $(datadir); \
+                       $(INSTALL_DIR) $(datadir)/doc; \
+                       echo $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_XML_DOC)`echo .$$i | sed s/\.html-no-chunks/.html/` $(datadir)/doc; \
+                       $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_XML_DOC)`echo .$$i | sed s/\.html-no-chunks/.html/` $(datadir)/doc; \
                fi; \
                if [ $$i = "html-no-chunks" ]; then \
-                       echo $(CP) $(FPTOOLS_CSS_ABS) $(datadir); \
-                       $(CP) $(FPTOOLS_CSS_ABS) $(datadir); \
+                       echo $(CP) $(FPTOOLS_CSS_ABS) $(datadir)/doc; \
+                       $(CP) $(FPTOOLS_CSS_ABS) $(datadir)/doc; \
                fi \
        done
 endif
@@ -945,7 +952,7 @@ show:
 #
 ################################################################################
 
-.PHONY: html html-no-chunks htmlhelp fo dvi ps pdf
+.PHONY: html html-no-chunks chm HxS fo dvi ps pdf
 
 ifneq "$(XML_DOC)" ""
 
@@ -960,7 +967,8 @@ endif
 
 XML_HTML           = $(addsuffix /index.html,$(basename $(XML_DOC)))
 XML_HTML_NO_CHUNKS = $(addsuffix .html,$(XML_DOC))
-XML_HTMLHELP       = $(addsuffix -htmlhelp/index.html,$(basename $(XML_DOC)))
+XML_CHM            = $(addsuffix .chm,$(XML_DOC))
+XML_HxS            = $(addsuffix .HxS,$(XML_DOC))
 XML_FO             = $(addsuffix .fo,$(XML_DOC))
 XML_DVI            = $(addsuffix .dvi,$(XML_DOC))
 XML_PS             = $(addsuffix .ps,$(XML_DOC))
@@ -970,7 +978,8 @@ $(XML_HTML) $(XML_NO_CHUNKS_HTML) $(XML_FO) $(XML_DVI) $(XML_PS) $(XML_PDF) :: $
 
 html           :: $(XML_HTML)
 html-no-chunks :: $(XML_HTML_NO_CHUNKS)
-htmlhelp       :: $(XML_HTMLHELP)
+chm            :: $(XML_CHM)
+HxS            :: $(XML_HxS)
 fo             :: $(XML_FO)
 dvi            :: $(XML_DVI)
 ps             :: $(XML_PS)
@@ -1028,6 +1037,11 @@ maintainer-clean:: extraclean
 # Expects:     $(WAYS)                 the possible "way" strings to one of 
 #                                      which $(way) will be set
 
+ifneq "$(way)" ""
+ifeq "$(findstring $(way), $(WAYS))" ""
+$(error Unknown way $(way))
+endif
+endif
 
 # So how does $(way) ever get set to anything?  Answer, we recursively
 # invoke make, setting $(way) on the command line.
@@ -1157,7 +1171,7 @@ endif
 # the --no-print-directory flag which is passed to recursive
 # invocations of make.
 #
-#ifeq "$(way)" ""
+ifeq "$(way)" ""
 ifneq "$(SUBDIRS)" ""
 
 # we override the 'boot', 'all' and 'install' targets in the top
@@ -1183,7 +1197,7 @@ INSTALL_TARGET = install
 INSTALL_DOCS_TARGET = install-docs
 endif
 
-$(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean maintainer-clean $(INSTALL_TARGET) $(INSTALL_DOCS_TARGET) html ps dvi txt::
+$(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean maintainer-clean $(INSTALL_TARGET) $(INSTALL_DOCS_TARGET) html chm HxS ps dvi txt::
        @echo "------------------------------------------------------------------------"
        @echo "===fptools== Recursively making \`$@' in $(SUBDIRS) ..."
        @echo "PWD = $(shell pwd)"
@@ -1204,7 +1218,7 @@ $(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean main
        @echo "------------------------------------------------------------------------"
 
 endif
-#endif
+endif
 
 #
 # Selectively building subdirectories.