source: git/doc/HACKING.htm @ 7b2830c

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

Updated instructions for building allegro with a djgpp cross-compiler.

git-svn-id: file:///home/survex-svn/survex/trunk@1492 4b37db11-9a0c-4f06-9ece-9ab7cdaee568

  • Property mode set to 100644
File size: 7.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) and autoconf 2.13 or later.  Also sgmltools 2
45or later, docbook-to-man, and w3m are required for building the
46documentation.
47
48<P><A HREF="http://sources.redhat.com/automake/"
49>http://sources.redhat.com/automake</A>
50
51<H2>Building on Non-Unix Platforms</H2>
52
53<H3>DJGPP (MSDOS for 386 or better)</H3>
54
55<P>Currently I build this with a Linux hosted cross-compiler.  I built
56this myself mostly following instructions from:
57
58<P><A
59HREF="http://www.objsw.com/CrossGCC/">http://www.objsw.com/CrossGCC/</A>
60
61<P>I suggest using binutils-2.10 rather than binutils-2.9.1.  The newer version
62includes the patch they supply, so the instructions boil down to this
63sequence of commands:
64
65<pre>
66bash
67mkdir ~/djcross
68cd ~/djcross
69wget ftp://ftp.objsw.com/pub/crossgcc/build-djgpp.sh
70mkdir tars
71cd tars
72# can't get it to build with djcrx203
73wget ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2/old/djcrx202.zip
74# can't get 2.95.3 to build
75wget http://sunsite.org.uk/gnu/gcc/gcc-2.95.2.tar.gz
76# can't get 2.10.1 to build
77wget http://sunsite.org.uk/gnu/binutils/binutils-2.10.tar.gz
78cd ..
79patch -l build-djgpp.sh &lt;&lt;END
8026c26
81&lt; binutils=binutils-2.9.1
82---
83&gt; binutils=binutils-2.10
8497c97
85&lt;       patch -p1 &lt;\$patches/\$binutilsdiff
86---
87&gt;       #patch -p1 &lt;\$patches/\$binutilsdiff
88END
89sh build-djgpp.sh
90</pre>
91
92<P>Then you need to build and install the allegro graphics library:
93
94<P><A
95HREF="http://prdownloads.sourceforge.net/alleg/allegro-3.9.38.tar.gz"
96>http://prdownloads.sourceforge.net/alleg/allegro-3.9.38.tar.gz</A>
97
98<P>And follow the instructions for building using a cross-compiler is
99readme.dj.  In 3.9.38 these boil down to this (the patch turns off use
100of sincos which isn't supported by djgpp 2.02 it seems - you may not
101need it, but it isn't harmful):
102
103<pre>
104cd allegro-3.9.38
105./fix.sh djgpp
106patch -p0 &lt;&lt;END
107--- src/rotate.c~       Thu Sep 13 20:33:59 2001
108+++ src/rotate.c        Fri Oct  5 11:29:55 2001
109@@ -715,7 +715,7 @@
110    if (angle &gt;= 0x800000)
111       angle -= 0x1000000;
112 
113-   #ifdef ALLEGRO_DJGPP
114+   #if 0 /*def ALLEGRO_DJGPP*/
115       /* Faster way to obtain both sin and cos with one call under djgpp.
116         Todo: Do other platforms support this? (not watcom, mingw or msvc)
117       */
118END
119NATIVEPATH=$PATH
120export NATIVEPATH
121PATH=/opt/crosstools/i386-pc-msdosdjgpp/bin:/opt/crosstools/bin:$PATH
122DJDIR=/opt/crosstools/i386-pc-msdosdjgpp
123export DJDIR
124CROSSCOMPILE=1
125export CROSSCOMPILE
126make
127make install
128PATH=$NATIVEPATH
129</pre>
130
131<P>Building Survex under DOS in a native djgpp environment will require
132some tinkering.  Best bet is either to install bash and use the current
133configure script, or perhaps simpler to modify miniam.pl to generate a
134suitable makefile.  I'm happy to help if you want to try this, and
135I'll incorporate patches provided they're fairly clean.
136
137<H3>Mingw (MS Windows)</H3>
138
139<P>Currently I build this with a Linux hosted cross-compiler.  I use
140the packaged cross-compiler in the debian testing/unstable distribution.
141You can probably install these on other distributions using alien to
142convert them to RPMs or similar.  Alternatively, before that
143I used to use pre-built binaries for gcc 2.95.2 obtained from:
144
145<P><A HREF="http://www.devolution.com/~slouken/SDL/Xmingw32/"
146>http://www.devolution.com/~slouken/SDL/Xmingw32/</A>
147
148<P>Building on Windows in a native mingw environment will probably
149require tinkering.  Best bet is probably to install bash and use the
150current configure script.  I'm happy to help if you want to try this,
151and I'll incorporate patches provided they're fairly clean.
152
153<P>Building on Windows with MSVC/BorlandC/Watcom/... is likely to be more
154work, but could be a worthwhile project.  I'd suggest patching the
155perl script miniam.pl to generate a suitable makefile.  Again, send
156patches if you get this to work.
157
158<H3>MSDOS for 286 and earlier (BorlandC)</H3>
159
160<P>Wookey currently builds this with a rather elderly BorlandC++ 3.1.
161BorlandC++ 5.5 can be downloaded for free, but it appears to only compile to
16232 bit code.  You can also download TurboC version 2, which might do the job
163(I've not tried yet).
164
165<P>You can build a suitable source archive for this version using
166`make alien_src_zip' on the source distribution on a Unix box (you need to
167have run `./configure' first).
168
169<H3>RISC OS</H3>
170
171<P>We now build this with Acorn C V5.  It will probably still build with
172Acorn C V4.  You also need to get and install OSLib from:
173
174<P><A HREF="http://www.arcade.demon.co.uk/oslib/homepage.html"
175>http://www.arcade.demon.co.uk/oslib/homepage.html</A>
176
177<P>You can build a suitable source archive for compiling the RISC OS version by
178running `make alien_src_zip' on the source distribution on a Unix box (you
179need to have run `./configure' first).  However for this you'll need a
180specially tweaked version of zip to create the zip file with the correct
181RISC OS file types. I can supply this on request.  You need to put it in the
182top level of the source tree and call it `zip-magic'.
183
184<P>You'll probably need to use Acorn's Make Utility (`amu') to build - the GNU
185make 1.02 port doesn't seem up to the job.
186
187<P>To build, create a fresh directory (or empty one) and unpack the contents of
188srcN_NN.zip into it (using !SparkFS or similar).  Then double-click on
189`!ObeyMe' in the unpacked directory to rename the source files into c and h
190subdirectories.  Then double-click on `!MakeMe' to build survex.
191
192
193<H2>SURVEXHOME environmental variable</H2>
194
195<P>Survex needs various support files.  Under UNIX the path to the
196support files needs to be built into the programs, but this causes a
197problem if the support files need to be installed elsewhere for some
198reason and the programs can't be rebuilt.  To get around this problem,
199you can define an environmental variable SURVEXHOME to point to a
200directory in which to look for support files.
201
202<P>This mechanism may sometimes useful on other operating systems.
203
204<P>Under UNIX, use "setenv SURVEXHOME /home/user/survex" (csh)
205or "SURVEXHOME=/home/user/survex ; export SURVEXHOME" (sh).
206
207<P>For DOS, put SET SURVEXHOME=C:\SURVEX in your AUTOEXEC.BAT file
208
209<P>For RISC OS put *Set SURVEXHOME ADFS::4.$.Survex.!Survex into your
210Boot !Run or !DeskTop
211
212</BODY></HTML>
Note: See TracBrowser for help on using the repository browser.