summaryrefslogtreecommitdiff
path: root/mk/install.mk.in
blob: 3d741589820d840339e84687097e37be3f785d42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#								 -*-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
ifeq '$(shell cygpath "c:/" 2> /dev/null)' ''
MK_INSTALL_DEST = $1
else
MK_INSTALL_DEST = "$(shell cygpath $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.