Improved README.Darwin look

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@20483 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Quentin Mathe 2004-12-25 23:43:55 +00:00
parent 02ddcea22f
commit f5ed232d10
2 changed files with 198 additions and 190 deletions

View file

@ -1,3 +1,7 @@
2004-12-26 Quentin Mathe <qmathe@club-internet.fr>
* Documentation/README.Darwin: Improved indentation and presentation.
2004-12-19 Richard Frith-Macdonald <rfm@gnu.org>
* target.make: For gnu compiler on darwin, use flat namespace and

View file

@ -1,5 +1,5 @@
Date : 15-Jan-2004
Last update: 20041111 (tested under Mac OS X 10.3 / Darwin 7)
Last update: 20041225 (tested under Mac OS X 10.3 / Darwin 7)
--> must be verified on x86-darwin-7, powerpc-apple-darwin-6
Authors: Adam Fedor <fedor@gnu.org>
Quentin Mathé <qmathe@club-internet.fr>
@ -8,7 +8,7 @@ Authors: Adam Fedor <fedor@gnu.org>
PURPOSE
-------
This document is intended to provide a step by step instruction on how to get
This document is intended to provide a step by step instruction on how to get
the GNUstep installed on Mac OS X and Darwin.
Note: GNUstep seems to install on Mac OS X 10.2 / Darwin 6, but the bundles
@ -18,125 +18,122 @@ work. (Must be verified)
COMMONLY USED SYMBOLS
---------------------
<> denotes a variable depending on your preferences. To be replaced
with the actual values from your system. For instance, if you
installed gcc in /opt/local
<> denotes a variable depending on your preferences. To be replaced with the
actual values from your system. For instance, if you installed gcc in /opt/local
./configure CC='<gcc install dir>/bin/gcc'
./configure CC=<gcc install dir>/bin/gcc
will become
will become:
./configure CC='/opt/local/bin/gcc'
./configure CC=/opt/local/bin/gcc
[] denotes an optional parameter. For instance:
./configure [--enable-graphics=art]
./configure [--enable-graphics=art]
can be either:
can be either:
./configure
./configure
or:
or:
./configure --enable-graphics=art
./configure --enable-graphics=art
PRELIMINAIRES
-------------
For all targets, get the following software. I'd recommend installing
Fink (and FinkCommander on MacOSX) to get all this software. If you
use Fink, you probably need to add this to your .bashrc or .profile
(or similar startup) file.
For all targets, get the following software. I'd recommend installing Fink (and
FinkCommander on Mac OS X) to get all this software. If you use Fink, you
probably need to add this to your .bashrc or .profile (or similar startup) file:
test -r /sw/bin/init.sh && . /sw/bin/init.sh
export DYLD_LIBRARY_PATH=/sw/lib:$DYLD_LIBRARY_PATH
test -r /sw/bin/init.sh && . /sw/bin/init.sh
export DYLD_LIBRARY_PATH=/sw/lib:$DYLD_LIBRARY_PATH
Remember you usually need root access to install software. That means
when you see an instruction like 'make install', you usually need to
use sudo ('sudo make install') or be logged in as root (not
recommended).
Remember you usually need root access to install software. That means when you
see an instruction like 'make install', you usually need to use sudo
('sudo make install') or be logged in as root (not recommended).
libxml2 (Optional, highly recommended, already in Mac OS X 10.3 / Darwin 7)
libtiff (Required)
libjpeg (Optional, highly recommended)
libpng (Optional, highly recommended)
libxml2 (Optional, highly recommended, already in
Mac OS X 10.3 / Darwin 7)
libtiff (Required)
libjpeg (Optional, highly recommended)
libpng (Optional, highly recommended)
libffi (Required, only contained in the gcc distributions and pyobjc)
ffcall (On Darwin x86 - use instead of libffi)
libffi (Required, only contained in the gcc distributions and pyobjc)
ffcall (On Darwin x86 - use instead of libffi)
Xfree86 (Required, already in Mac OS X 10.3/Darwin 7)
Xfree86 (Required, already in Mac OS X 10.3/Darwin 7)
libart2 (Optional, but required for art backend)
freetype2 (Optional, but required for art backend)
libart2 (Optional, but required for art backend)
freetype2 (Optional, but required for art backend)
dlcompat (Required, already in Mac OS X 10.3 or later)
dlcompat (Required, already in Mac OS X 10.3 or later)
Obtaining GNUstep
-----------------
The main GNUstep project pages tell you how to get hold of this. You
can get the latest release of the following libraries.
The main GNUstep project pages tell you how to get hold of this. You can get the
latest release of the following libraries.
You need these gnustep packages:
GNUstep-make
GNUstep-base
GNUstep-gui
GNUstep-back
GNUstep-make
GNUstep-base
GNUstep-gui
GNUstep-back
Targets
-------
For GNUstep, there are several combinations of Objective-C runtime, Foundation
For GNUstep, there are several combinations of Objective-C runtime, Foundation
library and Application Kit library possible, called library combos. The usual
notation is:
objcruntime-foundation-applicationkit
objcruntime-foundation-applicationkit
Theoretically possible are:
gnu-gnu-gnu # gnu-objc runtime with gnustep-base and gnustep-gui. Most
# widely tested.
apple-gnu-gnu # apple-objc runtime with gnustep libraries. Does currently
# not work
apple-apple-gnu # Apple Foundation with gnustep-gui on the top. Only of
# academic interest.
apple-apple-apple # Cocoa with GNUstep additions. For porting GNUstep apps to
# Cocoa.
gnu-gnu-gnu # gnu-objc runtime with gnustep-base and gnustep-gui.
# Most widely tested.
apple-gnu-gnu # apple-objc runtime with gnustep libraries. Does
# currently not work.
apple-apple-gnu # Apple Foundation with gnustep-gui on the top. Only of
# academic interest.
apple-apple-apple # Cocoa with GNUstep additions. For porting GNUstep apps
# to Cocoa.
All gnu-*-apple library combos are purely theoretical and only
available to the folks inside Apple since no mortal person ever saw
the Cocoa source code. ;-) You can use either the Apple compiler or
compile your own FSF compiler. This potentially gives two different
targets:
All gnu-*-apple library combos are purely theoretical and only available to the
folks inside Apple since no mortal person ever saw the Cocoa source code. ;-)
You can use either the Apple compiler or compile your own FSF compiler. This
potentially gives two different targets:
Apple GCC, gnu-gnu-gnu
FSF GCC, gnu-gnu-gnu
Apple GCC, gnu-gnu-gnu
FSF GCC, gnu-gnu-gnu
Unfortunately, using Apple GCC with gnu-gnu-gnu doesn't appear to work
currently (see below for more info), so this option really isn't open
now. In addition, if you are on Mac OS X, you can also use the Apple
Foundation and AppKit frameworks to do GNUstep development with Cocoa,
but this only works with the Apple compiler:
Unfortunately, using Apple GCC with gnu-gnu-gnu doesn't appear to work currently
(see below for more info), so this option really isn't open now. In addition,
if you are on Mac OS X, you can also use the Apple Foundation and AppKit
frameworks to do GNUstep development with Cocoa, but this only works with the
Apple compiler:
Apple GCC, apple-apple-apple
Apple GCC, apple-apple-apple
GNUstep on Darwin x86
---------------------
For GNUstep on Darwin x86, Apple GCC compiles GNUstep-base, but causes
strange problems when running programs (e.g. the program hangs while
allocating memory or executes methods multiple times). So we have to
use FSF GCC. Additionally, libffi has not been ported to Darwin x86,
so you will need to install ffcall instead.
For GNUstep on Darwin x86, Apple GCC compiles GNUstep-base, but causes strange
problems when running programs (e.g. the program hangs while allocating memory
or executes methods multiple times). So we have to use FSF GCC. Additionally,
libffi has not been ported to Darwin x86, so you will need to install ffcall
instead.
GNUstep on Darwin PowerPC
-------------------------
Haven't been able to get Apple GCC on Mac OS X 10.2 / Darwin 6 to
compile GNUstep-base. The compiler crashes with various errors. You
need the FSF GCC compiler here. You need at least version 3.3.2.
Version 3.3.5 seems to cause the fewest headaches, even compared to
later versions.
Haven't been able to get Apple GCC on Mac OS X 10.2 / Darwin 6 to compile
GNUstep-base. The compiler crashes with various errors. You need the FSF GCC
compiler here. You need at least version 3.3.2.
Version 3.3.5 seems to cause the fewest headaches, even compared to later
versions.
Building FSF-GCC
----------------
@ -145,19 +142,22 @@ Darwin x86:
FSF GCC is difficult to compile here. The only way I could do it was like this:
ln -s /usr/bin/c++filt /usr/bin/c++filt3 # missing on Darwin 7.0.1 x86
# not necessary on OpenDarwin 7.2.1
ln -s /usr/bin/c++filt /usr/bin/c++filt3 # Missing on Darwin 7.0.1
# x86 but not necessary
# on OpenDarwin 7.2.1
and then configure gcc with:
mkdir build # create a sibling to the
mkdir build # Create a sibling to the
# toplevel source dir
cd build
<dir>/gcc-X.X.X/configure --enable-languages=c,objc # don't try to build c++
make bootstrap
make install
cd /usr/local/lib
ln -s libobjc.a libobjc.dylib # So the linker sees us
cd build
<dir>/gcc-X.X.X/configure \ # Don't try to build c++
--enable-languages=c,objc
make bootstrap
make install
cd /usr/local/lib
ln -s libobjc.a libobjc.dylib # So the linker sees us
(Replace X.X.X with the actual distribution you have).
@ -165,82 +165,83 @@ gcc on Darwin doesn't appear to support threads.
Darwin PowerPC:
configure and build as follows (tested using gcc-3.3.2 on Mac OS X 10.2 and
Configure and build as follows (tested using gcc-3.3.2 on Mac OS X 10.2 and
10.3):
mkdir build
cd build
<dir>/gcc-x.x.x/configure [ --prefix=<gcc install dir>] # by default gcc
# installs in /usr/local
make bootstrap
make install
cd <gcc install dir>/lib
ln -s libobjc.a libobjc.dylib # So the linker sees us
mkdir build
cd build
<dir>/gcc-x.x.x/configure \ # By default gcc
[--prefix=<gcc install dir>] # installs in /usr/local
make bootstrap
make install
cd <gcc install dir>/lib
ln -s libobjc.a libobjc.dylib # So the linker sees us
Setting up the GNUstep make environment
---------------------------------------
In the GNUstep-make (core/make) package, do with bourne shell like
bash (Mac OS X 10.3):
In the GNUstep-make (core/make) package, do with bourne shell like bash
(Mac OS X 10.3):
echo 'export CC=<gcc install dir>/bin/gcc' >> ~/.profile
echo 'export CC=<gcc install dir>/bin/gcc' >> ~/.profile
with c shell like tcsh (Mac OS X 10.2):
echo 'setenv CC <gcc install dir>/bin/gcc' >> ~/.tcshrc
echo 'setenv CC <gcc install dir>/bin/gcc' >> ~/.tcshrc
else use [CC='<gcc install dir>/bin/gcc'] option when running configure.
else use [CC=<gcc install dir>/bin/gcc] option when running configure.
then:
./configure --with-library-combo=gnu-gnu-gnu [--prefix=<GNUstep install dir>] \
[CC='<gcc install dir>/bin/gcc']
./configure --with-library-combo=gnu-gnu-gnu \
[--prefix=<GNUstep install dir>] [CC=<gcc install dir>/bin/gcc]
(apple-apple-apple is the default if you don't specify
gnu-gnu-gnu). If you want to be able to compile for different
targets/platforms together. Do this:
./configure --with-library-combo=gnu-gnu-gnu --disable-flattened \
--enable-multi-platform [--prefix=<GNUstep install dir>] \
[CC='<gcc install dir>/bin/gcc']
./configure --with-library-combo=gnu-gnu-gnu --disable-flattened \
--enable-multi-platform [--prefix=<GNUstep install dir>] \
[CC='<gcc install dir>/bin/gcc']
Now:
make
make install
make
make install
Building and installing libobjc (target Apple GCC, gnu-gnu-gnu only !!!)
-------------------------------
Warning ! Don't compile libobjc if you are using FSF GCC. Go to
gnustep-objc (or from CVS, into dev-libs/libobjc), and type:
Warning ! Don't compile libobjc if you are using FSF GCC. Go to gnustep-objc
(or from CVS, into dev-libs/libobjc), and type:
make install
make install
This should build and install the GNU Objective-C runtime and headers for you.
Building and installing libffi (on Darwin PowerPC only !!!)
------------------------------
Untar the GNU gcc distribution, at least a version 3.4 series snapshot (even if
you are not compiling the compiler) and:
Untar the GNU gcc distribution, at least a version 3.4.x (even if you are not
compiling the compiler) and:
mkdir libffi-build
cd libffi-build
<gcc-3.4 install dir>/libffi/configure [CC='<gcc install dir>/bin/gcc']
make
make install
mkdir libffi-build
cd libffi-build
<gcc-3.4.x install dir>/libffi/configure [CC=<gcc install dir>/bin/gcc]
make
make install
Note: the lastest 3.4 snapshot doesn't seem to have a working libffi
on Mac OS X / Darwin. Use PyObjC libffi from
http://pyobjc.sourceforge.net, in the case libffi install
doesn't work with the 3.4 snapshot.
Note: some 3.4.x versions doesn't have a working libffi on Mac OS X / Darwin.
Use PyObjC libffi from http://pyobjc.sourceforge.net, in the case libffi
install doesn't work with the 3.4.x version.
(This libffi issue needs to be tested with the various gcc 3.4.x versions)
mkdir libffi-build
cd libffi-build
<pyobjc dir>/libffi-src/configure [CC='<gcc install dir>/bin/gcc']
make
make install
mkdir libffi-build
cd libffi-build
<pyobjc dir>/libffi-src/configure [CC=<gcc install dir>/bin/gcc]
make
make install
Warning ! Don't install libffi in <gcc install dir>, let it just install in
/usr/local
@ -248,34 +249,34 @@ Warning ! Don't install libffi in <gcc install dir>, let it just install in
Building and installing ffcall (on Darwin x86 only !!!)
------------------------------
./configure --prefix=$GNUSTEP_SYSTEM_ROOT \
--libdir=$GNUSTEP_SYSTEM_ROOT/Library/Libraries \
--includedir=$GNUSTEP_SYSTEM_ROOT/Library/Headers
./configure --prefix=$GNUSTEP_SYSTEM_ROOT \
--libdir=$GNUSTEP_SYSTEM_ROOT/Library/Libraries \
--includedir=$GNUSTEP_SYSTEM_ROOT/Library/Headers
Now you can now build and install it simply by typing:
make
make install
make
make install
Source GNUstep.sh
-----------------
If you are using bourne shell like bash, type:
. <GNUstep install dir>/System/Makefiles/GNUstep.sh
. <GNUstep install dir>/System/Makefiles/GNUstep.sh
If you are using c shell like tcsh, type:
source <GNUstep install dir>/System/Makefiles/GNUstep.csh
source <GNUstep install dir>/System/Makefiles/GNUstep.csh
Building and installing GNUstep-base
------------------------------------
Go to GNUstep-base (or from CVS into the core/base directory)
Go to GNUstep-base (or from CVS into the core/base directory).
If you are using the default gcc (Apple GCC) type:
make install
make install
This should automatically run the configure script for you, build the base
library and some tools, and install the whole lot (along with some system
@ -283,18 +284,18 @@ resources).
Otherwise (if you installed FSF GCC) type:
./configure [CC='<gcc install dir>/bin/gcc']
./configure [CC=<gcc install dir>/bin/gcc]
or if you decided not to build libffi or ffcall:
./configure --disable-do [CC='<gcc install dir>/bin/gcc']
./configure --disable-do [CC=<gcc install dir>/bin/gcc]
followed by
followed by:
make
make install
make
make install
On the apple-apple-apple target, it will only build the GNUstep additions
On the apple-apple-apple target, it will only build the GNUstep additions
library that adds extra stuff to Foundation. If you are using the
apple-apple-apple target, there currently is no reason to go on and compile
GNUstep-gui.
@ -302,34 +303,35 @@ GNUstep-gui.
Building and installing GNUstep-gui
-----------------------------------
Go to GNUstep-gui (or from CVS into the core/gui directory), and type
Go to GNUstep-gui (or from CVS into the core/gui directory).
If you are using the Apple GCC or the FSF GCC type:
./configure --disable-gsnd [CC='<gcc install dir>/bin/gcc']
./configure --disable-gsnd [CC=<gcc install dir>/bin/gcc]
followed by
followed by:
make
make install
make
make install
Note: The gsnd server hasn't been ported to Mac OS X / Darwin yet.
In the case configure didn't found libjpeg, use --with-jpeg-library=<jpeg lib
dir> --with-jpeg-include=<jpeg include dir> to have the libjpeg detected.
In the case configure didn't found libjpeg, use
--with-jpeg-library=<jpeg libdir> --with-jpeg-include=<jpeg include dir> to have
the libjpeg detected.
Example with Fink:
./configure --disable-gsnd --with-jpeg-library=/sw/lib
--with-jpeg-include=/sw/include
./configure --disable-gsnd --with-jpeg-library=/sw/lib
--with-jpeg-include=/sw/include
Building and installing GNUstep-back
------------------------------------
Warning ! You must have installed X11User.pkg from the Panther
install disc and also X11SDK.pkg from the xCode Tools install disc to
be able to compile GNUstep-back under Mac OS X 10.3.
Warning ! You must have installed X11User.pkg from the Panther install disc and
also X11SDK.pkg from the xCode Tools install disc to be able to compile
GNUstep-back under Mac OS X 10.3.
If you aren't installing GNUstep under Mac OS X 10.3 / Darwin 7, you can use
XDarwin (ftp://ftp.xfree86.org/pub/XFree86/4.3.0/binaries/Darwin-ppc-6.x/) for
@ -337,63 +339,62 @@ the X server, take a look at http://www.xdarwin.org
In the back directory, type:
./configure [CC='<gcc install dir>/bin/gcc']
make
make install
./configure [CC=<gcc install dir>/bin/gcc]
make
make install
In the case, you choose to use the art backend, you will need to have
the freetype2 and libart2 libraries installed, first be sure to have
libart2 in your path, for example, with Fink installation type:
In the case, you choose to use the art backend, you will need to have the
freetype2 and libart2 libraries installed, first be sure to have libart2 in your
path, for example, with Fink installation type:
export DYLD_LIBRARY_PATH=/sw/lib:$DYLD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=/sw/lib:$DYLD_LIBRARY_PATH
Then you should be able to configure back and install it.
Then you should be able to configure back and install it:
./configure --enable-graphics=art [CC='<gcc install dir>/bin/gcc']
make
make install
./configure --enable-graphics=art [CC='<gcc install dir>/bin/gcc']
make
make install
You also need to have /sw/lib in your library path before running
GNUstep apps with the art backend, as it needs to find libart2, so put
the above export DYLD_LIBRARY_PATH somewhere in your .profile (or do
the export before launching an application). The backend architecture
which GNUstep-gui is built upon, has been written to be used within X
Windows, then you need to start up an X Server (like Apple X11) to run
the GNUstep-gui applications.
You also need to have /sw/lib in your library path before running GNUstep apps
with the art backend, as it needs to find libart2, so put the above export
DYLD_LIBRARY_PATH somewhere in your .profile (or do the export before launching
an application). The backend architecture which GNUstep-gui is built upon, has
been written to be used within X Windows, then you need to start up an X Server
(like Apple X11) to run the GNUstep-gui applications.
Warning ! With the art backend, before to launch applications based on
GNUstep-gui, in the shell, don't forget to edit the defaults (no need
it to redo it later) :
Warning ! With the art backend, before to launch applications based on
GNUstep-gui, in the shell, don't forget to edit the defaults (no need it to redo
it later):
defaults write NSGlobalDomain XWindowBufferUseXShm NO
defaults write NSGlobalDomain XWindowBufferUseXShm NO
because Apple X11 doesn't support well shared memory for buffering
(wich libart2 uses by default).
because Apple X11 doesn't support well shared memory for buffering (which
libart2 uses by default).
POTENTIAL ERRORS WHEN RUNNING MAKE ESPECIALLY WITH BACK AND GUI
---------------------------------------------------------------
If you get errors like below, just do:
make clean
make
make clean
make
The second or the third time, the errors should disappear. It's probably due to
some potential issues between FSF GCC and the libtool/ld Mac OS X / Darwin
versions.
Linking subproject x11 ...
/usr/bin/ld: shared_obj/xdnd.o bad magic number (not a Mach-O file)
collect2: ld returned 1 exit status
make[3]: *** [shared_obj/subproject.o] Error 1
make[2]: *** [x11.all.subproject.variables] Error 2
make[1]: *** [libgnustep-back.all.bundle.variables] Error 2
make: *** [internal-all] Error 2
Linking subproject x11 ...
/usr/bin/ld: shared_obj/xdnd.o bad magic number (not a Mach-O file)
collect2: ld returned 1 exit status
make[3]: *** [shared_obj/subproject.o] Error 1
make[2]: *** [x11.all.subproject.variables] Error 2
make[1]: *** [libgnustep-back.all.bundle.variables] Error 2
make: *** [internal-all] Error 2
More informations on the art backend
------------------------------------
To have a working art backend... You will also need to download and install
To have a working art backend... You will also need to download and install
fonts, as it uses a specific font format. Use for example the file
http://w1.423.telia.com/~u42308495/alex/backart/ArtResources-0.1.2.tar.bz2 and
put the .nfont directories somewhere in $(GNUSTEP_SYSTEM_ROOT)/Library/Fonts
@ -409,7 +410,8 @@ In the case, you choose to use it, don't forget to execute wmaker.inst else
Window Maker will crash with signal 10.
Example with Fink, do:
/sw/bin/wmaker.inst
/sw/bin/wmaker.inst
GNUstep daemons
---------------
@ -421,22 +423,24 @@ it won't work, because when you become root on Mac OS X / Darwin with sudo or
su, DYLD_LIBRARY_PATH environment variable is erased, then to start them in the
shell, do:
sudo opentool gdomap (gdomap doesn't rely on the GNUstep libraries or other
special librairies)
su root
sudo opentool gdomap # gdomap doesn't rely on
# the GNUstep libraries
# or other special
# librairies.
su root
then with bourne shell like bash (Mac OS X 10.3):
. /GNUSTEP_SYSTEM_ROOT/Library/Makesfiles/GNUstep.sh
. /GNUSTEP_SYSTEM_ROOT/Library/Makesfiles/GNUstep.sh
or with c shell like tcsh (Mac OS X 10.2):
source /GNUSTEP_SYSTEM_ROOT/Library/Makesfiles/GNUstep.csh
source /GNUSTEP_SYSTEM_ROOT/Library/Makesfiles/GNUstep.csh
and just do:
opentool gdnc
opentool gpbs
opentool gdnc
opentool gpbs
---