# 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
# `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.
# Extra stuff for compiling Haskell files with $(SplitObjs):
-HC_SPLIT_PRE = \
- $(RM) $@; if [ ! -d $(basename $@)_split ]; then mkdir $(basename $@)_split; else \
- $(FIND) $(basename $@)_split -name '*.$(way_)o' -print | xargs $(RM) __rm_food; fi
-ifeq "$(GhcWithInterpreter)" "YES"
-ifeq "$(LdIsGNULd)" "YES"
-# If ld is GNU ld, we can use a linker script to pass the names of the
-# input files. This avoids problems with limits on the length of the
-# ld command line, which we run into for large Haskell modules.
-HC_SPLIT_POST = \
- ( cd $(basename $@)_split; \
- $(RM) ld.script; \
- touch ld.script; \
- echo "INPUT(" *.$(way_)o ")" >>ld.script; \
- $(LD) -r $(LD_X) -o ../$(notdir $@) ld.script; \
- )
-else
-HC_SPLIT_POST = \
- ( cd $(basename $@)_split; \
- $(LD) -r $(LD_X) -o ../$(notdir $@) *.$(way_)o; \
- )
-endif # LdIsGNULd == YES
-else
-HC_SPLIT_POST = touch $@
-endif # GhcWithInterpreter == YES
-
-SRC_HC_PRE_OPTS += $(HC_SPLIT_PRE);
-SRC_HC_POST_OPTS += $(HC_SPLIT_POST);
-
#
# If (Haskell) object files are split, cleaning up
# consist of descending into the directories where
#
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)
endif
-ifneq "$(INSTALL_PROGS)" ""
+ifneq "$(strip $(INSTALL_PROGS))" ""
#
# Here's an interesting one - when using the win32 version
@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
# 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 \
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 \
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 \
done
endif
-ifneq "$(INSTALL_LIBS)" ""
+ifneq "$(strip $(INSTALL_LIBS))" ""
install:: $(INSTALL_LIBS)
@$(INSTALL_DIR) $(libdir)
for i in $(INSTALL_LIBS); do \
$(INSTALL_DATA) -s $(INSTALL_OPTS) $$i $(libdir) ;; \
*.so) \
$(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(libdir) ;; \
+ *.dylib) \
+ $(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(libdir); \
+ install_name_tool -id $(libdir)/`basename $$i` $(libdir)/`basename $$i` ;; \
*) \
$(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \
esac; \
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.
@$(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 \
done
endif
-ifneq "$(INSTALL_IFACES)" ""
+ifneq "$(strip $(INSTALL_IFACES))" ""
install:: $(INSTALL_IFACES)
@$(INSTALL_DIR) $(ifacedir)
for i in $(INSTALL_IFACES); do \
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 \
done
endif
-ifneq "$(INSTALL_INCLUDES)" ""
+ifneq "$(strip $(INSTALL_INCLUDES))" ""
install:: $(INSTALL_INCLUDES)
@$(INSTALL_DIR) $(includedir)
for i in $(INSTALL_INCLUDES); do \
done
endif
-ifneq "$(INSTALL_DOCS)" ""
+ifneq "$(strip $(INSTALL_DOCS))" ""
ifneq "$(XMLDocWays)" ""
install-docs:: $(INSTALL_DOCS)
@$(INSTALL_DIR) $(datadir)
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 \
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
#
################################################################################
-.PHONY: html html-no-chunks htmlhelp fo dvi ps pdf
+.PHONY: html html-no-chunks chm HxS fo dvi ps pdf
ifneq "$(XML_DOC)" ""
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))
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)
# 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.
# 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
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)"
@echo "------------------------------------------------------------------------"
endif
-#endif
+endif
#
# Selectively building subdirectories.