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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
|
#
# @configure_input@
#
# Instructions for configuring an fptools package.
#
# There are two ways you can get started with an fptools package, either
# by using the unpacked distribution tree in-situ or by installing the
# package.
#
# Using the package directly is easy, just do `make config'. (The
# distribution will *not* work straight out of the box, you'll have to do
# this first)
#
# To install the package, you'll have to set one or more of the
# following variables:
#
# * bindir
# path to directory of where you want the executables
# to be installed.
# * libdir
# where you want the library archives to go.
# Note, if you specify /usr/foo/lib for libdir,
# the library files for your fptools package will be
# installed in /usr/foo/lib/<package>-<version>, e.g.,
# /usr/foo/lib/ghc-2.03. If you don't want the package/version
# directory appended, you'll have to modify $(real_libdir)
# below.
#
# * datadir
# path to where the platform-independent files will go.
# As for libdir, the effective path for the platform-indep
# stuff is $(datadir)/<package>-<version>. If you want
# complete control, see $(real_datadir)
#
# * platform
# the platform you're installing for. The configure script
# makes an educated guess, so you'll only have to set this
# if it clashes with your reality, I guess.
#
# * htmldir
# where to install the documentation HTML files.
# * dvidir
# where to install the DVI files.
# * infodir
# where to install the Emacs info files
#
# Installing the documentation is not done as part of the `install' rule, but
# via `install-docs' (or if you want to be selective: `install-html', `install-dvi'
# and `install-info').
#
# For more complete instructions, consult the INSTALL file
# that came with the bundle, and/or consult the installation
# documentation in one of the document directories.
#
# Please report any bugs, problems etc. with installing and using this bundle
# Makefile setup to glasgow-haskell-bugs@dcs.gla.ac.uk
#
# Where the different pieces of the bundle should go:
bindir = @bindir@
libdir = @libdir@
datadir = @datadir@
platform = @TargetPlatform@
prefix = @prefix@
exec_prefix = @exec_prefix@
# default
infodir = $(datadir)
htmldir = $(datadir)
dvidir = $(datadir)
#
# Putting the package stuff in package-specific
# directories:
#
real_libdir = $(libdir)/$(package)-$(version)
real_datadir = $(datadir)/$(package)-$(version)
package = ghc
version = 2.03
PERL = @PerlCmd@
RM = rm -f
MV = mv
CP = cp
LN_S = @LN_S@
CHMOD = chmod
INSTALL = @INSTALL@
# sigh
INSTALL_DIR = ./mkdirhier
#
# Set of package scripts for which you'd like a name-<version> symlink
# to be created, i.e., create a symlink, ghc-$(version), pointing to ghc to
# avoid version vertigo.
#
VERSION_SYMLINKS_FOR=ghc
#
# List of files in bin directory that need to have
# local setup/install information prepended.
#
PACKAGE_SCRIPTS=ghc stat2resid hstags mkdependHS
PACKAGE_LIB_SCRIPTS=hscpp
# Binaries to install
PACKAGE_BINS=$(PACKAGE_SCRIPTS) hp2ps
#----------end of user-serviceable parts------------
#
#
# How to install the different pieces
#
INSTALL_BIN = $(INSTALL) $(INSTALL_BIN_OPTS)
INSTALL_LIB = $(INSTALL) $(INSTALL_LIB_OPTS)
INSTALL_DATA = $(INSTALL) $(INSTALL_DATA_OPTS)
# What's common to all installs
INSTALL_OPTS= $(EXTRA_INSTALL_OPTS)
BIN_PERMS = 755
LIB_PERMS = 644
INSTALL_BIN_OPTS = -m $(BIN_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_BIN_OPTS)
INSTALL_LIB_OPTS = -m $(LIB_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_LIB_OPTS)
INSTALL_DATA_OPTS = -m $(LIB_PERMS) $(INSTALL_OPTS) $(EXTRA_INSTALL_DATA_OPTS)
.PHONY: in-place config-pkgs mk-version-symlinks install-dirs install
config-pkgs ::
@echo "Configuring $(package), version $(version), on $(platform) ..."
$(RM) bin/$(platform)/$(package)-$(version)/$(package)-$(version)
@for i in $(PACKAGE_SCRIPTS); do \
echo "Creating a configured version of $$i .."; \
$(RM) bin/$(platform)/$(package)-$(version)/$$i.bak; \
test -f bin/$(platform)/$(package)-$(version)/$$i && $(MV) bin/$(platform)/$(package)-$(version)/$$i bin/$(platform)/$(package)-$(version)/$$i.bak; \
echo "eval 'exec $(PERL) -S $$$""0 $$""{1+\"$$$""@\"}'" > bin/$(platform)/$(package)-$(version)/$$i; \
echo " if $$""running_under_some_shell;" >> bin/$(platform)/$(package)-$(version)/$$i; \
echo $$"bindir='$(bindir)';" >> bin/$(platform)/$(package)-$(version)/$$i; \
echo $$"libdir='$(real_libdir)';" >> bin/$(platform)/$(package)-$(version)/$$i; \
echo $$"libexecdir='$(real_libdir)';" >> bin/$(platform)/$(package)-$(version)/$$i; \
echo $$"datadir='$(real_datadir)';" >> bin/$(platform)/$(package)-$(version)/$$i; \
cat bin/$(platform)/$(package)-$(version)/$$i.prl >> bin/$(platform)/$(package)-$(version)/$$i; \
$(CHMOD) $(BIN_PERMS) bin/$(platform)/$(package)-$(version)/$$i; \
echo "Done."; \
done
@for i in $(PACKAGE_LIB_SCRIPTS); do \
echo "Creating a configured version of $$i .."; \
$(RM) lib/$(platform)/$(package)-$(version)/$$i.bak; \
test -f lib/$(platform)/$(package)-$(version)/$$i && $(MV) lib/$(platform)/$(package)-$(version)/$$i lib/$(platform)/$(package)-$(version)/$$i.bak; \
echo "eval 'exec $(PERL) -S $$$""0 $$""{1+\"$$$""@\"}'" > lib/$(platform)/$(package)-$(version)/$$i; \
echo " if $$""running_under_some_shell;" >> lib/$(platform)/$(package)-$(version)/$$i; \
echo $$"bindir='$(bindir)';" >> lib/$(platform)/$(package)-$(version)/$$i; \
echo $$"libdir='$(real_libdir)';" >> lib/$(platform)/$(package)-$(version)/$$i; \
echo $$"libexecdir='$(real_libdir)';" >> lib/$(platform)/$(package)-$(version)/$$i; \
echo $$"datadir='$(real_datadir)';" >> lib/$(platform)/$(package)-$(version)/$$i; \
cat lib/$(platform)/$(package)-$(version)/$$i.prl >> lib/$(platform)/$(package)-$(version)/$$i; \
$(CHMOD) $(BIN_PERMS) lib/$(platform)/$(package)-$(version)/$$i; \
echo "Done."; \
done
#
# The vaguely funky eval 'exec ...' echo line above *might* be
# a tad too much for some `make's - here's what it should return
# if all is well:
#
# eval 'exec /installed/path/for/perl -S $0 ${1+"$@"}'
# if $running_under_some_shell;
#
mk-version-symlinks ::
@for i in $(VERSION_SYMLINKS_FOR) ""; do \
if [ "x$$i" != "x" ]; then \
echo "Symlinking $$i to $$i-$(version)"; \
(cd bin/$(platform)/$(package)-$(version); $(RM) $$i-$(version); $(LN_S) $$i $$i-$(version) ); \
fi;\
done
in-place ::
$(MAKE) $(MFLAGS) config-pkgs bindir=`pwd`/bin/$(platform)/$(package)-$(version) libdir=`pwd`/lib/$(platform) datadir=`pwd`/share/$(package)-$(version)
$(MAKE) $(MFLAGS) mk-version-symlinks
@echo "Finished configuring..to use, add `pwd`/bin/$(platform)/$(package)-$(version) to your PATH."
install-dirs ::
$(INSTALL_DIR) $(bindir)
(cd lib/$(platform)/$(package)-$(version); find . -type d -exec sh -c '../../../$(INSTALL_DIR) $$0 $(real_libdir)/$$0' {} \; )
(cd share/$(package)-$(version); find . -type d -exec sh -c '../../$(INSTALL_DIR) $(real_datadir)/$$0' {} \; )
install :: config-pkgs mk-version-symlinks install-dirs install-bin install-libs install-datas
.PHONY: install-bin install-libs install-datas
install-bin:
for i in $(PACKAGE_BINS); do \
$(INSTALL_BIN) bin/$(platform)/$(package)-$(version)/$$i $(bindir); \
done;
for i in $(VERSION_SYMLINKS_FOR) ""; do \
if [ "x$$i" != "x" ]; then \
( cd $(bindir); $(LN_S) $$i $$i-$(version) ); \
fi; \
done
install-libs:
(cd lib/$(platform)/$(package)-$(version); find . -type f -exec sh -c '$(CP) $$0 $(real_libdir)/$$0' {} \; )
install-datas:
(cd share/$(package)-$(version); find . -type f -exec sh -c '$(INSTALL_DATA) $$0 $(real_datadir)/$$0' {} \; )
show-install-setup:
@echo "Install setup..."
@echo "bindir = $(bindir)"
@echo "libdir = $(libdir) (real_libdir = $(real_libdir))"
@echo "datadir = $(datadir) (real_datadir = $(real_datadir))"
#
# Documentation targets, install-docs for the whole lot, or
# install-{dvi,html,info}
#
.PHONY: show-install-setup install-docs install-html install-info install-dirs-dvi install-dirs-html install-dirs-info
install-docs : install-html install-dvi install-info
install-dvi: install-dirs-dvi
$(INSTALL_DATA) dvi/$(package)-$(version)/* $(dvidir)
install-info: install-dirs-info
$(INSTALL_DATA) info/$(package)-$(version)/* $(infodir)
install-html: install-dirs-html
$(INSTALL_DATA) html/$(package)-$(version)/* $(htmldir)
install-dirs-html:
$(INSTALL_DIR) $(htmldir)
install-dirs-info:
$(INSTALL_DIR) $(infodir)
install-dirs-dvi:
$(INSTALL_DIR) $(dvidir)
|