1 |
GNUstep HOWTO |
2 |
************* |
3 |
|
4 |
Last Update: 22 July 2003 |
5 |
|
6 |
This document explains how to build the different components of the |
7 |
GNUstep core libraries and GNUstep Launchpad. |
8 |
|
9 |
Copyright (C) 1996 - 2002 Free Software Foundation, Inc. |
10 |
|
11 |
Permission is granted to copy, distribute and/or modify this document |
12 |
under the terms of the GNU Free Documentation License, Version 1.1 or |
13 |
any later version published by the Free Software Foundation. |
14 |
|
15 |
Introduction |
16 |
************ |
17 |
|
18 |
This document explains how to build the GNUstep core libraries. The |
19 |
core libraries, along with associated tools and other files provide |
20 |
everything necessary for a working GNUstep system. |
21 |
|
22 |
In order to easily compile and debug GNUstep projects, you will need |
23 |
the GNU Objective-C compiler `GCC' as well as various other GNU |
24 |
packages. |
25 |
|
26 |
You will need at least 80Mb of hard disk space (150Mb prefered) in |
27 |
order to compile the GNUstep core libraries. |
28 |
|
29 |
Summary |
30 |
******* |
31 |
|
32 |
In order to compile the libraries, you need to compile and install |
33 |
the following packages first (if you don't already have them): |
34 |
|
35 |
* gcc (Version 2.95 or greater, 3.0.4 or greater recommended) |
36 |
|
37 |
* GNU make (Version 3.75 or greater) |
38 |
|
39 |
* gdb, if you plan to do any debugging |
40 |
|
41 |
You may also need to install some of the following libraries and |
42 |
packages described below. Most of these packages are optional, but some |
43 |
are required. |
44 |
|
45 |
`ffcall libraries (HIGHLY RECOMMENDED)' |
46 |
This is a library that provides stack-frame handling for |
47 |
NSInvocation and NSConnection. This library is highly recommended. |
48 |
The previous builtin method for stack frame handling is no longer |
49 |
supported and may be removed in the future. ffcall is under GNU |
50 |
GPL. As a special exception, if used in GNUstep or in derivate |
51 |
works of GNUstep, the included parts of ffcall are under GNU LGPL. |
52 |
|
53 |
`libffi library (OPTIONAL)' |
54 |
This is a library that provides stack frame handling for |
55 |
NSInvocation and NSConnection similar to ffcall. However, libffi |
56 |
is not as well tested as ffcall so you should not use it unless |
57 |
you are familiar with potential problems. Use this instead of |
58 |
ffcall. You don't need both. |
59 |
|
60 |
`WindowMaker (Version >= 0.62) (OPTIONAL)' |
61 |
GNUstep and WindowMaker work together to provide a consistant |
62 |
interface. Although it is not required, GNUstep will work much |
63 |
better if you use it with the WindowMaker window manager. In |
64 |
addition, WindowMaker includes some functionality that GNUstep |
65 |
uses that would otherwise not be available. Get WindowMaker from |
66 |
<http://www.windowmaker.org>. |
67 |
|
68 |
`libxml2 (RECOMMENDED)' |
69 |
The libxml library (Version 2) is used to translate some of the |
70 |
documentation for GNUstep and to provide suport for MacOS-X |
71 |
compatible XML-based property-lists. It is recommended but not |
72 |
currently required. |
73 |
|
74 |
`The TIFF library (libtiff) (Version 3.4beta36 or greater) (REQUIRED)' |
75 |
The GUI library uses this to handle loading and saving TIFF images. |
76 |
|
77 |
`openssl (OPTIONAL)' |
78 |
The openssl library is used to provide support for https |
79 |
connections by the NSURL and HSURLHandle classes. This |
80 |
functionality is compiled as a separate bundle since the OpenSSL |
81 |
license is not compatible with GPL, and in the hopes that if |
82 |
someone writes an openssl replacement, it can quickly be used by |
83 |
creating another bundle. |
84 |
|
85 |
`libiconv (OPTIONAL)' |
86 |
Unicode support functions (iconv) come with glibc version 2.1 or |
87 |
greater. If you don't have glibc (try iconv -version), you can get |
88 |
the separate libiconv library from |
89 |
<http://clisp.cons.org/~haible/packages-libiconv.html>. However, |
90 |
neither one is required to use GNUstep. |
91 |
|
92 |
`gnustep-objc package (for gcc version < 3.0 ONLY) (RECOMMENDED)' |
93 |
This is a special version of the Objective-C runtime that include |
94 |
several bug fixes and features that were not in gcc versions |
95 |
previous to 3.0. It is available at |
96 |
<ftp://ftp.gnustep.org/pub/gnustep/libs> which compiles using the |
97 |
GNUstep Makefile package (so you don't have to get the entire gcc |
98 |
dist). Make sure to set the THREADING variable in the GNUmakefile. |
99 |
It's possible to compile the library static (make shared=no) and |
100 |
just copy to the place where the gcc libobjc library is (type gcc |
101 |
-v to get this location). Note you have to install gnustep-make |
102 |
(below) before installing this library. |
103 |
|
104 |
`GDB and Objective-C patch (OPTIONAL)' |
105 |
GDB can be obtained from <ftp://ftp.gnu.org/gnu/gdb>. The patch to |
106 |
make it work better with GNUstep can be obtained from |
107 |
<ftp://ftp.gnustep.org/pub/gnustep/patches> |
108 |
|
109 |
`TeX (OPTIONAL)' |
110 |
You need a TeX implementation, like tetex, to compile some of the |
111 |
documentation (although most of that is available on the web). |
112 |
|
113 |
Compiling and Installing the packages |
114 |
************************************* |
115 |
|
116 |
Get the following individual packages: |
117 |
|
118 |
* gnustep-make |
119 |
|
120 |
* gnustep-base |
121 |
|
122 |
* gnustep-gui |
123 |
|
124 |
* gnustep-back |
125 |
|
126 |
See <http://www.gnustep.org> for information on where to get these |
127 |
packages. |
128 |
|
129 |
Make sure you install all the previously mentioned libraries first |
130 |
before configuring and building GNUstep. |
131 |
|
132 |
You should be able to install these packages as root. |
133 |
|
134 |
For installation on specific systems, read the machine specific |
135 |
instructions at the end of this document or appropriate README files in |
136 |
the gnustep-make Documentation directory (such as README.MingW for |
137 |
Windows). |
138 |
|
139 |
Installing the Core Libraries |
140 |
============================= |
141 |
|
142 |
The GNUstep packages uses the Autoconf mechanism for configuration; |
143 |
it checks some host capabilties which are used by all GNUstep software. |
144 |
To configure just type: |
145 |
|
146 |
./configure |
147 |
|
148 |
The GNUstep makefile package needs a root directory. If the |
149 |
GNUSTEP_SYSTEM_ROOT environment variable is set then configure will |
150 |
determine the root directory from its value (by removing the final |
151 |
/System path component from it). You can also specify the root |
152 |
directory when you run configure with the prefix paramater; the |
153 |
following command makes /usr/local/GNUstep the root directory: |
154 |
|
155 |
./configure --prefix=/usr/local/GNUstep |
156 |
|
157 |
If you do not have the GNUSTEP_SYSTEM_ROOT environment variable set |
158 |
and you do not specify a root directory when running configure, then |
159 |
configure will use /usr/GNUstep as the default root directory. |
160 |
|
161 |
Alternate Library Setup |
162 |
----------------------- |
163 |
|
164 |
Read the installation instructions in the Makefile package (make) |
165 |
for more installation options. Make sure you use the same configuration |
166 |
options when configuring each GNUstep library. |
167 |
|
168 |
Building the Package |
169 |
-------------------- |
170 |
|
171 |
To build the individual packages, use this familiar set of commands |
172 |
for each pacakge (add any additional options you decide upon): |
173 |
|
174 |
./configure |
175 |
make |
176 |
make install |
177 |
|
178 |
Start with the Makefile Pacakge (gnustep-make). After installing |
179 |
gnustep-make you need to execute GNUstep's shell configuration script, |
180 |
as follows: |
181 |
|
182 |
. /usr/GNUstep/System/Makefiles/GNUstep.sh |
183 |
|
184 |
before proceeding any further. |
185 |
|
186 |
NOTE for gcc 2.X or MinGW users: Now install gnustep-objc. Before |
187 |
building gnustep-objc, edit the `GNUmakefile' and set the THREADING |
188 |
variable to the thread library used on your system (usually its posix, |
189 |
but you can leave it at single if you don't need threads). At this point |
190 |
you should probably re-configure, make and install gnustep-make, so it |
191 |
can pick up on any threading information that gnustep-objc provides. |
192 |
|
193 |
Now install gnustep-base, gnustep-gui and finally gnustep-back. |
194 |
|
195 |
NOTE: If you are trying to install the packages without root |
196 |
permission, you may need to change one thing in the base library. Edit |
197 |
the file gnustep-base/Tools/gdomap.h to uncomment the last line and |
198 |
modify the specified port number to a port which you _know_ is not in |
199 |
use on your network. You should only do this if absolutely necessary |
200 |
since making this change will break communications with any systems |
201 |
where an identical change has not been made. Also, the standard gdomap |
202 |
port is the one officially registered with IANA and is reserved for use |
203 |
by gdomap - it should only be changed if you can't get your system |
204 |
administrator to start the gdomap server using it. |
205 |
|
206 |
Additional Installation |
207 |
*********************** |
208 |
|
209 |
Environment Setup |
210 |
================= |
211 |
|
212 |
Add the shell script `GNUstep.sh' located in the Makefile package to |
213 |
your shell startup file (such as `.profile'). For instance, if your |
214 |
GNUSTEP_SYSTEM_ROOT is `/usr/GNUstep/System', |
215 |
|
216 |
. /usr/GNUstep/System/Makefiles/GNUstep.sh |
217 |
|
218 |
in your `.profile' file will work (Note the period at the beginning |
219 |
of the line, and the space between the period and the following path; |
220 |
if your GNUSTEP_SYSTEM_ROOT is different, you need to replace |
221 |
`/usr/GNUstep/System' with your GNUSTEP_SYSTEM_ROOT). It defines |
222 |
environment variables that are needed to find GNUstep files and |
223 |
executables. Users of csh need to use the `GNUstep.csh' script. Read |
224 |
the make package `README' for more info. Some systems, like GNU/Linux |
225 |
have an `/etc/profile.d' directory where scripts can be executed |
226 |
automatically. If you want to set up GNUstep for every user on your |
227 |
system, you can try copying/linking the `GNUstep.sh' there. For csh or |
228 |
tcsh, try |
229 |
|
230 |
source /usr/GNUstep/System/Makefiles/GNUstep.csh |
231 |
|
232 |
GNUstep Home |
233 |
============ |
234 |
|
235 |
Set up your home GNUstep directory. This should be done automatically |
236 |
if you don't do it. This is where user defaults are kept as well as |
237 |
other user configuration files. User installed apps, libraries, etc are |
238 |
also here (if the default user directory is used). |
239 |
|
240 |
cd |
241 |
mkdir GNUstep |
242 |
|
243 |
Time Zone |
244 |
========= |
245 |
|
246 |
Next, set your local time zone. There are four ways to do this, pick |
247 |
one (see |
248 |
`$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-bsae/NSTimeZones/zones' |
249 |
for typical time zones): |
250 |
|
251 |
1. Use the defaults utility to set "Local Time Zone" to your local |
252 |
time zone (defaults is installed with GNUstep in the Tools |
253 |
directory). Type something like "defaults write NSGlobalDomain |
254 |
"Local Time Zone" GB". |
255 |
|
256 |
2. Set the GNUSTEP_TZ environment variable. |
257 |
|
258 |
3. Create the file |
259 |
`$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-base/NSTimeZones/localtime' |
260 |
with the name of the local time zone in it. |
261 |
|
262 |
4. Set the TZ environment variable (this may conflict with other |
263 |
software on your system though). |
264 |
|
265 |
GNUstep deamons |
266 |
=============== |
267 |
|
268 |
Set up your system to execute some GNUstep deamons. If you don't do |
269 |
this, they will be started automatically when you run your first GNUstep |
270 |
app: |
271 |
|
272 |
* gdomap - Put this in a system startup file, like `/etc/rc.local' |
273 |
or `/etc/rc.d/rc.local' (customize for your system) |
274 |
GNUSTEP_SYSTEM_ROOT=/usr/GNUstep/System |
275 |
if [ -f $GNUSTEP_SYSTEM_ROOT/Tools/gdomap ]; then |
276 |
$GNUSTEP_SYSTEM_ROOT/Tools/gdomap |
277 |
fi |
278 |
|
279 |
* gdnc - Start after sourcing `GNUstep.sh' (e.g. in .profile) |
280 |
|
281 |
* gpbs - Same as with gdnc, make sure X-Windows is running. |
282 |
|
283 |
if [ `gdomap -L GDNCServer | grep -c Unable` == 1 ]; then |
284 |
echo "Starting GNUstep services..." |
285 |
gdnc |
286 |
gpbs |
287 |
fi |
288 |
|
289 |
Test Tools and Applications |
290 |
*************************** |
291 |
|
292 |
Test programs for the base library are in `base/Testing'. Example |
293 |
applications are located in the gstep-examples package. To make these, |
294 |
just uncompress and untar this package, cd to the appropriate |
295 |
directory, and type make. You will need to install the GNUstep core |
296 |
libraries first before doing this. |
297 |
|
298 |
To run the examples. Use the openapp utility that is part of the |
299 |
GNUstep makefile package (and stored in `$GNUSTEP_SYSTEM_ROOT/Tools'). |
300 |
Usage is: |
301 |
|
302 |
openapp application [additional arguments to app] |
303 |
|
304 |
Good Luck! |
305 |
|
306 |
Machine Specific Instructions |
307 |
***************************** |
308 |
|
309 |
\input texinfo Below is a list of machines that people have |
310 |
attempted to compile GNUstep on. GNUstep compiles with little or no |
311 |
trouble on many of the more popular operating systems. Some machines |
312 |
marked with _Unstable_ may have some trouble or may not work at all. |
313 |
|
314 |
A recommended compiler is listed for each machine, if known. You |
315 |
should try to use the recommended compiler for compiling GNUstep, as |
316 |
GNUstep is quite complex and tends provoke a lot of errors in some |
317 |
compilers. Even versions newer than the listed compiler may not work, |
318 |
so don't just get the latest version of a compiler expecting it to be |
319 |
better than previous versions. |
320 |
|
321 |
Compiler notes: If a recommended compiler is not listed, take note |
322 |
of the following information before choosing the compiler you use. |
323 |
`egcs or gcc < 2.95' |
324 |
Probably will work, but few people use these now. |
325 |
|
326 |
`gcc 2.95.x' |
327 |
Probably the oldest compiler that GNUstep is regularly tested with. |
328 |
|
329 |
`gcc 2.96' |
330 |
Not an official gcc release. Some versions (Redhat, Mandrake) have |
331 |
problems that prevent GNUstep from being compiled correctly and |
332 |
cause mysterious errors. |
333 |
|
334 |
`gcc 3.0.x' |
335 |
A fairly good compiler. Recommended. |
336 |
|
337 |
`gcc 3.1' |
338 |
Several bugs where introduced in the version. It's probably better |
339 |
to avoid this one, although it might work fine. |
340 |
|
341 |
`gcc 3.2.x' |
342 |
Pretty good. Recommended. |
343 |
|
344 |
If you have compiled GNUstep on a specific machine, please send |
345 |
information about what you needed and any special instructions needed to |
346 |
GNUstep <bug-gnustep@gnu.org>. |
347 |
|
348 |
If your having mysterious trouble with a machine, try compiling |
349 |
GNUstep without optimization. Particularly in the newer GCC compilers, |
350 |
optimization can break some code. The easiest way to do this is when |
351 |
configuring, `CFLAGS="" ./configure'. Or when building, `make |
352 |
OPTFLAG=""'. |
353 |
|
354 |
Also if you manually upgraded gcc and/or make, we recommend reading |
355 |
the documentation at <http://www.LinuxFromScratch.org> for tips on |
356 |
compiling and installing gcc and make. If you had GNUstep previously |
357 |
installed, make sure you completely remove all of it, including |
358 |
installed init scripts. |
359 |
|
360 |
Darwin 6.x/PowerPC (_Unstable!_) |
361 |
================================ |
362 |
|
363 |
`Recommended compiler' |
364 |
gcc 3.2.2 |
365 |
|
366 |
Default compiler has some odd memory(?) related problems. Use the |
367 |
GNU runtime. Download the gcc compiler and configure it with |
368 |
-enable-threads=posix. Usually the installed compiler will produce |
369 |
object files for the NeXT runtime if you don't say gcc |
370 |
-fgnu-runtime. To change this behaviour, edit |
371 |
src-dir/gcc/config/darwin.h: You have to change the word #define |
372 |
in line 73 to #undef. Then the runtime default is gnu. When |
373 |
bootstrapping the compiler a nice working objective C gnu-runtime |
374 |
library (which is a little bit faster than Apple's runtime) will |
375 |
be compiled and installed when make install. To use it, there is |
376 |
one (important) thing left: After installing the compiler, you |
377 |
have to go to install-dir/lib and produce the following dynamic |
378 |
link: ln -s libobjc.a libobjc.dylib This might seem senseless, but |
379 |
it forces the linker to use this library instead of the |
380 |
NeXT-runtime! |
381 |
|
382 |
Make sure to configure gnustep-make with ./configure |
383 |
-with-library-combo=gnu-gnu-gnu if you want to use all the GNUstep |
384 |
libraries. |
385 |
|
386 |
`Extra libs needed' |
387 |
Use libffi (not ffcall). This should be enabled by default in |
388 |
gnustep-base so you don't have to type -enable-libffi |
389 |
|
390 |
`Special Instructions' |
391 |
Debian/DEC-Alpha |
392 |
================ |
393 |
|
394 |
`Recommended compiler' |
395 |
Unknown |
396 |
|
397 |
`Extra libs needed' |
398 |
Unknown |
399 |
|
400 |
`Special Instructions' |
401 |
Unknown |
402 |
|
403 |
FreeBSD 4.x |
404 |
=========== |
405 |
|
406 |
`Recommended compiler' |
407 |
|
408 |
`Extra libs needed' |
409 |
Unknown |
410 |
|
411 |
`Special Instructions' |
412 |
If you're using zsh, some shell variables may not be set correctly |
413 |
when executing GNUstep.sh. Try turing on SH_WORD_SPLIT (e.g. 'zsh |
414 |
-sh-word-split', 'zsh -o shwordsplit', 'zsh -y' or by setting |
415 |
'setopt SH_WORD_SPLIT' in one of zsh's startup files.) |
416 |
|
417 |
For gcc 3.0.4, make WANT_THREADS_SUPPORT=YES |
418 |
|
419 |
For libxml2 2.4.24, make WITHOUT_PYTHON=YES |
420 |
|
421 |
FreeBSD 3.x |
422 |
=========== |
423 |
|
424 |
Compiles "out of the box" on FreeBSD 3.4. |
425 |
|
426 |
`Recommended compiler' |
427 |
gcc 2.95.2 |
428 |
|
429 |
`Extra libs needed' |
430 |
Unknown |
431 |
|
432 |
`Special Instructions' |
433 |
You need to use gmake not make to compile the GNUstep packages. A |
434 |
special port of gdb can be used with the Objective-C patches from |
435 |
<ftp://ftp.pcnet.com/users/eischen/FreeBSD/gdb-4.17-port.tar.gz> |
436 |
|
437 |
The best compiler for GNUstep is the latest release of the GNU |
438 |
Compiler Collection (GCC). You can find it at |
439 |
<http://egcs.cygnus.com/>. |
440 |
|
441 |
If you want to use the native POSIX threads support from `libc_r' |
442 |
pass `--enable-threads=posix' to configure. This is the |
443 |
recommended option as this is the FreeBSD threads package that |
444 |
gives the best results -with others you may be unable to run some |
445 |
examples like `diningPhilosophers'. |
446 |
|
447 |
The whole compilation process can fail if you have another threads |
448 |
library installed so watch out for installed packages like `pth' |
449 |
and such. Besides the support for libc_r, GNUstep will also look |
450 |
for `pth' and `pcthreads', so if you have installed them and they |
451 |
aren't detected prepare to write a nice bug report. |
452 |
|
453 |
This can be done more much easily by using the port version. Just |
454 |
`cd' to `/usr/ports/lang/egcs' and do a `"make WANT_THREADS=yes |
455 |
install"'. Easy. |
456 |
|
457 |
If configure cannot find tiff.h or the tiff library and you have |
458 |
it installed in a non-standard place (even `/usr/local'), you may |
459 |
need to pass these flags to configure: |
460 |
`CFLAGS="-I/usr/local/include"' and `LDFLAGS="-L/usr/local/lib"'. |
461 |
|
462 |
FreeBSD 2.x (_Unstable!_) |
463 |
========================= |
464 |
|
465 |
`Recommended compiler' |
466 |
gcc 2.8.x |
467 |
|
468 |
`Extra libs needed' |
469 |
Unknown |
470 |
|
471 |
`Special Instructions' |
472 |
Only static libraries work on this system. Use /stand/sysinstall |
473 |
to install these packages if you have not already done so: |
474 |
|
475 |
gmake (GNU make) |
476 |
gcc 2.8.x |
477 |
|
478 |
Seems to compile ok, but some tests crash. Possibly due to a |
479 |
performace 'hack' in base. Might be a good idea to upgrade to |
480 |
FreeBSD 3.x. You need to use gmake not make to compile the |
481 |
GNUstep packages. |
482 |
|
483 |
GNU-Linux/Intel (RedHat 5.x, 6.x, and 7.0) |
484 |
========================================== |
485 |
|
486 |
`Recommended compiler' |
487 |
With 5.x, the egcs compiler that comes with RedHat. Later versions |
488 |
may have gcc installed, although 7.0 comes with a snapshot of gcc |
489 |
(called 2.96) which is unsuitable for compiling Objective-C code. |
490 |
For 7.0 you should install the egcs compatibility packages (or an |
491 |
official gcc release). For RedHat 7.2 or later, the default gcc |
492 |
apparently works fine (even if it is 2.96) |
493 |
|
494 |
`Extra libs needed' |
495 |
Unknown |
496 |
|
497 |
`Special Instructions' |
498 |
Make sure you have a decent version of the compiler. Try `cc -v' |
499 |
or `gcc -v' to get the version of the compiler. With 5.x, make |
500 |
sure you set CC=egcs before configuring, as in: |
501 |
|
502 |
export CC=egcs |
503 |
configure .... |
504 |
|
505 |
Since RedHat 5.x also comes standard with an old version of gcc. |
506 |
|
507 |
On RedHat 7.0, configure like this |
508 |
CC=egcs LDFLAGS="-u shmctl@GLIBC_2.2 -L/lib -lc -u getpwuid_r@GLIBC_2.1.2 |
509 |
-L/lib -lc -u getpwnam_r@GLIBC_2.1.2 -L/lib -lc" ./configure |
510 |
|
511 |
GNU-Linux/PowerPC (LinuxPPC, Yellowdog) |
512 |
======================================= |
513 |
|
514 |
`Recommended compiler' |
515 |
The default compiler. gcc-3.x works, but you need a new gdb also |
516 |
to debug. |
517 |
|
518 |
`Extra libs needed' |
519 |
None. |
520 |
|
521 |
`Special Instructions' |
522 |
ffcall or libffi is required for invocations (and DO) to work well. |
523 |
The major problem is sending data with data sizes less than 4 bytes |
524 |
(chars, shorts, etc). |
525 |
|
526 |
Irix 6.5/MIPS |
527 |
============= |
528 |
|
529 |
`Recommended compiler' |
530 |
gcc 3.2.1 |
531 |
|
532 |
To use threads, it's necessary to bootstrap a compiler yourself: |
533 |
configure with -enable-threads=posix, that will work as long as you |
534 |
link EVERY objective C executable with -lpthread, no matter what |
535 |
warnings the irix linker produces! |
536 |
|
537 |
`Extra libs needed' |
538 |
Unknown |
539 |
|
540 |
`Special Instructions' |
541 |
If you cannot link the library because of the very low default |
542 |
limit (20480) for the command line length, then you should either |
543 |
use systune ncargs to increase the value (maximum is 262144) or |
544 |
link the library by hand. No libffi-support: Use ffcall |
545 |
|
546 |
MkLinux/PowerPC (_Obsolete_) |
547 |
============================ |
548 |
|
549 |
This configuration is no longer being tested, but it may still work. |
550 |
|
551 |
`Recommended compiler' |
552 |
egcs-2.90.25 980302 (egcs-1.0.2 prerelease) which comes standard |
553 |
with DR 3. |
554 |
|
555 |
`Extra libs needed' |
556 |
None. |
557 |
|
558 |
`Special Instructions' |
559 |
Comes with a good version of gcc. Seems to compile and install |
560 |
ok, althouth DR3 has an old version of glibc, which requires some |
561 |
workarounds which should be taken care of in the configuration. |
562 |
Not completely tested, so some aspects, particular object |
563 |
invocations and DO may not work properly. |
564 |
|
565 |
If you want threads, you'll probably have to get the latest gcc |
566 |
compiler and glibc library (which has the threads library) and |
567 |
install both. |
568 |
|
569 |
NetBSD |
570 |
====== |
571 |
|
572 |
`Recommended compiler' |
573 |
Unknown |
574 |
|
575 |
`Extra libs needed' |
576 |
libiconv |
577 |
|
578 |
`Special Instructions' |
579 |
See the README.NetBSD file located in the gnustep-make package. |
580 |
|
581 |
Netwinder (_Unstable!_) |
582 |
======================= |
583 |
|
584 |
`Recommended compiler' |
585 |
Build #12 of the system. |
586 |
|
587 |
`Extra libs needed' |
588 |
Unknown |
589 |
|
590 |
`Special Instructions' |
591 |
See <http://www.netwinder.org/~patrix> |
592 |
|
593 |
OpenBSD 2.x (_Unstable!_) |
594 |
========================== |
595 |
|
596 |
`Recommended compiler' |
597 |
Unknown |
598 |
|
599 |
`Extra libs needed' |
600 |
Unknown |
601 |
|
602 |
`Special Instructions' |
603 |
Can only compile with static libraries. Gives a lot of warnings. |
604 |
Try reading the README.NetBSD which might work the same on OpenBSD. |
605 |
|
606 |
OSF Alpha (_Unstable!_) |
607 |
======================== |
608 |
|
609 |
Information is for Version 3.2C |
610 |
|
611 |
`Recommended compiler' |
612 |
egcs-1.1.1/1.1.2, gcc-2.95 |
613 |
|
614 |
`Extra libs needed' |
615 |
Unknown |
616 |
|
617 |
`Special Instructions' |
618 |
Can only compile with static libraries. Compiler may fail when |
619 |
linking executables (e.g. gdnc). Standard ranlib and ar programs |
620 |
are to feable to create libraries. Should use GNU binutils |
621 |
versions. Linker sometimes fails to find symbols, in which case |
622 |
you may need to link with a library twice. For instance, add an |
623 |
extra -lgnustep-gui in ADDTIONAL_TOOL_LIBS in the |
624 |
GNUmakefile(.preamble). |
625 |
|
626 |
Slackware/Intel |
627 |
=============== |
628 |
|
629 |
`Recommended compiler' |
630 |
Unknown. |
631 |
|
632 |
`Extra libs needed' |
633 |
Unknown. |
634 |
|
635 |
`Special Instructions' |
636 |
Unknown. |
637 |
|
638 |
Solaris 2.5.1/Sparc (_Obsolete_) |
639 |
================================ |
640 |
|
641 |
This configuration is no longer being tested, but it may still work. |
642 |
|
643 |
`Recommended compiler' |
644 |
Unknown |
645 |
|
646 |
`Extra libs needed' |
647 |
tiff, Don't use the one in /usr/openwin |
648 |
|
649 |
`Special Instructions' |
650 |
See the Solaris 2.6 section for more instructions. |
651 |
|
652 |
Solaris 2.[67]/Sparc |
653 |
==================== |
654 |
|
655 |
`Recommended compiler' |
656 |
gcc 3.2.1 gcc 2.95.3. Version 2.95.2 has several bugs that GNUstep |
657 |
tickles. gcc 3.04. Not 3.1 - does not compile parts of GNUstep. |
658 |
|
659 |
`Extra libs needed' |
660 |
tiff, Don't use the one in /usr/openwin |
661 |
|
662 |
`Special Instructions' |
663 |
No libffi-support unless you use the patch |
664 |
<http://gcc.gnu.org/ml/java-patches/2002-q3/msg00036.html> (not |
665 |
particularly recommended). |
666 |
|
667 |
Using a POSIX shell (zsh or bash, which should come with Solaris) |
668 |
is highly recommended. In fact, some functions, such as compiling |
669 |
frameworks, will not work without it. |
670 |
|
671 |
Some people have reported problems when using binutils assembler and |
672 |
linker. Using the native Solaris assmebler and linker should work fine. |
673 |
|
674 |
Older Instructions: If you are using threads, make sure the |
675 |
Objective-C runtime (libobjc that comes with gcc) is compiled with |
676 |
threads enabled (This is true by default) AND that it is compiled with |
677 |
the _REENTRANT flag defined (This does not seem to be true by default). |
678 |
Or use the gnustep-objc package. Also make sure THREADS is set to |
679 |
'posix' not 'solaris'. |
680 |
|
681 |
Solaris 2.7/Intel |
682 |
================= |
683 |
|
684 |
`Recommended compiler' |
685 |
Unknown. |
686 |
|
687 |
`Extra libs needed' |
688 |
Unknown |
689 |
|
690 |
`Special Instructions' |
691 |
Make sure there are no -g compiler flags (i.e. compiling with |
692 |
debug=yes might be a problem). Unsure of correct bundle flags - |
693 |
You might need to use the alternate flags listed in target.make, |
694 |
line 989. Also, configuring gnustep-make with |
695 |
`--disable-backend-bundle' might be necessary if you can't get |
696 |
bundles to work. You will probable get a lot of text relocation |
697 |
warnings, which probably can be ignored. See the other Solaris |
698 |
instructions above for more information. |
699 |
|
700 |
Suse 6.x/Intel |
701 |
============== |
702 |
|
703 |
GNUstep has been tested on version 6.2-6.4 of Suse |
704 |
|
705 |
`Recommended compiler' |
706 |
Standard |
707 |
|
708 |
`Extra libs needed' |
709 |
None |
710 |
|
711 |
`Special Instructions' |
712 |
It seems that there is a problem with the default kernel build |
713 |
distributed with Suse which means that the socket binding used by |
714 |
gdnc doesn't work. If you recompile the kernel then it starts |
715 |
working. |
716 |
|
717 |
Suse/Intel |
718 |
========== |
719 |
|
720 |
GNUstep has been tested on version 7.0, 8.0, 8.1, and 8.2 of Suse |
721 |
|
722 |
`Recommended compiler' |
723 |
Standard. gcc2.95.x, gcc3.0.x, 3.1 and 3.2 work, but 2.95 is |
724 |
faster. Compile with -threads-enabled (non-standard). |
725 |
|
726 |
`Extra libs needed' |
727 |
None |
728 |
|
729 |
`Special Instructions' |
730 |
None. |
731 |
|
732 |
Suse 7.x/PPC |
733 |
============ |
734 |
|
735 |
GNUstep has been tested on version 7.0 of Suse |
736 |
|
737 |
`Recommended compiler' |
738 |
Standard. gcc2.95.x, gcc3.0.x and gc3.1 work, but 2.95 is faster. |
739 |
Compile with -threads-enabled (non-standard). |
740 |
|
741 |
`Extra libs needed' |
742 |
None |
743 |
|
744 |
`Special Instructions' |
745 |
Unixware-2.1.3/Intel |
746 |
==================== |
747 |
|
748 |
`Recommended compiler' |
749 |
Unknown |
750 |
|
751 |
`Extra libs needed' |
752 |
Unknown |
753 |
|
754 |
Special Instructions for GNUstep installation on Unixware 2.1 systems |
755 |
|
756 |
1 |
757 |
Tune the kernel to increase the argument space so that we can pass |
758 |
long command-line argument strings to processes (which the |
759 |
makefiles do) (/etc/conf/bin/idtune ARG_MAX 102400) |
760 |
|
761 |
2 |
762 |
Install raft of the latest GNU software |
763 |
|
764 |
gzip (you need this to unpack other stuff) |
765 |
make (to build everything) |
766 |
m4 (for autoconf etc) |
767 |
autoconf (if you need to change anything) |
768 |
bison |
769 |
flex |
770 |
binutils (required by gcc if you want to debug) |
771 |
gcc-2.8.1 |
772 |
(configure --with-gnu-as --with-gnu-ld --with-stabs) |
773 |
NB. gcc-2.8.1 needs a fix to __do_global_dtors_aux() |
774 |
in crtstuff.c on Unixware 2.1.3 |
775 |
(and possibly other unixware versions) |
776 |
The fix is already in recent versions of egcs. |
777 |
|
778 |
================================== |
779 |
static void |
780 |
__do_global_dtors_aux () |
781 |
{ |
782 |
static func_ptr *p = __DTOR_LIST__ + 1; |
783 |
static int completed = 0; |
784 |
|
785 |
if (completed) |
786 |
return; |
787 |
|
788 |
while (*p) |
789 |
{ |
790 |
p++; |
791 |
(*(p-1)) (); |
792 |
} |
793 |
|
794 |
#ifdef EH_FRAME_SECTION_ASM_OP |
795 |
__deregister_frame_info (__EH_FRAME_BEGIN__); |
796 |
#endif |
797 |
completed = 1; |
798 |
} |
799 |
====================================== |
800 |
|
801 |
3 |
802 |
Having got gcc working - it's probably a good idea to rebuild all |
803 |
your GNU software using it! |
804 |
|
805 |
4 |
806 |
Build gstep as normal. |
807 |
|
808 |
5 |
809 |
The SIOCGIFCONF ioctl sometimes doesn't work on unixware after |
810 |
applying some of the OS patches. |
811 |
|
812 |
So I have added a '-a' flag to gdomap to give it the name of a file |
813 |
containing IP address and netmask information for the network |
814 |
interfaces on the system. |
815 |
|
816 |
You need to set up a file (I suggest '/etc/gdomap_addresses') |
817 |
containing the information for your machine and modify your system |
818 |
startup files in /etc/rc?.d to run gdomap, telling it to use that |
819 |
file. |
820 |
|
821 |
eg. If your machine has an IP address of '193.111.111.2' and is on |
822 |
a class-C network, your /etc/gdomap_addresses file would contain |
823 |
the line |
824 |
|
825 |
193.111.111.2 255.255.255.0 |
826 |
|
827 |
and your startup file would contain the lines |
828 |
|
829 |
. /usr/local/GNUstep/Makefiles/GNUstep.sh |
830 |
gdomap -a /etc/gdomap_addresses |
831 |
|
832 |
If you don't set gdomap up correctly, Distributed Objects will not |
833 |
work. |
834 |
|
835 |
Windows with CYGWIN (_Unstable!_) |
836 |
================================= |
837 |
|
838 |
`Recommended compiler' |
839 |
gcc 2.95.3 (Cygwin release 1.1.8) or later |
840 |
|
841 |
`Extra libs needed' |
842 |
Objective-C library DLL (<ftp://ftp.gnustep.org/pub/gnustep/libs>) |
843 |
for shared libs. It's a good idea to remove the libobjc.a that |
844 |
comes with gcc (gcc -v for location) so that it isn't accidentally |
845 |
found. For ffcall, you should get version 1.8b or above (the |
846 |
earlier ones don't compile). There are still some problems with |
847 |
structure passing, but that is generally not supportred on any |
848 |
architecture. |
849 |
|
850 |
`Special Instructions' |
851 |
On later versions of Cygwin you may be required to include the |
852 |
win32api directory in CPPFLAGS when configuring: |
853 |
|
854 |
CPPFLAGS=-I/usr/include/win32api ./configure |
855 |
|
856 |
Make sure you have good shared libraries for everthing. Sometimes a |
857 |
bad shared library (like libtiff) will cause odd and untraceable |
858 |
problems. See `README.Cygwin' for information on compiling. |
859 |
|
860 |
Windows with MinGW (_Unstable! As always..._) |
861 |
============================================= |
862 |
|
863 |
`Recommended compiler' |
864 |
See below. |
865 |
|
866 |
`Extra libs needed' |
867 |
See below. |
868 |
|
869 |
`Special Instructions' |
870 |
See the `README.MinGW' file located in the gnustep-make |
871 |
Documentation directory for instructions. Windows NT/2000/XP only. |
872 |
Win98 machines and earlier are very buggy and are not supported. |
873 |
Native GUI backend is alpha version. |
874 |
|
875 |
Getting Libraries via Anonymous CVS |
876 |
*********************************** |
877 |
|
878 |
If you didn't get one of the snapshots, or if you want to be sure to |
879 |
stay on the bleading edge, then you should get the libraries via CVS. Go |
880 |
to <http://savannah.gnu.org/cvs/?group_id=99> for information on how to |
881 |
get anonymous CVS access. |
882 |
|
883 |
If you haven't already done so, change to the directory, where you |
884 |
want the source to reside. To get a list of potential modules to check |
885 |
out, type |
886 |
cvs -z3 checkout -c |
887 |
|
888 |
For instance, to check our `core', which contains all the GNUstep |
889 |
code libraries: |
890 |
cvs -z3 checkout core |
891 |
|
892 |
After you have checked out the source you can compile it as usual. |
893 |
To update the source, go into the directory of the source tree you want |
894 |
to update, for example, go into 'base', and type: |
895 |
|
896 |
cvs -z3 update -Pd |
897 |
|
898 |
You don't have to re-checkout after you have the source, just update! |
899 |
|