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