\section*{Anhang} \begin{appendix} \subsection*{Anhang 1} Um die Pakete \textit{Evil, Eina, Eet, Embryo, Evas, Ecore, Edje} und \textit{Elementary} von Ubuntu nach Windows Mobile zu portieren, sind die folgenden Schritte nötig: Zuerst muss eine aktuelle Version des \textit{CeGCC's} heruntergeladen und installiert werden. Die benötigten Dateien können auf der Projekthomepage\footnote{http://cegcc.sourceforge.net/} heruntergeladen werden. Für dieses Tutorial wird der \textit{mingw32ce} für den \textit{ARM}-Prozessortyp benötigt. Nach dem heruntergeladen muss dieser in das passende Systemverzeichniss entpackt werden.\newline Bevor man mit dem nächsten Schritt fortfahren kann, müssen noch ein paar benötigte Packete aus dem Ubuntu-Repository installiert werden. \begin{lstlisting} sudo apt-get install build-essential make gcc bison flex subversion autoconf libtool gettext libfreetype6-dev libpng12-dev zlib1g-dev libjpeg-dev libtiff-dev libungif4-dev librsvg2-dev xorg-dev libltdl3-dev libcurl4-dev cvs subversion git-core doxygen proj libsqlite3-0 libsqlite3-dev \end{lstlisting} % Nachdem diese Pakete installiert wurden kann man sich nun die einzelnen Packete aus dem \textit{Subversion-Repository} der % Entwickler herunterladen.\newline Nun muss man noch ein Verzeichniss angelegt werden, in welchem die für Windows Mobile kompilierten Dateien gespeichert werden können. Des weiteren muss noch eine Datei angelegt werden, in welcher die Pfade zun genutzten Kompiler liegen und welche dann einmalig exportiert werden müssen, damit die zum portieren benötigten \textit{Header-Files}, \textit{Libraries} und \textit{Binaries} auch vom Betriebssystem gefunden werden. Diese Datei wird im folgenden mit \textit{mingw32ce.env} benannt. Das Anlegen der Datei geschieht mit dem Befehl \lstinline{touch mingw32ce.env}. % % \begin{lstlisting} % touch mingw32ce.env % \end{lstlisting} % Nun müssen noch folgende Einträge in der Datei \textit{mingw32ce.env} hinzugefügt werden. \begin{lstlisting} export CEGCC_PATH=/opt/cegcc export MINGW32CE_PATH=/opt/mingw32ce export WINCE_PATH=$HOME/workspace/wince export PATH=$CEGCC_PATH/bin:$MINGW32CE_PATH/bin:$PATH export CPPFLAGS="-I$WINCE_PATH/include -I$WINCE_PATH/zlib-1.2.3-dev/include -I$WINCE_PATH/libjpeg-6b-dev/include -I$WINCE_PATH/win_iconv-dev/include -I$WINCE_PATH/freetype-2.3.7-dev/include -I$WINCE_PATH/libpng-1.2.33-dev/include/libpng12 -I$WINCE_PATH/win_iconv-dev/include -I/opt/mingw32ce/arm-mingw32ce/include/" export LDFLAGS="-L$WINCE_PATH/lib -L$WINCE_PATH/zlib-1.2.3-dev/lib -L$WINCE_PATH/libjpeg-6b-dev/lib -L$WINCE_PATH/win_iconv-dev/include -L$WINCE_PATH/freetype-2.3.7-dev/lib -L$WINCE_PATH/libpng-1.2.33-dev/lib -L$WINCE_PATH/win_icon-dev/lib -L$CEGCC_PATH/lib" export LD_LIBRARY_PATH="$WINCE_PATH/bin" export PKG_CONFIG_PATH="$WINCE_PATH/lib/pkgconfig" \end{lstlisting} Der Inhalt dieser Datei muss nun in jeder neu geöffneten \textit{Shell} auf ein neues exportiert werden, da die Variablen durch die hier gewählte Methode nur in den \textit{Shells} existieren, in denen sie exportiert wurden.\newline Unter den Variablen \textit{CEGCC\_PATH} und \textit{MINGW32CE\_PATH} ist der Pfad zum Verzeichniss des \textit{cegcc}, beziehungsweiße des \textit{mingw32ce} Kompilers einzutragen. Unter \textit{WINCE\_PATH} muss der Pfad zum Zielverzeichniss, der kompilierten Dateien, gespeichert werden. Mit \textit{PATH} werden die \textit{Binaries} des \textit{CeGCC's}, in den systemweiten \textit{Binary}-Pfad aufgenommen. Des weiteren werden unter \textit{CPPFLAGS} die \textit{include}-Pfade und unter \textit{LDFLAGS} die Pfade zu den benötigten Bibliotheken abgelegt. \textit{LD\_LIBRARY\_PATH} zeigt auf den Ordner in welchem die kompilierten und unter Umständen benötigten, ausführbaren Dateien liegen. \textit{PKG\_CONFIG\_PATH} zeigt schliesslich noch auf den Ordner der die Paketinformationen der installierten Dateien beinhaltet. Das exportieren dieser Werte geschieht mit dem Aufruf \lstinline{source /mingw32ce.env}.\newline % %\begin{lstlisting} %source /mingw32ce.env %\end{lstlisting} % Nun muss noch ein Ordner angelegt werden, in welchem der \textit{Enlightenment Source-Code} gespeichert werden kann. Nach dem Wechseln in diesen besagten Ordner kann mit dem nächsten Schritt fortgefahren werden. \subsubsection*{Evil} Als erstes ist es nötig das Programm \textit{Evil} aus dem \textit{SVN}, welches von den Entwicklern bereit gestellt wurde, herunterzuladen. Das Herunterladen wird mit \lstinline{svn co http://svn.enlightenment.org/svn/e/trunk/evil} ausgeführt. % %\begin{lstlisting} % svn co http://svn.enlightenment.org/svn/e/trunk/evil %\end{lstlisting} % Nachdem alle Dateien erfolgreich heruntergeladen wurden muss, falls nicht schon geschen, die Datei mit den \textit{Umgebungsvaribalen} exportiert werden. Nachdem dies geschehen ist, kann man nun das Konfigurationsskript mit dem Aufruf \lstinline|./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce| starten. \newline % %\begin{lstlisting} %./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce %\end{lstlisting} % Durch das Ausführen des Skriptes mit den obigen Parametern wird der Installationspfad auf den Wert der Variable \textit{WINCE\_PATH} gesetzt, als Zielsystem ein \textit{ARM}-Prozessor gewählt und der \textit{mingw32ce}-Kompiler als Kompiler festgelegt.\newline Nachdem dieses Skript erfolgreich ausgeführt wurde, kann man im nächsten Schritt das Programm durch ausführen von \lstinline{make} erstellen und im Anschluss durch \lstinline{make install} installieren. Nach diesem Schritt sollte \textit{Evil} erfolgreich im Zielordner, der in der Variable \textit{WINCE\_PATH} festgelegt wurde, installiert worden sein. % %\begin{lstlisting} %make %\end{lstlisting} % %Ist auch dies erfolgreich durchgeführt worden muss man nun noch in einem letzen Schritt die erstellten Dateien im Zielordner %installieren. % %\begin{lstlisting} %make install %\end{lstlisting} % \subsubsection*{Eina} Auch hier ist es auch wieder nötig die Dateien aus dem Entwickler-Repository durch \lstinline{svn co http://svn.enlightenment.org/svn/e/trunk/eina} herunterzuladen. % %\begin{lstlisting} %svn co http://svn.enlightenment.org/svn/e/trunk/eina %\end{lstlisting} % Danach wird auch hier wieder das ``autogen.sh'' Skript durch \lstinline|./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-pthread| Skript aufgerufen. \newline % %\begin{lstlisting} %./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-pthread %\end{lstlisting} % Es werden bei diesem Aufruf die gleichen Parameter wie bei \textit{Evil} übergeben. Hinzu kommt noch \textit{--disable-pthread}. Mit diesem Parameter wird die Nutzung der \textit{POSIX} Bibliothek \textit{pthread} deaktiviert, da diese auf dem Zielsystem nicht unterstützt wird.\newline Nachdem das Skript ausgeführt wurde, muss nun auch wieder das Programm mit \lstinline{make} erstellt und im Zielverzeichniss mit \lstinline{make install} installiert werden. %\begin{lstlisting} %make ; make install %\end{lstlisting} \subsubsection*{Eet} Bevor man \textit{Eet} erstellen kann, muss man noch vier \textit{tar-Archive} im Verzeichniss, welches in der Variable ``WINCE\_PATH'' gespeichert wurde, entpacken. Diese Archive können unter den Links, welche in Anhang 2 zu finden sind, heruntergeladen werden. Im Anschluss müssen diese nur noch in das \textit{WINCE\_PATH}-Verzeichniss kopiert und entpackt werden. Nun kann der Quellcode für \textit{Eet} durch ausführen von \lstinline{svn co http://svn.enlightenment.org/svn/e/trunk/eet} heruntergeladen werden. % %\begin{lstlisting} % svn co http://svn.enlightenment.org/svn/e/trunk/eet %\end{lstlisting} Nachdem die \textit{Eet} Dateien vorhanden sind, muss wieder das \textit{autogen.sh}-Skript durch \lstinline|./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce| aufgerufen und ausgeführt werden. %\begin{lstlisting} % ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce %\end{lstlisting} % Im Anschluss muss nun auch wieder mit \lstinline{make} kompiliert und mit \lstinline{make install} installiert werden. % %\begin{lstlisting} % make ; make install %\end{lstlisting} \subsubsection*{Embryo} Der Erste Schritt ist auch hier das Herunterladen des Programmcodes unter der Verwendung von \lstinline{svn co http://svn.enlightenment.org/svn/e/trunk/embryo}. % %\begin{lstlisting} % svn co http://svn.enlightenment.org/svn/e/trunk/embryo % \end{lstlisting} % Nachdem die Dateien heruntergeladen wurden, durch \lstinline{./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce} das \textit{autogen.sh}-Skript aufrufen. % % \begin{lstlisting} % ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce % \end{lstlisting} % Im Anschluss nun auch wieder kompilieren mit \lstinline{make} und installieren mit \lstinline{make install}. % %\begin{lstlisting} % make ; make install %\end{lstlisting} \subsubsection*{Evas} Auch für \textit{Evas} müssen mehrere \textit{tar-Archive} heruntergeladen werden (siehe Anhang 3). Diese werden in das gleiche Verzeichniss, wie die vorhergegangenen Archive, entpackt. Nun müssen noch die Dateien, welche die Paketinformationen beinhalten, um die heruntergeladen Pakete ergänzt werden: \begin{lstlisting}[breakatwhitespace=true] cp $WINCE_PATH/libpng-1.2.33-dev/lib/pkgconfig/libpng* $WINCE_PATH/lib/pkgconfig/ cp $WINCE_PATH/freetype-2.3.7-dev/lib/pkgconfig/freetype2.pc $WINCE_PATH/lib/freetype2.pc \end{lstlisting} Die Packetinformationen müssen noch bearbeitet werden. Dazu werden die zwei Dateien, \textit{freetype2.pc}, \textit{libpng} und \textit{libpng12.pc}, mit einem beliebigen Editor geöffnet und in beiden Dateien der Wert der Variable \textit{prefix} auf {WINCE\_PATH} gesetzt. Nachdem dies durchgeführt wurde kann nun der Quellcode von \textit{Evas} durch ausführen von \lstinline{svn co http://svn.enlightenment.org/svn/e/trunk/evas} heruntergeladen werden. % % \begin{lstlisting} % svn co http://svn.enlightenment.org/svn/e/trunk/evas % \end{lstlisting} % Es muss auch hier, wie bei allen anderen Programmen, das \textit{autogen.sh}-Skript durch \lstinline|./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-async-events| aufgerufen werden. % % \begin{lstlisting} % ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-async-events % \end{lstlisting} % Als nächster Schritt muss nun das Programm mit \lstinline{make} kompiliert werden. % % \begin{lstlisting} % make % \end{lstlisting} % Sollte hierbei die Datei \textit{ft2build.h} nicht gefunden werden, so muss diese an die richtige Stelle kopiert werden. Ursprünglich liegt diese Datei unter \lstinline|$WINCE_PATH/freetype-2.3.7-dev/include/freetype2/ft2build.h|. % % \begin{lstlisting} % $WINCE_PATH/freetype-2.3.7-dev/include/freetype2/ft2build.h % \end{lstlisting} % Allerdings kann sie in diesem Ordner nicht gefunden werden. Um dies zu umgehen muss \textit{ft2build.h} eine Ordnerebene nach oben kopiert werden. Dies geschieht durch den Aufruf von \lstinline|cp $WINCE_PATH/freetype-2.3.7-dev/include/freetype2/ft2build.h $WINCE_PATH/freetype-2.3.7-dev/include|. \newline % % % \begin{lstlisting} % cp $WINCE_PATH/freetype-2.3.7-dev/include/freetype2/ft2build.h $WINCE_PATH/freetype-2.3.7-dev/include % \end{lstlisting} % Um einen weiteren Fehler von vorneherein zu umgehen, muss noch der Pfad eines eingebundenen Headers in \textit{ft2build.h} abgeändert werden. Hierzu öffnet man \textit{ft2build.h} mit einem beliebigen Editor und ändert \lstinline{#include } zu \lstinline{#include } ab. \newline % % \begin{lstlisting} % % #include % \end{lstlisting} % zu % \begin{lstlisting} % #include % \end{lstlisting} % Anschliessend muss nun auch der \textit{freetype}-Ordner um eine Ebene nach oben kopieren werden, da die \textit{include}-Pfade in den Headern von \textit{freetype2} nicht korrekt sind.\newline Falls man nun noch \textit{Evas} mit \textit{DirectX-Support} kompilieren möchte, muss man das \textit{DirectX-SDK} herunterladen und \textit{ddraw.h} in die Verzichnisse \textit{/opt/cegcc/arm-cegcc/include/w32api/} und \textit{/opt/mingw32ce/arm-mingw32ce/include/} kopieren. \subsubsection*{Ecore} Um \textit{Ecore} zu erstellen muss zu erst eine Änderung im \textit{winnt.h}-Header vorgenommen werden. Dieser liegt im \textit{include}-Verzeichniss des \textit{mingw32ce}-Kompilers. \begin{lstlisting} #define PROCESS_SET_QUOTA 0x0100 #define PROCESS_SET_INFORMATION 0x0200 #define PROCESS_QUERY_INFORMATION 0x0400 +#define PROCESS_SUSPEND_RESUME 0x0800 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED| SYNCHRONIZE|0xfff) #define THREAD_TERMINATE 0x0001 \end{lstlisting} Der mit \textit{+} gekennzeichnete Eintrag \textit{PROCESS\_SUSPEND\_RESUME} muss in die Datei \textit{winnt.h} eingefügt werden.\newline Nachdem dieser Schritt ausgeführt wurde kann \textit{Ecore} erstellt werden. Dazu wird auch hier wieder das \textit{autogen.sh}-Skript durch den Aufruf von \lstinline|./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-pthread| ausgeführt. \newline % % \begin{lstlisting} % ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-pthread % \end{lstlisting} % Nachdem das Skript erfolgreich ausgeführt wurde ,können nun auch die gleichen zwei Schritte wie bei den vorhergegangenen Programmen ausgeführt werden. Der Kompilierungsvorgang wird durch \lstinline{make} gestartet. Im Anschluss kann mit \lstinline{make install} installiert werden. \subsubsection*{Edje} Auch hier müssen zuerst die Dateien durch Aufruf von \lstinline{svn co http://svn.enlightenment.org/svn/e/trunk/embryo} heruntergeladen werden. % % \begin{lstlisting} % svn co http://svn.enlightenment.org/svn/e/trunk/embryo % \end{lstlisting} % Nachdem die Dateien heruntergeladen wurden, muss auch hier wieder das Skript durch \lstinline|./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce| aufgerufen werden. % % \begin{lstlisting} % ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce % \end{lstlisting} % Die letzten beiden Schritte sind auch hier wieder kompilieren und Installation durch \lstinline{make} und \lstinline{make install} ausführen. % \begin{lstlisting} % make ; make install % \end{lstlisting} \subsubsection*{Elementary} Zuerst müssen auch hier der Quellcode und benötigte Daten heruntergeladen werden. Dies geschieht durch den Aufruf von \lstinline{svn co http://svn.enlightenment.org/svn/e/trunk/TMP/st/elementary}. % % % \begin{lstlisting} % svn co http://svn.enlightenment.org/svn/e/trunk/TMP/st/elementary % \end{lstlisting} % Nun muss auch wieder das \textit{autogen.sh}-Skript mit \lstinline|./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --with-edje-cc=$WINCE_PATH/bin/edje_cc| gestartet und ausgeführt werden. % % \begin{lstlisting} % ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce % --with-edje-cc=$WINCE_PATH/bin/edje_cc % \end{lstlisting} % Um zwei Fehlern vorzubeugen, welche beim Erstellen der Test-Files von \textit{elementary} auftreten, muss man im in der Datei \textit{Makefile.am} im Ordner \textit{src/bin/} alle Vorkommnisse von \textit{test\_fileselector.c} entfernen und folgende Zeilen auskommentiert werden: \begin{lstlisting} bin_PROGRAMS = elementary_test if BUILD_QUICKLAUNCH bin_PROGRAMS += elementary_quicklaunch elementary_run elementary_testql endif \end{lstlisting} Nun kann das Programm auf gewohnte Art und Weise mit \lstinline{make} und \lstinline{make install} erstellt und installiert werden. % % \begin{lstlisting} % make ; make install % \end{lstlisting} \subsubsection*{Weitere Schritte} Im Anschluss an das Erstellen dieser Programme muss nun noch ein Skript in \textit{WINCE\_PATH} angelegt und dessen Zugriffsrechte abgeändert werden. Das Anlegen des Skriptes erfolgt durch \lstinline{touch efl_zip.sh}. Die Zugriffsrechte werden durch \lstinline{chmod 774 efl_zip.sh} abgeändert. \newline % % \begin{lstlisting} % touch efl_zip.sh % chmod 774 efl_zip.sh % \end{lstlisting} % In dieses Skript wird nun der Code kopiert, welcher unter Anhang 4 zu finden ist.\newline Bei Ausführung dieses Skripts werden die vorhandenen \textit{DLL's} nocheinmal komprimiert und alles in einen Ordner mit dem Namen \textit{efl} kopiert. Im Anschluss wird der ganze Ordner noch in einem \textit{Zip-Archiv} zusammengefast und komprimiert. Möchte man nun noch eigene Anwendungen hinzufügen, so muss man diese nur in diesen \textit{efl} Ordner hinzufügen und erneut komprimieren. Nun kann dieses Archiv auf das Mobile Gerät kopiert und entpackt werden. \subsection*{Anhang 2} Archive für \textit{Eet}: \begin{itemize} \item zlib-1.2.3-bin.tar.bz2: \newline \url{http://sourceforge.net/projects/cegcc/files/ported%20packages/zlib-1.2.3/zlib-1.2.3-bin.tar.bz2/download} \item zlib-1.2.3-dev.tar.bz2: \newline \url{http://sourceforge.net/projects/cegcc/files/ported%20packages/zlib-1.2.3/zlib-1.2.3-dev.tar.bz2/download} \item libjpeg-6b-bin.tar.bz2: \newline \url{http://sourceforge.net/projects/cegcc/files/ported%20packages/libjpeg-6b/libjpeg-6b-bin.tar.bz2/download} \item libjepg-6b-dev.tar.bz2: \newline \url{http://sourceforge.net/projects/cegcc/files/ported%20packages/libjpeg-6b/libjpeg-6b-dev.tar.bz2/download} \end{itemize} \subsection*{Anhang 3} Archive für \textit{Evas}: \begin{itemize} \item freetype-2.3.7-bin.tar.bz2: \newline \url{http://sourceforge.net/projects/cegcc/files/ported%20packages/freetype-2.3.7/freetype-2.3.7-bin.tar.bz2/download} \item freetype-2.3.7-dev.tar.bz2: \newline \url{http://sourceforge.net/projects/cegcc/files/ported%20packages/freetype-2.3.7/freetype-2.3.7-dev.tar.bz2/download} \item libpng-1.2.33-bin.tar.bz2: \newline \url{http://sourceforge.net/projects/cegcc/files/ported%20packages/libpng-1.2.33/libpng-1.2.33-bin.tar.bz2/download} \item libpng-1.2.33-dev.tar.bz2: \newline \url{http://sourceforge.net/projects/cegcc/files/ported%20packages/libpng-1.2.33/libpng-1.2.33-dev.tar.bz2/download} \end{itemize} \subsection*{Anhang 4} efl\_zip.sh: \begin{lstlisting}[breakatwhitespace=false] #!/bin/sh rm -rf efl/ rm -f efl.zip mkdir -p efl/eina/mp mkdir -p efl/evas/modules/engines/buffer/mingw32ce-arm/ mkdir -p efl/evas/modules/engines/software_16/mingw32ce-arm/ mkdir -p efl/evas/modules/engines/software_16_wince/mingw32ce-arm/ mkdir -p efl/evas/modules/engines/software_generic/mingw32ce-arm/ mkdir -p efl/evas/modules/loaders/eet/mingw32ce-arm/ mkdir -p efl/evas/modules/loaders/jpeg/mingw32ce-arm/ mkdir -p efl/evas/modules/loaders/pmaps/mingw32ce-arm/ mkdir -p efl/evas/modules/loaders/png/mingw32ce-arm/ mkdir -p efl/evas/modules/loaders/xpm/mingw32ce-arm/ mkdir -p efl/evas/modules/savers/eet/mingw32ce-arm/ mkdir -p efl/evas/modules/savers/png/mingw32ce-arm/ cp bin/eet.exe efl/ cp bin/libdl-0.dll efl/ cp bin/libevil-0.dll efl/ cp bin/libeina-0.dll efl/ cp bin/libeet-1.dll efl/ cp bin/libevas-0.dll efl/ cp bin/libecore-0.dll efl/ cp bin/libecore_evas-0.dll efl/ cp bin/libecore_job-0.dll efl/ cp bin/libecore_wince-0.dll efl/ cp bin/libembryo-0.dll efl/ cp bin/libedje-0.dll efl/ arm-mingw32ce-strip efl/libdl-0.dll arm-mingw32ce-strip efl/libevil-0.dll arm-mingw32ce-strip efl/libeina-0.dll arm-mingw32ce-strip efl/libeet-1.dll arm-mingw32ce-strip efl/libevas-0.dll arm-mingw32ce-strip efl/libecore-0.dll arm-mingw32ce-strip efl/libecore_evas-0.dll arm-mingw32ce-strip efl/libecore_job-0.dll arm-mingw32ce-strip efl/libecore_wince-0.dll arm-mingw32ce-strip efl/libembryo-0.dll arm-mingw32ce-strip efl/libedje-0.dll cp lib/eina/mp/eina_chained_mempool.dll efl/eina/mp cp lib/eina/mp/eina_fixed_bitmap.dll efl/eina/mp cp lib/eina/mp/eina_pass_through.dll efl/eina/mp arm-mingw32ce-strip efl/eina/mp/eina_chained_mempool.dll arm-mingw32ce-strip efl/eina/mp/eina_fixed_bitmap.dll arm-mingw32ce-strip efl/eina/mp/eina_pass_through.dll cp lib/evas/modules/engines/buffer/mingw32ce-arm/module.dll efl/evas/modules/engines/buffer/mingw32ce-arm/engine_buffer.dll cp lib/evas/modules/engines/software_16/mingw32ce-arm/module.dll efl/evas/modules/engines/software_16/mingw32ce-arm/engine_software_16.dll cp lib/evas/modules/engines/software_16_wince/mingw32ce-arm/module.dll efl/evas/modules/engines/software_16_wince/mingw32ce-arm/engine_software_16_wince.dll cp lib/evas/modules/engines/software_generic/mingw32ce-arm/module.dll efl/evas/modules/engines/software_generic/mingw32ce-arm/engine_software_generic.dll cp lib/evas/modules/loaders/eet/mingw32ce-arm/module.dll efl/evas/modules/loaders/eet/mingw32ce-arm/loader_eet.dll cp lib/evas/modules/loaders/jpeg/mingw32ce-arm/module.dll efl/evas/modules/loaders/jpeg/mingw32ce-arm/loader_jpeg.dll cp lib/evas/modules/loaders/pmaps/mingw32ce-arm/module.dll efl/evas/modules/loaders/pmaps/mingw32ce-arm/loader_pmaps.dll cp lib/evas/modules/loaders/png/mingw32ce-arm/module.dll efl/evas/modules/loaders/png/mingw32ce-arm/loader_png.dll cp lib/evas/modules/loaders/xpm/mingw32ce-arm/module.dll efl/evas/modules/loaders/xpm/mingw32ce-arm/loader_xpm.dll cp lib/evas/modules/savers/eet/mingw32ce-arm/module.dll efl/evas/modules/savers/eet/mingw32ce-arm/saver_eet.dll cp lib/evas/modules/savers/png/mingw32ce-arm/module.dll efl/evas/modules/savers/png/mingw32ce-arm/saver_png.dll arm-mingw32ce-strip efl/evas/modules/engines/buffer/ mingw32ce-arm/engine_buffer.dll arm-mingw32ce-strip efl/evas/modules/engines/software_16/ mingw32ce-arm/engine_software_16.dll arm-mingw32ce-strip efl/evas/modules/engines/ software_16_wince/mingw32ce-arm/engine_software_16_wince.dll arm-mingw32ce-strip efl/evas/modules/engines/ software_generic/mingw32ce-arm/engine_software_generic.dll arm-mingw32ce-strip efl/evas/modules/loaders/eet/ mingw32ce-arm/loader_eet.dll arm-mingw32ce-strip efl/evas/modules/loaders/jpeg/ mingw32ce-arm/loader_jpeg.dll arm-mingw32ce-strip efl/evas/modules/loaders/pmaps/ mingw32ce-arm/loader_pmaps.dll arm-mingw32ce-strip efl/evas/modules/loaders/png/ mingw32ce-arm/loader_png.dll arm-mingw32ce-strip efl/evas/modules/loaders/xpm/ mingw32ce-arm/loader_xpm.dll arm-mingw32ce-strip efl/evas/modules/savers/eet/mingw32ce-arm/saver_eet.dll arm-mingw32ce-strip efl/evas/modules/savers/png/mingw32ce-arm/saver_png.dll cp freetype-2.3.7-bin/bin/libfreetype-6.dll efl/ cp libjpeg-6b-bin/bin/jpeg62.dll efl/ cp libpng-1.2.33-bin/bin/libpng12-0.dll efl/ cp libpng-1.2.33-bin/bin/libpng-3.dll efl/ cp zlib-1.2.3-bin/bin/zlib1.dll efl/ zip -r -9 efl.zip efl/ \end{lstlisting} \end{appendix}