9 INSTALL - installing StepMake
13 This page documents installation and usage of StepMake
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.
32 To use StepMake with your package, you do something remotely
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
46 You'll have to customize at least the files:
58 to your package's needs. You might want to take a look at:
61 ./make/Toplevel.make.in
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
78 # lily/include/Makefile
81 include $(depth)/make/Stepmake.make
87 it will identify all .h, .hh, ... files and take care of
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.
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.
108 To use StepMake with a package you need:
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
117 Windows NT/95, but we don't promise to support it.
127 Although not strictly necessary, these are recommended to
133 o Yodl. All documentation will be in Yodl. (1.22.jcn3)
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:
158 stepmake/stepmake/*.make
163 eneric helper scripts:
172 and modular configure functions:
178 stepmake/configure.in
180 stepmake/config.hh.in
181 stepmake/config.make.in
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.
193 Package specific makefiles go in:
206 and are included by the generic StepMake makefiles.
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:
218 [1] Actually, stepmake/bin/stepmakeise.sh will do
222 doos/ # gnu/windows32 build and binary releases
223 harmonia -> 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
231 releases/ # .tar.gz releases
232 test/ # tarballs and diffs from current version
239 with prefix $HOME/usr/src and (for building rpms only) in
246 topdir: /home/fred/usr/src/RedHat
252 Check and update the layout with the command:
258 ./stepmake/bin/stepdirs.sh
274 Stepmake comes with a number of precooked configure func-
275 tions for general needs, such as AC_STEPMAKE_COMPILE for
278 simple C development and AC_STEPMAKE_CXX for C++.
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.
288 Jan Nieuwenhuizen <janneke@gnu.org>
290 Han-Wen Nienhuys <hanwen@cs.uu.nl>