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