diff options
author | Ian Lynagh <igloo@earth.li> | 2009-08-14 22:45:49 +0000 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2009-08-14 22:45:49 +0000 |
commit | 926ae90b75cd3368049854898062a563e57c9ad2 (patch) | |
tree | 543ef37498be98d3cb18a587c26b589e8d78d311 /mk/install.mk.in | |
parent | 328681951873b54dade3d0ecef2bea9bf97fff29 (diff) | |
download | haskell-926ae90b75cd3368049854898062a563e57c9ad2.tar.gz |
Make our install variables etc compliant with GNU standards; fixes #1924
Diffstat (limited to 'mk/install.mk.in')
-rw-r--r-- | mk/install.mk.in | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/mk/install.mk.in b/mk/install.mk.in new file mode 100644 index 0000000000..75c2a32c18 --- /dev/null +++ b/mk/install.mk.in @@ -0,0 +1,158 @@ +# -*-makefile-*- +# @configure_input@ +# +################################################################################ +# +# dirs.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. +# +# - 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, +# 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@ + +# 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)) + +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) + +topdir = $(libdir) + +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) +ghclibexecdir = $(ghclibdir) +topdir = $(ghclibdir) +ghcdocdir = $(datarootdir)/doc/ghc +endif + +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 +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 + +# +# 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. + |