]> git.sesse.net Git - vlc/blobdiff - doc/arm-crosscompile-howto.sgml
And another fortune from funman.
[vlc] / doc / arm-crosscompile-howto.sgml
index ddfea88aadf605ca88a5706c554fdf18b09c6d42..81a44d805a0d56d367798c12af5f1cf2303c9bfc 100644 (file)
@@ -3,7 +3,8 @@
 <titlepag>
   <title>Cross compiling VLC for ARM-Linux based platforms</title>
   <author>Marc Ariberti <tt><htmlurl url="mailto:marcari@videolan.org" name="<marcari@videolan.org>"></tt></author>
-  <date>v0.0.1, 13 march 2003</date>
+  <author>Jean-Paul Saman <tt><htmlurl url="mailto:jpsaman@wxs.nl" name="<jpsaman@wxs.nl>"></tt></author>
+  <date>v0.0.2, 19 march 2004</date>
   <abstract>
     This document describes all the steps to cross compile vlc for ARM based
     platforms. It describes how to build a cross compilation toolchain, how to
@@ -26,9 +27,9 @@
       I will describe here how to compile vlc for an ARM based
       PDA running linux. It includes for example :
       <itemize>
-      <item>Compaq - iPaq (H36xx, H38xx,...), using
+      <item>Compaq - iPaq (H36xx, H38xx,...), using Familiar Linux
         <itemize>
-          <item>Familiar linux
+          <item>GNU Portable Environment (GPE)
           <item>Opie
         </itemize>
       </item>
     <heading>Binutils</heading>
     <p>Compiling binutils is pretty simple :
     <tscreen><verb>
-tar xzf binutils-2.11.2.tar.gz
+tar -xzf binutils-2.11.2.tar.gz
 cd binutils-2.11.2
 ./configure --target=arm-linux --prefix=/usr/local/arm/2.95.3
 make
@@ -129,7 +130,7 @@ make install
     <heading>Preparing linux kernel</heading>
     <p>
     <tscreen><verb>
-tar xzf linux-2.4.19.tar.bz2
+tar -xzf linux-2.4.19.tar.bz2
 bunzip2 patch-2.4.19-rmk4.bz2
 cd linux-2.4.19
 patch -p1 &lt; ../patch-2.4.19-rmk4.bz2
@@ -153,7 +154,7 @@ ln -s include sys-linux
     <heading>Basic cross compiler (gcc)</heading>
     <p>
     <tscreen><verb>
-tar xvzf gcc-2.95.3.tar.gz
+tar -xvzf gcc-2.95.3.tar.gz
 bunzip2 gcc-2.95.3.diff.bz2
 bunzip2 gcc-2.95.3.diffbis.bz2
 patch -p1 -d gcc-2.95.3 &lt; gcc-2.95.3.diff
@@ -172,9 +173,9 @@ make install
     <p>
     Depending on your target, you may choose another glibc version (eg: 2.1.3 for linupy 1.4)
     <tscreen><verb>
-tar xvzf glibc-2.2.5.tar.gz
+tar -xvzf glibc-2.2.5.tar.gz
 cd glibc-2.2.5
-tar xvzf ../glibc-linuxthreads-2.2.5.tar.gz
+tar -xvzf ../glibc-linuxthreads-2.2.5.tar.gz
 CC=arm-linux-gcc ./configure arm-linux --target=arm-linux \
           --prefix=/usr/local/arm/2.95.3/arm-linux --enable-add-ons
     </verb></tscreen>
@@ -199,7 +200,7 @@ CC=arm-linux-gcc make install
     <p>
     <tscreen><verb>
 rm -Rf gcc-2.95.3
-tar xvzf gcc-2.95.3.tar.gz
+tar -xvzf gcc-2.95.3.tar.gz
 patch -p1 -d gcc-2.95.3 &lt; gcc-2.95.3.diff
 patch -p1 -d gcc-2.95.3 &lt; gcc-2.95.3.diff2
 cd gcc-2.95.3
@@ -247,19 +248,84 @@ export PATH=/usr/local/arm/2.95.3/bin:$PATH
 # script to install .ipk into the arm-toolchain
 # usage : ./install.sh foobar.ipk
 
-if ! tar xvzf $1 2> /dev/null
+if ! tar -xvzf $1 2> /dev/null
 then
     ar xv $1 2> /dev/null
 fi
 cp data.tar.gz /usr/local/arm/2.95.3/arm-linux
 cd /usr/local/arm/2.95.3/arm-linux
