]> err.no Git - sope/blob - gnustep-make/GNUstep-HOWTO
added support for XML-RPC 'nil' type
[sope] / gnustep-make / GNUstep-HOWTO
1    GNUstep HOWTO
2    *************
3
4    Last Update: 21 July 2005
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 the
33 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 (Version 6.0 or greater recommended), if you plan to do any
40      debugging
41
42    You may also need to install some of the following libraries and
43 packages described below. Most of these packages are optional, but some
44 are required.
45
46 `ffcall libraries (HIGHLY RECOMMENDED)'
47      This is a library that provides stack-frame handling for
48      NSInvocation and NSConnection. This library is highly recommended.
49      The previous builtin method for stack frame handling is no longer
50      supported and may be removed in the future.  ffcall is under GNU
51      GPL. As a special exception, if used in GNUstep or in derivate
52      works of GNUstep, the included parts of ffcall are under GNU LGPL.
53
54 `libffi library (ALTERNATIVE RECOMMENDATION)'
55      This is a library that provides stack frame handling for
56      NSInvocation and NSConnection similar to ffcall.  Use this instead
57      of ffcall. You don't need both.
58
59 `libxml2 (RECOMMENDED)'
60      The libxml library (Version 2) is used to translate some of the
61      documentation for GNUstep and to provide suport for MacOS-X
62      compatible XML-based property-lists. It is not required, but you
63      have to explicitly disable use of XML when compiling GNUstep base
64      if you do not have it.
65
66 `libxslt (OPTIONAL)'
67      Stylesheet support for use with XML.
68
69 `openssl (OPTIONAL)'
70      The openssl library is used to provide support for https
71      connections by the NSURL and HSURLHandle classes.  This
72      functionality is compiled as a separate bundle since the OpenSSL
73      license is not compatible with GPL, and in the hopes that if
74      someone writes an openssl replacement, it can quickly be used by
75      creating another bundle.
76
77 `libiconv (OPTIONAL)'
78      Note: Do not install this library unless you are sure you need it.
79      You probably don't need it except perhaps on MinGW.  Unicode
80      support functions (iconv) come with glibc version 2.1 or greater.
81      If you don't have glibc (try iconv -version), you can get the
82      separate libiconv library from
83      <http://clisp.cons.org/~haible/packages-libiconv.html>. However,
84      neither one is required to use GNUstep.
85
86 `The TIFF library (libtiff) (Version 3.4beta36 or greater) (REQUIRED)'
87      The GUI library uses this to handle loading and saving TIFF images.
88
89 `The JPEG library (libjpeg) (RECOMMENDED)'
90      The GUI library uses this to handle loading JPEG images.
91
92 `The PNG library (libpng) (RECOMMENDED)'
93      The GUI library uses this to handle loading PNG images.
94
95 `gif or ungif (OPTIONAL)'
96      The GUI library uses either one of these libraries to load GIF
97      images.
98
99 `aspell (OPTIONAL)'
100      The GUI library uses this to handle spell checking.
101
102 `cups (OPTIONAL)'
103      The GUI library uses this to handle interface to the CUPS print
104      servers.
105
106 `audiofile (OPTIONAL)'
107      The GUI library uses this for playing sound files.
108
109 `portaudio (OPTIONAL)'
110      The GUI library uses this for the sound server
111
112 `freetype2 (RECOMMENDED, REQUIRED for art backend)'
113      This is used for font information
114
115 `libart_lgpl2 (REQUIRED for art backend only)'
116      Drawing library for the art backend.
117
118 `WindowMaker (Version >= 0.62) (OPTIONAL)'
119      GNUstep and WindowMaker work together to provide a consistant
120      interface.  Although it is not required, GNUstep will work much
121      better if you use it with the WindowMaker window manager.  Get
122      WindowMaker from <http://www.windowmaker.org>.
123
124 `gnustep-objc package (for gcc version < 3.0 ONLY or MINGW/Cygwin) (RECOMMENDED)'
125      Note: Do not install this library unless you are sure you need it.
126      You probably don't need it except on MinGW and Cygwin (regardless
127      of the gcc version you have).  This is a special version of the
128      Objective-C runtime that include several bug fixes and features
129      that were not in gcc versions previous to 3.0.  It is available at
130      <ftp://ftp.gnustep.org/pub/gnustep/libs> which compiles using the
131      GNUstep Makefile package (so you don't have to get the entire gcc
132      dist). Make sure to set the THREADING variable in the GNUmakefile.
133      It's possible to compile the library static (make shared=no) and
134      just copy to the place where the gcc libobjc library is (type gcc
135      -v to get this location). Note you have to install gnustep-make
136      (below) before installing this library.
137
138 `GDB (OPTIONAL)'
139      GDB can be obtained from <ftp://ftp.gnu.org/gnu/gdb>. As of release
140      6.0, gdb has special support for debugging Objective-C programs.
141
142 `TeX (OPTIONAL)'
143      You need a TeX implementation, like tetex, to compile some of the
144      documentation (although most of that is available on the web).
145
146 Compiling and Installing the packages
147 *************************************
148
149 Get the following individual packages:
150
151    * gnustep-make
152
153    * gnustep-base
154
155    * gnustep-gui
156
157    * gnustep-back
158
159    See <http://www.gnustep.org> for information on where to get these
160 packages.
161
162    Make sure you install (if necessary) all the previously mentioned
163 libraries first before configuring and building GNUstep.
164
165    You should install these packages as root (read special note for the
166 gnustep-base library, below, if you cannot do this).
167
168    For installation on specific systems, read the machine specific
169 instructions at the end of this document or appropriate README files in
170 the gnustep-make Documentation directory (such as README.MingW for
171 Windows).
172
173 Installing the Core Libraries
174 =============================
175
176 The GNUstep packages uses the Autoconf mechanism for configuration; it
177 checks some host capabilties which are used by all GNUstep software.
178 To configure just type:
179
180      ./configure
181
182    The GNUstep makefile package needs a root directory.  If the
183 GNUSTEP_SYSTEM_ROOT environment variable is set then configure will
184 determine the root directory from its value (by removing the final
185 /System path component from it).  You can also specify the root
186 directory when you run configure with the prefix paramater; the
187 following command makes /usr/local/GNUstep the root directory:
188
189      ./configure --prefix=/usr/local/GNUstep
190
191    If you do not have the GNUSTEP_SYSTEM_ROOT environment variable set
192 and you do not specify a root directory when running configure, then
193 configure will use /usr/GNUstep as the default root directory.
194
195 Alternate Library Setup
196 -----------------------
197
198 Read the installation instructions in the Makefile package (make) for
199 more installation options. Make sure you use the same configuration
200 options when configuring each GNUstep library.
201
202 Building the Package
203 --------------------
204
205 To build the individual packages, use this familiar set of commands for
206 each pacakge (add any additional options you decide upon):
207
208      ./configure
209      make
210      make install
211
212    Start with the Makefile Pacakge (gnustep-make). After installing
213 gnustep-make you need to execute GNUstep's shell configuration script,
214 as follows:
215
216       . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
217
218    before proceeding any further.
219
220    NOTE for gcc 2.X or MinGW users: Now install gnustep-objc. Before
221 building gnustep-objc, edit the `GNUmakefile' and set the THREADING
222 variable to the thread library used on your system (usually its posix,
223 but you can leave it at single if you don't need threads). At this point
224 you should probably re-configure, make and install gnustep-make, so it
225 can pick up on any threading information that gnustep-objc provides.
226
227    Now install gnustep-base, gnustep-gui and finally gnustep-back.
228
229    NOTE: If you are trying to install the packages without root
230 permission, you may need to change one thing in the base library. Edit
231 the file gnustep-base/Tools/gdomap.h to uncomment the last line and
232 modify the specified port number to a port which you _know_ is not in
233 use on your network.  You should only do this if absolutely necessary
234 since making this change will break communications with any systems
235 where an identical change has not been made.  Also, the standard gdomap
236 port is the one officially registered with IANA and is reserved for use
237 by gdomap - it should only be changed if you can't get your system
238 administrator to start the gdomap server using it.
239
240 Additional Installation
241 ***********************
242
243 Environment Setup
244 =================
245
246 Add the shell script `GNUstep.sh' located in the Makefile package to
247 your shell startup file (such as `.profile'). For instance, if your
248 GNUSTEP_SYSTEM_ROOT is `/usr/GNUstep/System',
249
250      . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
251
252    in your `.profile' file will work (Note the period at the beginning
253 of the line, and the space between the period and the following path;
254 if your GNUSTEP_SYSTEM_ROOT is different, you need to replace
255 `/usr/GNUstep/System' with your GNUSTEP_SYSTEM_ROOT).  It defines
256 environment variables that are needed to find GNUstep files and
257 executables.  Users of csh need to use the `GNUstep.csh' script. Read
258 the make package `README' for more info. Some systems, like GNU/Linux
259 have an `/etc/profile.d' directory where scripts can be executed
260 automatically. If you want to set up GNUstep for every user on your
261 system, you can try copying/linking the `GNUstep.sh' there. For csh or
262 tcsh, try
263
264      source /usr/GNUstep/System/Library/Makefiles/GNUstep.csh
265
266 GNUstep Home
267 ============
268
269 Your home GNUstep directory should be created automatically the first
270 time you use a GNUstep tool or application.  This is where user
271 defaults are kept as well as other user configuration files. User
272 installed apps, libraries, etc are also here (if the default user
273 directory is used). By default this is the directory `GNUstep' under
274 your home directory, but you can change this (see the gnustep-make
275 installation documentation).
276
277 Time Zone
278 =========
279
280 In most cases, GNUstep should be able to determine your time zone, if
281 you have already set it up correctly when setting up your computer.
282 However, in some cases this might fail or the correct information may
283 not be available.  You can set it manually using the GNUstep defaults
284 utility to set `Local Time Zone' to your local time zone. Type
285 something like `defaults write NSGlobalDomain "Local Time Zone" GB'.
286 Where `GB' is a time zone abbreviation.
287
288    See
289 `$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-bsae/NSTimeZones/zones'
290 for typical time zones):
291
292 GNUstep deamons
293 ===============
294
295 Set up your system to execute some GNUstep deamons. If you don't do
296 this, they will be started automatically when you run your first GNUstep
297 app:
298
299    * gdomap - Put this in a system startup file, like `/etc/rc.local'
300      or `/etc/rc.d/rc.local' (customize for your system)
301           GNUSTEP_SYSTEM_ROOT=/usr/GNUstep/System
302           if [ -f $GNUSTEP_SYSTEM_ROOT/Tools/gdomap ]; then
303             $GNUSTEP_SYSTEM_ROOT/Tools/gdomap
304           fi
305
306    * gdnc - Start after sourcing `GNUstep.sh' (e.g. in .profile)
307
308    * gpbs - Same as with gdnc, make sure X-Windows is running.
309
310    * make_services - Not a deamon, but a tool that needs to be run
311      everytime you install a new Application or service. This is NOT
312      run automatically.
313
314      if [ `gdomap -L GDNCServer | grep -c Unable` == 1 ]; then
315        echo "Starting GNUstep services..."
316        gdnc
317        gpbs
318      fi
319      make_services
320
321 Test Tools and Applications
322 ***************************
323
324 Example applications are located in the gstep-examples package.  To
325 make these, just uncompress and untar this package, cd to the
326 appropriate directory, and type make. You will need to install the
327 GNUstep core libraries first before doing this.
328
329    To run the examples. Use the openapp utility that is part of the
330 GNUstep makefile package (and stored in `$GNUSTEP_SYSTEM_ROOT/Tools').
331 Usage is:
332
333      openapp application [additional arguments to app]
334
335    Good Luck!
336
337 Machine Specific Instructions
338 *****************************
339
340 \input texinfo
341
342    Below is a list of machines that people have attempted to compile
343 GNUstep on. GNUstep compiles with little or no trouble on many of the
344 more popular operating systems. Some machines marked with _Unstable_
345 may have some trouble or may not work at all.  Platforms marked _Needs
346 Testing_ are not actively tested by developers and need someone to help
347 with reporting problems and fixes.  Platforms marked _Obsolete_ are
348 very old distributions. No one really knows if GNUstep works on these
349 although they may.
350
351    If you have compiled GNUstep on a specific machine, please send
352 information about what you needed and any special instructions needed to
353 GNUstep <bug-gnustep@gnu.org>.
354
355 Compilers
356 =========
357
358 A recommended compiler is listed for each machine, if known. You should
359 try to use the recommended compiler for compiling GNUstep, as GNUstep
360 is quite complex and tends provoke a lot of errors in some compilers.
361 Even versions newer than the listed compiler may not work, so don't
362 just get the latest version of a compiler expecting it to be better
363 than previous versions.
364
365    Compiler notes: If a recommended compiler is not listed, take note
366 of the following information before choosing the compiler you use.
367 EGCS OR GCC < 2.95
368      Might work, but few people use these now.
369
370 GCC 2.95.X
371      Probably the oldest compiler that GNUstep is regularly tested with.
372
373 GCC 2.96
374      Not an official gcc release. Some versions (Redhat, Mandrake) have
375      problems that prevent GNUstep from being compiled correctly and
376      cause mysterious errors.
377
378 GCC 3.0.X
379      A fairly good compiler. Recommended.
380
381 GCC 3.1
382      Several bugs where introduced in the version. It's probably better
383      to avoid this one, although it might work fine.
384
385 GCC 3.2.X
386      Pretty good. Recommended.
387
388 GCC 3.3.X
389      Recommended. Fixes some bugs relating to protocols as well as other
390      improvements.
391
392 GCC 3.4.X
393      Recommended. The #import directive is no longer deprecated as of
394      this version of the compiler.
395
396    If your having mysterious trouble with a machine, try compiling
397 GNUstep without optimization. Particularly in the newer GCC compilers,
398 optimization can break some code. The easiest way to do this is when
399 configuring, `CFLAGS="" ./configure'. Or when building, `make
400 OPTFLAG=""'.
401
402    Also if you manually upgraded gcc and/or make, we recommend reading
403 the documentation at <http://www.LinuxFromScratch.org> for tips on
404 compiling and installing gcc and make. If you had GNUstep previously
405 installed, make sure you completely remove all of it, including
406 installed init scripts.
407
408 Darwin/ix86
409 ===========
410
411 Currently tested on Darwin 7.x
412
413 RECOMMENDED COMPILER
414      gcc 3.3.2 or greater 3.3.* versions.  Older versions will not
415      compile on Darwin and 3.4.* versions don't support GNU runtime
416      compilation on Darwin currently (The GCC bug report is
417      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).
418
419      Default compiler (Apple GCC) has unknown problems.  Download the
420      FSF GCC compiler and configure it with -enable-threads=posix. You
421      don't need binutils or anything else.  Use the GNU runtime. Make
422      sure to add
423           export CC=/usr/local/bin/gcc (use the correct path to FSF gcc)
424      so that the correct compiler is found
425
426 EXTRA LIBS NEEDED
427      Use ffcall because libffi hasn't been ported to Darwin x86.
428
429 SPECIAL INSTRUCTIONS
430      Read the <README.Darwin> file in the gnustep-make/Documentation
431      directory for complete instructions.
432
433
434 Darwin/PowerPC
435 ==============
436
437 This section is for building the complete GNUstep system.  This system
438 will not interact at all with Mac OS X/Cocoa. It uses different
439 complilers, different display systems, etc. For building GNUstep
440 extensions to be used with Mac OS X (for instance, if you want to build
441 something based on GNUstep, such as GSWeb or GNUMail), see the
442 MacOSX/PowerPC section.
443
444    Currently tested on Darwin 6.x, 7.x
445
446 RECOMMENDED COMPILER
447      gcc 3.3.2 or greater 3.3.* versions.  Older versions will not
448      compile on Darwin and 3.4.* versions don't support GNU runtime
449      compilation on Darwin currently (The GCC bug report is
450      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).
451
452      Default compiler (Apple GCC) has unknown problems.  Download the
453      FSF GCC compiler and configure it with -enable-threads=posix. You
454      don't need binutils or anything else.  Use the GNU runtime. Make
455      sure to add
456           export CC=/usr/local/bin/gcc (use the correct path to FSF gcc)
457      so that the correct compiler is found
458
459 EXTRA LIBS NEEDED
460      Use libffi (not ffcall). This should be enabled by default in
461      gnustep-base so you don't have to type -enable-libffi. For 6.x,
462      you need the dlcompat library (from <www.opendarwin.org>) to load
463      bundles (not needed for 7.x).
464
465 SPECIAL INSTRUCTIONS
466      Read the <README.Darwin> file in the gnustep-make/Documentation
467      directory for complete instructions.
468
469
470    See also the MacOSX/PowerPC section
471
472 Debian/DEC-Alpha
473 ================
474
475 RECOMMENDED COMPILER
476      Standard
477
478 EXTRA LIBS NEEDED
479      Unknown
480
481 SPECIAL INSTRUCTIONS
482      None
483
484 Debian/i386
485 ===========
486
487 Tested on sid.
488 RECOMMENDED COMPILER
489      Standard
490
491 EXTRA LIBS NEEDED
492      Unknown
493
494 SPECIAL INSTRUCTIONS
495      None
496
497 Debian/PowerPC
498 ==============
499
500 Tested on sid.
501 RECOMMENDED COMPILER
502      Standard
503
504 EXTRA LIBS NEEDED
505      Unknown
506
507 SPECIAL INSTRUCTIONS
508      None
509
510 Debian/SPARC
511 ============
512
513 Tested on sid.
514 RECOMMENDED COMPILER
515      Standard
516
517 EXTRA LIBS NEEDED
518
519 SPECIAL INSTRUCTIONS
520      None
521
522 FreeBSD 5.x
523 ===========
524
525 Tested on 5.0, 5.1, 5.3
526 RECOMMENDED COMPILER
527
528 EXTRA LIBS NEEDED
529      None.
530
531 SPECIAL INSTRUCTIONS
532      Can install via /usr/ports/devel/gnustep, but not all required
533      dependancies are installed. See the GNUstep-HOWTO for list of
534      libraries.
535
536      For 5.3, there is a bug in libkvm that requires that /proc be
537      mounted. Use 'mount_procfs proc /proc' or see the procfs man page.
538
539
540 FreeBSD 4.x
541 ===========
542
543 RECOMMENDED COMPILER
544
545 EXTRA LIBS NEEDED
546      Unknown
547
548 SPECIAL INSTRUCTIONS
549      For gcc 3.0.4, make WANT_THREADS_SUPPORT=YES
550
551      For libxml2 2.4.24, make WITHOUT_PYTHON=YES
552
553
554 FreeBSD 3.x  (_Obsolete_)
555 =========================
556
557 Compiles "out of the box" on FreeBSD 3.4.
558
559 RECOMMENDED COMPILER
560      gcc 2.95.2
561
562 EXTRA LIBS NEEDED
563      Unknown
564
565 SPECIAL INSTRUCTIONS
566      You need to use gmake not make to compile the GNUstep packages. A
567      special port of gdb can be used with the Objective-C patches from
568      <ftp://ftp.pcnet.com/users/eischen/FreeBSD/gdb-4.17-port.tar.gz>
569
570      The best compiler for GNUstep is the latest release of the GNU
571      Compiler Collection (GCC).  You can find it at
572      <http://egcs.cygnus.com/>.
573
574      If you want to use the native POSIX threads support from `libc_r'
575      pass `--enable-threads=posix' to configure.  This is the
576      recommended option as this is the FreeBSD threads package that
577      gives the best results -with others you may be unable to run some
578      examples like `diningPhilosophers'.
579
580      The whole compilation process can fail if you have another threads
581      library installed so watch out for installed packages like `pth'
582      and such.  Besides the support for libc_r, GNUstep will also look
583      for `pth' and `pcthreads', so if you have installed them and they
584      aren't detected prepare to write a nice bug report.
585
586      This can be done more much easily by using the port version.  Just
587      `cd' to `/usr/ports/lang/egcs' and do a `"make WANT_THREADS=yes
588      install"'.  Easy.
589
590      If configure cannot find tiff.h or the tiff library and you have
591      it installed in a non-standard place (even `/usr/local'), you may
592      need to pass these flags to configure:
593      `CFLAGS="-I/usr/local/include"' and `LDFLAGS="-L/usr/local/lib"'.
594
595
596 FreeBSD 2.x (_Obsolete,Unstable_)
597 =================================
598
599 RECOMMENDED COMPILER
600      gcc 2.8.x
601
602 EXTRA LIBS NEEDED
603      Unknown
604
605 SPECIAL INSTRUCTIONS
606      Only static libraries work on this system.  Use /stand/sysinstall
607      to install these packages if you have not already done so:
608
609      gmake           (GNU make)
610      gcc 2.8.x
611
612      Seems to compile ok, but some tests crash. Possibly due to a
613      performace 'hack' in base. Might be a good idea to upgrade to
614      FreeBSD 3.x.  You need to use gmake not make to compile the
615      GNUstep packages.
616
617
618 Irix 6.5/MIPS (_Needs a maintainer_)
619 ====================================
620
621 RECOMMENDED COMPILER
622      gcc 3.2.1
623
624      To use threads, it's necessary to bootstrap a compiler yourself:
625      configure with -enable-threads=posix, that will work as long as you
626      link EVERY objective C executable with -lpthread, no matter what
627      warnings the irix linker produces!
628
629 EXTRA LIBS NEEDED
630      Unknown
631
632 SPECIAL INSTRUCTIONS
633      If you cannot link the library because of the very low default
634      limit (20480) for the command line length, then you should either
635      use systune ncargs to increase the value (maximum is 262144) or
636      link the library by hand.  No libffi-support: Use ffcall
637
638
639 MacOSX/PowerPC
640 ==============
641
642 This section is for building the GNUstep extensions only.  Use this if,
643 for instance, if you want to build something based on GNUstep, such as
644 GSWeb or GNUMail. If you want to build the complete GNUstep system
645 independant of Mac OS X, see the Darwin/PowerPC section.
646
647    Currently tested on MacOSX 10.1.5, 10.2, 10.3
648
649 RECOMMENDED COMPILER
650      Default. For 10.1.5, you need to add -no-cpp-precomp to CFLAGS
651      (For instance, ./configure CFLAGS="-no-cpp-precomp" ...)
652
653 EXTRA LIBS NEEDED
654      None.
655
656 SPECIAL INSTRUCTIONS
657      Warning ! To know how to install a complete GNUstep system on Mac
658      OS X, read the Darwin/PowerPC section.  By default, on Mac OS X,
659      only the GNUstep extensions are built. Read the <README.Darwin>
660      file in the gnustep-make/Documentation directory for complete
661      instructions.
662
663      To build the GNUstep extensions only is useful, when you want to
664      build on Mac OS X, GNUstep related projects like gdl2, etc linked
665      to Cocoa.  Xcode project files exist, but they may not be
666      up-to-date. Make sure /usr/sbin is in your path:
667
668           PATH=$PATH:/usr/sbin
669
670      Then type:
671
672           cd make
673           ./configure --with-library-combo=apple-apple-apple
674           make install
675           . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
676           cd ../base
677           ./configure --with-xml-prefix=/usr --disable-xmltest
678           make debug=yes install
679
680      On Mac OS X 10.1.5, there is no libxml. Either install libxml2 or
681      configure base with -disable-xml.
682
683    See also the Darwin/PowerPC section.
684
685 MkLinux/PowerPC
686 ===============
687
688 Tested with R2 RC2 (2004/03/04).
689
690 RECOMMENDED COMPILER
691      gcc 3.x allthough earlier ones should work if you also install
692      gnustep-objc
693
694 EXTRA LIBS NEEDED
695      None.
696
697 SPECIAL INSTRUCTIONS
698      Unknown.
699
700
701 NetBSD/i386
702 ===========
703
704 Tested on NetBSD 2.0.2 (2005/04/15)
705
706 RECOMMENDED COMPILER
707      Standard
708
709 EXTRA LIBS NEEDED
710      libiconv(?), libffi
711
712 SPECIAL INSTRUCTIONS
713      Use NetBSD packages to install needed libraries. libffi either
714      comes automatically with gcc or can be installed separately and
715      works fine (over ffcall).
716
717
718 NetBSD/Sparc64  (_Unstable_)
719 ============================
720
721 Tested on NetBSD 2.0.2 (2005/04/15)
722
723 RECOMMENDED COMPILER
724      Standard
725
726 EXTRA LIBS NEEDED
727      libiconv(?), libffi
728
729 SPECIAL INSTRUCTIONS
730      Use NetBSD packages to install needed libraries. libffi either
731      comes automatically with gcc or can be installed separately and is
732      prefered over ffcall which does not work on Sparc64 machines.
733
734
735    gdomap crashes. Perhaps other things do not work as well.
736
737 Netwinder (_Unstable_)
738 ======================
739
740 RECOMMENDED COMPILER
741      Build #12 of the system.
742
743 EXTRA LIBS NEEDED
744      Unknown
745
746 SPECIAL INSTRUCTIONS
747      See <http://www.netwinder.org/~patrix>
748
749 OpenBSD 3.x  (_Needs Testing_)
750 ==============================
751
752 RECOMMENDED COMPILER
753      Unknown
754
755 EXTRA LIBS NEEDED
756      Unknown
757
758 SPECIAL INSTRUCTIONS
759      Try reading the <README.NetBSD> which might work the same on
760      OpenBSD.
761
762 OSF Alpha  (_Unstable_)
763 =======================
764
765 Information is for Version 3.2C
766
767 RECOMMENDED COMPILER
768      egcs-1.1.1/1.1.2, gcc-2.95
769
770 EXTRA LIBS NEEDED
771      Unknown
772
773 SPECIAL INSTRUCTIONS
774      Can only compile with static libraries. Compiler may fail when
775      linking executables (e.g. gdnc). Standard ranlib and ar programs
776      are to feable to create libraries. Should use GNU binutils
777      versions. Linker sometimes fails to find symbols, in which case
778      you may need to link with a library twice. For instance, add an
779      extra -lgnustep-gui in ADDTIONAL_TOOL_LIBS in the
780      GNUmakefile(.preamble).
781
782
783 RedHat/Intel
784 ============
785
786 RECOMMENDED COMPILER
787      Standard
788
789 EXTRA LIBS NEEDED
790      Standard (ffcall or libffi)
791
792 SPECIAL INSTRUCTIONS
793      None
794
795 Slackware/Intel
796 ===============
797
798 RECOMMENDED COMPILER
799      Unknown.
800
801 EXTRA LIBS NEEDED
802      Unknown.
803
804 SPECIAL INSTRUCTIONS
805      Unknown.
806
807
808 Slackware/Sparc (Splack)
809 ========================
810
811 Tested with Spalck 8.0
812
813 RECOMMENDED COMPILER
814      gcc 3.2, no extra options.
815
816 EXTRA LIBS NEEDED
817      Unknown.
818
819 SPECIAL INSTRUCTIONS
820      Tested on an ultra sparc server, kernel 2.4.27, XF86-4.0.3
821
822
823 Solaris 2.5.1/Sparc (_Obsolete_)
824 ================================
825
826 This configuration is no longer being tested, but it may still work.
827
828 RECOMMENDED COMPILER
829      Unknown
830
831 EXTRA LIBS NEEDED
832      tiff, Don't use the one in /usr/openwin
833
834 SPECIAL INSTRUCTIONS
835      See the Solaris 2.6 section for more instructions.
836
837 Solaris 2.[678]/Sparc
838 =====================
839
840 Tested on Solaris version 6, 7, and 8
841
842 RECOMMENDED COMPILER
843      gcc 3.2.1 or greater gcc 2.95.3. Version 2.95.2 has several bugs
844      that GNUstep tickles.  gcc 3.04. Not 3.1 - does not compile parts
845      of GNUstep.
846
847 EXTRA LIBS NEEDED
848      tiff, Don't use the one in /usr/openwin
849
850 SPECIAL INSTRUCTIONS
851      Using a POSIX shell (zsh or bash, which should come with Solaris)
852      is highly recommended. In fact, some functions, such as compiling
853      frameworks, will not work without it.
854
855
856    Some people have reported problems when using binutils assembler and
857 linker.  Using the native Solaris assmebler and linker should work fine.
858
859    Older Instructions: If you are using threads, make sure the
860 Objective-C runtime (libobjc that comes with gcc) is compiled with
861 threads enabled (This is true by default) AND that it is compiled with
862 the _REENTRANT flag defined (This does not seem to be true by default).
863 Or use the gnustep-objc package. Also make sure THREADS is set to
864 'posix' not 'solaris'.
865
866 Solaris 2.7/Intel
867 =================
868
869 RECOMMENDED COMPILER
870      Unknown.
871
872 EXTRA LIBS NEEDED
873      Unknown
874
875 SPECIAL INSTRUCTIONS
876      Make sure there are no -g compiler flags (i.e. compiling with
877      debug=yes might be a problem). Unsure of correct bundle flags -
878      You might need to use the alternate flags listed in target.make,
879      line 989. Also, configuring gnustep-make with
880      `--disable-backend-bundle' might be necessary if you can't get
881      bundles to work.  You will probable get a lot of text relocation
882      warnings, which probably can be ignored. See the other Solaris
883      instructions above for more information.
884
885
886 Suse 6.x/Intel
887 ==============
888
889 GNUstep has been tested on version 6.2-6.4 of Suse
890
891 RECOMMENDED COMPILER
892      Standard
893
894 EXTRA LIBS NEEDED
895      None
896
897 SPECIAL INSTRUCTIONS
898      It seems that there is a problem with the default kernel build
899      distributed with Suse  which means that the socket binding used by
900      gdnc doesn't work.  If you recompile the kernel then it starts
901      working.
902
903
904 Suse/Intel
905 ==========
906
907 GNUstep has been tested on version 7.0, 8.0, 8.1, 8.2, 9.0, 9.1, and
908 9.3 of Suse
909
910 RECOMMENDED COMPILER
911      The default compiler that comes with Susu is fine. Also gcc2.95.x,
912      gcc3.0.x, 3.1 and 3.2 work, but 2.95 is faster.  Compile with
913      -threads-enabled (non-standard).
914
915 EXTRA LIBS NEEDED
916      None
917
918 SPECIAL INSTRUCTIONS
919      None.
920
921
922 Suse 7.x/PPC
923 ============
924
925 GNUstep has been tested on version 7.0 of Suse/PPC
926
927 RECOMMENDED COMPILER
928      Standard. gcc2.95.x, gcc3.0.x and gc3.1 work, but 2.95 is faster.
929      Compile with -threads-enabled (non-standard).
930
931 EXTRA LIBS NEEDED
932      None
933
934 SPECIAL INSTRUCTIONS
935
936 Unixware-2.1.3/Intel
937 ====================
938
939 RECOMMENDED COMPILER
940      Unknown
941
942 EXTRA LIBS NEEDED
943      Unknown
944
945
946    Special Instructions for GNUstep installation on Unixware 2.1 systems
947
948 1
949      Tune the kernel to increase the argument space so that we can pass
950      long command-line argument strings to processes (which the
951      makefiles do) (/etc/conf/bin/idtune ARG_MAX 102400)
952
953 2
954      Install raft of the latest GNU software
955
956      gzip            (you need this to unpack other stuff)
957      make            (to build everything)
958      m4              (for autoconf etc)
959      autoconf        (if you need to change anything)
960      bison
961      flex
962      binutils        (required by gcc if you want to debug)
963      gcc-2.8.1
964                      (configure --with-gnu-as --with-gnu-ld --with-stabs)
965                      NB. gcc-2.8.1 needs a fix to __do_global_dtors_aux()
966                      in crtstuff.c on Unixware 2.1.3
967                      (and possibly other unixware versions)
968                      The fix is already in recent versions of egcs.
969
970           ==================================
971           static void
972           __do_global_dtors_aux ()
973           {
974             static func_ptr *p = __DTOR_LIST__ + 1;
975             static int completed = 0;
976           
977             if (completed)
978               return;
979           
980             while (*p)
981               {
982                 p++;
983                 (*(p-1)) ();
984               }
985           
986           #ifdef EH_FRAME_SECTION_ASM_OP
987             __deregister_frame_info (__EH_FRAME_BEGIN__);
988           #endif
989             completed = 1;
990           }
991           ======================================
992
993 3
994      Having got gcc working - it's probably a good idea to rebuild all
995      your GNU software using it!
996
997 4
998      Build gstep as normal.
999
1000 5
1001      The SIOCGIFCONF ioctl sometimes doesn't work on unixware after
1002      applying some of the OS patches.
1003
1004      So I have added a '-a' flag to gdomap to give it the name of a file
1005      containing IP address and netmask information for the network
1006      interfaces on the system.
1007
1008      You need to set up a file (I suggest '/etc/gdomap_addresses')
1009      containing the information for your machine and modify your system
1010      startup files in /etc/rc?.d to run gdomap, telling it to use that
1011      file.
1012
1013      eg. If your machine has an IP address of '193.111.111.2' and is on
1014      a class-C network, your /etc/gdomap_addresses file would contain
1015      the line
1016
1017           193.111.111.2 255.255.255.0
1018
1019      and your startup file would contain the lines
1020
1021           . /usr/local/GNUstep/Library/Makefiles/GNUstep.sh
1022           gdomap -a /etc/gdomap_addresses
1023
1024
1025    If you don't set gdomap up correctly, Distributed Objects will not
1026 work.
1027
1028 Windows with CYGWIN (_Needs a maintainer_)
1029 ==========================================
1030
1031 RECOMMENDED COMPILER
1032      gcc 3.3.1 or later (with libobjc and libjava (if using libffi))
1033
1034 EXTRA LIBS NEEDED
1035      Objective-C library DLL
1036      (<ftp://ftp.gnustep.org/pub/gnustep/windows/cygwin>) for shared
1037      libs. It's a good idea to remove the libobjc.a that comes with gcc
1038      (gcc -v for location) so that it isn't accidentally found.  For
1039      ffcall, you should get version 1.8b or above (the earlier ones
1040      don't compile). There are still some problems with structure
1041      passing, but that is generally not supported on any architecture.
1042      libffi also works.
1043
1044 SPECIAL INSTRUCTIONS
1045      Make sure you have good shared libraries for everthing. Sometimes
1046      a bad shared library (like libtiff) will cause odd and untraceable
1047      problems.  See <README.Cygwin> for information on compiling.
1048
1049
1050 Windows with MinGW
1051 ==================
1052
1053 RECOMMENDED COMPILER
1054      See below.
1055
1056 EXTRA LIBS NEEDED
1057      See below.
1058
1059 SPECIAL INSTRUCTIONS
1060      See the <README.MinGW> file located in the gnustep-make
1061      Documentation directory for instructions. Windows NT/2000/XP only.
1062      Win98 machines and earlier are very buggy and are not supported.
1063      Native GUI backend is alpha version.
1064
1065 Yellowdog/PowerPC
1066 =================
1067
1068 RECOMMENDED COMPILER
1069      Standard
1070
1071 EXTRA LIBS NEEDED
1072      Standard (ffcall or libffi)
1073
1074 SPECIAL INSTRUCTIONS
1075
1076 Getting Libraries via Anonymous CVS
1077 ***********************************
1078
1079 If you didn't get one of the snapshots, or if you want to be sure to
1080 stay on the bleading edge, then you should get the libraries via CVS. Go
1081 to <http://savannah.gnu.org/cvs/?group_id=99> for information on how to
1082 get anonymous CVS access.
1083
1084    If you haven't already done so, change to the directory, where you
1085 want the source to reside. To get a list of potential modules to check
1086 out, type
1087      cvs -z3 checkout -c
1088
1089    For instance, to check our `core', which contains all the GNUstep
1090 code libraries:
1091      cvs -z3 checkout core
1092
1093    After you have checked out the source you can compile it as usual.
1094 To update the source, go into the directory of the source tree you want
1095 to update, for example, go into 'base', and type:
1096
1097      cvs -z3 update -Pd
1098
1099    You don't have to re-checkout after you have the source, just update!
1100