1Date:	17-Sep-2002 (tested under windows-xp)
2Author: Ildar Mulyukov <ildar@users.sourceforge.net>
3Update:	23-Oct-2004 (tested under windows-2000)
4Author: Adam Fedor <fedor@gnu.org>
5
6
7PURPOSE
8-------
9
10This document may be treated as just an appendix to GNUstep-HOWTO. You
11can find GNUstep-HOWTO link here:
12http://gnustep.org/experience/documentation.html
13
14This document is intended to provide a step by step instruction on how
15to get the GNUstep base library into a usable state on a recent windows
16operating system (XP, 2000, and probably NT) within Cygwin environment.
17
18Cygwin is unix-like environment working on top of Win32 (Windows, Windows
19NT/2k/XP). You can find complete information about it on the website
20http://cygwin.org
21
22For the moment GNUstep can be built with GUI support. (Native Win32
23GUI, not X11) The gui library is only partially ported to run under
24Win32 API so be warned.
25
26Several people have reported that GNUstep installation on Cygwin works
27fine, but as always, a slightly different Window's setup can cause
28unforseen problems. You should be relatively confident at working with
29Cygwin before attempting to install GNUstep.
30
31ADDITIONAL COMMENTS
32-------------------
33
34Note: These comments are just my experience. You don't need these to build
35GNUstep. If you don't understand something don't worry.
36
37Cygwin project is now in a very advanced stage. It's ready to be used by
38end-users and in commercial purposes and very convenient for programmers.
39
40Cygwin provides "General UNIX" environment and APIs. In fact
41GNUstep-base is compiled using Unix alternatives of classes (like
42NSConcreteUnixTask). But it has several particularities that must been
43taken into consideration. There is a very good documentation on Cygwin
44website on these questions. See e.g.
45http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html I would like to
46mention two of them:
47
481. Filesystem is case-insensitive. Now it's (luckily) supports
49soft-links. But case-insensitivity hinders quite a lot.
50
512. Dynamic libraries mechanism is not so good. (Windows DLL). It does
52not support several features (and this makes so hard to port some
53software e.g. licq) And it has those ugly __declspec(dllexport) /
54__declspec(dllimport) . But (Cygwin hackers are just cool!) in later
55releases of binutils ld is capable to link wrongly declared exports!
56This eliminates a lot of problems when dealing with DLLs (including
57objc.dll and gnustep-*.dll)
58
59PRELIMINARIES
60-------------
61
62Before you start, you need Cygwin in some programming-oriented
63configuration (full configuration is OK but it's VERY big
64now). Installation instructions are on Cygwin site.
65
66Cygwin already contains every package needed for GNUstep. The default
67installation, however, does not include every package needed. See the
68GNUstep-HOWTO lists all the packages you might need. A probably incomplete
69list is given below:
70
71For base (non-GUI):
72gcc-objc
73libxml2
74libxslt
75
76For GUI:
77X11 installation
78libtiff
79libtiff-devel
80libjpg
81libpng
82
83
84Obtaining GNUstep
85-----------------
86
87The main GNUstep project pages tell you how to get hold of this. You
88can get the latest release of the following libraries.
89
90You need these packages:
91
92GNUstep-make
93ffcall
94GNUstep-objc
95GNUstep-base
96
97GNUstep-gui
98GNUstep-back
99
100
101Building and installing libraries
102---------------------------------
103
104FFCALL: Unpack, configure, make, make install. See GNUstep-HOWTO for details.
105Note again: you can make package. See APPENDIX A
106
107
108Building and installing gnustep-make
109------------------------------------
110
111As ususal. e.g.
112
113./configure
114make
115make install
116
117
118Building and installing libobjc
119-------------------------------
120
121You need to install gnustep-objc as it properly exports symbols for
122DLLs and it's DLL.
123
124Unpack gnustep-objc, and type:
125
126  make install
127
128Note: do not use configure.
129
130
131Building and installing GNUstep-base
132------------------------------------
133
134Unpack gnustep-base, and type:
135
136  make install
137
138This should automatically run the configure script for you, build the
139base library and some tools, and install the whole lot.
140
141
142Building and installing GNUstep-gui
143-----------------------------------
144
145Unpack to gnustep-gui, and type:
146
147  make install
148
149
150Building and installing GNUstep-back
151------------------------------------
152
153In the back directory, type
154
155  make install
156
157
158
159Troubleshooting
160---------------
161
162APPENDIX A
163----------
164
165This is mkpkg.sh script for making packages from sources.
166
167#!/bin/bash
168# make a cygwin package
169#   launch this script in the building dir
170
171TMPDIR=/tmp/__TMP_$RANDOM
172FLIST=$TMPDIR/files.list
173
174rm -rf $TMPDIR
175mkdir $TMPDIR
176
177touch /usr/time.stamp
178make install
179
180pushd .
181cd /
182find usr ! -type d -newer /usr/time.stamp > $FLIST
183rm /usr/time.stamp
184
185# Don't forget to rename it to real package name
186tar cjf $TMPDIR/package.tar.bz2 `cat $FLIST`
187popd
188
189unset TMPDIR FLIST
190
191--- *** CUT *** ---
192