-tar xvzf data.tar.gz
+tar -xvzf data.tar.gz
     </verb></tscreen>
     </p>
   </sect1>
 </sect>
 
+<sect>
+  <heading>Setting up Opie cross-compile environment</heading>
+  <p>Download the Opie SDK from the website <htmlurl url="http://opie.handhelds.org/" name="OPIE website">
+using the menuitem "Download Opie SDK" or try the direct link here: <htmlurl url="ftp://ftp.handhelds.org/zecke/" name="Download Opie SDK">.
+Download all files to your ${SOURCES}/opie directory.
+  </p>
+  <sect1>
+    <heading>Opie SDK</heading>
+    <p>The Opie SDK does not come with a README file or installation instructions.
+I give them here instead. There are two tar files in the download a OpieSDK.tar.gz2 and a kdevelop_src.tar.bz2.
+The last file is a modified kdevelop for use with the OpieSDK. In this tutorial we will not use that.
+Unpack OpieSDK.tar.bz2 in your sources <tt>cd ${SOURCES}/opie</tt> directory.
+    <tscreen><verb>
+cd ${SOURCES}/opie
+tar -xjvf OpieSdk.tar.bz2
+    </verb></tscreen>
+    It creates a directories structure <tt>${SOURCES}/opie/opt/OpieSDK</tt>. Inside that directory a script is present to
+<tt>start_kdevelop</tt>. Modify this script so that it uses the correct paths for you setup.
+    <tscreen><verb>
+#!/bin/sh
+source ${SOURCES}/opie/opt/OpieSdk/dev_env
 
+export KDEDIR=${SOURCES}/opie/opt/OpieSdk/kde
+export PATH=${SOURCES}/opie/opt/OpieSdk/kde/bin:$PATH
+kbuildsycoca
+kdevelop
+    </verb></tscreen>
+    Save the script. Do the same with the script <tt>arm_source</tt>
+    <tscreen><verb>
+source ${SOURCES}/opie/opt/OpieSdk/dev_env
+export QTDIR=$QTDIR_ARM
+export OPIEDIR=$OPIEDIR_ARM
+    </verb></tscreen>
+    Save the script and modify the script <tt>host_source</tt> in the same manner as above.
+    <tscreen><verb>
+source ${SOURCES}/opie/opt/OpieSdk/dev_env
+export QTDIR=$QTDIR_NAT
+export OPIEDIR=$OPIEDIR_NAT
+    </verb></tscreen>
+    Save the script and modify the script <tt>dev_env</tt> in the same manner as above.
+    <tscreen><verb>
+export PYTHONPATH=${SOURCES}/opie/opt/OpieSdk/python/opie:${SOURCES}/opie/opt/OpieSdk/python/sip
+export PATH=/usr/local/arm/2.95.3/bin:/opt/OpieSdk/host_tools:${SOURCES}/opie/opt/OpieSdk/opie/x86/qt-2.3.7/bin:$PATH
+export PATH=${SOURCES}/opie/opt/OpieSdk/opie/x86/qmake:$PATH
+export QTDIR_NAT=${SOURCES}/opie/opt/OpieSdk/opie/x86/qt-2.3.7
+export OPIEDIR_NAT=${SOURCES}/opie/opt/OpieSdk/opie/x86/sdk
+export QTDIR_ARM=${SOURCES}/opie/opt/OpieSdk/opie/arm/qt-2.3.7
+export OPIEDIR_ARM=${SOURCES}/opie/opt/OpieSdk/opie/arm/sdk
+export OPIE_SDK_BASE=${SOURCES}/opie/opt/OpieSdk/
+export OPIE_SDK_QMAKE_BASE=${SOURCES}/opie/opt/OpieSdk/opie/x86/sdk/mkspecs/qws/
+export OPIE_DOC=${SOURCES}/opie/opt/OpieSdk/apidocs
+
+export LD_LIBRARY_PATH=${SOURCES}/opie/opt/OpieSdk/sip/lib:$OPIEDIR_NAT/lib:$QTDIR_NAT/lib:$LD_LIBRARY_PATH
+export OPIE_LANGUAGES=de:en:cz:da:dk:es:fr:hu:it:ja:ko:lv:mk:nl:no:pl:pt:pt_BR:ru:sl:zh_CN:zh_TW
+    </verb></tscreen>
+    The symbolic linke to the tool <tt>qmake</tt> points now to the wrong place. We need to fix this symbolic link.
+Here is the way to do that.
+    <tscreen><verb>
+cd host_tools
+ln -sf /home/jpsaman/src/opie/opt/OpieSdk/opie/x86/sdk/qmake/qmake qmake
+cd ../
+    </verb></tscreen>
+    Now it is time to fire up our development environment and start hacking in Opie.
+    </p>
+  </sect1>
+</sect>
 
 <sect>
   <heading>Cross compiling libraries needed by vlc</heading>
