X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=mk%2Finstall.mk;h=dd8dfc4946197b94dbc173690a922d0a1a26333f;hp=75d0569e3c6cba11d5d365fc28a8ca08454e3379;hb=d70b588ca35138bcfa21f30eb27b2015cb954ed0;hpb=18e4fea8fcd804d0f164d06aec9f96bb9435a338 diff --git a/mk/install.mk b/mk/install.mk index 75d0569..dd8dfc4 100644 --- a/mk/install.mk +++ b/mk/install.mk @@ -73,14 +73,14 @@ endif # install links to script drivers. # install :: - @$(INSTALL_DIR) $(bindir) - @if ( $(PERL) -e '$$fn="$(bindir)/$(LINK)"; exit ((! -f $$fn || -l $$fn) ? 0 : 1);' ); then \ - echo "Creating a symbolic link from $(LINK_TARGET) to $(LINK) in $(bindir)"; \ - $(RM) $(bindir)/$(LINK); \ - $(LN_S) $(LINK_TARGET) $(bindir)/$(LINK); \ + $(INSTALL_DIR) $(DESTDIR)$(bindir) + if ( $(PERL) -e '$$fn="$(DESTDIR)$(bindir)/$(LINK)"; exit ((! -f $$fn || -l $$fn) ? 0 : 1);' ); then \ + echo "Creating a symbolic link from $(LINK_TARGET) to $(LINK) in $(DESTDIR)$(bindir)"; \ + $(RM) $(DESTDIR)$(bindir)/$(LINK); \ + $(LN_S) $(LINK_TARGET) $(DESTDIR)$(bindir)/$(LINK); \ else \ - echo "Creating a symbolic link from $(LINK_TARGET) to $(LINK) in $(bindir) failed: \`$(bindir)/$(LINK)' already exists"; \ - echo "Perhaps remove \`$(bindir)/$(LINK)' manually?"; \ + echo "Creating a symbolic link from $(LINK_TARGET) to $(LINK) in $(DESTDIR)$(bindir) failed: \`$(DESTDIR)$(bindir)/$(LINK)' already exists"; \ + echo "Perhaps remove \`$(DESTDIR)$(bindir)/$(LINK)' manually?"; \ exit 1; \ fi; @@ -111,28 +111,17 @@ endif # LINK # friends can be overridden from their original settings in mk/config.mk.in # || mk/build.mk # -.PHONY: install install-docs installdirs install-strip install-dirs install-docs show-install +.PHONY: install install-docs installdirs install-strip install-docs show-install show-install : + @echo "DESTDIR = $(DESTDIR)" @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. -# -install-dirs :: - @$(INSTALL_DIR) $(bindir) - @$(INSTALL_DIR) $(libdir) - @$(INSTALL_DIR) $(libexecdir) - @$(INSTALL_DIR) $(datadir) - -# Better do this first... -# but we won't for the moment, do it on-demand from -# within the various install targets instead. -#install:: install-dirs + @echo "ifacedir = $(ifacedir)" + @echo "headerdir = $(headerdir)" + @echo "includedir = $(includedir)" # # Setting user/group ownership for the installed entities @@ -159,12 +148,11 @@ ifneq "$(strip $(INSTALL_PROGS))" "" INSTALL_PROGS := $(foreach p, $(INSTALL_PROGS), $(addsuffix $(if $(suffix $(p)),,$(exeext)), $(basename $(p)))) install:: $(INSTALL_PROGS) - @$(INSTALL_DIR) $(bindir) - @for i in $(INSTALL_PROGS); do \ - echo $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir); \ - $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir) ; \ + $(INSTALL_DIR) $(DESTDIR)$(bindir) + for i in $(INSTALL_PROGS); do \ + $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(DESTDIR)$(bindir) ; \ if test "$(darwin_TARGET_OS)" = "1"; then \ - sh $(FPTOOLS_TOP)/mk/fix_install_names.sh $(libdir) $(bindir)/$$i ; \ + sh $(FPTOOLS_TOP)/mk/fix_install_names.sh $(libdir) $(DESTDIR)$(bindir)/$$i ; \ fi ; \ done endif @@ -175,45 +163,45 @@ endif # ifneq "$(strip $(INSTALL_SCRIPTS))" "" install:: $(INSTALL_SCRIPTS) - @$(INSTALL_DIR) $(bindir) + $(INSTALL_DIR) $(DESTDIR)$(bindir) for i in $(INSTALL_SCRIPTS); do \ - $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(bindir); \ + $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(DESTDIR)$(bindir); \ done endif ifneq "$(strip $(INSTALL_LIB_SCRIPTS))" "" install:: $(INSTALL_LIB_SCRIPTS) - @$(INSTALL_DIR) $(libdir) + $(INSTALL_DIR) $(DESTDIR)$(libdir) for i in $(INSTALL_LIB_SCRIPTS); do \ - $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(libdir); \ + $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir); \ done endif ifneq "$(strip $(INSTALL_LIBEXEC_SCRIPTS))" "" install:: $(INSTALL_LIBEXEC_SCRIPTS) - @$(INSTALL_DIR) $(libexecdir) + $(INSTALL_DIR) $(DESTDIR)$(libexecdir) for i in $(INSTALL_LIBEXEC_SCRIPTS); do \ - $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(libexecdir); \ + $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(DESTDIR)$(libexecdir); \ done endif ifneq "$(strip $(INSTALL_LIBS))" "" install:: $(INSTALL_LIBS) - @$(INSTALL_DIR) $(libdir) + $(INSTALL_DIR) $(DESTDIR)$(libdir) for i in $(INSTALL_LIBS); do \ case $$i in \ *.a) \ - $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \ - $(RANLIB) $(libdir)/`basename $$i` ;; \ + $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir); \ + $(RANLIB) $(DESTDIR)$(libdir)/`basename $$i` ;; \ *.dll) \ - $(INSTALL_DATA) -s $(INSTALL_OPTS) $$i $(libdir) ;; \ + $(INSTALL_DATA) -s $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir) ;; \ *.so) \ - $(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(libdir) ;; \ + $(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir) ;; \ *.dylib) \ - $(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(libdir); \ - install_name_tool -id $(libdir)/`basename $$i` $(libdir)/`basename $$i` ;; \ + $(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir); \ + install_name_tool -id $(DESTDIR)$(libdir)/`basename $$i` $(DESTDIR)$(libdir)/`basename $$i` ;; \ *) \ - $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \ + $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(DESTDIR)$(libdir); \ esac; \ done endif @@ -226,86 +214,98 @@ ifneq "$(strip $(INSTALL_LIBEXECS))" "" INSTALL_LIBEXECS := $(foreach p, $(INSTALL_LIBEXECS), $(addsuffix $(subst _,,$(subst __,$(exeext),_$(suffix $(p))_)), $(basename $(p)))) install:: $(INSTALL_LIBEXECS) - @$(INSTALL_DIR) $(libexecdir) + $(INSTALL_DIR) $(DESTDIR)$(libexecdir) -for i in $(INSTALL_LIBEXECS); do \ - $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(libexecdir); \ + $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(DESTDIR)$(libexecdir); \ if test "$(darwin_TARGET_OS)" = "1"; then \ - sh $(FPTOOLS_TOP)/mk/fix_install_names.sh $(libdir) $(libexecdir)/`basename $$i` ; \ + sh $(FPTOOLS_TOP)/mk/fix_install_names.sh $(libdir) $(DESTDIR)$(libexecdir)/`basename $$i` ; \ fi ; \ done endif ifneq "$(strip $(INSTALL_DATAS))" "" install:: $(INSTALL_DATAS) - @$(INSTALL_DIR) $(datadir) + $(INSTALL_DIR) $(DESTDIR)$(datadir) for i in $(INSTALL_DATAS); do \ - $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(datadir); \ + $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(DESTDIR)$(datadir); \ done endif ifneq "$(strip $(INSTALL_HEADERS))" "" install:: $(INSTALL_HEADERS) - @$(INSTALL_DIR) $(headerdir) + $(INSTALL_DIR) $(DESTDIR)$(headerdir) for i in $(INSTALL_HEADERS); do \ - $(INSTALL_HEADER) $(INSTALL_OPTS) $$i $(headerdir); \ + $(INSTALL_HEADER) $(INSTALL_OPTS) $$i $(DESTDIR)$(headerdir); \ done endif ifneq "$(strip $(INSTALL_IFACES))" "" install:: $(INSTALL_IFACES) - @$(INSTALL_DIR) $(ifacedir) + $(INSTALL_DIR) $(DESTDIR)$(ifacedir) for i in $(INSTALL_IFACES); do \ - $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(ifacedir); \ + $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(DESTDIR)$(ifacedir); \ done endif ifneq "$(strip $(INSTALL_IFACES_WITH_DIRS))" "" install:: $(INSTALL_IFACES_WITH_DIRS) - @$(INSTALL_DIR) $(ifacedir) + $(INSTALL_DIR) $(DESTDIR)$(ifacedir) for i in $(INSTALL_IFACES_WITH_DIRS); do \ - $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(ifacedir)/`dirname $$i`; \ - done -endif - -ifneq "$(strip $(INSTALL_INCLUDES))" "" -install:: $(INSTALL_INCLUDES) - @$(INSTALL_DIR) $(includedir) - for i in $(INSTALL_INCLUDES); do \ - $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(includedir); \ + $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(DESTDIR)$(ifacedir)/`dirname $$i`; \ done endif ifneq "$(strip $(INSTALL_DOCS))" "" ifneq "$(XMLDocWays)" "" install-docs:: $(INSTALL_DOCS) - @$(INSTALL_DIR) $(datadir) + $(INSTALL_DIR) $(DESTDIR)$(datadir) for i in $(INSTALL_DOCS); do \ - $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(datadir); \ + $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(DESTDIR)$(datadir); \ done endif endif -# TODO: The following could be an entry for an Obfuscated Makefile Contest... ifneq "$(strip $(INSTALL_XML_DOC))" "" +ifeq "$(DOC_SUBDIR)" "" +DOC_SUBDIR=docs/$(XML_DOC) +endif + +binary-dist:: + $(MKDIRHIER) $(BIN_DIST_DIR)/$(DOC_SUBDIR) + $(CP) Makefile $(BIN_DIST_DIR)/$(DOC_SUBDIR) + ifneq "$(XMLDocWays)" "" +# TODO: The following could be an entry for an Obfuscated Makefile Contest... 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 \ - $(INSTALL_DIR) $(datadir)/html; \ - $(INSTALL_DIR) $(datadir)/html/$(INSTALL_XML_DOC); \ - echo "( cd $(INSTALL_XML_DOC) && $(CP) * $(datadir)/html/$(INSTALL_XML_DOC) )" ; \ - ( cd $(INSTALL_XML_DOC) && $(CP) * $(datadir)/html/$(INSTALL_XML_DOC) ) ; \ - else \ - $(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)/doc; \ - $(CP) $(FPTOOLS_CSS_ABS) $(datadir)/doc; \ - fi \ - done + +install-docs:: $(foreach i,$(XMLDocWays),install-docs-$i) + +install-docs-html: + $(INSTALL_DIR) $(DESTDIR)$(htmldir) + $(INSTALL_DIR) $(DESTDIR)$(htmldir)/$(INSTALL_XML_DOC) + $(CP) $(INSTALL_XML_DOC)/* $(DESTDIR)$(htmldir)/$(INSTALL_XML_DOC) + +install-docs-html-no-chunks: + $(INSTALL_DIR) $(DESTDIR)$(htmldir) + $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_XML_DOC).html $(DESTDIR)$(htmldir) + $(CP) $(FPTOOLS_CSS_ABS) $(DESTDIR)$(htmldir) + +install-docs-%: + $(INSTALL_DIR) $(DESTDIR)$($*dir) + $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_XML_DOC).$* $(DESTDIR)$($*dir) + +binary-dist:: $(foreach i,$(XMLDocWays),$(INSTALL_XML_DOC)$(patsubst %.html-no-chunks,%.html,$(patsubst %.html,%/index.html,.$(i)))) + +binary-dist:: $(foreach i,$(XMLDocWays),binary-dist-docs-$i) + +binary-dist-docs-html: + $(CP) -r $(INSTALL_XML_DOC) $(BIN_DIST_DIR)/$(DOC_SUBDIR) + +binary-dist-docs-html-no-chunks: + $(CP) $(INSTALL_XML_DOC).html $(BIN_DIST_DIR)/$(DOC_SUBDIR)/ + +binary-dist-docs-%: + $(CP) $(INSTALL_XML_DOC).$* $(BIN_DIST_DIR)/$(DOC_SUBDIR)/ endif endif @@ -314,6 +314,6 @@ endif # ifneq "$(way)" "" install-strip:: - @$(MAKE) EXTRA_INSTALL_OPTS='-s' install + $(MAKE) EXTRA_INSTALL_OPTS='-s' install endif