From 99e14a0d8f0447290eaff38be4e71afb63a3e332 Mon Sep 17 00:00:00 2001 From: Patrick Hornecker Date: Fri, 5 Feb 2010 10:22:24 +0100 Subject: tex source and barcode improvements --- ausarbeitung/Anhang.tex | 404 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 387 insertions(+), 17 deletions(-) (limited to 'ausarbeitung/Anhang.tex') diff --git a/ausarbeitung/Anhang.tex b/ausarbeitung/Anhang.tex index 90980be..3297ab6 100644 --- a/ausarbeitung/Anhang.tex +++ b/ausarbeitung/Anhang.tex @@ -3,9 +3,350 @@ \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: + +Im allerersten Schritt muss eine aktuelle Version des \textit{CeGCC's} heruntergeladen und installiert werden. Die benötigten +Dateien können auf der Projekthomepage gefunden und heruntergeladen werden. Für diese Aufgabe wird der \textit{mingw32ce} für den +\textit{ARM}-Prozessortyp benötigt. Dieser muss auf der Homepage des CeGCC-Projekts heruntergeladen und 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{verbatim} +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{verbatim} + +Nachdem diese Pakete installiert wurden kann man sich nun die einzelnen Packete aus dem \textit{Subversion-Repository} der +Entwickler herunterladen.\newline +Nun muss man sich noch ein Verzeichniss anlegen, in welchem die für Windows Mobile kompilierten Dateien abgelegt werden. Des +weiteren muss noch eine Datei angelegt werden, in welcher die Pfade zu dem genutzten Kompiler liegen und welche dann einmalig +exportiert werden müssen, damit die benötigten \textit{Header-Files}, textit{Libraries} und \textit{Binaries} auch vom +Betriebssystem gefunden werden. Diese Datei wird im folgenden ``mingw32ce.env'' benannt. + +\begin{verbatim} + touch mingw32ce.env +\end{verbatim} + +Nun müssen noch in diese Datei die zu exportierenden Pfade geschrieben werden. + +\begin{verbatim} +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{verbatim} + +Der Inhalt dieser Datei muss nun in jeder neu geöffneten Shell neu exportiert werden, da sie durch die hier gewählte Methode nur +in +eben diesen Shell's gelten wo sie exportiert wurden.\newline +Bei den Variablen ``CEGCC\_PATH'' und ``MINGW32CE\_PATH'' ist der Pfad zum Verzeichniss des \textit{cegcc}, beziehungsweiße des +\textit{mingw32ce} +Kompilers einzutragen. Unter ``WINCE\_PATH'' muss der Pfad, zu dem Verzeichniss in dem die kompilierten Daten gespeichert werden +sollen, +eingetragen werden. Mit ``PATH'' werden die \textit{Binaries}, der zwei Kompiler, in den Systempfad aufgenommen. Des weiteren +werden unter +``CPPFLAGS'' die \textit{include}-Pfade und unter ``LDFLAGS'' die \textit{Librarie} Pfade abgelegt. ``LD\_LIBRARY\_PATH'' zeigt +auf den Ordner +in welchem die kompilierten \textit{Binaries} liegen. ``PKG\_CONFIG\_PATH'' zeigt schliesslich noch auf den Ordner der die +Packetinformationen +der installierten Dateien beinhaltet. Dieses exportieren geschieht mit dem folgenden Aufruf. + +\begin{verbatim} +source /mingw32ce.env +\end{verbatim} + +Im nächsten Schritt muss nun noch ein Ordner angelegt werden, in welchem der \textit{Enlightenment Source-Code} abgelegt wird. Nun +muss noch in +dieses Verzeichniss gewechselt werden und es kann mit dem ersten Programm begonnen 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 geschieht mit: + +\begin{verbatim} + svn co http://svn.enlightenment.org/svn/e/trunk/evil +\end{verbatim} + +Nachdem alle Dateien erfolgreich heruntergeladen wurden muss, falls nicht schon geschen, die Datei mit den +\textit{Umgebungsvaribalen} +eingelesen werden. Nachdem dies geschehen ist, kann man nun das Konfigurationsskript starten + +\begin{verbatim} + ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce +\end{verbatim} + +Durch diesen Aufruf wird der Installationspfad auf den Wert der Variable ``WINCE\_PATH'' gesetzt und als Zielsystem ein +\textit{ARM-Prozessor} gesetzt und der \textit{mingw32ce}-Kompiler als Kompiler gewählt.\newline +Nachdem dieses Skript erfolgreich durchgeführt wurde, kann man im nächsten Schritt das Programm erstellen. + +\begin{verbatim} + make +\end{verbatim} + +Ist auch dies erfolgreich durchgelofen, so muss man nun noch in einem letzen Schritt die erstellten Dateien im Zielordner +installieren. + +\begin{verbatim} + make install +\end{verbatim} + +Nun sollte \textit{Evil} erfolgreich im Zielordner installiert worden sein. + +\subsubsection*{Eina} + +Auch hier ist es auch wieder nötig die Dateien aus dem Entwickler-Repository herunterzuladen. + +\begin{verbatim} + svn co http://svn.enlightenment.org/svn/e/trunk/eina +\end{verbatim} + +Danach wird auch hier wieder das ``autogen.sh'' Skript aufgerufen. + +\begin{verbatim} + ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-pthread +\end{verbatim} + +Es werden bei diesem Aufruf die gleichen Parameter wie bei \textit{Evil} übergeben. Hinzu kommt noch ``--disable-pthread''. Mit +diesem +Parameter wird \textit{threading} beim erstellen von \textit{Eina} deaktiviert, da \textit{ARM-Prozessoren} dies nicht +unterstützen.\newline +Nachdem das Skript durchgelaufen ist, muss man nun auch wieder das Programm erstellen und im Zielverzeichniss installieren. + +\begin{verbatim} + make ; make install +\end{verbatim} + +\subsubsection*{Eet} + +Bevor man \textit{Eet} erstellen kann, muss man noch vier vorgefertigte \textit{tar-Archive} im Verzeichniss, welches in der +Variable +``WINCE\_PATH'' gespeichert wurde, entpacken. Diese Archive kann man unter den Links, welche in Anhang 2 zu finden sind, +herunterladen. +Nach dem herunterladen müssen diese nur noch in das ``WINCE\_PATH''-Verzeichniss kopiert und entpackt werden. Nun kann man den +Quellcode +für \textit{Eet} herunterladen. + +\begin{verbatim} + svn co http://svn.enlightenment.org/svn/e/trunk/eet +\end{verbatim} + +Nachdem die Dateien heruntergeladen sind, muss wieder das ``autogen.sh``-Skript aufgerufen werden. + +\begin{verbatim} + ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce +\end{verbatim} + +Im Anschluss muss nun auch wieder kompiliert und installiert werden. + +\begin{verbatim} + make ; make install +\end{verbatim} + +\subsubsection*{Embryo} + +\begin{verbatim} + svn co http://svn.enlightenment.org/svn/e/trunk/embryo +\end{verbatim} + +Nachdem die Dateien heruntergeladen sind auch wieder das Skript aufrufen. + +\begin{verbatim} + ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce +\end{verbatim} + +Im Anschluss nun auch wieder kompilieren und installieren. + +\begin{verbatim} + make ; make install +\end{verbatim} + +\subsubsection*{Evas} + +Auch für \textit{Evas} müssen mehrere \textit{tar-Archive} heruntergeladen werden (siehe Anhang 3). Auch sollen diese in das +gleiche Verzeichniss, wie die vorhergegangenen Archive, entpackt werden. Nun müssen noch die Dateien, welche die +Packetinformationen beinhalten für die heruntergeladen Dateien ergänzt werden: + +\begin{verbatim} + cp $WINCE_PATH/cp 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{verbatim} + +Nun müssen diese Packetinformationen noch bearbeitet werden. Dazu müssen diese mit einem beliebigen Editor geöffnet werden und in +beiden +Dateien der Wert von ''prefix`` auf ''WINCE\_PATH`` gesetzt werden. + +Nachdem dies durchgeführt wurde kann nun \textit{Evas} heruntergeladen werden. + +\begin{verbatim} + svn co http://svn.enlightenment.org/svn/e/trunk/evas +\end{verbatim} + +Nun muss auch hier, wie bei allen anderen Programmen das ''autogen.sh``-Skript aufgerufen werden. + +\begin{verbatim} + ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-async-events +\end{verbatim} + +Als nächster Schritt muss nun das Programm kompiliert werden. + +\begin{verbatim} + make +\end{verbatim} + +Sollte hierbei die Datei ''ft2build.h`` nicht gefunden werden, so muss diese an die richtige Stelle kopiert werden. Eigentlich +liegt die +Datei an folgendem Ort: + +\begin{verbatim} + $WINCE_PATH/freetype-2.3.7-dev/include/freetype2/ft2build.h +\end{verbatim} + +Allerdings wird sie im Ordner ''freetype2`` nicht gefunden. Um dies zu umgehen muss ''ft2build.h`` einfach eine Ordnerebene nach +oben +kopiert werden. + +\begin{verbatim} + cp $WINCE_PATH/freetype-2.3.7-dev/include/freetype2/ft2build.h $WINCE_PATH/freetype-2.3.7-dev/include +\end{verbatim} + +Um einen weiteren Fehler von vorneherein zu umgehen, muss man noch den Pfad eines eingebundenen Headers in ''ft2build.h`` +abändern. +Hierzu öffnet man ''ft2build.h`` mit einem beliebigen Editor und ändert folgendes + +\begin{verbatim} + #include +\end{verbatim} + +zu + +\begin{verbatim} + #include +\end{verbatim} + +ab. Anschliessend zu dieser Lösung muss nun einfach der ''freetype``-Ordner um eine Ebene nach oben kopieren werden, da die +\textit{include}-Pfade in den Headern von ''freetype2`` stellenweiße 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 ''ddraw.h`` in die Verzichnisse ''/opt/cegcc/arm-cegcc/include/w32api/'' und ''/opt/mingw32ce/arm-mingw32ce/include/'' +kopieren. + +\subsubsection*{Ecore} + +Um \textit{Ecore} zu erstellen muss zu allererst eine Änderung im ``winnt.h''-Header vorgenommen werden. Dieser liegt im +\textit{include}-Verzeichniss des \textit{mingw32ce}-Kompilers. + +\begin{verbatim} + #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{verbatim} + +Der mit ``+'' gekennzeichnete Eintrag ``PROCESS\_SUSPEND\_RESUME'' muss in die Datei ``winnt.h'' eingefügt werden.\newline +Nachdem dieser Schritt ausgeführt wurde kann nun auch \textit{Ecore} kompiliert werden. Dazu wird auch hier wieder zuerst das +``autogen.sh'' Skript ausgeführt. + +\begin{verbatim} + ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-pthread +\end{verbatim} + +Nachdem dies erfolgreich ausgeführt wurde können nun auch die gleichen zwei Schritte wie bei den vorhergegangenen Programmen +ausgeführt werden. + +\subsubsection*{Edje} + +Auch hier gilt wieder, Dateien herunterladen. + +\begin{verbatim} + svn co http://svn.enlightenment.org/svn/e/trunk/embryo +\end{verbatim} + +Nachdem die Dateien heruntergeladen wurden, muss auch hier wieder das Skript aufgerufen werden. + +\begin{verbatim} + ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce +\end{verbatim} + +Die letzten beiden Schritte sind auch hier wieder kompilieren und installieren. + +\begin{verbatim} + make ; make install +\end{verbatim} + +\subsubsection*{Elementary} + +Zuerst müssen auch hier die benötigten Daten heruntergeladen werden. + +\begin{verbatim} +svn co http://svn.enlightenment.org/svn/e/trunk/TMP/st/elementary +\end{verbatim} + +Nun muss auch wieder das ``autogen.sh'' Skript heruntergeladen werden. + +\begin{verbatim} + ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --with-edje-cc=$WINCE_PATH/bin/edje_cc +\end{verbatim} + +Um zwei Fehlern vorzubeugen, welche beim erstellen der Test-Files von \textit{elementary} auftreten muss man im in der Datei +``Makefile.am'' im Ordner ``src/bin/'' alle Vorkommnisse von ``test\_fileselector.c'' entfernen und folgende Zeilen +auskommentieren. + +\begin{verbatim} +bin_PROGRAMS = elementary_test +if BUILD_QUICKLAUNCH +bin_PROGRAMS += elementary_quicklaunch elementary_run elementary_testql +endif +\end{verbatim} + +Nun kann das Programm auf gewohnte Art und Weise erstellt und installiert werden. + +\begin{verbatim} + make ; make install +\end{verbatim} + +\subsubsection*{Weitere Schritte} + +Im Anschluss an das Erstellen dieser Programme muss nun noch ein Skript in WINCE\_PATH angelegt und dessen Zugriffsrechte +abgeändert +werden. + +\begin{verbatim} + touch efl_zip.sh + chmod 774 efl_zip.sh +\end{verbatim} + +In dieses Skript wird nun der Code eingefügt, 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 +``efl'' kopiert. Im Anschluss wird der ganze Ordner noch in einem \textit{Zip-Archiv} komprimiert. Möchte man nun noch eigene +Anwendungen +hinzufügen, so muss man diese nur in diesen ``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}: +Archive für \textit{Eet}: \begin{itemize} \item zlib-1.2.3-bin.tar.bz2: \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: \url{http://sourceforge.net/projects/cegcc/files/ported%20packages/zlib-1.2.3/zlib-1.2.3-dev.tar.bz2/download} @@ -15,7 +356,7 @@ Archive für \textit{eet}: \subsection*{Anhang 3} -Archive für \textit{evas}: +Archive für \textit{Evas}: \begin{itemize} \item freetype-2.3.7-bin.tar.bz2: \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: \url{http://sourceforge.net/projects/cegcc/files/ported%20packages/freetype-2.3.7/freetype-2.3.7-dev.tar.bz2/download} @@ -80,24 +421,53 @@ 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/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 -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 +arm-mingw32ce-strip efl/evas/modules/engines/software_16/\ +mingw32ce-arm/engine_software_16.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/\ +software_16_wince/mingw32ce-arm/engine_software_16_wince.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/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 -- cgit v1.2.3-55-g7522