summaryrefslogtreecommitdiff
path: root/docs/development/wince_development.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/development/wince_development.rst')
-rw-r--r--docs/development/wince_development.rst262
1 files changed, 262 insertions, 0 deletions
diff --git a/docs/development/wince_development.rst b/docs/development/wince_development.rst
new file mode 100644
index 000000000..d08fbe8ae
--- /dev/null
+++ b/docs/development/wince_development.rst
@@ -0,0 +1,262 @@
+=================
+WinCE Development
+=================
+
+This is a tutorial for Navit on WinCE/WinMobile. If want just want to download a cab file see [[WinCE]].
+
+This page explains how to build Navit for WinCE/WinMobile with `cegcc <http://cegcc.sourceforge.net>`_.
+
+In November 2009 versions compiled using arm-cegcc-gcc (both revision 1214 and release 0.59.1) had problems (threw exception_datatype_misalignment and caused access violations).
+
+Using the variant arm-mingw32ce of CeGCC 0.59.1 it was possible to build a working executable which can be debugged.
+
+The automatic builds from the subversion repository seem to use an adjusted? version arm-wince-mingw32ce (see `build logs <http://download.navit-project.org/logs/navit/wince/svn>`_).
+
+Building using arm-mingw32ce
+============================
+
+Install arm-mingw32ce
+
+.. code-block:: bash
+
+ mkdir -p navit
+ cd navit
+ export NAVIT_PATH=`pwd`
+ wget -c https://sourceforge.net/projects/cegcc/files/cegcc/0.59.1/mingw32ce-0.59.1.tar.bz2/download
+ tar xjf mingw32ce-0.59.1.tar.bz2
+
+Building Navit using Cmake
+
+.. code-block:: bash
+
+ #!/bin/bash
+ export NAVIT_PATH="/usr/src/navit"
+ export MINGW32CE_PATH="/opt/mingw32ce"
+ export PATH=$PATH:$MINGW32CE_PATH/bin
+
+ cd $NAVIT_PATH
+ if [ ! -e build ]; then
+ mkdir build;
+ fi;
+ cd build
+
+ cmake \
+ -DCMAKE_TOOLCHAIN_FILE=$NAVIT_PATH/Toolchain/arm-mingw32ce.cmake \
+ -Dsvg2png_scaling:STRING=0,16 \
+ -Dsvg2png_scaling_nav:STRING=32 \
+ -Dsvg2png_scaling_country:STRING=16 \
+ $NAVIT_PATH
+
+ make
+
+For subsequential builds it is sufficient to issue "make" in the build directory.
+A rerun of cmake is only neccessary if parameters are changed.
+
+Remote Debugging
+================
+
+Download the debugger provided by the CeGCC project:
+
+.. code-block:: bash
+
+ cd $NAVIT_PATH
+ wget -c https://sourceforge.net/projects/cegcc/files/cegcc/0.59.1/gdb-arm-0.59.1.tar.bz2/download
+ tar xjf gdb-arm-0.59.1.tar.bz2
+
+Start navit (from SD card) in debug server at target (using TCP port 9999):
+
+.. code-block:: bash
+
+ gdbserver :9999 "\Mounted Volume\navit\navit.exe"
+
+Execute remote debugger at host, if target's IP address was 192.168.1.112:
+
+.. code-block:: bash
+
+ $NAVIT_PATH/opt/mingw32ce/bin/arm-mingw32ce-gdbtui $NAVIT_PATH/navit/navit.exe -eval-command="target remote 192.168.1.112:9999"
+
+Building using arm-cegcc
+========================
+
+Building cegcc
+--------------
+
+Set the install path to where you want to install `cegcc <http://cegcc.sourceforge.net cegcc>`_:
+
+.. code-block:: bash
+
+ export CEGCC_PATH=/usr/local/cegcc
+ svn co -r 1214 https://cegcc.svn.sourceforge.net/svnroot/cegcc/trunk/cegcc
+ mkdir -p cegcc-builds
+ cd cegcc-builds
+ ../cegcc/src/build-cegcc.sh --prefix=$CEGCC_PATH --components="binutils bootstrap_gcc w32api newlib dummy_cegccdll gcc cegccdll cegccthrddll libstdcppdll profile"
+
+If you get an error like "'makekinfo' is missing on your system" although makeinfo is available (happened with openSUSE 11.2 and Debian Lenny, both 32 bit), add a workaround to the script src/newlib/missing. Insert a new line after the line " makeinfo)":
+
+.. code-block:: bash
+
+ "$@" && exit 0
+
+If you get an error like `arm-cegcc-windres: Can't detect architecture`, apply the patch file you find on http://sourceforge.net/tracker/?func=detail&atid=865516&aid=2574606&group_id=173455
+
+Building libraries
+------------------
+
+November 2009: The libraries below are *not needed* anymore since navit brings its own version of glib.
+
+The libraries require additional (not published or not existing) patches to build. Just skip to section Building Navit.
+
+These are the libraries needed and versions which should work:
+ * zlib-1.2.3
+ * libiconv-1.9.1
+ * gettext-0.17
+ * libpng-1.2.34
+ * tiff-3.8.2
+ * glib-2.18.4
+
+The current versions of these libs don't need many changes, but they all don't know anything about cegcc. Until I found a way to upload the patches, you have to edit the code yourself. Just add `| -cegcc*` to the line containing `-cygwin*` of all files named config.sub. Here is the example for libiconv-1.9.1_cegcc.patch:
+
+.. code-block:: bash
+
+ diff -ur libiconv-1.9.1/autoconf/config.sub libiconv-1.9.1_cegcc/autoconf/config.sub
+ --- libiconv-1.9.1/autoconf/config.sub 2003-05-06 11:36:42.000000000 +0200
+ +++ libiconv-1.9.1_cegcc/autoconf/config.sub 2009-02-06 20:22:14.000000000 +0100
+ @@ -1121,7 +1121,7 @@
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* | -cegcc* \
+ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ diff -ur libiconv-1.9.1/libcharset/autoconf/config.sub libiconv-1.9.1_cegcc/libcharset/autoconf/config.sub
+ --- libiconv-1.9.1/libcharset/autoconf/config.sub 2003-05-06 11:36:42.000000000 +0200
+ +++ libiconv-1.9.1_cegcc/libcharset/autoconf/config.sub 2009-02-06 20:23:39.000000000 +0100
+ @@ -1121,7 +1121,7 @@
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* | -cegcc* \
+ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+
+zlib
+''''
+
+.. code-block:: bash
+
+ wget http://www.zlib.net/zlib-1.2.3.tar.gz
+ tar xzf zlib-1.2.3.tar.gz
+ cd zlib-1.2.3
+ export PATH=$CEGCC_PATH/bin:$PATH
+ CC=arm-cegcc-gcc AR="arm-cegcc-ar r" RANLIB=arm--cegcc-ranlib ./configure --prefix=$CEGCC_PATH
+ make
+ make install
+
+libiconv
+''''''''
+
+
+.. code-block:: bash
+
+ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz
+ tar xzf libiconv-1.9.1.tar.gz
+ patch -d libiconv-1.9.1 -p1 < libiconv-1.9.1_cegcc.patch
+ cd libiconv-1.9.1
+ ./configure --host=arm-cegcc --prefix=$CEGCC_PATH
+ make
+ make install
+
+gettext
+'''''''
+
+workaround for `plural-eval.h:50: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'sigfpe_exit'`
+extend gettext-tools/src/plural-eval.h line 32 to `#if defined _MSC_VER || defined __MINGW32__ || defined __CEGCC__`
+dito for gettext-tools/gnulib-lib/wait-process.c line 31
+
+
+.. code-block:: bash
+
+ wget http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-0.17.tar.gz
+ tar xzf gettext-0.17.tar.gz
+ cd gettext-0.17
+ patch -p1 < ../gettext-0.17_cegcc.patch
+ ./configure --host=arm-cegcc --prefix=$CEGCC_PATH
+ make
+ make install
+
+libpng
+''''''
+
+.. code-block:: bash
+
+ wget http://prdownloads.sourceforge.net/libpng/libpng-1.2.34.tar.gz?download
+ tar xzf libpng-1.2.34.tar.gz
+ cd libpng-1.2.34
+ patch -p1 < ../libpng-1.2.34_cegcc.patch
+ ./configure --host=arm-cegcc --prefix=$CEGCC_PATH
+ CFLAG="-I $C_INCLUDE_PATH" make
+ make install
+
+libtiff
+'''''''
+
+.. code-block:: bash
+
+ libtool: link: CURRENT `' must be a nonnegative integer
+
+
+.. code-block:: bash
+
+ wget http://libtiff.maptools.org/dl/tiff-3.8.2.tar.gz
+ tar xzf tiff-3.8.2.tar.gz
+ cd tiff-3.8.2
+ patch -p1 < ../tiff-3.8.2_cegcc.patch
+ ./configure --host=arm-cegcc --prefix=$CEGCC_PATH
+ make
+ make install
+
+glib
+''''
+
+.. code-block:: bash
+
+ gatomic.c:570: Error: no such instruction: `swp %eax,%eax,[%esi]'
+
+
+.. code-block:: bash
+
+ wget http://ftp.gnome.org/pub/gnome/sources/glib/2.18/glib-2.18.4.tar.bz2
+ tar xjf glib-2.18.4.tar.bz2
+ cd glib-2.18.4
+ patch -p1 < ../glib-2.18.4_cegcc.patch
+ ./configure --host=arm-cegcc --prefix=$CEGCC_PATH
+ make
+ make install
+
+Building Navit
+==============
+
+.. code-block:: bash
+
+ git clone https://github.com/navit-gps/navit.git
+ cd navit/navit
+
+Add `| -cegcc*` to all files named `config.sub` as for the libraries.
+
+.. code-block:: bash
+
+ WINDRES=arm-cegcc-windres ./configure --disable-vehicle-file --host=arm-cegcc --prefix=$CEGCC_PATH 2>&1 | tee configure-cegcc.log
+
+Add to `navit\support\wordexp\glob.h`: `|| defined __CEGCC__`
+
+Change include in `navit\vehicle\wince\vehicle_wince.c`: `#include <sys/io.h>`
+
+Add to `navit\file.c`: `&& !defined __CEGCC__`
+
+.. code-block:: bash
+
+ make -j