]> sjero.net Git - linphone/blob - README.arm
update ms2
[linphone] / README.arm
1                                         LINPHONE ON ARM-LINUX (HANDHELD COMPUTERS)
2                                         ******************************************
3
4 The console version of linphone works on arm-linux and has been tested on ipaqs
5 under the familiar linux distribution (http://www.handhelds.org).
6 You can find .ipk binary packages on the linphone's download page. 
7 If you want to build your own arm-linux packages, here are some instructions to
8 cross compile linphone and its dependencies: readline, speex and libosip.
9 This is my own experience on cross compiling software. As there is no precise
10 step by step documentation (as far as I know) on how to cross-compile on arm, 
11 there is no guaranty that the following instructions are the best way to do it.
12 First, be aware that only the console version of linphone can compile on ARM.
13
14
15 * You need the lastest arm toolchain from http://www.handhelds.org. Uncompress it in / .
16         It contains all the cross-compilation tools. Be sure that the arm-linux-gcc binaries
17         are in your PATH (export PATH=$PATH:/usr/local/arm/3.4.1/bin/ , for example)
18 * create within your home directory a arm/ directory, copy into it the fresh 
19         tarballs of libosip2>=2.2.x, speex>=1.1.6, linphone>=1.2.1 readline>=5.1 and ncurses>=5.5 (readline needs ncurses)
20          Uncompress all these
21         tarballs. 
22         
23
24 Very important things common to all packages being cross compiled:
25 ******************************************************************
26 * copy the ipaq-config.site in the ipkg/ directory of linphone into some safe place,
27 for example: ~/ipaq-config.site .
28 * You need a directory that we call ARM_INSTALL_TREE that will own files in the same way they will be installed on the target computer.
29 It is also used to build linphone over the arm binaries of its dependencies (speex,osip,ncurses,readline).
30
31 For example:
32
33 export CONFIG_SITE=~/ipaq-config.site
34 export ARM_INSTALL_TREE=/armbuild
35
36
37 Cross compiling ncurses for ARM:
38 ********************************
39 ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --with-shared
40 make
41 make install DESTDIR=$ARM_INSTALL_TREE
42 make install DESTDIR=`pwd`/armbuild
43
44
45 Cross compiling readline for ARM:
46 *********************************
47 ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --disable-static
48 make
49 make install DESTDIR=$ARM_INSTALL_TREE
50 make install DESTDIR=`pwd`/armbuild
51
52
53
54 Cross compiling libosip for ARM:
55 ********************************
56 ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --disable-static
57 make
58 make install DESTDIR=$ARM_INSTALL_TREE
59 make install DESTDIR=`pwd`/armbuild
60
61 Cross compiling speex for ARM:
62 ********************************
63 First you need to remove ogg headers from your build system to avoid a dirty conflict between
64 your build machine binaries and the arm binaries. They are usually in a libogg-dev package (rpm or deb).
65 Then:
66 ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --disable-static --enable-fixed-point --enable-arm-asm
67 make
68 make install DESTDIR=$ARM_INSTALL_TREE
69 make install DESTDIR='pwd'/armbuild
70
71
72 Cross compiling linphone for ARM
73 ********************************
74 First you need to remove all .la files from the ARM_INSTALL_TREE because it confuses libtool and makes
75 the linker use your build machine binaries instead of the arm-crosscompiled ones.
76 rm -f $ARM_INSTALL_TREE/usr/lib/*.la
77 #for some reason pkg-config doesn't like cross-compiling...
78 export PKG_CONFIG=/usr/bin/pkg-config
79 ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --disable-static \
80         --disable-glib --with-osip=$ARM_INSTALL_TREE/usr \
81     --with-readline=$ARM_INSTALL_TREE/usr \
82         SPEEX_CFLAGS="-I$ARM_INSTALL_TREE/usr/include" \
83         SPEEX_LIBS="-L$ARM_INSTALL_TREE/usr/lib -lspeex "
84 make 
85 make install DESTDIR='pwd'/armbuild
86
87 You can use the install trees libosip2-x.x.x/armbuild speex-x.x.x/armbuild and 
88 linphone-0.x.x/armbuild/ to make binary packages of
89 each software, as ipkgs for the familiar distribution (http://www.familiar.org).
90 In the ipkg/ directory of linphone you can find .control files for ipkg-build. 
91 In order to make the osip ipkg, you have to do the following:
92 - create a directory named CONTROL inside libosip2-2.2.x/armbuild
93 - copy the libosip.control file into CONTROL/ and rename it into "control".
94 - edit the "control" file to adjust version number accordingly.
95 - remove the non essential parts of libosip inside libosip2-2.x.x/armbuild/usr/ : just 
96         leave the lib/ directory. This saves space on the destination computer.
97 - then inside libosip2-2.x.x, run ipkg-build -o root -g root armbuild
98 The same procedure applies to make linphone's ipkg.
99 Binaries can also be stripped with arm-linux-strip to save more space.
100
101 Running linphone under the handheld computer
102 ********************************************
103
104 You just have to start linphone from a terminal by typing 'linphonec'.
105
106 Simon