source: git/doc/HACKING.htm @ 5dc3775

RELEASE/1.2debug-cidebug-ci-sanitisersfaster-cavernloglog-selectstereostereo-2025walls-datawalls-data-hanging-as-warningwarn-only-for-hanging-survey
Last change on this file since 5dc3775 was d6a770d, checked in by Olly Betts <olly@…>, 12 years ago

doc/HACKING.htm: Document how to configure wxWidgets 3.0.0 for mingw
cross-build.

  • Property mode set to 100644
File size: 4.4 KB
Line 
1<HTML><HEAD>
2<TITLE>Survex Hacker's Guide</TITLE>
3<STYLE type="text/css"><!--
4BODY, TD, CENTER, UL, OL {font-family: sans-serif;}
5-->
6</STYLE>
7</HEAD><BODY BGCOLOR=white TEXT=black>
8<H1>Hacking Survex</H1>
9
10<p>(That's hacking in the "tinkering with code" sense, not in the
11"breaking into other people's computer systems" sense).
12
13<p>This is currently a random collection of notes that need to be written
14down while I remember.  With time it should evolve into a more
15coherent document.  If you have any questions which this should answer
16but doesn't then ask me and I'll add them.
17
18<H2>Network code debugging</H2>
19
20<P>You can pick which network simplifications are attempted using "-z"
21with an argument listing code letters.  So:
22
23<ul>
24<li>-z=    no special simplifications (articulation still performed)
25<li>-z=l   remove "lollipops"
26<li>-z=p   remove parallel legs
27<li>-z=d   convert deltas to stars
28</ul>
29
30<P>And you can combine these in any combination:
31
32<ul>
33<li>-z=lp  remove "lollipops" and parallel legs
34<li>-z=lpd remove "lollipops" and parallel legs; convert deltas to stars
35</ul>
36
37<P>"-z=lpd" is the default (in 0.99 at least - more transformations may
38conceivably be added in future, although the simple common cases are
39already covered).
40
41<H2>Developing on Unix Platforms</H2>
42
43<P>You'll need automake 1.5 or later (earlier versions don't support
44per-executable CFLAGS; 1.6 has been tested and works, but wasn't a
45very stable release - automake 1.6.1 is a better bet)
46and autoconf 2.50 or later (autoconf 2.52, 2.53 and 2.64 have all
47been used successfully).
48
49<P>For building the documentation you'll need sgmltools 2 or later,
50jadetex, docbook-to-man, and w3m.
51
52<P>And for building unifont.pixelfont, you'll need unifont installed.
53
54<P>On Debian, you can install the required packages using:
55
56<pre>
57sudo apt-get install sgmltools-lite jadetex docbook-to-man w3m unifont
58</pre>
59
60<H2>Building on Non-Unix Platforms</H2>
61
62<H3>Mingw (Microsoft Windows)</H3>
63
64<P>Currently I build this with a Linux hosted cross-compiler.  I use
65the packaged cross-compiler in the debian testing/unstable distribution:
66
67<code>
68sudo apt-get install mingw32
69</code>
70<!-- g++-mingw-w64 -->
71
72<p>
73I then install the various libraries by compiling from source.  For wxWidgets
743.0.0, I configure with:
75</p>
76
77<code>
78./configure --prefix=/usr/i586-mingw32msvc --host i586-mingw32msvc --with-msw --with-opengl --enable-display --disable-threads --disable-shared
79</code>
80
81<P>Building on Windows in a native mingw environment will probably
82require tinkering.  Best bet is probably to install bash and use the
83current configure script.  I'm happy to help if you want to try this,
84and I'll incorporate patches provided they're fairly clean.
85
86<H2>Microsoft Windows Installer Builder</H2>
87
88<P>We use <A HREF="http://www.jrsoftware.org/isinfo.php">InnoSetup</A> to
89build the MS Windows Installer.  Survex 1.2.8 was built using InnoSetup
905.5.3 (non-Unicode version, so that the installer works on older versions
91of Microsoft Windows).
92
93<P>Here are some random notes:
94
95<H3>Packages Needed</H3>
96
97<P>On Debian, the commands to install wine vary depending on the architecture
98you're running - to check this use:
99
100<pre>
101dpkg-architecture -qDEB_HOST_GNU_CPU
102</pre>
103
104<H4>For i386</H4>
105
106<pre>
107sudo apt-get install wine wx2.8-i18n
108</pre>
109
110<H4>For x86_64</H4>
111
112<P>You'll need to enable multi-arch and install the i386 packages of wine:
113
114<pre>
115sudo dpkg --add-architecture i386
116sudo apt-get update
117sudo apt-get install wine wine-bin:i386 wx2.8-i18n
118</pre>
119
120<H4>Common</H4>
121
122<P>And then run:
123
124<pre>
125wine ~/Downloads/isetup-5.5.3.exe
126</pre>
127
128<H3>Translations</H3>
129
130<P>In addition to the translations included with InnoSetup as standard, we also
131add these, which you can find in the <code>lib</code> subdirectory of Xapian's
132source tree:
133
134<UL>
135<li>ChineseSimplified.isl (Unofficial translation; for 5.5.3+)
136<li>ChineseTraditional.isl (Candidate official translation; for 5.5.0+)
137<li>EnglishGB.isl (Unofficial translation, done by Olly; for 5.5.3+)
138<li>Indonesian.isl (Unofficial translation; for 5.5.3+)
139<li>Romanian.isl (Unofficial translation; for 5.5.3+)
140<li>Slovak.isl (Unofficial translation; for 5.5.3+)
141</UL>
142
143<H3>survex.iss</H3>
144
145<P>This file is generated by configure (from the template survex.iss.in).
146We could instead have a static survex.iss which uses #include to pull in
147a file with the Survex version info in, but the current method works well
148enough so we'll stick with it for now (I suspect #include was introduced since
149we started using InnoSetup).
150
151</BODY></HTML>
Note: See TracBrowser for help on using the repository browser.