blob: 4b104d4fe22a6b33e6315fb359fb26a168d5fcc6 [file] [log] [blame]
Christian Eglif70f4e02011-01-03 15:09:06 +00001This HACKING file describes the development environment. -*- org -*-
Christian Egli5510e4a2009-11-05 09:55:30 +00002
Christian Eglif70f4e02011-01-03 15:09:06 +00003 Copyright (C) 2008, 2009, 2011 ViewPlus Technologies, Inc. and JJB
Christian Egli5510e4a2009-11-05 09:55:30 +00004 Software, Inc.
5
6 Copying and distribution of this file, with or without modification,
7 are permitted in any medium without royalty provided the copyright
8 notice and this notice are preserved.
Christian Eglieddc4662009-03-09 13:27:20 +00009
10This file attempts to describe the maintainer-specific notes to follow
11when hacking liblouis.
12
Christian Egli5510e4a2009-11-05 09:55:30 +000013* Developing
14** Where to get it
15The development sources are available through anonymous svn at Google
16Code:
17
18 http://code.google.com/p/liblouis/
19
20** Build requirements
21This distribution uses Automake, Autoconf, and Libtool. If you are
22getting the sources from svn (or change configure.ac), you'll need to
23have these tools installed to (re)build. Optionally (if you want to
24generate man pages) you'll also need help2man. All of these programs
25are available from ftp://ftp.gnu.org/gnu.
26
27** Gnulib
28This distribution also uses Gnulib (http://www.gnu.org/software/gnulib)
29to share common files, with the files being checked in to svn. If you
30want to update from the current gnulib, install gnulib, and then run
31 gnulib-tool --import
32in the top-level directory.
33
34For the record, the first time invocation was
35 gnulib-tool --import --lib=libgnu --source-base=gnulib \
36 --m4-base=gnulib/m4 --aux-dir=build-aux --libtool \
37 --macro-prefix=gl getopt-gnu progname version-etc
38More modules might have been added since. The currently-used gnulib
39modules and other gnulib information are recorded in
40gnulib/m4/gnulib-cache.m4. Given a source checkout of gnulib, you can
41update the files with gnulib-tool --import.
42
43** How to build
Christian Egli81b04812009-11-05 11:07:17 +000044After getting the sources from svn, with
45
46 svn checkout http://liblouis.googlecode.com/svn/trunk/ liblouis
47
48and installing the tools above, change to the liblouis directory and
49and bootstrap the project with the following command
50
51 ./autogen.sh
52
53to do a fresh build. Then run configure as usual:
54
55 ./configure
56
57You have the choice to compile liblouis for either 16- or 32-bit
58Unicode. By default it is compiled for the former. To get 32-bit
59Unicode run configure with --enable-ucs4 .
60
61After running configure run "make" and then "make install". You must
62have root privileges for the installation step.
Christian Egli5510e4a2009-11-05 09:55:30 +000063
Christian Eglif70f4e02011-01-03 15:09:06 +000064** How to debug
65Starting the programs under the tools directory within gdb is a little
66tricky as they are linked with libtool. See the info page of libtool
67for more information. To start lou_checktable for table wiskunde.ctb
68for example you'd have to issue the following commands:
69
70 $ libtool --mode=execute gdb ./tools/lou_checktable
71 (gdb) run tables/wiskunde.ctb
72
Christian Egli35f4aeb2010-08-19 11:58:07 +000073** How to build for win32
74Use the mingw win32 cross compiler as follows:
75
76 ./configure --build i686-pc-linux-gnu --host i586-mingw32msvc
77 make
78
79At the moment you need to tweak the source some to get it to work.
80Delete the lines AC_FUNC_MALLOC and AC_FUNC_REALLOC from configure.ac
81
Christian Eglieddc4662009-03-09 13:27:20 +000082* Release Procedure
83These steps describe what a maintainer does to make a release; they
84are not needed for ordinary patch submission.
85
86** Set the version number
87Update the version number in NEWS (with version, date, and release
88type), ChangeLog and configure.ac.
89
90** Commit and tag
91Commit the changes and tag this version
92
93 svn cp https://liblouis.googlecode.com/svn/trunk \
94 https://liblouis.googlecode.com/svn/tags/liblouis_1_3_8
95
96If you know the exact version number that needs to be tagged use
97
98 svn cp https://liblouis.googlecode.com/svn/trunk \
99 https://liblouis.googlecode.com/svn/tags/liblouis_1_3_8 -r 109
100
101** Make the release
102Check out a clean copy in a different directory, like /tmp. Run
103autogen.sh and configure with no special prefixes. Run make distcheck.
104This will make sure that all needed files are present, and do a
105general sanity check. Run make dist. This will produce a tarball.
106
Christian Egli9a3b3ce2009-05-27 13:46:37 +0000107 ./autogen.sh && ./configure && make && make distcheck && make dist
Christian Eglieddc4662009-03-09 13:27:20 +0000108
109** Upload
110Upload tarball to Google project page, tag as "featured". This will
111put the link on the main project page. Remove "featured" tag from
112previous tarball release.
113
Christian Egli2ed702e2009-03-12 13:06:39 +0000114** Online documentation
115The online documentation is hosted out of subversion of the Google
116code site. To check it out
117
118 svn co https://liblouis.googlecode.com/svn/documentation \
119 liblouis-online-documentation
120
121then move the latest built documentation into this directory and check
122it in
123
124 cd liblouis-online-documentation
125 cp ../liblouis/doc/liblouis.html .
126 svn ci liblouis.html -m "Update online documentation"
127
Christian Eglieddc4662009-03-09 13:27:20 +0000128** Announce
129Send an announcement to the liblouis list
130liblouis-liblouisxml@freelists.org. See ANNOUNCEMENT for an example.
131
132** Other web updates
133Update the Google project page. Add the current NEWS to the front
134page.
135
136Also update the page on freshmeat (http://freshmeat.net/projects/liblouis/).
137
138