|
|
|
NavigationPersonal tools |
EFL Windows CE
[edit] IntroductionThis document provides some help to build the EFL for the Windows CE platform. The current EFL that are ported are evil, eet, evas, ecore, embryo and edje. The ports are not complete, nor without bugs and work in progress. So any help is welcome. To compile the EFL for the Windows CE platform, the CeGCC project is used. It provides a set of cross-development tools that generate code for Windows CE devices. The document describes how to set properly the cegcc framework and how to compile the supported EFL. [edit] Installation and configuration of CeGCCThe CeGCC project provides a set of cross-development tools that generate code for Windows CE devices. The installation is quite simple as it is just the decompression of an archive. It can be used on Linux and Windows (with cygwin). It is possible to compile CeGCC with MSYS/MinGW to have native compilers and tools, with some hacks though. Also, using CeGCC on 64 bits Linux distributions might not work, especially for evas. The CeGCC project provides 2 product:
Because mingw32ce does not support the errno system, cegcc will be used. Nevertheless, some libraries can be compiled with mingw32ce. [edit] InstallationNow, here is how to install CeGCC. Get the source code from svn, go to cegcc/src directory and launch build-cegcc.sh to compile it. You can modify that file to change the prefix directory, by changing the value of PREFIX. By default, cegcc will be installed in /opt/cegcc Also, in order to have no problem with the compilation with CeGCC, install autoconf 2.62, automake 1.10.1 and libtool 2.2.6. [edit] ConfigurationNow, some environment variables must be set, so that everything compiles flawlessly: export CEGCC_PATH=$HOME/local/opt/cegcc export MINGW32CE_PATH=$HOME/local/opt/cegcc export WINCE_PATH=$HOME/local/wince export PATH=$CEGCC_PATH/bin:MINGW32CE_PATH/bin:$PATH export CPPFLAGS="-I$WINCE_PATH/include" export LDFLAGS="-L$WINCE_PATH/lib -L$CEGCC_PATH/lib" export LD_LIBRARY_PATH="$WINCE_PATH/bin" export PKG_CONFIG_PATH="$WINCE_PATH/lib/pkgconfig" You can add that shell commands to your personal script configuration file. You can also modify the three first variables to suit your needs With the settings above, all the files will be installed in subdirectories of WINCE_PATH. [edit] Build of EvilEvil is a library that tries to implement for Windows some Unix function that do not exist on the Microsoft platform. In addition to Windows XP (and maybe below), it tries to support Windows CE platform with the CeGCC framework. There aren't any dependencies. Just download it from svn (trunk/PROTO/evil) and go to the evil subdir. Then, CFLAGS="-O3 -pipe" ./autogen.sh --host=arm-wince-cegcc --prefix=$WINCE_PATH make make install You should now have the evil libraries and binaries installed in $WINCE_PATH. [edit] Build of EetEet needs Evil (only on Windows, of course), zlib and libjpeg. No Windows CE port of those two last libraries exist, so we must compile them with our little fingers and some approriate patches... [edit] DependenciesThe dependencies are zlib and libjpeg. The Windows CE packages for zlib 1.2.3 and libjpeg 6b are hosted in the CEgcc Sourceforge project. Get the binary and developper zlib packages and the binary and developper libjpeg packages. Unzip all of them (zlib and libjpeg packages) in the $WINCE_PATH directory. [edit] Build EetIt is better to get Eet from svn. Follow the instructions on that page. Go to the eet/ subdir, then CFLAGS="-O3 -pipe" ./autogen.sh --host=arm-wince-cegcc --prefix=$WINCE_PATH make make install-strip You should now have eet installed in $WINCE_PATH. [edit] Build of EvasEvas needs some libraries to be compiled: Freetype and libpng (the latter is needed to load most of the images used in the EFL). Here again these dependencies can be downloaded from the Calaos web site. [edit] DependenciesGet the binary and developper Freetype packages, and binary and developper libpng packages, and unzip them in the $WINCE_PATH directory. Edit freetype.pc and libpng.pc files that are in $WINCE_PATH/lib/pkgconfig and set the correct $prefix value. [edit] Build EvasIt is better to get Evas from svn. Follow the instructions on that page. Go to the evas/ subdir, then CFLAGS="-O3 -pipe" ./autogen.sh --host=arm-wince-cegcc --prefix=$WINCE_PATH --disable-fontconfig --disable-image-loader-svg --disable-software-ddraw --disable-software-16-ddraw make make install-strip You should now have evas installed in $WINCE_PATH. [edit] Build of ExpediteNow that you have installed evas, you can try the application that is used to benchmark our favorite canvas library. [edit] Build of ExpediteFollow the instructions on that page to download the source code of expedite. Go to the expedite/ subdir, then CFLAGS="-O3" ./autogen.sh --host=arm-wince-cegcc --prefix=$WINCE_PATH make make install-strip You should now have expedite installed in $WINCE_PATH. [edit] Installation in the deviceYou can install the files in your device with synce. Install synce and dccm. Execute: dccm synce-serial-start (as root) create the file expedite_wince.lnk (a text file) in $WINCE_PATH/bin, with, in it: 99#"\program files\efl\expedite.exe" -datadir "\program files\efl\expedite\data" -e wince-fb -p qvga-p The go to the $WINCE_PATH and create a script file using that code: #!/bin/sh pmkdir "\program files\efl" pmkdir "\program files\efl\evas" pmkdir "\program files\efl\evas\modules" pmkdir "\program files\efl\evas\modules\engines" pmkdir "\program files\efl\evas\modules\engines\buffer" pmkdir "\program files\efl\evas\modules\engines\buffer\cegcc-arm" pmkdir "\program files\efl\evas\modules\engines\software_16" pmkdir "\program files\efl\evas\modules\engines\software_16\cegcc-arm" pmkdir "\program files\efl\evas\modules\engines\software_16_wince" pmkdir "\program files\efl\evas\modules\engines\software_16_wince\cegcc-arm" pmkdir "\program files\efl\evas\modules\loaders" pmkdir "\program files\efl\evas\modules\loaders\eet" pmkdir "\program files\efl\evas\modules\loaders\eet\cegcc-arm" pmkdir "\program files\efl\evas\modules\loaders\jpeg" pmkdir "\program files\efl\evas\modules\loaders\jpeg\cegcc-arm" pmkdir "\program files\efl\evas\modules\loaders\pmaps" pmkdir "\program files\efl\evas\modules\loaders\pmaps\cegcc-arm" pmkdir "\program files\efl\evas\modules\loaders\png" pmkdir "\program files\efl\evas\modules\loaders\png\cegcc-arm" pmkdir "\program files\efl\evas\modules\loaders\xpm" pmkdir "\program files\efl\evas\modules\loaders\xpm\cegcc-arm" pmkdir "\program files\efl\evas\modules\savers" pmkdir "\program files\efl\evas\modules\savers\eet" pmkdir "\program files\efl\evas\modules\savers\eet\cegcc-arm" pmkdir "\program files\efl\evas\modules\savers\png" pmkdir "\program files\efl\evas\modules\savers\png\cegcc-arm" pmkdir "\program files\efl\expedite" pmkdir "\program files\efl\expedite\data" pcp bin/eet.exe ":/program files/efl/eet.exe" pcp bin/expedite.exe ":/program files/efl/expedite.exe" pcp bin/expedite_wince.lnk ":/program files/efl/expedite_wince.lnk" pcp bin/libdl-0.dll ":/program files/efl/libdl-0.dll" pcp bin/libeet-1.dll ":/program files/efl/libeet-1.dll" pcp bin/libevas-0.dll ":/program files/efl/libevas-0.dll" pcp bin/libevil-0.dll ":/program files/efl/libevil-0.dll" pcp bin/libfreetype-6.dll ":/program files/efl/libfreetype-6.dll" pcp bin/libjpeg.dll ":/program files/efl/libjpeg.dll" pcp bin/libmman-0.dll ":/program files/efl/libmman-0.dll" pcp bin/libpng12-0.dll ":/program files/efl/libpng12-0.dll" pcp bin/libpng-3.dll ":/program files/efl/libpng-3.dll" pcp bin/zlib1.dll ":/program files/efl/zlib1.dll" pcp lib/evas/modules/engines/buffer/cegcc-arm/module.dll ":/program files/efl/evas/modules/engines/buffer/cegcc-arm/engine_buffer.dll" pcp lib/evas/modules/engines/software_16/cegcc-arm/module.dll ":/program files/efl/evas/modules/engines/software_16/cegcc-arm/engine_software_16.dll" pcp lib/evas/modules/engines/software_16_wince/cegcc-arm/module.dll ":/program files/efl/evas/modules/engines/software_16_wince/cegcc-arm/engine_software_16_wince.dll" pcp lib/evas/modules/loaders/eet/cegcc-arm/module.dll ":/program files/efl/evas/modules/loaders/eet/cegcc-arm/loader_eet.dll" pcp lib/evas/modules/loaders/jpeg/cegcc-arm/module.dll ":/program files/efl/evas/modules/loaders/jpeg/cegcc-arm/loader_jpeg.dll" pcp lib/evas/modules/loaders/pmaps/cegcc-arm/module.dll ":/program files/efl/evas/modules/loaders/pmaps/cegcc-arm/loader_pmaps.dll" pcp lib/evas/modules/loaders/png/cegcc-arm/module.dll ":/program files/efl/evas/modules/loaders/png/cegcc-arm/loader_png.dll" pcp lib/evas/modules/loaders/xpm/cegcc-arm/module.dll ":/program files/efl/evas/modules/loaders/xpm/cegcc-arm/loader_xpm.dll" pcp lib/evas/modules/savers/eet/cegcc-arm/module.dll ":/program files/efl/evas/modules/savers/eet/cegcc-arm/saver_eet.dll" pcp lib/evas/modules/savers/png/cegcc-arm/module.dll ":/program files/efl/evas/modules/savers/png/cegcc-arm/saver_png.dll" pcp share/expedite/data/Kochi.ttf ":/program files/efl/expedite/data/Kochi.ttf" pcp share/expedite/data/Vera.ttf ":/program files/efl/expedite/data/Vera.ttf" pcp share/expedite/data/VeraBI.ttf ":/program files/efl/expedite/data/VeraBI.ttf" pcp share/expedite/data/VeraBd.ttf ":/program files/efl/expedite/data/VeraBd.ttf" pcp share/expedite/data/VeraIt.ttf ":/program files/efl/expedite/data/VeraIt.ttf" pcp share/expedite/data/VeraMoBI.ttf ":/program files/efl/expedite/data/VeraMoBI.ttf" pcp share/expedite/data/VeraMoBd.ttf ":/program files/efl/expedite/data/VeraMoBd.ttf" pcp share/expedite/data/VeraMoIt.ttf ":/program files/efl/expedite/data/VeraMoIt.ttf" pcp share/expedite/data/VeraMono.ttf ":/program files/efl/expedite/data/VeraMono.ttf" pcp share/expedite/data/VeraSe.ttf ":/program files/efl/expedite/data/VeraSe.ttf" pcp share/expedite/data/VeraSeBd.ttf ":/program files/efl/expedite/data/VeraSeBd.ttf" pcp share/expedite/data/fonts.alias ":/program files/efl/expedite/data/fonts.alias" pcp share/expedite/data/fonts.dir ":/program files/efl/expedite/data/fonts.dir" pcp share/expedite/data/bg.png ":/program files/efl/expedite/data/bg.png" pcp share/expedite/data/logo.png ":/program files/efl/expedite/data/logo.png" pcp share/expedite/data/e.png ":/program files/efl/expedite/data/e.png" pcp share/expedite/data/image.png ":/program files/efl/expedite/data/image.png" pcp share/expedite/data/bar.png ":/program files/efl/expedite/data/bar.png" pcp share/expedite/data/frame.png ":/program files/efl/expedite/data/frame.png" pcp share/expedite/data/pan.png ":/program files/efl/expedite/data/pan.png" pcp share/expedite/data/tp.png ":/program files/efl/expedite/data/tp.png" pcp share/expedite/data/tp.yuv ":/program files/efl/expedite/data/tp.yuv" pcp share/expedite/data/icon_sel.png ":/program files/efl/expedite/data/icon_sel.png" pcp share/expedite/data/icon_sel2.png ":/program files/efl/expedite/data/icon_sel2.png" pcp share/expedite/data/text_sel.png ":/program files/efl/expedite/data/text_sel.png" pcp share/expedite/data/exit.png ":/program files/efl/expedite/data/exit.png" pcp share/expedite/data/watch.png ":/program files/efl/expedite/data/watch.png" pcp share/expedite/data/bug.png ":/program files/efl/expedite/data/bug.png" pcp share/expedite/data/bulb.png ":/program files/efl/expedite/data/bulb.png" pcp share/expedite/data/camera.png ":/program files/efl/expedite/data/camera.png" pcp share/expedite/data/colorbox.png ":/program files/efl/expedite/data/colorbox.png" pcp share/expedite/data/error.png ":/program files/efl/expedite/data/error.png" pcp share/expedite/data/flower.png ":/program files/efl/expedite/data/flower.png" pcp share/expedite/data/house.png ":/program files/efl/expedite/data/house.png" pcp share/expedite/data/mushroom.png ":/program files/efl/expedite/data/mushroom.png" pcp share/expedite/data/pulse.png ":/program files/efl/expedite/data/pulse.png" pcp share/expedite/data/typewriter.png ":/program files/efl/expedite/data/typewriter.png" pcp share/expedite/data/warning.png ":/program files/efl/expedite/data/warning.png" pcp share/expedite/data/im1.png ":/program files/efl/expedite/data/im1.png" pcp share/expedite/data/im2.png ":/program files/efl/expedite/data/im2.png" and execute it. It will copy the files to your device in the "\Program Files\efl" directory. Then execute the short cut file expedite_winc.lnk. It will execute expedite, using the raw framebuffer backend. Use -e wince-gapi to use the gapi backend (modify the short cut). [edit] Build of EcoreEcore needs iconv to compile ecore_txt. Right now, that dependency is not available. It will be soon built. [edit] DependenciesTODO: compile iconv for ecore_txt. [edit] Build EcoreIt is better to get Ecore from svn. Follow the instructions on that page. Go to the ecore/ subdir, then CFLAGS="-O3 -pipe" ./autogen.sh --host=arm-wince-cegcc --enable-ecore-wince --prefix=$WINCE_PATH --disable-ecore-con --disable-ecore-x --disable-curl make make install-strip You should now have ecore installed in $WINCE_PATH. [edit] Build of EmbryoEmbryo does not need any dependency. Just get it from svn. Follow the instructions on that page. Go to the embryo/ subdir, then CFLAGS="-O3 -pipe" ./autogen.sh --host=arm-wince-cegcc --prefix=$WINCE_PATH make make install-strip You should now have embryo installed in $WINCE_PATH. [edit] Build of EdjeEdje does not need any dependency. Just get it from svn. Follow the instructions on that page. Go to the edje/ subdir, then CFLAGS="-O3 -pipe" ./autogen.sh --host=arm-wince-cegcc --prefix=$WINCE_PATH --disable-edje-cc make make install-strip You should now have edje installed in $WINCE_PATH. [edit] AcknowledgmentI would like to thank Raoul Hecky (from the Calaos project) and Ashikase for their great help. |