X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=mk%2Finstall.mk.in;h=4d203101078ba31fab35d07093858aaac29ff982;hb=25a6230431a4da86ee2fe1f6dacd0ea672207a24;hp=2d4580764883f091b18aae7dad4ae4cb05ae139c;hpb=02b60157852c1bf3c371b47c33d83814a05153bc;p=ghc-hetmet.git diff --git a/mk/install.mk.in b/mk/install.mk.in index 2d45807..4d20310 100644 --- a/mk/install.mk.in +++ b/mk/install.mk.in @@ -1,83 +1,156 @@ -#----------------------------------------------------------------------------- -# $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 -endif -#----------------------------------------------------------------------------- -# How to install things - -# this stuff about "who" does the installing doesn't have make vars -# as it is not intended to be runtime-changeable. +# Unix: override libdir and datadir to put ghc-specific stuff in +# a subdirectory with the version number included. # -ifdef OWNER -INSTOWNER = -o $(OWNER) -else -INSTOWNER = +# 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 -ifdef GROUP -INSTGROUP = -g $(GROUP) -else -INSTGROUP = -endif +ghclibexecdir = $(ghclibdir) +topdir = $(ghclibdir) +ghcheaderdir = $(ghclibdir)/include -INSTFILEFLAGS = -INSTSTRIP = -INSTBINFLAGS = \ - -m 0755 $(INSTOWNER) $(INSTGROUP) $(INSTFILEFLAGS) $(INSTSTRIP) +#----------------------------------------------------------------------------- +# install configuration +# +# Set this to have files installed with a specific owner +# +INSTALL_OWNER = -# No strip flags on rest of these -- avoids message from install -# about stripping non-binaries. +# +# 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 -GENINSTALLFLAGS = $(INSTOWNER) $(INSTGROUP) $(INSTFILEFLAGS) +# +# 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. -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 =