User Tools

Site Tools


doc:appunti:prog:openmoko_compile

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:prog:openmoko_compile [2009/10/27 08:48] niccolodoc:appunti:prog:openmoko_compile [2009/12/16 15:39] niccolo
Line 95: Line 95:
 </file> </file>
  
-After toolchain installation, install (with **''opkg-target''**) some OpenMoko **''-dev''** packages required to compile Navit:+After toolchain installation, install (with **''opkg-target''**) some OpenMoko **''-dev''** packages required to compile Navit. Depending upon permissions of ''/usr/local/openmoko/'' directory, you may need root privileges:
  
 <code> <code>
 . /usr/local/openmoko/arm/environment-setup . /usr/local/openmoko/arm/environment-setup
 +opkg-target list
 opkg-target install gpsd-dev opkg-target install gpsd-dev
 opkg-target install gtk+-dev opkg-target install gtk+-dev
Line 104: Line 105:
 </code> </code>
  
-Now we check-out Navit sources from the SVN repository and run **''om-conf''** to prepare the ''automake'', ''autoconf'' and ''make'' files to run into the OpenMoko toolchain:+Now we check-out Navit sources from the SVN repository and we make an archive just in case we need the pristine sources in the future:
  
 <code> <code>
 svn co https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit svn co https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit
 tar zcvf navit-svn-2670.tar.gz navit tar zcvf navit-svn-2670.tar.gz navit
-om-conf navit 
 </code> </code>
 +
 +Instead of running the traditional **''./autogen.sh; ./configure''** in the navit source tree, we must run the **''om-conf''** script, which will modify the ''automake'', ''autoconf'' and ''make'' files to run into the OpenMoko toolchain.
 +
 +Because Navit on the OpenMoko FreeRunner requires some configure options, we will pass them to the script. Run ''om-conf'' from the directory containing the source tree (not inside it):
 +
 +<code>
 +om-conf --host=arm-angstrom-linux-gnueabi --enable-avoid-unaligned --enable-avoid-float \
 +    --enable-cache-size=20971520 --with-saxon=saxon-xslt --with-xslts=openmoko \
 +    --enable-svg2png-scaling=16,32,48,96 --enable-svg2png-scaling-flag=32,48 \
 +    navit
 +</code>
 +
 +In the example above we used some **''./configure''** options, among them:
 +
 +**''--with-saxon=saxon-xslt''**\\ This is because we have the Debian libsaxon-java package, where the executable is called ''saxon-xslt'' instead of ''saxon''.
 +
 +**''--enable-svg2png-scaling=16,32,48,96''**\\ For each .svg icon, render a png image of the specified size. Images will be named **''icon_XX_YY.png''**.
 +
 +**''--enable-svg2png-scaling-flag=32,48''**\\ Same as above, but only for country flag icons.
 +
  
 It's time to cross-compile: It's time to cross-compile:
Line 123: Line 143:
 === Using the toolchains === === Using the toolchains ===
  
-The OpenMoko toolchain provides the **''om-make-ipkg''** utility, just provide the directory where to **''make install''** and a control file:+The OpenMoko toolchain provides the **''om-make-ipkg''** utility. It requires the **directory** name where to execute the ''make install'' and the name of the **control file**:
  
 <code> <code>
Line 132: Line 152:
 The control file is described [[http://wiki.openmoko.org/wiki/Toolchain#Packaging_your_application|here]]. The control file is described [[http://wiki.openmoko.org/wiki/Toolchain#Packaging_your_application|here]].
  
-If you need more control files (e.g. a ''postinst'' or alike) you have to tweak with the ''om-make-ipkg'' script. +If you need more control files (e.g. a ''postinst'' or alike) you have to tweak with the ''om-make-ipkg'' script.  Here it is the script I use, it looks for the control files into an **''opkg''** directory, so you have to pass just the directory name containing the source tree. 
 + 
 +<code bash> 
 +#!/bin/sh -e 
 + 
 +error_exit () { 
 +        echo usage: $(basename ${0}) [app_dir_name] [ipkg_control_file] 
 +        exit 1 
 +
 + 
 +test x${OMTOOL_DIR} = x && . /usr/local/openmoko/arm/setup-env 
 +. ${OMTOOL_DIR}/arm/scripts/functions 
 +S=${1} 
 +(test x${S} = x || test ! -d ${S}) && error_exit 
 +appname=$(basename ${S}) 
 +tmpdir=/tmp/${appname}-ipkg-tmp 
 +test -e "${tmpdir}" && echo Cannot use ${tmpdir} because it already exists. && exit 1 
 +make -C ${S} install DESTDIR="${tmpdir}" 
 +# Copy control files to destination directory. 
 +cp -pr opkg/* ${tmpdir} 
 +ipkg-build -o 0 -g 0 ${tmpdir} 
 +rm -rf ${tmpdir} 
 +</code> 
 + 
 +Control files and other files are arranged into the ''opkg'' directory as needed, here it is an example: 
 + 
 +<code> 
 +opkg/CONTROL/postinst 
 +opkg/CONTROL/control 
 +opkg/etc/rcS.d/S96overcommit_memory.sh 
 +</code>
  
 === Using opkg-utils === === Using opkg-utils ===
doc/appunti/prog/openmoko_compile.txt · Last modified: 2009/12/17 11:20 by niccolo