== link:index.html[Index] -> link:cookbook.html[Cookbook]
Cookbook: How to cross compile Cherokee
---------------------------------------
[[linux2win32]]
Cherokee-Win32 from Linux
~~~~~~~~~~~~~~~~~~~~~~~~~
First of all, you will have to install the cross compiler:
----
# apt-get install mingw32 mingw32-binutils
----
Then, you'll have to install the pthread library:
----
$ cd /var/tmp
$ mkdir pthread-win32
$ cd pthread-win32
$ wget ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-8-0-release.exe
$ unzip pthreads-w32-2-8-0-release.exe
# cp ./Pre-built.2/lib/libpthreadGCE2.a /usr/i586-mingw32msvc/lib/libpthread.a
# cp Pre-built.2/include/* /usr/i586-mingw32msvc/include/
----
And now, we are ready to compile it. We only have to set a few environment
variables:
----
PATH=/usr/i586-mingw32msvc/bin:$PATH
CC=i586-mingw32msvc-gcc
LD=i586-mingw32msvc-ld
AR=i586-mingw32msvc-ar
RC=i586-mingw32msvc-windres
----
Check out the last development version of Cherokee:
----
$ git clone --recursive git://github.com/cherokee/webserver.git cherokee
$ cd cherokee
$ git submodule update --init #Not needed on Git >= 1.6.5
----
and execute a quite long "configure" command:
----
$ ac_cv_func_malloc_0_nonnull=yes \
ac_cv_func_realloc_0_nonnull=yes \
./configure \
--host=i586-mingw32msvc \
--prefix=/usr/i586-mingw32msvc \
--disable-readdir_r \
--disable-tls \
--enable-static-module=all \
--enable-trace \
--enable-static \
--enable-shared=no \
--enable-beta \
CC=i586-mingw32msvc-gcc
----
Once reached this point, we are ready to build it by simply typing:
----
$ make
----
[[osx2win32]]
Cherokee-Win32 from OS X
~~~~~~~~~~~~~~~~~~~~~~~~
First of all, you will have to install MinGW for OS X and to check out the
latest version of the source code, then fetch, uncompress and install
pthreads-win32:
----
unzip pthreads-w32-2-8-0-release.exe
cp Pre-built.2/lib/libpthreadGCE2.a \
/usr/local/i386-mingw32-3.4.5/lib/libpthread.a
cp Pre-built.2/include/* \
/usr/local/i386-mingw32-3.4.5/lib/gcc/*/*/include/
----
Then you will have to set a few environment variables:
----
CC=i386-mingw32-gcc
LD=i386-mingw32-ld
AR=i386-mingw32-ar
RC=i386-mingw32-windres
----
and run the configuration script::
----
ac_cv_func_malloc_0_nonnull=yes \
ac_cv_func_realloc_0_nonnull=yes \
./configure \
--host=i386-mingw32 \
--prefix=/usr/local/i386-mingw32-3.4.5/ \
--enable-static \
--enable-shared=no \
--enable-static-module=all \
--disable-readdir_r \
--disable-tls \
--enable-beta \
--enable-trace \
CC=i386-mingw32-gcc
----