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