Native Baresip VoIP Client for Kindle 3

Download and configure alsa-lib to compile its static library (libasound.a):

1
2
3
4
5
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.25.tar.bz2
tar xf alsa-lib-1.0.25.tar.bz2
cd alsa-lib-1.0.25/
mkdir ../alsa-static-build
CC=arm-linux-gnueabi-gcc ./configure --disable-shared --enable-static --target=arm-linux --host=i686-linux --prefix=/usr

Compile the library, and install it to the directory just created above (make sure to specify absolute path, in this case “/src/alsa-static-build”):

1
2
3
make
make install DESTDIR=/src/alsa-static-build
cd ..

Download and compile the re and rem libraries:

1
2
3
4
5
6
7
8
9
10
11
wget http://www.creytiv.com/pub/re-0.4.0.tar.gz
wget http://www.creytiv.com/pub/rem-0.4.0.tar.gz
tar xf re-0.4.0.tar.gz
mv re-0.4.0 re
cd re
CC=arm-linux-gnueabi-gcc LD=arm-linux-gnueabi-ld make
cd ..
tar xf rem-0.4.0.tar.gz
mv rem-0.4.0 rem
CC=arm-linux-gnueabi-gcc LD=arm-linux-gnueabi-ld make
cd ..

Download and compile baresip with the STATIC option:

1
2
3
4
wget http://www.creytiv.com/pub/baresip-0.4.0.tar.gz
tar xf baresip-0.4.0.tar.gz
cd baresip-0.4.0
CC=arm-linux-gnueabi-gcc LD=arm-linux-gnueabi-ld SYSROOT=/usr/arm-linux-gnueabi STATIC=yes make

The make above may fail in the linking because it can’t find the static alsa library — if so, it doesn’t matter. Now statically link the baresip binary to all the modules and libasound:

1
arm-linux-gnueabi-gcc -static-libgcc -Wl,-Bstatic -fPIC -rdynamic build-arm/src/aucodec.o build-arm/src/audio.o build-arm/src/aufile.o build-arm/src/aufilt.o build-arm/src/auloop.o build-arm/src/auplay.o build-arm/src/ausrc.o build-arm/src/calc.o build-arm/src/call.o build-arm/src/conf.o build-arm/src/contact.o build-arm/src/mctrl.o build-arm/src/menc.o build-arm/src/mnat.o build-arm/src/net.o build-arm/src/os.o build-arm/src/play.o build-arm/src/realtime.o build-arm/src/rtpkeep.o build-arm/src/stream.o build-arm/src/sipreq.o build-arm/src/ua.o build-arm/src/ui.o build-arm/src/uuid.o build-arm/src/vidcodec.o build-arm/src/vidisp.o build-arm/src/vidsrc.o build-arm/src/video.o build-arm/src/vidloop.o build-arm/src/static.o build-arm/src/main.o build-arm/modules/stun/stun.o build-arm/modules/turn/turn.o build-arm/modules/ice/ice.o build-arm/modules/natbd/natbd.o build-arm/modules/alsa/alsa.o build-arm/modules/alsa/alsa_src.o build-arm/modules/alsa/alsa_play.o build-arm/modules/cons/cons.o build-arm/modules/evdev/evdev.o build-arm/modules/evdev/print.o build-arm/modules/g711/g711.o build-arm/modules/l16/l16.o build-arm/modules/oss/oss.o build-arm/modules/stdio/stdio.o build-arm/modules/v4l/v4l.o -I../alsa-static-build/usr/include/ -L../alsa-static-build/usr/lib -L../re -lre -L../rem -lrem -lm -lasound -o baresip -Wl,-Bdynamic -ldl -lrt -lm -lresolv -lpthread -Wl,-Bstatic

This should create the binary “baresip”:

1
2
ls
Makefile baresip build-arm docs include mk modules share src