]> git.saurik.com Git - wxWidgets.git/blob - docs/mgl/install.txt
use WX_DEFINE_ARRAY_PTR for anarray of pointers (fixes Sun CC warning)
[wxWidgets.git] / docs / mgl / install.txt
1 wxWidgets 2.6.2 for MGL installation
2 ------------------------------------
3
4 IMPORTANT NOTE:
5
6 If you experience problems installing, please re-read these
7 instructions and other related files (todo.txt, bugs.txt and
8 osname.txt for your platform if it exists) carefully before
9 mailing wxwin-users or the author. Preferably, try to fix the
10 problem first and then send a patch to the author.
11
12 When sending bug reports tell us what version of wxWidgets you are
13 using (including the beta) and what compiler on what system. One
14 example: wxMGL 2.6.2, gcc 2.95.3, Redhat 7.0
15
16 First steps
17 -----------
18
19 - Download SciTech MGL library (version 5.0) from http://www.scitechsoft.com.
20 The downloads page is here (you need MGL version 5.0beta7 or newer):
21 http://scitechsoft.com/products/dev/mgl_download/mgl_down.html
22
23 Install MGL according to provided instructions. In particular, make sure that
24 MGL_ROOT and NUCLEUS_PATH environment variables are set before attempting to
25 build wxMGL.
26
27 Make sure you installed all MGL components, including the "fonts" package
28 (it's called mgl50b7-font.tar.gz in Linux version). It is important to have
29 SciTech's basic fonts in $(MGL_ROOT)/fonts directory (you may want to add
30 Arial TrueType font for better output quality) and basic cursors in
31 $(MGL_ROOT)/cursors. wxMGL depends on their presence.
32
33 - Download wxMGL-x.y.z.tgz, where x.y.z is the version number.
34 Download documentation in a preferred format, such as
35 wxWidgets-HTML.zip or wxWidgets-PDF.zip.
36
37 - Make a directory such as ~/wx and unarchive the files into this
38 directory.
39
40 - It is recommended that you install bison and flex; using yacc
41 and lex may require tweaking of the makefiles.
42
43 - You can now use configure or makefiles to build wxWidgets and the samples.
44 In case of problems, please use GNU make.
45
46
47 COMPILING
48 =========
49
50 Following systems are supported by wxMGL so far:
51 - Unix (Linux etc.)
52 - MS-DOS (DJGPP and Watcom compilers)
53
54
55 * Compiling using configure
56 ----------------------------
57
58 These instructions apply to installation on a Unix system (such as Linux). Please
59 see bellow for information on using configure on non-Unix platforms.
60
61 If you compile wxWidgets on Linux for the first time and don't like to read
62 install instructions just do (in the base dir):
63
64 > ./configure --with-mgl
65 > make
66 > su <type root password>
67 > make install
68 > ldconfig
69 > exit
70
71 Afterwards you can continue with
72
73 > make
74 > su <type root password>
75 > make install
76 > ldconfig
77 > exit
78
79 If you want to remove wxWidgets on Unix you can do this:
80
81 > su <type root password>
82 > make uninstall
83 > ldconfig
84 > exit
85
86 You can set many options to configure. Type
87
88 > ./configure --help
89
90 and you will get a list of supported options.
91
92
93 * Using wxMGL library built with configure
94 -------------------------------------------
95
96 'make install' will install wx-config script that can (and should) be used
97 to get compiler flags that are needed to build your program. wx-config --cxxflags
98 will output necessary C++ compiler flags and wx-config --libs will list all
99 needed libraries. See an example of wxWidgets application makefile:
100
101 minimal: minimal.o
102 $(CC) -o minimal minimal.o `wx-config --libs`
103
104 minimal.o: minimal.cpp mondrian.xpm
105 $(CC) `wx-config --cxxflags` -c minimal.cpp -o minimal.o
106
107
108 * Using configure to build MS-DOS version
109 ------------------------------------------
110
111 Even though configure is a Unix script, you can use it to build MS-DOS version
112 of the wxMGL library. There are two possible ways to achieve this: you can
113 either cross-compile from Unix or compile natively. Either way you will needed
114 the DJGPP port of GCC compiler freely available from:
115 http://www.delorie.com/djgpp/getting.html
116
117 Scitech MGL must be compiled natively, and to do this you will need to download
118 the following files (from the current/v2 and current/v2gnu directories). You
119 should get the latest versions available rather than the exact versions shown
120 below, they are just an example of what to look for:
121
122 djdev203.zip B 1,530,778 020811 DJGPP development kit 2.03
123 bnu2161b.zip B 3,483,132 050708 GNU Binutils 2.16.1 for DJGPP V2
124 gcc344b.zip B 3,772,211 050527 GNU GCC 3.4.4 for DJGPP V2
125 gpp344b.zip B 4,026,725 050527 GNU C++ Compiler 3.4.4 for DJGPP V2
126
127 If you want to build wxMGL natively using the DJGPP compiler, you will have to
128 install a couple of Unix utilities. I think the following is the minimum that
129 will work:
130
131 bsh204b.zip B 454,308 020106 GNU Bash shell 2.04 for DJGPP V2
132 fil41b.zip B 1,738,170 030830 GNU fileutils 4.1 for DJGPP V2
133 find41b.zip B 306,826 010505 GNU findutils 4.1 for DJGPP V2
134 grep24b.zip B 254,997 000116 GNU Grep 2.4 for DJGPP V2
135 mak3791b.zip B 272,798 020106 GNU Make 3.79.1 for DJGPP V2
136 sed414b.zip B 159,920 050331 GNU Sed 4.1.4 for DJGPP V2
137 shl2011b.zip B 1,195,021 020419 GNU sh-utils 2.01 for DJGPP V2
138
139 You'll probably also want a debugger:
140 gdb611b.zip B 1,585,648 040629 GNU GDB Debugger 6.1.1 for DJGPP V2
141
142 And maybe some of these:
143 faq230b.zip B 679,865 000203 FAQ 2.30 for DJGPP v2.03
144 dif281b.zip B 402,859 040911 GNU Diffutils 2.8.1 for DJGPP V2
145 gwk314b.zip B 968,667 050321 GNU Awk 3.1.4 for DJGPP V2
146 gzip135b.zip B 146,138 041215 GNU gzip 1.3.5 for DJGPP V2
147 lss374b.zip B 199,805 020405 GNU Less 374 for DJGPP V2
148 pat254b.zip B 114,250 040326 GNU Patch 2.5.4 for DJGPP V2
149 tar112ab.zip B 236,427 000305 GNU Tar 1.12a for DJGPP V2
150 whic211b.zip B 86,296 000911 GNU which 2.11 for DJGPP V2
151
152 The system you compile on must support long file names. You can use Windows 9x
153 or Windows 2000/XP or later. For example:
154
155 C:\>set MGL_ROOT=c:/scitech
156 C:\>set DJGPP=c:/djgpp/djgpp.env
157 C:\>PATH=c:\djgpp\bin
158 C:\>set PS1=\w\$
159 C:\>bash
160 c:/$ mkdir build
161 c:/$ cd build
162 c:/build$ ../wxWidgets/configure
163 c:/build$ make
164 c:/build$ cd samples/minimal
165 c:/build/samples/minimal$ make
166
167 Cross-compilation is very easy. It works like ordinary compilation with
168 configure, you only have to specify the target:
169
170 > ./configure --with-mgl --build=i586-linux --host=i586-pc-msdosdjgpp
171 > make
172
173 For this to work, you must have installed a cross compiler on your system. Ready
174 made binaries are not available for very many systems, so usually this means you
175 must obtain the djgpp sources and compile them yourself.
176
177 NetBSD does have a binary package which can be installed with:
178 # pkg_add cross-i386-msdosdjgpp
179
180 You can also try asking on the wx-dev mailing list. If someone else has already
181 built a cross-compiler for you platform they may be willing to send you the
182 binaries.
183
184
185 * Building wxMGL for MS-DOS using Watcom C/C++
186 -----------------------------------------------
187
188 You will need Watcom C/C++ compiler version 11 or newer (Watcom is going to be
189 OpenSourced by SciTech, check out http://www.openwatcom.org).
190
191 1. Edit $(WXDIR)\include\wx\univ\setup.h to suit your needs (in same way as you
192 do when compiling wxMSW).
193
194 2. Go to $(WXDIR)\src\mgl and run
195 > wmake -f makefile.wat all
196
197 3. You can compile the samples by typing 'wmake -f makefile.mgl all' in sample
198 directory if this file is available. If it is not, copy makefile.wat to
199 makefile.mgl and replace the line that says
200
201 !include $(WXDIR)\src\makeprog.wat
202
203 with
204
205 !include $(WXDIR)\src\mgl\makeprog.wat
206
207
208 Compilation notes for MGL 5.1
209 -----------------------------
210
211 The mvis library doesn't compile with current versions of gcc. However wxMGL
212 does not use this part of MGL, so it can be taken out of the compile, e.g.:
213
214 --- scitech/src/makefile.orig 2004-04-15 20:36:32.000000000 +0100
215 +++ scitech/src/makefile 2005-04-26 01:50:12.000000000 +0100
216 @@ -88,7 +88,7 @@
217
218 # Target to build libraries for one compiler for SciTech MGL Graphics Library
219
220 -all_mgl: $(T_PM) $(T_GCONSOLE) $(T_SNAP) $(T_TECH) $(T_MVIS) $(T_FIXED) \
221 +all_mgl: $(T_PM) $(T_GCONSOLE) $(T_SNAP) $(T_TECH) $(T_FIXED) \
222 $(T_GM) $(T_GLUT) $(T_MGL)
223 @$(ECHO) =============================================================================
224 @$(ECHO) DONE: Single compiler MGL build completed successfully!
225
226 The dos version of _lztimer.asm can't be assembled by the GNU assember. A
227 newer version is available from Scitech, a patch between the version in MGL
228 5.1 and the newer version is included below:
229
230 --- scitech/src/pm/dos/_lztimer.asm.orig 2004-04-15 20:36:33.000000000 +0100
231 +++ scitech/src/pm/dos/_lztimer.asm 2005-04-26 18:39:57.000000000 +0100
232 @@ -4,11 +4,11 @@
233 ;*
234 ;* ========================================================================
235 ;*
236 -;* Copyright (C) 1991-2002 SciTech Software, Inc. All rights reserved.
237 +;* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
238 ;*
239 ;* This file may be distributed and/or modified under the terms of the
240 -;* GNU Lesser General Public License version 2.1 as published by the Free
241 -;* Software Foundation and appearing in the file LICENSE.LGPL included
242 +;* GNU General Public License version 2.0 as published by the Free
243 +;* Software Foundation and appearing in the file LICENSE.GPL included
244 ;* in the packaging of this file.
245 ;*
246 ;* Licensees holding a valid Commercial License for this product from
247 @@ -288,8 +288,8 @@
248 ; Convert the BIOS time to microseconds
249
250 @@CalcBIOSTime:
251 - mov ax,[WORD EndBIOSCount]
252 - sub ax,[WORD StartBIOSCount]
253 + mov ax,[EndBIOSCount]
254 + sub ax,[StartBIOSCount]
255 mov dx,54925 ; Number of microseconds each
256 ; BIOS count represents.
257 mul dx
258 @@ -352,17 +352,17 @@
259 ; See if more than an hour passed during timing. If so, notify the user.
260
261 @@CheckForHour:
262 - mov ax,[WORD StartBIOSCount+2]
263 - cmp ax,[WORD EndBIOSCount+2]
264 + mov ax,[StartBIOSCount+2]
265 + cmp ax,[EndBIOSCount+2]
266 jz @@CalcBIOSTime ; Hour count didn't change, so
267 ; everything is fine
268
269 inc ax
270 - cmp ax,[WORD EndBIOSCount+2]
271 + cmp ax,[EndBIOSCount+2]
272 jnz @@TestTooLong ; Two hour boundaries passed, so the
273 ; results are no good
274 - mov ax,[WORD EndBIOSCount]
275 - cmp ax,[WORD StartBIOSCount]
276 + mov ax,[EndBIOSCount]
277 + cmp ax,[StartBIOSCount]
278 jb @@CalcBIOSTime ; a single hour boundary passed. That's
279 ; OK, so long as the total time wasn't
280 ; more than an hour.
281 @@ -384,8 +384,8 @@
282 ; Convert the BIOS time to microseconds
283
284 @@CalcBIOSTime:
285 - mov ax,[WORD EndBIOSCount]
286 - sub ax,[WORD StartBIOSCount]
287 + mov ax,[EndBIOSCount]
288 + sub ax,[StartBIOSCount]
289 mov dx,54925 ; Number of microseconds each
290 ; BIOS count represents.
291 mul dx
292
293
294 Bug reports
295 -----------
296
297 Please send bug reports with a description of your environment,
298 compiler and the error message(s) to the wxwin-developers mailing list at:
299
300 wx-dev@lists.wxwindows.org
301
302 Vaclav Slavik, Julian Smart, Robert Roebling and Vadim Zeitlin, February 2002.