]> sigrok.org Git - sigrok-util.git/blob - cross-compile/linux/sigrok-cross-linux
9e55155b3c0116ab0648c6cf2e99f994e44f72b8
[sigrok-util.git] / cross-compile / linux / sigrok-cross-linux
1 #!/bin/sh
2 ##
3 ## This file is part of the sigrok-util project.
4 ##
5 ## Copyright (C) 2014 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, see <http://www.gnu.org/licenses/>.
19 ##
20
21 set -e
22
23 # Uncomment/set the following to match your cross-toolchain setup.
24 # TOOLCHAIN=...
25 # TOOLCHAIN_TRIPLET=...
26 # C="--host=$TOOLCHAIN_TRIPLET"
27 # export PATH=$TOOLCHAIN/bin:$PATH
28
29 # The path where the compiled packages will be installed.
30 PREFIX=$HOME/sr
31
32 # The path where to download files to and where to build packages.
33 BUILDDIR=./build
34
35 # The path where the libsigrok Python bindings will be installed.
36 PYPATH=$PREFIX/lib/python2.7/site-packages
37
38 # JDK include path. Usually found automatically, except on FreeBSD.
39 if [ `uname` = "FreeBSD" ]; then
40         JDK="--with-jni-include-path=/usr/local/openjdk7/include"
41 fi
42
43 # Edit this to control verbose build output.
44 # V="V=1 VERBOSE=1"
45
46 # Edit this to enable/disable/modify parallel compiles.
47 PARALLEL="-j 2"
48
49 # Uncomment the following lines to build with clang and run scan-build.
50 # export CC=clang
51 # export CXX=clang++
52 # SB="scan-build -k -v"
53
54 # You usually don't need to change anything below this line.
55
56 # -----------------------------------------------------------------------------
57
58 P="$PREFIX/lib/pkgconfig"
59 C="$C --prefix=$PREFIX"
60
61 # Remove build directory contents (if any) and create a new build dir.
62 rm -rf $BUILDDIR
63 mkdir $BUILDDIR
64 cd $BUILDDIR
65
66 GIT_CLONE="git clone --depth=1"
67
68 # -----------------------------------------------------------------------------
69
70 # libserialport
71 $GIT_CLONE git://sigrok.org/libserialport
72 cd libserialport
73 ./autogen.sh
74 mkdir build
75 cd build
76 ../configure $C
77 $SB make $PARALLEL $V
78 make install $V
79 cd ../..
80
81 # libsigrok
82 mkdir -p $PYPATH
83 $GIT_CLONE git://sigrok.org/libsigrok
84 cd libsigrok
85 ./autogen.sh
86 mkdir build
87 cd build
88 PKG_CONFIG_PATH=$P ../configure $C $JDK
89 $SB make $PARALLEL $V
90 PYTHONPATH=$PYPATH $SB make install $V
91 $SB make check $V
92 cd ../..
93
94 # libsigrokdecode
95 $GIT_CLONE git://sigrok.org/libsigrokdecode
96 cd libsigrokdecode
97 ./autogen.sh
98 mkdir build
99 cd build
100 PKG_CONFIG_PATH=$P ../configure $C
101 $SB make $PARALLEL $V
102 make install $V
103 $SB make check $V
104 cd ../..
105
106 # sigrok-firmware
107 $GIT_CLONE git://sigrok.org/sigrok-firmware
108 cd sigrok-firmware
109 ./autogen.sh
110 mkdir build
111 cd build
112 # Nothing gets cross-compiled here, we just need 'make install' basically.
113 ../configure $C
114 make install $V
115 cd ../..
116
117 # sigrok-firmware-fx2lafw
118 $GIT_CLONE git://sigrok.org/sigrok-firmware-fx2lafw
119 cd sigrok-firmware-fx2lafw
120 ./autogen.sh
121 mkdir build
122 cd build
123 # We're building the fx2lafw firmware on the host, no need to cross-compile.
124 ../configure $C
125 make $PARALLEL $V
126 make install $V
127 cd ../..
128
129 # sigrok-cli
130 $GIT_CLONE git://sigrok.org/sigrok-cli
131 cd sigrok-cli
132 ./autogen.sh
133 mkdir build
134 cd build
135 if [ `uname` = "FreeBSD" ]; then
136         # Temporary fix for: http://sigrok.org/bugzilla/show_bug.cgi?id=552
137         PKG_CONFIG_PATH=$P ../configure $C LDFLAGS=-lusb
138 else
139         PKG_CONFIG_PATH=$P ../configure $C
140 fi
141 $SB make $PARALLEL $V
142 make install $V
143 cd ../..
144
145 # PulseView
146 $GIT_CLONE git://sigrok.org/pulseview
147 cd pulseview
148 mkdir build
149 cd build
150 PKG_CONFIG_PATH=$P $SB cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX -DDISABLE_WERROR=y -DENABLE_TESTS=y ..
151 $SB make $PARALLEL $V
152 make install $V
153 $SB make test $V
154 cd ../..