2015-02-20 05:59:04 +00:00
|
|
|
Date: 28-Feb-2007
|
|
|
|
Update: 19-Feb-2015
|
2007-02-28 15:42:44 +00:00
|
|
|
Author: Nicola Pero <nicola.pero@meta-innovation.com>
|
2015-02-20 05:59:04 +00:00
|
|
|
after Richard Frith-Macdonald <rfm@gnu.org>,
|
|
|
|
Germán Arias <germanandre@gmx.es> and others.
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2007-02-28 07:13:57 +00:00
|
|
|
|
2002-05-07 09:41:40 +00:00
|
|
|
PURPOSE
|
|
|
|
-------
|
|
|
|
|
|
|
|
This document is intended to provide a step by step instruction on how
|
2015-02-20 05:59:04 +00:00
|
|
|
to use GNUstep on recent Windows operating systems.
|
2007-02-28 15:42:44 +00:00
|
|
|
|
|
|
|
It will get as far as explaining how to build a GNUstep application
|
2007-03-02 03:15:32 +00:00
|
|
|
and create a standalone version that can be shipped standalone to
|
|
|
|
Windows end users.
|
2007-02-28 15:42:44 +00:00
|
|
|
|
2007-03-02 03:15:32 +00:00
|
|
|
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
|
2015-02-20 05:59:04 +00:00
|
|
|
describe how to get MinGW/MSYS up and running, and how to build
|
2007-03-02 03:15:32 +00:00
|
|
|
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
|
|
|
|
---------------------
|
2002-05-07 09:41:40 +00:00
|
|
|
|
|
|
|
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
|
2015-02-20 05:59:04 +00:00
|
|
|
on any 3rd-party DLLs.
|
2002-05-07 09:41:40 +00:00
|
|
|
|
|
|
|
MSYS is a very much cut down version of the Cygwin environment ...
|
2007-02-28 15:42:44 +00:00
|
|
|
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.
|
2002-05-14 10:31:57 +00:00
|
|
|
|
2002-05-07 09:41:40 +00:00
|
|
|
|
|
|
|
PRELIMINARIES
|
|
|
|
-------------
|
|
|
|
|
2004-10-18 15:32:39 +00:00
|
|
|
One way to vastly simplify installing GNUstep, is to use the Windows-based
|
2015-02-20 05:59:04 +00:00
|
|
|
GNUstep installer. Get it from:
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
http://www.gnustep.org/windows/installer.html
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2005-09-19 03:37:17 +00:00
|
|
|
If you have already installed this, you can skip to the end and just
|
2007-03-02 03:15:32 +00:00
|
|
|
start compiling and packaging applications! Although you may want to
|
|
|
|
read the rest of the instructions for other helpful information.
|
|
|
|
|
2002-05-07 09:41:40 +00:00
|
|
|
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
A. STEP BY STEP INSTALLATION INSTRUCTIONS
|
2007-03-02 03:15:32 +00:00
|
|
|
-----------------------------------------
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2005-05-31 16:15:01 +00:00
|
|
|
1. Install MinGW
|
|
|
|
================
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Download MinGW-Get-Setup.exe from
|
|
|
|
|
|
|
|
http://sourceforge.net/projects/mingw/files/Installer/
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Then start it up. Set the installation path to
|
2005-02-18 12:28:16 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
C:\xxx\
|
2005-07-12 10:23:55 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
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.
|
2002-05-08 12:00:34 +00:00
|
|
|
|
2009-01-31 19:53:12 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
2. Install necessary packages
|
|
|
|
=============================
|
2005-02-18 12:28:16 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
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
|
|
|
|
==========================
|
2005-05-31 16:15:01 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
You will need install GNUstep from Subversion, so you need a Subversion
|
|
|
|
client. I used:
|
2005-05-31 16:15:01 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
http://www.sliksvn.com/pub/Slik-Subversion-1.6.9-win32.msi
|
2005-05-31 16:15:01 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
and then install subversion in a random directory.
|
2005-05-31 16:15:01 +00:00
|
|
|
|
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
You will need and editor, for example Emacs. Get a Windows version for
|
|
|
|
MinGW from:
|
2005-05-31 16:15:01 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
https://www.gnu.org/software/emacs/
|
2005-05-31 16:15:01 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
To install it, simply unpack it in your MINGWPATH, you can now
|
|
|
|
execute the binary in 'MINGWPATH/bin'.
|
2005-05-31 16:15:01 +00:00
|
|
|
|
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
3. Additional Windows steps
|
2005-05-31 16:15:01 +00:00
|
|
|
===========================
|
2005-02-18 12:28:16 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
You may need to edit /MINGWPATH/include/winsock2.h to change the size of the
|
2002-05-07 09:41:40 +00:00
|
|
|
sa_data field in the sockaddr structure from 14 to 22 ... this is because
|
2005-02-18 12:28:16 +00:00
|
|
|
some versions of Windows have changed the layout of this structure.
|
|
|
|
This modification may be needed to be able to correctly determine the
|
2002-05-07 09:41:40 +00:00
|
|
|
network interface details for your machine.
|
|
|
|
|
|
|
|
|
2010-06-23 12:32:48 +00:00
|
|
|
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.
|
|
|
|
|
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
4. Mount your MINGWPATH directory
|
|
|
|
=================================
|
2007-02-28 07:13:57 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
With Emacs create a file called "fstab" in C:\MINGWPATH\msys\x.x\etc and add
|
|
|
|
a line like:
|
2007-02-28 07:13:57 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
C:\MINGWPATH /mingw
|
2007-02-28 07:13:57 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
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.
|
2007-02-28 07:13:57 +00:00
|
|
|
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
5. Launch the MSYS console
|
|
|
|
==========================
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Launch the console at C:\MINGWPATH\msys\x.x\msys.bat (double click).
|
2010-03-06 21:13:58 +00:00
|
|
|
|
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
6. Installing gnustep-make
|
|
|
|
==========================
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Get gnustep-make:
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
svn co http://svn.gna.org/svn/gnustep/tools/make/trunk make
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Then install it:
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
cd make
|
|
|
|
./configure
|
|
|
|
make
|
|
|
|
make install
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
7. Special recommendation
|
|
|
|
=========================
|
2005-07-12 10:23:55 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
In next steps don't use "make -j", because can cause problems.
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2007-02-28 07:13:57 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
8. Installing libffi
|
|
|
|
====================
|
2002-05-14 10:31:57 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Download libffi-x.x.x.tar.gz from https://sourceware.org/libffi/.
|
|
|
|
Unpack it, compile and install:
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
cd libffi-x.x.x
|
|
|
|
./configure --prefix=/MOUNTDIR
|
2005-05-31 16:15:01 +00:00
|
|
|
make
|
|
|
|
make install
|
2015-02-20 05:59:04 +00:00
|
|
|
mv /MOUNTDIR/lib/libffi-x.x.x/include/* /MOUNTDIR/include/
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
(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.
|
2007-02-28 15:42:44 +00:00
|
|
|
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
9. Install ICU
|
|
|
|
==============
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Download latest ICU from http://site.icu-project.org/ (zip package).
|
|
|
|
Unpack it, compile and install as fallow:
|
2002-11-06 04:52:11 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
cd icu/source
|
|
|
|
./runConfigureICU --disable-release MinGW --prefix=/MOUNTDIR
|
|
|
|
make
|
|
|
|
make install
|
2007-02-28 07:21:04 +00:00
|
|
|
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
10. Install GNUtls
|
|
|
|
==================
|
2005-05-31 16:15:01 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Download the latest version from the official page (windows binary). Copy
|
|
|
|
this at your MINGWPATH directory and unpack it.
|
2003-03-23 06:53:16 +00:00
|
|
|
|
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
11. Install pkg-config
|
|
|
|
======================
|
2003-03-23 06:53:16 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
The best option is install pkg-config lite from:
|
2003-03-23 06:53:16 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
http://sourceforge.net/projects/pkgconfiglite/files/
|
|
|
|
|
|
|
|
Download latest version, unpack it an copy the files at corresponding
|
|
|
|
directories in your MINGWPATH directory.
|
2003-03-23 06:53:16 +00:00
|
|
|
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
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
|
2005-05-31 16:15:01 +00:00
|
|
|
make install
|
2002-05-07 09:41:40 +00:00
|
|
|
|
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
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.)
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
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
|
2005-05-31 16:15:01 +00:00
|
|
|
=====================
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Probably you will need source the GNUstep script:
|
|
|
|
|
|
|
|
. /local/share/GNUstep/Makefiles/GNUstep.sh
|
|
|
|
|
|
|
|
|
|
|
|
15. Install gnnustep-base
|
|
|
|
=========================
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Get gnustep-base:
|
|
|
|
|
|
|
|
svn co http://svn.gna.org/svn/gnustep/libs/base/trunk base
|
|
|
|
|
|
|
|
Then compile and install it:
|
|
|
|
|
|
|
|
ca base
|
|
|
|
./configure
|
2005-05-31 16:15:01 +00:00
|
|
|
make
|
|
|
|
make install
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
16. Install jpeg
|
|
|
|
================
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Download the latest version from http://ijg.org/. Then compile and install it
|
|
|
|
as fallow:
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
cd jpeg-xx
|
|
|
|
autoheader
|
|
|
|
./configure --prefix=/MOUNTDIR
|
|
|
|
make
|
|
|
|
make install
|
2002-05-07 09:41:40 +00:00
|
|
|
|
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
17. Install libtiff
|
|
|
|
===================
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Download latest version from http://www.libtiff.org/. Then compile and
|
|
|
|
install it:
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
cd tiff-x.x.x
|
|
|
|
./configure --prefix=/MOUNTDIR
|
|
|
|
make
|
|
|
|
make install
|
2009-01-31 19:53:12 +00:00
|
|
|
|
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
18. Install libpng
|
|
|
|
==================
|
2008-02-19 16:01:37 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Download latest version from http://libpng.org/pub/png/libpng.html.
|
|
|
|
Then compile and install it:
|
2007-02-28 15:42:44 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
cd lpngXXX
|
|
|
|
cp scripts/pnglibconf.h.prebuild pnglibconf.h
|
|
|
|
cp scripts/makefile.msys makefile
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Launch Emacs and edit the makefile to set prefix as "prefix=/MOUNTDIR", then:
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
make
|
|
|
|
make install
|
2009-01-31 19:53:12 +00:00
|
|
|
|
2006-01-11 18:37:24 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
19. Install libungif
|
|
|
|
====================
|
2006-01-11 18:37:24 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
From http://gnuwin32.sourceforge.net/ download
|
2007-03-02 03:15:32 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
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
|
2007-03-02 03:15:32 +00:00
|
|
|
make
|
|
|
|
make install
|
2006-01-11 18:37:24 +00:00
|
|
|
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
21. Install Aspell
|
|
|
|
==================
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Download the windows port http://aspell.net/. And
|
|
|
|
install it in your MINGWPATH directory.
|
2007-03-21 00:24:44 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Install any other required dictionary from source (not binaries) for the
|
|
|
|
corresponding version, in this case 0.50:
|
2007-02-28 15:42:44 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
cd aspell-xx-x.x
|
|
|
|
./cofigure
|
|
|
|
make
|
|
|
|
make install
|
2010-03-06 21:13:58 +00:00
|
|
|
|
2004-03-09 23:22:36 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
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:
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
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
|
2008-12-05 10:49:02 +00:00
|
|
|
./configure
|
2005-05-31 16:15:01 +00:00
|
|
|
make
|
|
|
|
make install
|
2002-05-07 09:41:40 +00:00
|
|
|
|
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
24. Install gnustep-back
|
|
|
|
========================
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Get gnustep-back:
|
2002-11-14 09:07:38 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
svn co http://svn.gna.org/svn/gnustep/libs/back/trunk back
|
2002-11-14 09:07:38 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Then compile and install it:
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
cd back
|
|
|
|
./configure
|
|
|
|
make
|
|
|
|
make install
|
2004-10-18 15:32:39 +00:00
|
|
|
|
|
|
|
|
2015-02-21 06:25:52 +00:00
|
|
|
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)
|
2015-02-20 05:59:04 +00:00
|
|
|
=================================
|
2004-10-18 15:32:39 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Get WinUXTheme:
|
2004-10-18 15:32:39 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
svn co http://svn.gna.org/svn/gnustep/plugins/themes/WinUXTheme/ winuxtheme
|
2004-10-18 15:32:39 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Then compile and install it:
|
2005-02-20 03:29:04 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
cd winuxtheme
|
|
|
|
make
|
|
|
|
make install
|
|
|
|
|
|
|
|
Set it:
|
|
|
|
|
|
|
|
defaults write NSGlobalDomain GSTheme WinUXTheme
|
2002-05-07 09:41:40 +00:00
|
|
|
|
|
|
|
|
2015-02-21 06:25:52 +00:00
|
|
|
27. Source the gnustep script when launch the console
|
2015-02-20 05:59:04 +00:00
|
|
|
=====================================================
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Edit the file /MINGWPATH/msys/etc/profile and add this line to source the
|
|
|
|
gnustep script:
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
. /local/share/GNUstep/Makefiles/GNUstep.sh
|
|
|
|
|
|
|
|
|
2015-02-21 06:25:52 +00:00
|
|
|
28. Testing your gui installation
|
2005-05-31 16:15:01 +00:00
|
|
|
=================================
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
Get the examples:
|
|
|
|
|
|
|
|
svn co http://svn.gna.org/svn/gnustep/tests/examples/trunk/ examples
|
|
|
|
|
2005-05-31 16:15:01 +00:00
|
|
|
Go in a simple gui application (examples/gui a very good starting
|
2015-02-20 05:59:04 +00:00
|
|
|
point), compile and run it. :-). Ink and PowerPaint should work fine
|
|
|
|
on Windows, test these.
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2005-05-31 16:15:01 +00:00
|
|
|
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.
|
2002-05-07 09:41:40 +00:00
|
|
|
|
2015-02-20 05:59:04 +00:00
|
|
|
|
2002-05-07 09:41:40 +00:00
|
|
|
Troubleshooting
|
|
|
|
---------------
|
|
|
|
|
2003-03-23 06:53:16 +00:00
|
|
|
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.
|
|
|
|
|
2009-01-31 19:53:12 +00:00
|
|
|
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.
|
2006-03-17 16:40:45 +00:00
|
|
|
|
2007-02-28 08:18:14 +00:00
|
|
|
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
B. HOW TO SHIP YOUR GNUSTEP APPLICATION TO WINDOWS USERS
|
|
|
|
--------------------------------------------------------
|
2007-02-28 08:18:14 +00:00
|
|
|
|
|
|
|
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
|
2007-02-28 15:42:44 +00:00
|
|
|
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.
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
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).
|
2007-02-28 08:18:14 +00:00
|
|
|
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
1. Build the application
|
|
|
|
========================
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
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
|
|
|
|
==================================
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
Now search for MinGW/GNUstep DLL files in /bin and /local/bin, and
|
|
|
|
copy them all into Gomoku.app:
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
cp $(find /bin -name *.dll) /home/Nico/Gomoku.app/
|
|
|
|
cp $(find /local/bin -name *.dll) /home/Nico/Gomoku.app/
|
2007-02-28 08:18:14 +00:00
|
|
|
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
4. Copy your GNUstep Library folder
|
2007-02-28 08:18:14 +00:00
|
|
|
===================================
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
Now copy all of the GNUstep resources into the application --
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
mkdir -p /home/Nicola/Gomoku.app/GNUstep/
|
|
|
|
cp -R /usr/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.
|
|
|
|
|
|
|
|
|
|
|
|
5. Copy key GNUstep binary programs
|
2007-02-28 08:18:14 +00:00
|
|
|
===================================
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
mkdir -p /home/Nicola/Gomoku.app/GNUstep/Tools/
|
|
|
|
cp /local/bin/gpbs.exe /home/Nicola/Gomoku.app/GNUstep/Tools
|
|
|
|
cp /local/bin/gdnc.exe /home/Nicola/Gomoku.app/GNUstep/Tools
|
|
|
|
cp /local/bin/gdomap.exe /home/Nicola/Gomoku.app/GNUstep/Tools
|
|
|
|
cp /local/bin/make_services.exe /home/Nicola/Gomoku.app/GNUstep/Tools
|
|
|
|
|
|
|
|
I put them all into Gomoku.app/GNUStep/Tools, which means that later
|
|
|
|
on I'll set up the GNUstep.conf file to map GNUSTEP_*_TOOLS to that
|
|
|
|
directory.
|
|
|
|
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
6. Add a GNUstep.conf
|
2007-02-28 08:18:14 +00:00
|
|
|
=====================
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
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) --
|
2007-02-28 08:18:14 +00:00
|
|
|
|
|
|
|
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/Tools
|
|
|
|
GNUSTEP_SYSTEM_ADMIN_TOOLS=./GNUstep/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/Tools
|
|
|
|
GNUSTEP_NETWORK_ADMIN_TOOLS=./GNUstep/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/Tools
|
|
|
|
GNUSTEP_LOCAL_ADMIN_TOOLS=./GNUstep/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
|
2007-02-28 15:42:44 +00:00
|
|
|
put into /home/Nico/Gomoku.app/GNUstep.conf.
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
|
|
|
|
7. Now the application should be working
|
2007-02-28 08:18:14 +00:00
|
|
|
========================================
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
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.
|
|
|
|
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
8. Cleanup
|
2007-02-28 08:18:14 +00:00
|
|
|
==========
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
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.
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-03-02 03:15:32 +00:00
|
|
|
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 --
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
rm Gomoku.app/Renaissance.dll
|
|
|
|
rm Gomoku.app/ProjectCenter.dll
|
2007-03-02 03:15:32 +00:00
|
|
|
|
|
|
|
Finally, remove Apps and other stuff that you might have copied from
|
|
|
|
the general GNUstep installation --
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
rm -Rf Gomoku.app/GNUstep/Apps
|
|
|
|
rm -Rf Gomoku.app/GNUstep/Frameworks/ProjectCenter.framework
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
Generally, you may want to build the whole stuff making sure you only
|
|
|
|
include what you strictly need.
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
|
|
|
|
9. 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.
|
|
|
|
|
|
|
|
|
|
|
|
10. Checking Licenses
|
2007-02-28 08:18:14 +00:00
|
|
|
====================
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
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
|
2010-03-07 23:27:59 +00:00
|
|
|
you comply with them.
|
2007-02-28 08:18:14 +00:00
|
|
|
|
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
PACKAGING/WINDOWS TODOS
|
|
|
|
-----------------------
|
2007-02-28 08:18:14 +00:00
|
|
|
|
2007-02-28 15:42:44 +00:00
|
|
|
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!
|
|
|
|
|
2007-02-28 08:18:14 +00:00
|
|
|
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 ?
|