source: git/doc/HACKING.htm @ 804dfd9

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 804dfd9 was fa42426, checked in by Olly Betts <olly@…>, 23 years ago

aven: cleaned up plotting of crosses, special points, and highlighted points;
measuring line now snaps to the nearest point to the mouse pointer, not just
*a* point near the mouse pointer.

printps/printhpgl: Fixed --skip-blanks which would incorrectly skip non-blank
pages on rare occasions.

cavern: implemented "*units clino percent".

cavern: added error if the *units factor is zero (e.g. "*units tape 0 feet").

cavern: removed the ill-thought-out and never implemented LENGTHOUTPUT
and ANGLEOUTPUT quantities.

(Unix version): uninstalled binaries now use the path they are run with to
find support files, which means SURVEXHOME is no longer required, and has
been removed.

Rearranged messages a little to remove a few cavern messages in the middle
of the aven ones.

Removed a few needless inclusions of header files, and unused #define-s.

compile_error_skip() added to do compile_error() then skipline().

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

  • Property mode set to 100644
File size: 6.3 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)
45and autoconf 2.50 or later (for AC_ARG_VAR).
46There seem to be problems with trying to use autoconf 2.53 - autoconf 2.52
47is known to work.
48
49<P>For building the documentation you'll need sgmltools 2 or later,
50docbook-to-man, and w3m.
51
52<H2>Building on Non-Unix Platforms</H2>
53
54<H3>DJGPP (MSDOS for 386 or better)</H3>
55
56<P>Currently I build this with a Linux hosted cross-compiler.  I built
57this myself mostly following instructions from:
58
59<P><A
60HREF="http://www.objsw.com/CrossGCC/">http://www.objsw.com/CrossGCC/</A>
61
62<P>I suggest using binutils-2.10 rather than binutils-2.9.1.  The newer version
63includes the patch they supply, so the instructions boil down to this
64sequence of commands:
65
66<pre>
67bash
68mkdir ~/djcross
69cd ~/djcross
70wget ftp://ftp.objsw.com/pub/crossgcc/build-djgpp.sh
71mkdir tars
72cd tars
73# can't get it to build with djcrx203
74wget ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2/old/djcrx202.zip
75# can't get 2.95.3 to build
76wget http://sunsite.org.uk/gnu/gcc/gcc-2.95.2.tar.gz
77# can't get 2.10.1 to build
78wget http://sunsite.org.uk/gnu/binutils/binutils-2.10.tar.gz
79cd ..
80patch -l build-djgpp.sh &lt;&lt;END
8126c26
82&lt; binutils=binutils-2.9.1
83---
84&gt; binutils=binutils-2.10
8597c97
86&lt;       patch -p1 &lt;\$patches/\$binutilsdiff
87---
88&gt;       #patch -p1 &lt;\$patches/\$binutilsdiff
89END
90sh build-djgpp.sh
91</pre>
92
93<P>Then you need to build and install the
94<A HREF="http://www.talula.demon.co.uk/allegro/">Allegro graphics library</A>:
95
96<P><A
97HREF="http://prdownloads.sourceforge.net/alleg/allegro-4.0.1.tar.gz"
98>http://prdownloads.sourceforge.net/alleg/allegro-4.0.1.tar.gz</A>
99
100<P>And follow the instructions for building using a cross-compiler which
101you can find starting from readme.txt.  In 4.0.1 these boil down to:
102
103<pre>
104cd allegro-4.0.1
105./fix.sh djgpp --quick
106NATIVEPATH=$PATH
107export NATIVEPATH
108DJDIR=/opt/crosstools/i386-pc-msdosdjgpp
109export DJDIR
110PATH=$DJDIR/bin:/opt/crosstools/bin:$PATH
111CROSSCOMPILE=1
112export CROSSCOMPILE
113make
114make install
115PATH=$NATIVEPATH
116</pre>
117
118<P>Building Survex under DOS in a native djgpp environment will require
119some tinkering.  Best bet is either to install bash and use the current
120configure script, or perhaps simpler to modify miniam.pl to generate a
121suitable makefile.  I'm happy to help if you want to try this, and
122I'll incorporate patches provided they're fairly clean.
123
124<H3>Mingw (Microsoft Windows)</H3>
125
126<P>Currently I build this with a Linux hosted cross-compiler.  I use
127the packaged cross-compiler in the debian testing/unstable distribution.
128You can probably install these on other distributions using alien to
129convert them to RPMs or similar.  Alternatively, before that
130I used to use pre-built binaries for gcc 2.95.2 obtained from:
131
132<P><A HREF="http://www.devolution.com/~slouken/SDL/Xmingw32/"
133>http://www.devolution.com/~slouken/SDL/Xmingw32/</A>
134
135<P>Building on Windows in a native mingw environment will probably
136require tinkering.  Best bet is probably to install bash and use the
137current configure script.  I'm happy to help if you want to try this,
138and I'll incorporate patches provided they're fairly clean.
139
140<P>Building on Windows with MSVC/BorlandC/Watcom/... is likely to be more
141work, but could be a worthwhile project.  I'd suggest patching the
142perl script miniam.pl to generate a suitable makefile.  Again, send
143patches if you get this to work.
144
145<H3>MSDOS for 286 and earlier (BorlandC)</H3>
146
147<P>Wookey currently builds this with a rather elderly BorlandC++ 3.1.
148BorlandC++ 5.5 can be downloaded for free, but it appears to only compile to
14932 bit code.  You can also download TurboC version 2, which might do the job
150(I've not tried).
151
152<P>You can build a suitable source archive for this version using
153`make alien_src_zip' on the source distribution on a Unix box (you need to
154have run `./configure' first).  Then unzip the src&lt;version&gt;.zip file
155produced on the MSDOS machine and run <code>make.bat</code>.
156
157<H3>RISC OS</H3>
158
159<P>We now build this with Acorn C V5.  It will probably still build with
160Acorn C V4.  You also need to get and install OSLib from:
161
162<P><A HREF="http://www.arcade.demon.co.uk/oslib/homepage.html"
163>http://www.arcade.demon.co.uk/oslib/homepage.html</A>
164
165<P>You can build a suitable source archive for compiling the RISC OS version by
166running `make alien_src_zip' on the source distribution on a Unix box (you
167need to have run `./configure' first).  However for this you'll need a
168specially tweaked version of zip to create the zip file with the correct
169RISC OS file types. I can supply this on request.  You need to put it in the
170top level of the source tree and call it `zip-magic'.
171
172<P>You'll probably need to use Acorn's Make Utility (`amu') to build - the GNU
173make 1.02 port doesn't seem up to the job.
174
175<P>To build, create a fresh directory (or empty one) and unpack the contents of
176srcN_NN.zip into it (using !SparkFS or similar).  Then double-click on
177`!ObeyMe' in the unpacked directory to rename the source files into c and h
178subdirectories.  Then double-click on `!MakeMe' to build survex.
179
180</BODY></HTML>
Note: See TracBrowser for help on using the repository browser.