-#-----------------------------------------------------------------------------
-# $Id: install.mk.in,v 1.2 1996/11/21 16:50:34 simonm Exp $
+# -*-makefile-*-
+# @configure_input@
+#
+################################################################################
+#
+# install.mk.in
+#
+# This file sets up the installation directories.
+#
+# DO NOT EDIT THIS FILE!
+#
+# - 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.
+
+# Definition of installation directories, we don't use half of these, but since
+# the configure script has them on offer while passing through, we might as well
+# set them. Note that we have to be careful, because the GNU coding standards
+# have changed a bit over the course of time, and autoconf development reflects
+# this.
+#
+# A little bit of history regarding autoconf and GNU coding standards, use this
+# as a cheat-sheet for the stuff below:
+#
+# variable | default < 2.60 | default >= 2.60
+# ------------+--------------------+--------------------------------------
+# exec_prefix | ${prefix} | ${prefix}
+# libdir | ${exec_prefix}/lib | ${exec_prefix}/lib
+# datarootdir | NONE! | ${prefix}/share
+# datadir | ${prefix}/share | ${datarootdir}
+# infodir | ${prefix}/info | ${datarootdir}/info
+# mandir | ${prefix}/man | ${datarootdir}/man
+# docdir | NONE! | ${datarootdir}/doc/${PACKAGE_TARNAME}
+# htmldir | NONE! | ${docdir}
+# dvidir | NONE! | ${docdir}
+# pdfdir | NONE! | ${docdir}
+# psdir | NONE! | ${docdir}
+#
+# NOTE: The default e.g. ${docdir} above means that autoconf substitutes the
+# string "${docdir}", not the value of docdir! This is crucial for the GNU
+# coding standards.
+
+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 (because a version
+# of autoconf that is too old was used), so set it to a sensible value
+ifneq "$$(filter @%,$$($1))" ""
+$1 = $2
+endif
+endef
-AT_GLASGOW = @AT_GLASGOW@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
+# This gets used in the default docdir when autoconf >= 2.60 is used
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
-ifeq ($(AT_GLASGOW), 1)
-INSTBINDIR = $(exec_prefix)/bin/`/usr/local/gnu/bin/hw_os`
-else
-INSTBINDIR = $(exec_prefix)/bin
-endif
+prefix = @prefix@
-INSTSCRIPTDIR = $(exec_prefix)/bin
-INSTLIBDIR = $(prefix)/lib/$(HOSTPLATFORM)
-INSTDATADIR = $(prefix)/lib
+datarootdir = @datarootdir@
+$(eval $(call set_default,datarootdir,$${prefix}/share))
-#-----------------------------------------------------------------------------
-# Man pages & Documentation
+exec_prefix = @exec_prefix@
+bindir = @bindir@
+datadir = @datadir@
+libdir = @libdir@
+includedir = @includedir@
+mandir = @mandir@
-# top of manual page tree to install in
-# NB: not necessarily the same place as to look for man pages (?)
-INSTMANROOT = $(prefix)
+docdir = @docdir@
+$(eval $(call set_default,docdir,$${datarootdir}/doc/ghc))
-# prefix for man page _sources_ (vs .../cat)
-INSTMANSRCROOT = $(INSTMANROOT)/man
+htmldir = @htmldir@
+dvidir = @dvidir@
+pdfdir = @pdfdir@
+psdir = @psdir@
+$(eval $(call set_default,htmldir,$${docdir}))
+$(eval $(call set_default,dvidir,$${docdir}))
+$(eval $(call set_default,pdfdir,$${docdir}))
+$(eval $(call set_default,psdir,$${docdir}))
-# man pages for commands
-INSTCOMMANDIR = $(INSTMANSRCROOT)$(COMMANSUFFIX)
+ifeq "$(RelocatableBuild)" "YES"
-# man pages for library routines
-INSTLIBMANDIR = $(INSTMANSRCROOT)$(LIBMANSUFFIX)
+# Hack: our directory layouts tend to be different on Windows, so
+# hack around configure's bogus assumptions here.
+datarootdir = $(prefix)
+datadir = $(prefix)/lib
+libdir = $(prefix)/lib
-# man pages for system commands
-INSTSYSMANDIR = $(INSTMANSRCROOT)$(SYSMANSUFFIX)
+docdir = $(prefix)/doc
+htmldir = $(docdir)
+dvidir = $(docdir)
+pdfdir = $(docdir)
+psdir = $(docdir)
-# suffix for installing commands'/etcs' man pages
-COMMANSUFFIX = 1
-LIBMANSUFFIX = 3
-SYSMANSUFFIX = 8
+ghclibdir = $(libdir)
+ghcdocdir = $(datarootdir)/doc
-ifeq ($(AT_GLASGOW), 1)
-INSTINFODIR = /local/doc/info
else
-INSTINFODIR = $(prefix)/info
+
+# Unix: override libdir and datadir to put ghc-specific stuff in
+# a subdirectory with the version number included.
+#
+# datadir is set to libdir here as GHC needs package.conf and unlit
+# to be in the same place (and things like ghc-pkg need to agree on
+# where package.conf is, so we just set it globally).
+#
+ghclibdir = $(libdir)/ghc-$(ProjectVersion)
+ghcdocdir = $(datarootdir)/doc/ghc
endif
+ghclibexecdir = $(ghclibdir)
+topdir = $(ghclibdir)
+ghcheaderdir = $(ghclibdir)/include
+
#-----------------------------------------------------------------------------
-# How to install things
+# install configuration
-# this stuff about "who" does the installing doesn't have make vars
-# as it is not intended to be runtime-changeable.
#
-ifdef OWNER
-INSTOWNER = -o $(OWNER)
-else
-INSTOWNER =
-endif
+# Set this to have files installed with a specific owner
+#
+INSTALL_OWNER =
-ifdef GROUP
-INSTGROUP = -g $(GROUP)
+#
+# Set this to have files installed with a specific group
+#
+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
+# 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
-INSTGROUP =
+MK_INSTALL_DEST = $1
endif
-INSTFILEFLAGS =
-INSTSTRIP =
-INSTBINFLAGS = \
- -m 0755 $(INSTOWNER) $(INSTGROUP) $(INSTFILEFLAGS) $(INSTSTRIP)
-
-
-# No strip flags on rest of these -- avoids message from install
-# about stripping non-binaries.
+#
+# runhaskell and hsc2hs are special, in that other compilers besides
+# GHC might provide them. Systems with a package manager often come
+# with tools to manage this kind of clash, e.g. RPM's
+# update-alternatives. When building a distribution for such a system,
+# we recommend setting both of the following to 'YES'.
+#
+# NO_INSTALL_RUNHASKELL = YES
+# NO_INSTALL_HSC2HS = YES
+#
+# 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.
-GENINSTALLFLAGS = $(INSTOWNER) $(INSTGROUP) $(INSTFILEFLAGS)
+ifneq "$(DESTDIR)" ""
+override DESTDIR := $(abspath $(DESTDIR))
+endif
-INSTSCRIPTFLAGS = -m 0755 $(GENINSTALLFLAGS)
-INSTLIBFLAGS = -m 0644 $(GENINSTALLFLAGS)
-INSTDATALIBFLAGS = -m 0644 $(GENINSTALLFLAGS)
-INSTINCFLAGS = -m 0644 $(GENINSTALLFLAGS)
-INSTDATAFLAGS = -m 0644 $(GENINSTALLFLAGS)
-INSTMANFLAGS = -m 0644 $(GENINSTALLFLAGS)
-INSTRANLIBFLAGS =