update submodules for GHC.HetMet.GArrow -> Control.GArrow renaming
[ghc-hetmet.git] / mk / install.mk.in
index 75c2a32..2808c1f 100644 (file)
@@ -3,14 +3,14 @@
 #
 ################################################################################
 #
-# dirs.mk.in
+# install.mk.in
 #
 # This file sets up the installation directories.
 #
 # DO NOT EDIT THIS FILE!
 #
-#      - dirs.mk is auto-generated from dirs.mk.in by configure.
-#        If you edit dirs.mk your changes will be spammed.
+#      - install.mk is auto-generated from install.mk.in by configure.
+#        If you edit install.mk your changes will be spammed.
 #
 #      - Settings in this file may be overriden by giving replacement
 #        definitions in build.mk.
@@ -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
+