Projects/KDE on Windows/Windows CE/Emerge

From KDE TechBase

Introduction

This page is a work in progress. There is only one application that starts on Windows Mobile right now and is not tested yet. It is intended to give a starting point for Windows Mobile development with the help of emerge. This guide is specialized for Windows Mobile 6, but can be adapted for other versions.

Requirements

  • Microsoft Windows XP/Vista/7 (tested with win7)
  • Microsoft Visual Studio 2008/05 Professional
  • (Service Pack 1 for Visual Studio) get form here (take the right language that fit to your Visual Studio)
  • Windows Mobile 6 Professional and Standard Software Development Kits Refresh, get it from here
  • Windows Mobile 6.5 Developer Tool Kit, get it from here
  • svn
  • Emerge, check it out from svn://anonsvn.kde.org/home/kde/trunk/kdesupport/emerge check here for more info how it is setup


Setup Emerge

Edit your kdesettings.bat to  get emerge to build KDE for Windows Mobile. Here are some suggestions how your importent setttings should look like:

  • set KDECOMPILER=msvc2008
  • set EMERGE_ARCHITECTURE=x86
  • set EMERGE_USE_SHORT_PATH=1 (shortens the path length, which can be sometimes critical)
  • set EMERGE_TARGET_PLATFORM=WM60
  • set EMERGE_TARGET_ARCHITECTURE=ARMV4I
  • set EMERGE_MAKE_PROGRAM=%KDEROOT%\bin\jom.exe (can be enabled for faster builds)

Start compiling programs for Windows Mobile

After setting up emerge you can get info the emerge building environment by calling kdeenv.bat out of the emerge directory. Then you can start compiling programs for Windows Mobile by typing emerge <package>.


Packages compiled for Windows Mobile right now

  • boost
  • gpgme
  • akonadi
  • attica
  • dbusmenu-qt
  • grantlee
  • kdewin
  • oxygen-icons
  • phonon
  • qjson
  • soprano
  • strigi
  • gettext
  • pinentry-qt
  • aspell
  • cyrus-sasl
  • dbus
  • expat
  • giflib
  • jpeg
  • libbzip2
  • libcurl
  • libical
  • libpng
  • libxml2
  • libxslt
  • openssl
  • pcre-src
  • shared-desktop-ontologies
  • sqlite
  • wcecompat
  • win_iconv
  • zlib
  • kdebase-runtime
  • kdelibs
  • kdepim
  • kdepimlibs
  • qt
  • bison
  • docbook-dtd
  • docbook-xsl


Compile Process

Almost every package is compiled twice because the need of the codegenerators and other generators that are used. So emerge is doing the following pipeline:

  • fetch(for the building platform)
  • unpack(for the building platform)
  • compile for the building platform
  • cleanimage for the building platform
  • install for the building platform
  • manifest for the building platform
  • qmerge for the building platform
  • compile for the target platform
  • cleanimage for the target platform
  • install for the target platform
  • manifest for the target platform
  • qmerge for the target platform

If you like to build a special package only for the building platform type:

emerge --disable-buildtarget <package_name>

If you like to build it for the target platform only type:

emerge --disable-buildhost <package_name>



If you like to compile something manually for the target platform use the switchtotargetenv script to switch the enviroment to the target platform, but if you like to compile other packages again with emerge you need to reopen the emerge enviroment to get the the right enviroment back.

Known Issues

  • If there is an svn error accours emerge looks like it is freezd
  • If a compile process from the building platform goes through and the target build failed the package is marked as installed in emerge

Tools for Windows Mobile

The Task Manager can do more then show processes, it can netstat, regedit, ping and many other useful things.