]> git.donarmstrong.com Git - lilypond.git/blob - stepmake/Documentation/topdocs/out/INSTALL.txt
a3c8f1c7f1386997ffb3eacfe4f9abc675abbf3d
[lilypond.git] / stepmake / Documentation / topdocs / out / INSTALL.txt
1
2
3
4
5
6
7 NAME
8
9      INSTALL - installing StepMake
10
11 DESCRIPTION
12
13      This page documents installation and usage of StepMake
14
15 ABSTRACT
16
17
18
19
20
21      StepMake is a drop-in package that takes care of generic Makefile and
22      packaging/distribution issues.  It enables you to write only the simplest of
23      Makefile snippets, while providing a series powerful make targets.  Features
24      include speed, wildcarding, out/ dir build, stateless Makefiles and package
25      clustering.  It includes some handy scripts for making (package-)diffs and
26      patches, making binary distributions etc.
27
28
29
30
31
32 To use StepMake with your package, you do something remotely
33 like:
34
35
36
37
38
39          tar xzf releases/stepmake-0.1.23
40          cd package-x.x.x/                # package to be StepMake-ised
41          ./../stepmake-0.1.23/bin/stepmakeise.sh
42
43
44
45
46 You'll have to customize at least the files:
47
48
49
50
51
52          ./VERSION .
53          ./configure.in
54
55
56
57
58 to your package's needs.  You might want to take a look at:
59
60
61          ./make/Toplevel.make.in
62          ./config.hh.in
63          ./config.make.in
64
65
66
67
68
69 Also, you should put a Makefile  in  every  subdirectory  of
70 your  package.   These makefiles generally are quite simple,
71 e.g. this is a the makefile  for  an  include  directory  of
72 LilyPond:
73
74
75
76
77
78          # lily/include/Makefile
79
80          depth = ../..
81          include $(depth)/make/Stepmake.make
82
83
84
85
86
87 it  will  identify  all  .h, .hh, ... files and take care of
88 distributing them.
89
90 There's a make/Template.make that you can use as an example.
91 See also the Makefiles in the LilyPond or Yodl package.
92
93 Once  included  in  your  package, StepMake (or in fact, any
94 StepMake-ised package) behaves  as  a  normal  subdirectory;
95 make  commands such as 'make dist' recurse into the stepmake
96 tree (For a list of available targets, type make help  after
97 configuring).   Stepmake (and any changes made) will be dis-
98 tributed with the main pacakage.  However, StepMake  doesn't
99 lose its independency, change to the stepmake directory, and
100 it'll behave as  a  main  package.   You  shouldn't  version
101 directory  names  of  subpackages, otherwise you'll see that
102 package twice in each patch when you upgrade.
103
104
105 PREREQUISITES
106
107
108 To use StepMake with a package you need:
109
110
111 o    A GNU system: StepMake is known to work  on  these  GNU
112      systems:  Linux  (PPC,  intel), FreeBSD, AIX, NeXTStep,
113      IRIX, Digital Unix and Solaris.  If you have the Cygnus
114      WINDOWS32  port  of the GNU utils, it will even work in
115
116
117      Windows NT/95, but we don't promise to support it.
118
119 o    GNU make
120
121 o    GNU autoconf
122
123
124 RECOMMENDED
125
126
127 Although not strictly necessary, these  are  recommended  to
128 have.
129
130
131 o    Python
132
133 o    Yodl.  All documentation will be in Yodl. (1.22.jcn3)
134
135 o    GNU find
136
137
138 INTERNALS
139
140
141 Over  time,  we  put a lot of effort in the configure, make,
142 distribute system (CMDS) for LilyPond.  Some months ago,  we
143 realised it was not standard GNU --- we require GNU make for
144 building, and Python for extra scripting.  In an  effort  to
145 be  more  GNU,  we  tried  automake,  but after two weeks we
146 realised the costs were too high for us and we  reverted  to
147 our  own  system (see automake.urgh).  Not long after that i
148 was confronted with two other packages that lacked a  decent
149 CMDS.  I realised that Lily's would be perfect, it's modular
150 and easy.  The only problem was to make a clean cut  between
151 generic and Lily specific stuff.  The result was StepMake: a
152 bunch of generic makefiles, found in:
153
154
155
156
157
158          stepmake/stepmake/*.make
159
160
161
162
163 eneric helper scripts:
164
165
166          stepmake/bin/*.sh
167          stepmake/bin/*.py
168
169
170
171
172 and modular configure functions:
173
174
175
176
177
178          stepmake/configure.in
179          stepmake/aclocal.m4
180          stepmake/config.hh.in
181          stepmake/config.make.in
182
183
184
185
186
187 Of course, every package has its  own  configure-  and  make
188 peculiarities.  The best way to create the configure scripts
189 is to copy them from stepmake[1] into you package's toplevel
190 directory.  For most packages, you'll only have  to  comment
191 in/out some functions in configure.in.
192
193 Package specific makefiles go in:
194
195
196
197
198
199          make/Targets.make
200          make/Rulese.make
201          make/Substitute.make
202
203
204
205
206 and are included by the generic StepMake makefiles.
207
208
209 MAINTAINING
210
211
212 If  you want to make and manage (binary) distributions, cre-
213 ate and apply patches, you'll  need  some  framework  that's
214 outside of the package's sourcetree.  For a number of simple
215 maintenance tasks, StepMake will therefore assume  the  fol-
216 lowing directory structure:
217 -----------
218 [1] Actually, stepmake/bin/stepmakeise.sh will  do
219 that for you.
220
221
222          doos/                        # gnu/windows32 build and binary releases
223          harmonia -> harmonia-x.y.z
224          harmonia-x.y.z/
225          lilypond -> lilypond-x.y.z   # symlink to development directory
226          lilypond-x.y.z/              # current development
227          patches/                 # patches between different releases
228          RedHat/BUILD                 # RedHat build and binary releases
229          RedHat/RPMS
230          RedHat/SPECS
231          releases/                    # .tar.gz releases
232          test/                        # tarballs and diffs from current version
233          yodl -> yodl-1.30.17
234          yodl-1.30.17
235
236
237
238
239 with  prefix  $HOME/usr/src  and (for building rpms only) in
240 $HOME/.rpmrc:
241
242
243
244
245
246          topdir: /home/fred/usr/src/RedHat
247
248
249
250
251
252 Check and update the layout with the command:
253
254
255
256
257
258          ./stepmake/bin/stepdirs.sh
259
260
261
262
263
264
265 SEE ALSO
266
267
268 ../PATCHES.txt
269
270
271 CONFIGURING
272
273
274 Stepmake comes with a number of  precooked  configure  func-
275 tions  for  general  needs,  such as AC_STEPMAKE_COMPILE for
276
277
278 simple C development and AC_STEPMAKE_CXX for C++.
279
280 See configure.in and comment in/out the functions that  your
281 package  needs.   For specific needs, you can write your own
282 autoconf code, see info autoconf.
283
284
285 AUTHORS
286
287
288 Jan Nieuwenhuizen <janneke@gnu.org>
289
290 Han-Wen Nienhuys <hanwen@cs.uu.nl>
291
292 Have fun!