Cross-compile Win32
From Ekiga
Contents
|
How do I get and cross-compile Ekiga for Windows on a Linux System ?
Note: Nobody has recently managed to build neither Ekiga 2.0.12 nor Ekiga 3.0 trunk for Windows. This page is WiP and describes how it is meant to work.
2.0.x versus 3.0 trunk
There are three potential flavors of Ekiga which you might want to build for Windows:
- Version 2.0.12 (Release)
- SVN version of the 2.0.x branch
- SVN version of the 3.0 branch
Each of them has different potential issues. When trying to make things work, make sure you properly understood:
SVN - SVN, Active Branches and Tags
Compile Time (host) Dependencies
You need an installed, working version of Minimalist GNU for Windows together with its binutils ant runtime libraries.
In order to compile from SVN, you need to get mingw32 from Debian testing or unstable (lenny / sid at the time of writing), as this is the only version that contains the headers and libs needed for DirectX related stuff. The version that comes with Etch does not have these headers.
On a debian system you can install them via apt-get:
apt-get install mingw32 mingw32-binutils mingw32-runtime nsis
aptitude install gnome-doc-utils aptitude install build-essential make automake bison flex aptitude install zip unzip aptitude install gnome-common libgtk2.0-dev xmlto libgconf2-dev libavahi-glib-dev libavahi-client-dev
For 3.0 trunk you will also need
aptitude install git-core aptitude install subversion
because the Makefile needs to get sources directly from Subversion and git repositories.
Runtime Dependencies (on Windows)
The cross-build on Linux for Win32 needs to produce binaries of every library that Ekiga needs and which are not part of the Windows API. Other than in the native build for Linux, pre-installed Linux binaries of libraries such as OpenLDAP etc. are useless for cross-build for the Win32 target. Therefore, as part of the cross-build process, these dependencies are optained as sources and cross-compiled for Win32 before the script compiles Ekiga itself against these dependencies.
Dependency Management for the Win32 build
Dependencies for the Win32 build are in the Makefile in the win32 directory of the Ekiga source tree. This is a different Makefile than the main Makefile in the main directory which is used for the native Linux build.
The Makefile has a number of update-sources:: sections which download, configure and build libraries which Ekiga needs.
In the Makefile, you will find a number of sections like this one:
OPENLDAP_VER := 2.3.28 OPENLDAP_DIR := $(BUILDROOT)/openldap-$(OPENLDAP_VER) OPENLDAP_ARCHIVE := openldap-$(OPENLDAP_VER).tgz OPENLDAP_URL := http://www.openldap.org/software/download/OpenLDAP/openldap-release
There are different techniques used to obtain sources, including
- downloading source tarballs
- svn checkouts of specific revisions (using svn co -r)
Getting and Compiling Ekiga
Get the Ekiga Win32 build script
svn co http://svn.gnome.org/svn/ekiga/trunk/win32
You are now ready to execute the automated download process that gets an SVN snapshot of ekiga and its required libraries from the internet:
make update-sources
Then start the build process by
make
Build is not repeatable
Note that once you have done a
make update-sources make
you cannot do this again in the same directory.
Practical problems cross-building 2.0.11 on Debian Lenny (as of March 31st, 2008)
Status:
- did the same as for an Etch system
- compiles (might need a 2nd attempt) up the point where it tries to build the installer
- there have been changes in nsis between Sarge and Etch/Lenny ... investigating
Practical problems cross-building 2.0.11 on Debian Etch
Status:
- used an Etch system and got up to the point where all prereqisites where downloaded and built, script was about to compile Ekiga itself
- failed due to missing DirectX headers
- upgraded wingw32 and dependencies to Lenny
- ran into bug: http://bugs.gentoo.org/show_bug.cgi?id=195227
- cleaned build dir
- couldn't build anymore:
touch: cannot touch `/usr/local/src/win32-2.0.11-from-scratch/include/regex.h': Not a directory make: *** [/usr/local/src/win32-2.0.11-from-scratch/include/regex.h] Error 1
Practical problems cross-building 2.0.12 on Debian Etch
Status:
- make update-sources works after patching Makefile
- make doesn't work (compile errors)
Resolved issues:
- Makefile does not recognize automake / autoconf 1.10. Patch available.
Open issues:
- PTLibError
- It's not yet clear if the script gets the proper versions of dependencies, [[1]]
Practical problems cross-building 3.0 trunk on Debian Etch
Status:
- make update-sources doesn't work (see below, works after installing git and changing the Makefile)
- no point to run make yet
Open issues:
Extra dependencies
- gnome-doc-utils
Understanding and debugging the cross-build script
Running Ekiga on Windows
If everythings works out well your cross-compiled windows version will be located in dist/Ekiga. You can transfer this directory to a win32 system and simply run ekiga.exe. However you need to have the GTK+ 2 runtime libraries for windows installed on the target system. Get the latest stable version of the GTK+2 Runtime Environment at
http://gimp-win.sourceforge.net/stable.html
and execute
ekiga.exe
How to get debug output on Windows
Instructions here: Debugging Ekiga#Debugging Ekiga on Windows

