]> sigrok.org Git - sigrok-util.git/blame_incremental - cross-compile/android/sigrok-cross-android
sigrok-cross-android: Drop obsolete libserialport --without-libudev.
[sigrok-util.git] / cross-compile / android / sigrok-cross-android
... / ...
CommitLineData
1#!/bin/bash
2##
3## This file is part of the sigrok-util project.
4##
5## Copyright (C) 2013 Uwe Hermann <uwe@hermann-uwe.de>
6##
7## This program is free software; you can redistribute it and/or modify
8## it under the terms of the GNU General Public License as published by
9## the Free Software Foundation; either version 2 of the License, or
10## (at your option) any later version.
11##
12## This program is distributed in the hope that it will be useful,
13## but WITHOUT ANY WARRANTY; without even the implied warranty of
14## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15## GNU General Public License for more details.
16##
17## You should have received a copy of the GNU General Public License
18## along with this program; if not, write to the Free Software
19## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20##
21
22set -e
23
24# The path where your Android toolchain directory is located.
25TOOLCHAIN=$HOME/android/android-arm-toolchain
26# TOOLCHAIN=$HOME/android/android-mipsel-toolchain
27# TOOLCHAIN=$HOME/android/android-i686-toolchain
28
29# Select which Android toolchain to use.
30# Don't forget to also adapt TOOLCHAIN above if you change TOOLCHAIN_TRIPLET!
31TOOLCHAIN_TRIPLET=arm-linux-androideabi
32# TOOLCHAIN_TRIPLET=mipsel-linux-android
33# TOOLCHAIN_TRIPLET=i686-linux-android
34
35# The path where the cross-compiled packages will be installed.
36PREFIX=$HOME/sr_android
37
38# The path where to download files to and where to build packages.
39BUILDDIR=./build
40
41# Edit this to enable/disable/modify parallel compiles.
42PARALLEL="-j 2"
43
44# You usually don't need to change anything below this line.
45
46# -----------------------------------------------------------------------------
47
48VER_LIBICONV=1.14
49VER_GETTEXT=0.18.3
50VER_ZLIB=1.2.8
51VER_PCRE=8.33
52VER_LIBFFI=3.0.13
53VER_GLIB=2.38.2
54VER_GLIB_SHORT=2.38
55VER_LIBZIP=0.11.1
56VER_LIBUSB=0.1.12
57VER_LIBFTDI=0.20
58VER_LIBUSBX=1.0.17
59VER_PYTHON=3.3.3
60
61SF_MIRROR=switch.dl.sourceforge.net
62
63WGET="wget --quiet"
64GIT_CLONE="git clone --depth=1"
65
66# -----------------------------------------------------------------------------
67
68# Remove build directory contents (if any) and create a new build dir.
69rm -rf $BUILDDIR
70mkdir $BUILDDIR
71cd $BUILDDIR
72
73# Build host Python before we start messing with the environment.
74$WGET http://python.org/ftp/python/$VER_PYTHON/Python-$VER_PYTHON.tar.xz
75tar xJf Python-$VER_PYTHON.tar.xz
76cd Python-$VER_PYTHON
77./configure
78make python $PARALLEL
79make Parser/pgen $PARALLEL
80mv python hostpython
81mv Parser/pgen Parser/hostpgen
82cd ..
83
84# -----------------------------------------------------------------------------
85
86# We need to find tools in the toolchain.
87export PATH=$TOOLCHAIN/bin:$PATH
88
89# Tell pkg-config to only look for our cross-built stuff.
90export PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig"
91export -n PKG_CONFIG_PATH
92
93# Define some helper variables.
94C="--host=$TOOLCHAIN_TRIPLET --prefix=$PREFIX"
95
96# Get the latest versions of config.guess/config.sub that know about Android.
97$GIT_CLONE git://git.savannah.gnu.org/config.git
98
99# -----------------------------------------------------------------------------
100
101# Python (needed for libsigrokdecode)
102cd Python-$VER_PYTHON
103make distclean
104autoreconf
105patch -p1 < ../../Python-$VER_PYTHON.patch
106ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ac_cv_func_pipe2=no ac_cv_func_fdatasync=no ac_cv_func_killpg=no ac_cv_func_waitid=no ac_cv_func_sigaltstack=no ./configure $C --build=x86_64-linux-gnu --disable-ipv6
107make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen install $PARALLEL
108cd ..
109
110# libiconv (needed for glib)
111$WGET http://ftp.gnu.org/pub/gnu/libiconv/libiconv-$VER_LIBICONV.tar.gz
112tar xfz libiconv-$VER_LIBICONV.tar.gz
113cd libiconv-$VER_LIBICONV
114cp -f ../config/config.guess build-aux
115cp -f ../config/config.sub build-aux
116cp -f ../config/config.guess libcharset/build-aux
117cp -f ../config/config.sub libcharset/build-aux
118./configure $C --enable-shared
119make lib/localcharset.h
120cd libcharset
121make $PARALLEL
122make install
123cd ../lib
124make $PARALLEL
125make install
126cd ..
127test -d $PREFIX/include || mkdir $PREFIX/include
128cp include/iconv.h.inst $PREFIX/include/iconv.h
129cd ..
130
131# gettext (needed for glib)
132$WGET http://ftp.gnu.org/pub/gnu/gettext/gettext-$VER_GETTEXT.tar.gz
133tar xfz gettext-$VER_GETTEXT.tar.gz
134cd gettext-$VER_GETTEXT
135./configure $C --enable-shared --disable-libasprintf
136cd gettext-runtime
137make $PARALLEL
138make install
139cd ../..
140
141# zlib (needed for glib and libzip)
142$WGET http://zlib.net/zlib-$VER_ZLIB.tar.gz
143tar xfvz zlib-$VER_ZLIB.tar.gz
144cd zlib-$VER_ZLIB
145# Note: zlib's configure doesn't understand --host, we need to pass $CC.
146CC=$TOOLCHAIN_TRIPLET-gcc ./configure --prefix=$PREFIX
147make $PARALLEL
148make install
149cd ..
150
151# pcre (needed for glib)
152$WGET ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-$VER_PCRE.tar.gz
153tar xfvz pcre-$VER_PCRE.tar.gz
154cd pcre-$VER_PCRE
155./configure $C --disable-cpp
156make $PARALLEL
157make install
158cd ..
159
160# libffi (needed for glib)
161$WGET ftp://sourceware.org/pub/libffi/libffi-$VER_LIBFFI.tar.gz
162tar xfz libffi-$VER_LIBFFI.tar.gz
163cd libffi-$VER_LIBFFI
164./configure $C
165make $PARALLEL
166make install
167cd ..
168
169# glib
170$WGET http://ftp.gnome.org/pub/gnome/sources/glib/$VER_GLIB_SHORT/glib-$VER_GLIB.tar.xz
171tar xJf glib-$VER_GLIB.tar.xz
172cd glib-$VER_GLIB
173./autogen.sh
174# Note: Manual LDFLAGS/CPPFLAGS needed for libiconv, rest uses pkg-config.
175LDFLAGS=-L$PREFIX/lib CPPFLAGS=-I$PREFIX/include glib_cv_stack_grows=no glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=no ac_cv_func_posix_getgrgid_r=no ./configure --disable-compile-warnings $C
176make $PARALLEL
177make install
178cd ..
179
180# libzip
181$WGET http://www.nih.at/libzip/libzip-$VER_LIBZIP.tar.gz
182tar xfz libzip-$VER_LIBZIP.tar.gz
183cd libzip-$VER_LIBZIP
184cp -f ../config/config.guess .
185cp -f ../config/config.sub .
186./configure $C
187make $PARALLEL
188make install
189cd ..
190
191# libusb-0.1 (not used directly, but needed for libftdi)
192$WGET http://$SF_MIRROR/project/libusb/libusb-0.1%20%28LEGACY%29/$VER_LIBUSB/libusb-$VER_LIBUSB.tar.gz
193tar xfz libusb-$VER_LIBUSB.tar.gz
194cd libusb-$VER_LIBUSB
195cp -f ../config/config.guess .
196cp -f ../config/config.sub .
197./configure $C
198# Explicitly exclude libusbpp.la from lib_LTLIBRARIES, and skip subdirs.
199make lib_LTLIBRARIES=libusb.la SUBDIRS=. $PARALLEL
200make lib_LTLIBRARIES=libusb.la SUBDIRS=. install
201cd ..
202
203# libftdi
204$WGET http://www.intra2net.com/en/developer/libftdi/download/libftdi-$VER_LIBFTDI.tar.gz
205tar xfz libftdi-$VER_LIBFTDI.tar.gz
206cd libftdi-$VER_LIBFTDI
207cp -f ../config/config.guess .
208cp -f ../config/config.sub .
209# libftdi needs to find libusb-config which is installed in $PREFIX/bin.
210PATH=$PREFIX/bin:$PATH ./configure $C
211make $PARALLEL
212make install
213cd ..
214
215# libusb-1.0
216$WGET http://$SF_MIRROR/project/libusbx/releases/$VER_LIBUSBX/source/libusbx-$VER_LIBUSBX.tar.bz2
217tar xfj libusbx-$VER_LIBUSBX.tar.bz2
218cd libusbx-$VER_LIBUSBX
219patch -p1 < ../../libusb-1.0.patch
220./configure $C --disable-udev
221make $PARALLEL
222make install
223cd ..
224
225# libserialport
226$GIT_CLONE git://sigrok.org/libserialport
227cd libserialport
228./autogen.sh
229./configure $C
230make $PARALLEL V=1
231make install
232cd ..
233
234# libsigrok
235$GIT_CLONE git://sigrok.org/libsigrok
236cd libsigrok
237./autogen.sh
238./configure $C
239make $PARALLEL V=1
240make install
241cd ..
242
243# libsigrokdecode
244$GIT_CLONE git://sigrok.org/libsigrokdecode
245cd libsigrokdecode
246./autogen.sh
247./configure $C
248make $PARALLEL V=1
249make install
250cd ..
251
252# sigrok-cli
253$GIT_CLONE git://sigrok.org/sigrok-cli
254cd sigrok-cli
255./autogen.sh
256./configure $C
257make $PARALLEL V=1
258make install
259cd ..
260