sigrok-cross-mingw: Update MXE patch to fix various issues.
[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 # Edit this to enable/disable building certain components.
50 BUILD_SIGROK_FIRMWARE_FX2LAFW=1
51
52 # Uncomment the following lines to build with clang and run scan-build.
53 # export CC=clang
54 # export CXX=clang++
55 # SB="scan-build -k -v"
56
57 # You usually don't need to change anything below this line.
58
59 # -----------------------------------------------------------------------------
60
61 P="$PREFIX/lib/pkgconfig"
62 C="$C --prefix=$PREFIX"
63
64 # Remove build directory contents (if any) and create a new build dir.
65 rm -rf $BUILDDIR
66 mkdir $BUILDDIR
67 cd $BUILDDIR
68
69 GIT_CLONE="git clone --depth=1"
70
71 REPO_BASE="git://sigrok.org"
72
73 # -----------------------------------------------------------------------------
74
75 # libserialport
76 $GIT_CLONE $REPO_BASE/libserialport
77 cd libserialport
78 ./autogen.sh
79 mkdir build
80 cd build
81 $SB ../configure $C
82 $SB make $PARALLEL $V
83 make install $V
84 cd ../..
85
86 # libsigrok
87 mkdir -p $PYPATH
88 $GIT_CLONE $REPO_BASE/libsigrok
89 cd libsigrok
90 ./autogen.sh
91 mkdir build
92 cd build
93 PKG_CONFIG_PATH=$P $SB ../configure $C $JDK
94 $SB make $PARALLEL $V
95 PYTHONPATH=$PYPATH $SB make install $V
96 $SB make check $V
97 cd ../..
98
99 # libsigrokdecode
100 $GIT_CLONE $REPO_BASE/libsigrokdecode
101 cd libsigrokdecode
102 ./autogen.sh
103 mkdir build
104 cd build
105 PKG_CONFIG_PATH=$P $SB ../configure $C
106 $SB make $PARALLEL $V
107 make install $V
108 $SB make check $V
109 cd ../..
110
111 # sigrok-firmware
112 $GIT_CLONE $REPO_BASE/sigrok-firmware
113 cd sigrok-firmware
114 ./autogen.sh
115 mkdir build
116 cd build
117 # Nothing gets cross-compiled here, we just need 'make install' basically.
118 $SB ../configure $C
119 make install $V
120 cd ../..
121
122 if [ $BUILD_SIGROK_FIRMWARE_FX2LAFW = 1 ]; then
123 # sigrok-firmware-fx2lafw
124 $GIT_CLONE $REPO_BASE/sigrok-firmware-fx2lafw
125 cd sigrok-firmware-fx2lafw
126 ./autogen.sh
127 mkdir build
128 cd build
129 # We're building the fx2lafw firmware on the host, no need to cross-compile.
130 $SB ../configure $C
131 make $PARALLEL $V
132 make install $V
133 cd ../..
134 fi
135
136 # sigrok-cli
137 $GIT_CLONE $REPO_BASE/sigrok-cli
138 cd sigrok-cli
139 ./autogen.sh
140 mkdir build
141 cd build
142 if [ `uname` = "FreeBSD" ]; then
143         # Temporary fix for: http://sigrok.org/bugzilla/show_bug.cgi?id=552
144         PKG_CONFIG_PATH=$P $SB ../configure $C LDFLAGS=-lusb
145 else
146         PKG_CONFIG_PATH=$P $SB ../configure $C
147 fi
148 $SB make $PARALLEL $V
149 make install $V
150 cd ../..
151
152 # PulseView
153 $GIT_CLONE $REPO_BASE/pulseview
154 cd pulseview
155 mkdir build
156 cd build
157 PKG_CONFIG_PATH=$P $SB cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX -DDISABLE_WERROR=y -DENABLE_TESTS=y -DCMAKE_EXPORT_COMPILE_COMMANDS=y ..
158 $SB make $PARALLEL $V
159 make install $V
160 $SB make test $V
161 cd ../..