@@ -280,7 +346,7 @@ tar xvzf data.tar.gz
     compiler without the prefix <tt>arm-linux-</tt>.
     
     <tscreen><verb>
-tar xvzf SDL-1.2.5.tar.gz
+tar -xvzf SDL-1.2.5.tar.gz
 cd SDL-1.2.5
 ./configure --enable-release --target=arm-linux --host=arm-linux \
       --disable-esd \
@@ -299,14 +365,14 @@ make && make install
     <heading>Glib/GTK+</heading>
     <p>
     <tscreen><verb>
-tar xvzf glib-1.2.10.tar.gz
+tar -xvzf glib-1.2.10.tar.gz
 cd glib-1.2.10
 CONFIG_SITE=../ipaq-config.site ./configure \
       --prefix=/usr/local/arm/2.95.3/arm-linux/usr
 make
 make install
 cd ..
-tar xvzf gtk+-1.2.10.tar.gz
+tar -xvzf gtk+-1.2.10.tar.gz
 cd gtk+-1.2.10
 CONFIG_SITE=../ipaq-config.site ./configure \
       --prefix=/usr/local/arm/2.95.3/arm-linux/usr --with-glib=../glib-1.2.10
@@ -319,7 +385,7 @@ make install
     <heading>ffmpeg</heading>
     <p>
     <tscreen><verb>
-tar xvzf ffmpeg.tar.gz
+tar -xvzf ffmpeg.tar.gz
 cd ffmpeg
 ./configure --cpu=armv4l --cc=arm-linux-gcc --disable-mmx \
         --prefix=/usr/local/arm/2.95.3/arm-linux/usr --enable-shared
@@ -334,7 +400,7 @@ make
     <heading>mad</heading>
     <p>
     <tscreen><verb>
-tar xvzf mad-0.14.2b.tar.gz
+tar -xvzf mad-0.14.2b.tar.gz
 cd mad-0.14.2b
 ./configure --enable-release --target=arm-linux --host=arm-linux \
       --disable-esd \
@@ -354,7 +420,7 @@ make
     <heading>tremor</heading>
     <p>
     Tremor is an integer decoder for the vorbis audio codec. Download the
-    source through CVS at the <htmlurl url="http://www.xiph.org" name="xiph.org"> website.
+    source through CVS at the <htmlurl url="http://www.xiph.org/" name="xiph.org"> website.
     </p>
     <p>
     Log into CVS using the password : <tt>anoncvs</tt>.
@@ -386,7 +452,7 @@ make
     <heading>flac</heading>
     <p>
     <tscreen><verb>
-tar xvzf flac-1.1.0.tar.gz
+tar -xvzf flac-1.1.0.tar.gz
 cd flac-1.1.0
 ./configure --enable-release --host=arm-linux --target=arm-linux \
             --prefix=/usr/local/arm/2.95.3/arm-linux/usr
@@ -404,7 +470,7 @@ make install
     <heading>libdvbpsi</heading>
     <p>
     <tscreen><verb>
-tar xvzf libdvbpsi-0.1.2.tar.gz
+tar -xvzf libdvbpsi-0.1.2.tar.gz
 cd libdvbpsi-0.1.2
 ./bootstrap
 ./configure --target=arm-linux --host=arm-linux
@@ -416,7 +482,7 @@ make
     <heading>a52</heading>
     <p>
     <tscreen><verb>
-tar xvzf a52dec-0.7.4.tar.gz
+tar -xvzf a52dec-0.7.4.tar.gz
 cd a52dec-0.7.4
 ./configure --enable-release --host=arm-linux --target=arm-linux \
             --prefix=/usr/local/arm/2.95.3/arm-linux/usr
@@ -442,4 +508,5 @@ make && make install
   </p>
 </sect>
 
+
 </article></linuxdoc>