X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=mk%2Finstall.mk.in;h=2808c1f784a8455f00cb1791f0242421fa519a7a;hp=863a5984b0789bcedc54c9e3f9cfd587ebac4ba9;hb=e5c3b478b3cd1707cf122833822f44b2ac09b8e9;hpb=0dffc568e18d34eeb6d1899ea767a3814d6be167 diff --git a/mk/install.mk.in b/mk/install.mk.in index 863a598..2808c1f 100644 --- a/mk/install.mk.in +++ b/mk/install.mk.in @@ -45,8 +45,8 @@ define set_default # $1 = variable to set # $2 = default value to use, if configure didn't expand it -# If $1 starts with an @ then configure didn't set it, -# so set it to a sensible value +# If $1 starts with an @ then configure didn't set it (because a version +# of autoconf that is too old was used), so set it to a sensible value ifneq "$$(filter @%,$$($1))" "" $1 = $2 endif @@ -67,9 +67,6 @@ libdir = @libdir@ includedir = @includedir@ mandir = @mandir@ -# New autoconf (>= 2.60?) make a configure with --docdir=DIR etc flags. -# However, in order to support older autoconf's we don't use them. - docdir = @docdir@ $(eval $(call set_default,docdir,$${datarootdir}/doc/ghc)) @@ -96,7 +93,8 @@ dvidir = $(docdir) pdfdir = $(docdir) psdir = $(docdir) -topdir = $(libdir) +ghclibdir = $(libdir) +ghcdocdir = $(datarootdir)/doc else @@ -108,11 +106,11 @@ else # where package.conf is, so we just set it globally). # ghclibdir = $(libdir)/ghc-$(ProjectVersion) -ghclibexecdir = $(ghclibdir) -topdir = $(ghclibdir) ghcdocdir = $(datarootdir)/doc/ghc endif +ghclibexecdir = $(ghclibdir) +topdir = $(ghclibdir) ghcheaderdir = $(ghclibdir)/include #----------------------------------------------------------------------------- @@ -132,16 +130,43 @@ INSTALL_GROUP = # Invocations of `install' for the four different classes # of targets: # -CREATE_SCRIPT = create () { touch $$1 && chmod 755 $$1 ; } && create -CREATE_DATA = create () { touch $$1 && chmod 644 $$1 ; } && create -INSTALL_PROGRAM = $(INSTALL) -m 755 -INSTALL_SCRIPT = $(INSTALL) -m 755 -INSTALL_SHLIB = $(INSTALL) -m 755 -INSTALL_DATA = $(INSTALL) -m 644 -INSTALL_HEADER = $(INSTALL) -m 644 -INSTALL_MAN = $(INSTALL) -m 644 -INSTALL_DOC = $(INSTALL) -m 644 -INSTALL_DIR = $(INSTALL) -m 755 -d +CREATE_SCRIPT = create () { touch "$$1" && chmod 755 "$$1" ; } && create +CREATE_DATA = create () { touch "$$1" && chmod 644 "$$1" ; } && create +# These takes 3 arguments: +# $1 = flags +# $2 = files +# $3 = dest +INSTALL_PROGRAM = $(INSTALL) -m 755 $1 $2 $(call MK_INSTALL_DEST,$3) +INSTALL_SCRIPT = $(INSTALL) -m 755 $1 $2 $(call MK_INSTALL_DEST,$3) +INSTALL_SHLIB = $(INSTALL) -m 755 $1 $2 $(call MK_INSTALL_DEST,$3) +INSTALL_DATA = $(INSTALL) -m 644 $1 $2 $(call MK_INSTALL_DEST,$3) +INSTALL_HEADER = $(INSTALL) -m 644 $1 $2 $(call MK_INSTALL_DEST,$3) +INSTALL_MAN = $(INSTALL) -m 644 $1 $2 $(call MK_INSTALL_DEST,$3) +INSTALL_DOC = $(INSTALL) -m 644 $1 $2 $(call MK_INSTALL_DEST,$3) +# Only 1 argument, the directory to create: +INSTALL_DIR = $(INSTALL) -m 755 -d $(call MK_INSTALL_DEST,$1) + +# cygwin's /bin/install doesn't set file modes correctly if the +# destination path is a C: style path: +# +# $ /bin/install -c -m 644 foo /cygdrive/c/cygwin/home/ian/foo2 +# $ /bin/install -c -m 644 foo c:/cygwin/home/ian/foo3 +# $ ls -l foo* +# -rw-r--r-- 1 ian None 0 2011-01-06 18:28 foo +# -rw-r--r-- 1 ian None 0 2011-01-06 18:29 foo2 +# -rwxrwxrwx 1 ian None 0 2011-01-06 18:29 foo3 +# +# This causes problems for bindisttest/checkBinaries.sh which then +# thinks that e.g. the userguide HTML files are binaries. +# +# We therefore use a /cygdrive path if we are on cygwin (only) +# (This will make a Cygwin build run slowly +# because of all those shell invocations.) +ifeq "$(OSTYPE)" "cygwin" +MK_INSTALL_DEST = $$(cygpath $1) +else +MK_INSTALL_DEST = $1 +endif # # runhaskell and hsc2hs are special, in that other compilers besides @@ -156,3 +181,7 @@ INSTALL_DIR = $(INSTALL) -m 755 -d # NB. we use negative tests here because for binary-distributions we cannot # test build-time variables at install-time, so they must default to on. +ifneq "$(DESTDIR)" "" +override DESTDIR := $(abspath $(DESTDIR)) +endif +