mirror of
https://github.com/gnustep/tools-make.git
synced 2025-04-22 22:00:49 +00:00
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@39015 72102866-910b-0410-8b05-ffd578937521
769 lines
21 KiB
Text
769 lines
21 KiB
Text
Date: 28-Feb-2007
|
|
Update: 19-Feb-2015
|
|
Author: Nicola Pero <nicola.pero@meta-innovation.com>
|
|
after Richard Frith-Macdonald <rfm@gnu.org>,
|
|
Germán Arias <germanandre@gmx.es> and others.
|
|
|
|
|
|
PURPOSE
|
|
-------
|
|
|
|
This document is intended to provide a step by step instruction on how
|
|
to use GNUstep on recent Windows operating systems.
|
|
|
|
It will get as far as explaining how to build a GNUstep application
|
|
and create a standalone version that can be shipped standalone to
|
|
Windows end users.
|
|
|
|
The recommended way to get GNUstep working on Windows is to use MinGW
|
|
and MSYS to get a Unix-like environment where you can easily build
|
|
your GNUstep software (this is what is described in this file).
|
|
|
|
Software built in the MinGW/MSYS environment is native Windows
|
|
software that you can then run without having to rely on the environment
|
|
you used to build.
|
|
|
|
So, this document is divided in two parts.
|
|
|
|
In the first part ("STEP BY STEP INSTALLATION INSTRUCTIONS"), we will
|
|
describe how to get MinGW/MSYS up and running, and how to build
|
|
GNUstep software in this environment.
|
|
|
|
In the second part ("HOW TO SHIP YOUR GNUSTEP APPLICATION TO WINDOWS
|
|
USERS"), we'll show an example of how to package (and use) the .exes,
|
|
.dlls and resources (that you can build using the environment
|
|
described in the first part) as Windows standalone binaries.
|
|
|
|
|
|
INTRODUCTION TO MINGW
|
|
---------------------
|
|
|
|
MinGW is a collection of header files and import libraries that allow
|
|
one to use GCC and produce native Windows32 programs that do not rely
|
|
on any 3rd-party DLLs.
|
|
|
|
MSYS is a very much cut down version of the Cygwin environment ...
|
|
providing a minimal set of tools needed to build programs using
|
|
MingGW. If you wish to build for MinGW by cross-compiling from a
|
|
Cygwin environment, please read README.Cygwin instead.
|
|
|
|
|
|
PRELIMINARIES
|
|
-------------
|
|
|
|
One way to vastly simplify installing GNUstep, is to use the Windows-based
|
|
GNUstep installer. Get it from:
|
|
|
|
http://www.gnustep.org/windows/installer.html
|
|
|
|
If you have already installed this, you can skip to the end and just
|
|
start compiling and packaging applications! Although you may want to
|
|
read the rest of the instructions for other helpful information.
|
|
|
|
|
|
|
|
A. STEP BY STEP INSTALLATION INSTRUCTIONS
|
|
-----------------------------------------
|
|
|
|
1. Install MinGW
|
|
================
|
|
|
|
Download MinGW-Get-Setup.exe from
|
|
|
|
http://sourceforge.net/projects/mingw/files/Installer/
|
|
|
|
Then start it up. Set the installation path to
|
|
|
|
C:\xxx\
|
|
|
|
Where \xxx\ is the top-level path you want to use, I use Nicola/GNUstep so
|
|
I install it into C:\Nicola\GNUstep\. We will refer to this path as MINGWPATH.
|
|
|
|
|
|
2. Install necessary packages
|
|
=============================
|
|
|
|
MinGW create an access on the desktop to the "MinGW installer", a package
|
|
manager you can use to install packages available to MinGW. To build GNUstep
|
|
you will need many packages.
|
|
|
|
At MinGW Installer select "All packages" and then install the following
|
|
packages (bin and dev packages when correspond):
|
|
|
|
(I'm really not sure if all them are necessary)
|
|
|
|
mingw32-autoconf
|
|
mingw32-binutils
|
|
mingw32-bzip2
|
|
mingw32-gcc
|
|
mingw32-gcc-g++
|
|
mingw32-gcc-objc
|
|
mingw32-gdb
|
|
mingw32-gmp
|
|
mingw32-libbz2
|
|
mingw32-libgmp
|
|
mingw32-libiconv
|
|
mingw32-libintl
|
|
mingw32-libpthread-old
|
|
mingw32-libpthreadgc
|
|
mingw32-libtool
|
|
mingw32-libunistring
|
|
mingw32-libz
|
|
mingw32-make
|
|
mingw32-pkginfo
|
|
mingw32-pthreads-w32
|
|
mingw32-w32api
|
|
msys-base
|
|
msys-bash
|
|
msys-console
|
|
msys-crypt
|
|
msys-diffutils
|
|
msys-libcrypt
|
|
msys-libgmp
|
|
msys-libiconv
|
|
msys-libminires
|
|
msys-m4
|
|
msys-minires
|
|
msys-zlib
|
|
|
|
|
|
3. Additional Useful Tools
|
|
==========================
|
|
|
|
You will need install GNUstep from Subversion, so you need a Subversion
|
|
client. I used:
|
|
|
|
http://www.sliksvn.com/pub/Slik-Subversion-1.6.9-win32.msi
|
|
|
|
and then install subversion in a random directory.
|
|
|
|
|
|
You will need and editor, for example Emacs. Get a Windows version for
|
|
MinGW from:
|
|
|
|
https://www.gnu.org/software/emacs/
|
|
|
|
To install it, simply unpack it in your MINGWPATH, you can now
|
|
execute the binary in 'MINGWPATH/bin'.
|
|
|
|
|
|
3. Additional Windows steps
|
|
===========================
|
|
|
|
You may need to edit /MINGWPATH/include/winsock2.h to change the size of the
|
|
sa_data field in the sockaddr structure from 14 to 22 ... this is because
|
|
some versions of Windows have changed the layout of this structure.
|
|
This modification may be needed to be able to correctly determine the
|
|
network interface details for your machine.
|
|
|
|
|
|
On Windows Vista and later, an additional problem has been reported
|
|
where 'make install' would sometimes fail because of permission
|
|
problems. The problem is discussed here --
|
|
|
|
http://lists.gnu.org/archive/html/gnustep-dev/2010-06/msg00055.html
|
|
|
|
you may have to install the additional MinGW files, as explained
|
|
there.
|
|
|
|
|
|
4. Mount your MINGWPATH directory
|
|
=================================
|
|
|
|
With Emacs create a file called "fstab" in C:\MINGWPATH\msys\x.x\etc and add
|
|
a line like:
|
|
|
|
C:\MINGWPATH /mingw
|
|
|
|
Remember MINGWPATH is the path where you installed mingw (We assume you
|
|
install it at your C: drive, if not change it). "mingw" is the name to
|
|
refer to your MINGWPATH directory inside MSYS console, you can use any other
|
|
name, but remember it because we will need this later. We will refer to this
|
|
name as MOUNTDIR.
|
|
|
|
|
|
5. Launch the MSYS console
|
|
==========================
|
|
|
|
Launch the console at C:\MINGWPATH\msys\x.x\msys.bat (double click).
|
|
|
|
|
|
6. Installing gnustep-make
|
|
==========================
|
|
|
|
Get gnustep-make:
|
|
|
|
svn co http://svn.gna.org/svn/gnustep/tools/make/trunk make
|
|
|
|
Then install it (avoid warning about conftest.exe):
|
|
|
|
cd make
|
|
./configure
|
|
make
|
|
make install
|
|
|
|
|
|
7. Special recommendation
|
|
=========================
|
|
|
|
In next steps don't use "make -j", because can cause problems.
|
|
|
|
|
|
8. Installing libffi
|
|
====================
|
|
|
|
Download libffi-x.x.x.tar.gz from https://sourceware.org/libffi/.
|
|
Unpack it, compile and install:
|
|
|
|
cd libffi-x.x.x
|
|
./configure --prefix=/MOUNTDIR
|
|
make
|
|
make install
|
|
mv /MOUNTDIR/lib/libffi-x.x.x/include/* /MOUNTDIR/include/
|
|
|
|
(if you get a popup about contest.exe failing, just ignore it)
|
|
NB. The headers have to be moved manually because the package won't install
|
|
them in the right place.
|
|
|
|
|
|
9. Install ICU
|
|
==============
|
|
|
|
Download latest ICU from http://site.icu-project.org/ (zip package).
|
|
Unpack it, compile and install as fallow:
|
|
|
|
cd icu/source
|
|
./runConfigureICU --disable-release MinGW --prefix=/MOUNTDIR
|
|
make
|
|
make install
|
|
|
|
|
|
10. Install GNUtls
|
|
==================
|
|
|
|
Download the latest version from the official page (windows binary). Copy
|
|
this at your MINGWPATH directory and unpack it.
|
|
|
|
|
|
11. Install pkg-config
|
|
======================
|
|
|
|
The best option is install pkg-config lite from:
|
|
|
|
http://sourceforge.net/projects/pkgconfiglite/files/
|
|
|
|
Download latest version, unpack it an copy the files at corresponding
|
|
directories in your MINGWPATH directory.
|
|
|
|
|
|
12. Install xml2
|
|
================
|
|
|
|
There are available binary packages of xml, but all these don't provide an
|
|
m4 file to be used with pkg-config. And since gnustep-base use pkg-config to
|
|
detect xml we need install it from source. So download the latest version
|
|
from http://xmlsoft.org/ and install it:
|
|
|
|
cd libxml2-x.x.x
|
|
./configure --prefix=/MOUNTDIR
|
|
make
|
|
make install
|
|
|
|
|
|
13. Fix problem with mingwrt
|
|
============================
|
|
|
|
(I you are using mingw32-mingwrt-3.21.1 or above skip this step.
|
|
Run MinGW Installer to see what version are you using.)
|
|
|
|
Launch Emacs and open the file /MINGWPATH/include/unistd.h
|
|
|
|
And comment the line 95 (#include <parts/time.h>) and all the function
|
|
nanosleep (from line 104 to 117). Save the file.
|
|
|
|
|
|
14. Source GNUstep.sh
|
|
=====================
|
|
|
|
Probably you will need source the GNUstep script:
|
|
|
|
. /local/share/GNUstep/Makefiles/GNUstep.sh
|
|
|
|
|
|
15. Install gnnustep-base
|
|
=========================
|
|
|
|
Get gnustep-base:
|
|
|
|
svn co http://svn.gna.org/svn/gnustep/libs/base/trunk base
|
|
|
|
Then compile and install it:
|
|
|
|
cd base
|
|
./configure
|
|
make
|
|
make install
|
|
|
|
|
|
16. Install jpeg
|
|
================
|
|
|
|
Download the latest version from http://ijg.org/. Then compile and install it
|
|
as fallow:
|
|
|
|
cd jpeg-xx
|
|
autoheader
|
|
./configure --prefix=/MOUNTDIR
|
|
make
|
|
make install
|
|
|
|
|
|
17. Install libtiff
|
|
===================
|
|
|
|
Download latest version from http://www.libtiff.org/. Then compile and
|
|
install it:
|
|
|
|
cd tiff-x.x.x
|
|
./configure --prefix=/MOUNTDIR
|
|
make
|
|
make install
|
|
|
|
|
|
18. Install libpng
|
|
==================
|
|
|
|
Download latest version from http://libpng.org/pub/png/libpng.html.
|
|
Then compile and install it:
|
|
|
|
cd lpngXXX
|
|
cp scripts/pnglibconf.h.prebuild pnglibconf.h
|
|
cp scripts/makefile.msys makefile
|
|
|
|
Launch Emacs and edit the makefile to set prefix as "prefix=/MOUNTDIR", then:
|
|
|
|
make
|
|
make install
|
|
|
|
|
|
19. Install libungif
|
|
====================
|
|
|
|
From http://gnuwin32.sourceforge.net/ download
|
|
|
|
libungif-4.1.4-1.exe
|
|
|
|
Execute it and install the package into your MINGWPATH directory.
|
|
|
|
|
|
20. Install libao
|
|
=================
|
|
|
|
Download libao from http://xiph.org/ao/. And install it:
|
|
|
|
cd libao-x.x.x
|
|
./cofigure --prefix=/MOUNTDIR
|
|
make
|
|
make install
|
|
|
|
|
|
21. Install Aspell
|
|
==================
|
|
|
|
Download the windows port http://aspell.net/win32/. And
|
|
install it in your MINGWPATH directory (directly in your MINGWPATH directory,
|
|
not under the Aspell directory).
|
|
|
|
Download also the dev package, unpack it and copy the libraries and headers
|
|
to the corresponding directories at your MINWGPATH directory.
|
|
|
|
Download also the installers for the dictionaries you want use, extract and
|
|
install them into your MINGWPATH directory (directly in your MINGWPATH
|
|
directory, not under the Aspell directory).
|
|
|
|
Now you need change the name of some libraries, go to directory MINGWPATH/lib
|
|
and change the name of these files:
|
|
|
|
aspell-15.def ----> aspell.def
|
|
aspell-15.lib ----> aspell.lib
|
|
libaspell-15-dll.lib ----> libaspell-dll.lib
|
|
|
|
|
|
22. Add path to icu libraries
|
|
=============================
|
|
|
|
FIXME: Why this is needed?
|
|
|
|
Edit the file /MINGWPATH/msys/etc/profile and add the path to ICU libs:
|
|
|
|
export PATH=$PATH:/MOUNTDIR/lib
|
|
|
|
|
|
23. Install gnustep-gui
|
|
=======================
|
|
|
|
Get gnustep-gui:
|
|
|
|
svn co http://svn.gna.org/svn/gnustep/libs/gui/trunk gui
|
|
|
|
Then compile and install it:
|
|
|
|
cd gui
|
|
./configure
|
|
make
|
|
make install
|
|
|
|
|
|
24. Install gnustep-back
|
|
========================
|
|
|
|
Get gnustep-back:
|
|
|
|
svn co http://svn.gna.org/svn/gnustep/libs/back/trunk back
|
|
|
|
Then compile and install it:
|
|
|
|
cd back
|
|
./configure
|
|
make
|
|
make install
|
|
|
|
|
|
25. Install gnustep-back with cairo graphics (optional but highly recommended)
|
|
==============================================================================
|
|
|
|
Download fallowing packages:
|
|
|
|
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo_1.10.2-2_win32.zip
|
|
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo-dev_1.10.2-2_win32.zip
|
|
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng_1.4.3-1_win32.zip
|
|
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype_2.4.2-1_win32.zip
|
|
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype-dev_2.4.2-1_win32.zip
|
|
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig_2.8.0-2_win32.zip
|
|
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig-dev_2.8.0-2_win32.zip
|
|
|
|
|
|
Copy these packages at your MINGWPATH directory and unpack them. Now move some
|
|
headers:
|
|
|
|
mv /MOUNTDIR/include/cairo/* /MOUNTDIR/include/
|
|
mv /MOUNTDIR/include/freetype2/freetype/ /MOUNTDIR/include/
|
|
|
|
Now we need recompile gnustep-back to use cairo backend:
|
|
|
|
cd back
|
|
make distclean
|
|
./configure --enable-graphics=cairo --with-name=cairo LIBS=-lcairo
|
|
make
|
|
make install
|
|
|
|
Now set defaults to use this backend:
|
|
|
|
defaults write NSGlobalDomain GSBackend cairo
|
|
|
|
|
|
26. Install WinUXTheme (optional)
|
|
=================================
|
|
|
|
Get WinUXTheme:
|
|
|
|
svn co http://svn.gna.org/svn/gnustep/plugins/themes/WinUXTheme/ winuxtheme
|
|
|
|
Then compile and install it:
|
|
|
|
cd winuxtheme
|
|
make
|
|
make install
|
|
|
|
Set it:
|
|
|
|
defaults write NSGlobalDomain GSTheme WinUXTheme
|
|
|
|
|
|
27. Source the gnustep script when launch the console
|
|
=====================================================
|
|
|
|
Edit the file /MINGWPATH/msys/etc/x.x/profile and add this line to source the
|
|
gnustep script:
|
|
|
|
. /local/share/GNUstep/Makefiles/GNUstep.sh
|
|
|
|
|
|
28. Set up the spell chequer service
|
|
====================================
|
|
|
|
The spell chequer service need be configured. So we need launch it once
|
|
to configure it. Run the command:
|
|
|
|
/local/lib/GNUstep/Services/GSspell.service/GSspell.exe
|
|
|
|
|
|
29. Testing your gui installation
|
|
=================================
|
|
|
|
Get the examples:
|
|
|
|
svn co http://svn.gna.org/svn/gnustep/tests/examples/trunk/ examples
|
|
|
|
Go in a simple gui application (examples/gui a very good starting
|
|
point), compile and run it. :-). Ink and PowerPaint should work fine
|
|
on Windows, test these.
|
|
|
|
Additionally, you might want to compile and run Gorm or other GNUstep
|
|
applications. Gorm (and hopefully other GNUstep applications too)
|
|
should compile and run out of the box.
|
|
|
|
|
|
Troubleshooting
|
|
---------------
|
|
|
|
Issues with updating:
|
|
Before attempting to update your GNUstep installation, be sure to stop/kill
|
|
all running GNUstep programs or services (i.e. gdomap, gdnc, gpbs) since
|
|
Windows cannot overwrite files that are currently in use.
|
|
|
|
Where we specify specific versions of packages to be used, we have
|
|
tested with those versions - later or earlier versions may work, but
|
|
may well not. Generally earlier versions should be assumed not to
|
|
work.
|
|
|
|
|
|
|
|
B. HOW TO SHIP YOUR GNUSTEP APPLICATION TO WINDOWS USERS
|
|
--------------------------------------------------------
|
|
|
|
You probably want to ship your Windows application as a standalone
|
|
.zip file that Windows users can easily download and use.
|
|
|
|
We will explain what to do with an example: that of packaging
|
|
Gomoku.app. We will first build the application (creating
|
|
Gomoku.app), then we'll add to to it all the GNUstep DLLs and
|
|
resources that are needed to run the application, and we'll end up
|
|
with a single directory, Gomoku.app, that contains a program
|
|
(Gomoku.exe) and a bunch of DLLs and various other resources required
|
|
to run the program.
|
|
|
|
The end user just needs to get this directory (from a .zip or .tgz
|
|
file, for example) and can double-click on Gomoku.exe to start the
|
|
program (no GNUstep installation required).
|
|
|
|
|
|
1. Build the application
|
|
========================
|
|
|
|
Build your application (Gomoku.app in this example) in your
|
|
MinGW/GNUstep environment. Generally, this means getting the source
|
|
code and typing 'make' in it. If you're trying to follow the
|
|
Gomoku.app example, the source code is here:
|
|
|
|
http://www.gnustep.it/nicola/Applications/Gomoku/index.html
|
|
|
|
Once you have built it, make sure you can run your application from
|
|
within mingw by using 'openapp', as in 'openapp ./Gomoku.app'.
|
|
|
|
2. Copy your application somewhere
|
|
==================================
|
|
|
|
Now take your built application and copy it somewhere -- we'll be
|
|
working on it! Eg, I just copy it in my home directory.
|
|
|
|
cp -R /home/Nico/Gomoku-1.2.8/Gomoku.app /home/Nico/
|
|
|
|
|
|
3. Copy DLLs into your application
|
|
==================================
|
|
|
|
Now search for MinGW/GNUstep DLL files in /MOUNTDIR/bin, /MOUNTDIR/lib and
|
|
/local/bin, and copy them all into Gomoku.app:
|
|
|
|
cp $(find /MOUNTDIR/bin -name *.dll) /home/Nico/Gomoku.app/
|
|
cp $(find /MOUNTDIR/lib -name *.dll) /home/Nico/Gomoku.app/
|
|
cp $(find /local/bin -name *.dll) /home/Nico/Gomoku.app/
|
|
|
|
|
|
4. Copy config files into your application
|
|
==========================================
|
|
|
|
Now copy the "etc" directory in /MOUNTDIR to Gomoku.app:
|
|
|
|
cp -R /MOUNTDIR/etc /home/Nico/Gomoku.app/
|
|
|
|
|
|
5. Copy your GNUstep Library folder
|
|
===================================
|
|
|
|
Now copy all of the GNUstep resources into the application --
|
|
|
|
mkdir -p /home/Nicola/Gomoku.app/GNUstep/
|
|
cp -R /local/lib/GNUstep/* /home/Nico/Gomoku.app/GNUstep/
|
|
|
|
I put them all into Gomoku.app/GNUstep/, which means that later on
|
|
I'll set up the GNUstep.conf file to map GNUSTEP_*_LIBRARY to that
|
|
directory.
|
|
|
|
|
|
6. Copy key GNUstep binary programs
|
|
===================================
|
|
|
|
cp /local/bin/gpbs.exe /home/Nicola/Gomoku.app
|
|
cp /local/bin/gdnc.exe /home/Nicola/Gomoku.app
|
|
cp /local/bin/gdomap.exe /home/Nicola/Gomoku.app
|
|
cp /local/bin/make_services.exe /home/Nicola/Gomoku.app
|
|
cp /local/bin/defaults.exe /home/Nicola/Gomoku.app
|
|
|
|
I put them all into Gomoku.app, which means that later
|
|
on I'll set up the GNUstep.conf file to map GNUSTEP_*_TOOLS to that
|
|
directory.
|
|
|
|
|
|
7. Add a GNUstep.conf
|
|
=====================
|
|
|
|
You need to add a Gomoku.app/GNUstep.conf file to tell gnustep-base
|
|
where to find things inside Gomoku.app -- here is the one I use (which
|
|
matches the locations where I copied things in the previous steps) --
|
|
|
|
GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf
|
|
GNUSTEP_USER_DIR=GNUstep
|
|
GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults
|
|
|
|
GNUSTEP_SYSTEM_APPS=./GNUstep/Apps
|
|
GNUSTEP_SYSTEM_ADMIN_APPS=./GNUstep/Apps
|
|
GNUSTEP_SYSTEM_TOOLS=./
|
|
GNUSTEP_SYSTEM_ADMIN_TOOLS=./
|
|
GNUSTEP_SYSTEM_LIBRARY=./GNUstep
|
|
GNUSTEP_SYSTEM_HEADERS=./GNUstep/Headers
|
|
GNUSTEP_SYSTEM_LIBRARIES=./GNUstep/Libraries
|
|
GNUSTEP_SYSTEM_DOC=./GNUstep/Documentation
|
|
GNUSTEP_SYSTEM_DOC_MAN=./GNUstep/Documentation/man
|
|
GNUSTEP_SYSTEM_DOC_INFO=./GNUstep/Documentation/info
|
|
|
|
GNUSTEP_NETWORK_APPS=./GNUstep/Apps
|
|
GNUSTEP_NETWORK_ADMIN_APPS=./GNUstep/Apps
|
|
GNUSTEP_NETWORK_TOOLS=./
|
|
GNUSTEP_NETWORK_ADMIN_TOOLS=./
|
|
GNUSTEP_NETWORK_LIBRARY=./GNUstep
|
|
GNUSTEP_NETWORK_HEADERS=./GNUstep/Headers
|
|
GNUSTEP_NETWORK_LIBRARIES=./GNUstep/Libraries
|
|
GNUSTEP_NETWORK_DOC=./GNUstep/Documentation
|
|
GNUSTEP_NETWORK_DOC_MAN=./GNUstep/Documentation/man
|
|
GNUSTEP_NETWORK_DOC_INFO=./GNUstep/Documentation/info
|
|
|
|
GNUSTEP_LOCAL_APPS=./GNUstep/Apps
|
|
GNUSTEP_LOCAL_ADMIN_APPS=./GNUstep/Apps
|
|
GNUSTEP_LOCAL_TOOLS=./
|
|
GNUSTEP_LOCAL_ADMIN_TOOLS=./
|
|
GNUSTEP_LOCAL_LIBRARY=./GNUstep
|
|
GNUSTEP_LOCAL_HEADERS=./GNUstep/Headers
|
|
GNUSTEP_LOCAL_LIBRARIES=./GNUstep/Libraries
|
|
GNUSTEP_LOCAL_DOC=./GNUstep/Documentation
|
|
GNUSTEP_LOCAL_DOC_MAN=./GNUstep/Documentation/man
|
|
GNUSTEP_LOCAL_DOC_INFO=./GNUstep/Documentation/info
|
|
|
|
So, just copy and paste this code into a GNUstep.conf file that you
|
|
put into /home/Nico/Gomoku.app/GNUstep.conf.
|
|
|
|
|
|
8. Add a GlobalDefaults.plist
|
|
=============================
|
|
|
|
You need to add a Gomoku.app/GlobalDefaults.plist file to tell GNUstep
|
|
the defaults you want use (the theme, backend, etc.), and save this file
|
|
with write/read permission only for the owner (chmod 600). For example:
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//GNUstep//DTD plist 0.9//EN" "http://www.gnustep.org/plist-0_9.xml">
|
|
<plist version="0.9">
|
|
<dict>
|
|
<key>GSTheme</key>
|
|
<string>WinUXTheme</string>
|
|
<key>GSBackend</key>
|
|
<string>cairo</string>
|
|
</dict>
|
|
</plist>
|
|
|
|
|
|
8. Now the application should be working
|
|
========================================
|
|
|
|
At this stage, everything should be working "standalone".
|
|
|
|
By that we mean that if you give your Gomoku.app/ to a Windows user
|
|
(with no GNUstep installed on their machine), they should be able to
|
|
run it by just double-clicking on the Gomoku executable inside of the
|
|
Gomoku.app/ directory! :-)
|
|
|
|
Try it out and make sure that it works.
|
|
|
|
|
|
9. Cleanup
|
|
==========
|
|
|
|
If you look at your Gomoku.app/ directory, you will see that it is
|
|
really big. We mass-copied stuff from the GNUstep/MinGW directories;
|
|
but generally, you want to make sure you remove anything that you
|
|
don't strictly need. So go in there and remove anything that you
|
|
don't need.
|
|
|
|
First thing, you should remove the MSYS libraries, which we never use --
|
|
|
|
rm Gomoku.app/msys-1.0.dll
|
|
rm Gomoku.app/msysltdl-3.dll
|
|
rm Gomoku.app/libW11.dll
|
|
rm Gomoku.app/libperl.dll
|
|
rm Gomoku.app/librle3.dll
|
|
|
|
Then, remove any additional library that your application doesn't use;
|
|
for example, I removed --
|
|
|
|
rm Gomoku.app/Renaissance.dll
|
|
rm Gomoku.app/ProjectCenter.dll
|
|
|
|
Finally, remove Apps and other stuff that you might have copied from
|
|
the general GNUstep installation --
|
|
|
|
rm -Rf Gomoku.app/GNUstep/Apps
|
|
rm -Rf Gomoku.app/GNUstep/Frameworks/ProjectCenter.framework
|
|
|
|
Generally, you may want to build the whole stuff making sure you only
|
|
include what you strictly need.
|
|
|
|
|
|
10. Stripping
|
|
=============
|
|
|
|
The resulting directory might still be pretty big. If you are trying
|
|
to distribute it over the internet, your users will probably
|
|
appreciate if you stripped it, removing symbols. Just run 'strip'
|
|
on all the .exe and .dll files in your application.
|
|
|
|
strip $(find /home/Nico/Gomoku.app/ -name '*.exe')
|
|
strip $(find /home/Nico/Gomoku.app/ -name '*.dll')
|
|
|
|
That will reduce the size a lot. If you're not distributing it over
|
|
the internet, you might be happy leaving the symbols in though.
|
|
|
|
|
|
11. Checking Licenses
|
|
====================
|
|
|
|
Finally, before deployment, you need to realize that you are shipping
|
|
a lot of GNUstep (and non-GNUstep) software with your application.
|
|
|
|
This is fine, just make sure you are aware of the licenses, and that
|
|
you comply with them.
|
|
|
|
|
|
PACKAGING/WINDOWS TODOS
|
|
-----------------------
|
|
|
|
The gdnc, gpbs processes are somehow a bit of a pain. They are
|
|
automatically started when you start your application, but they are
|
|
not automatically stopped when you quit it. This might have bad
|
|
consequences, eg, if you are using your application from a USB flash
|
|
disk, Windows doesn't let you unplug the USB disk while gdnc/gpbs are
|
|
running, because they are running from the disk!
|
|
|
|
Also, it's not clear what happens if you have two or three such
|
|
GNUstep apps downloaded from the web and you try to run them at the
|
|
same time. What about gdomap etc ?
|