# -*-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 # This gets used in the default docdir when autoconf >= 2.60 is used PACKAGE_TARNAME = @PACKAGE_TARNAME@ prefix = @prefix@ datarootdir = @datarootdir@ $(eval $(call set_default,datarootdir,$${prefix}/share)) exec_prefix = @exec_prefix@ bindir = @bindir@ datadir = @datadir@ libdir = @libdir@ includedir = @includedir@ mandir = @mandir@ docdir = @docdir@ $(eval $(call set_default,docdir,$${datarootdir}/doc/ghc)) 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})) ifeq "$(RelocatableBuild)" "YES" # 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 docdir = $(prefix)/doc htmldir = $(docdir) dvidir = $(docdir) pdfdir = $(docdir) psdir = $(docdir) ghclibdir = $(libdir) ghcdocdir = $(datarootdir)/doc else # 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 #----------------------------------------------------------------------------- # install configuration # # Set this to have files installed with a specific owner # INSTALL_OWNER = # # 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 MK_INSTALL_DEST = $1 endif # # 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. ifneq "$(DESTDIR)" "" override DESTDIR := $(abspath $(DESTDIR)) endif