]> sigrok.org Git - sigrok-util.git/blob - cross-compile/linux/sigrok-cross-linux
sigrok-cross-linux: Add facility to allow building with clang.
[sigrok-util.git] / cross-compile / linux / sigrok-cross-linux
1 #!/bin/bash
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, write to the Free Software
19 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
20 ##
21
22 set -e
23
24 # Uncomment/set the following to match your cross-toolchain setup.
25 # TOOLCHAIN=...
26 # TOOLCHAIN_TRIPLET=...
27 # C="--host=$TOOLCHAIN_TRIPLET"
28 # export PATH=$TOOLCHAIN/bin:$PATH
29
30 # The path where the compiled packages will be installed.
31 PREFIX=$HOME/sr
32
33 # The path where to download files to and where to build packages.
34 BUILDDIR=./build
35
36 # The path where the libsigrok Python bindings will be installed.
37 PYPATH=$PREFIX/lib/python2.7/site-packages
38
39 # Edit this to enable/disable/modify parallel compiles.
40 PARALLEL="-j 2"
41
42 # Uncomment the following lines to build with clang and run scan-build.
43 # export CC=clang
44 # export CXX=clang++
45 # SB="scan-build -k -v"
46
47 # You usually don't need to change anything below this line.
48
49 # -----------------------------------------------------------------------------
50
51 P="$PREFIX/lib/pkgconfig"
52 C="$C --prefix=$PREFIX"
53
54 # Remove build directory contents (if any) and create a new build dir.
55 rm -rf $BUILDDIR
56 mkdir $BUILDDIR
57 cd $BUILDDIR
58
59 GIT_CLONE="git clone --depth=1"
60
61 # -----------------------------------------------------------------------------
62
63 # libserialport
64 $GIT_CLONE git://sigrok.org/libserialport
65 cd libserialport
66 ./autogen.sh
67 mkdir build
68 cd build
69 ../configure $C
70 $SB make $PARALLEL
71 make install
72 cd ../..
73
74 # libsigrok
75 mkdir -p $PYPATH
76 $GIT_CLONE git://sigrok.org/libsigrok
77 cd libsigrok
78 ./autogen.sh
79 mkdir build
80 cd build
81 PKG_CONFIG_PATH=$P ../configure $C
82 $SB make $PARALLEL
83 PYTHONPATH=$PYPATH $SB make install
84 $SB make check
85 cd ../..
86
87 # libsigrokdecode
88 $GIT_CLONE git://sigrok.org/libsigrokdecode
89 cd libsigrokdecode
90 ./autogen.sh
91 mkdir build
92 cd build
93 PKG_CONFIG_PATH=$P ../configure $C
94 $SB make $PARALLEL
95 make install
96 $SB make check
97 cd ../..
98
99 # sigrok-firmware
100 $GIT_CLONE git://sigrok.org/sigrok-firmware
101 cd sigrok-firmware
102 ./autogen.sh
103 mkdir build
104 cd build
105 # Nothing gets cross-compiled here, we just need 'make install' basically.
106 ../configure $C
107 make install
108 cd ../..
109
110 # sigrok-firmware-fx2lafw
111 $GIT_CLONE git://sigrok.org/sigrok-firmware-fx2lafw
112 cd sigrok-firmware-fx2lafw
113 ./autogen.sh
114 mkdir build
115 cd build
116 # We're building the fx2lafw firmware on the host, no need to cross-compile.
117 ../configure $C
118 make $PARALLEL
119 make install
120 cd ../..
121
122 # sigrok-cli
123 $GIT_CLONE git://sigrok.org/sigrok-cli
124 cd sigrok-cli
125 ./autogen.sh
126 mkdir build
127 cd build
128 PKG_CONFIG_PATH=$P ../configure $C
129 $SB make $PARALLEL
130 make install
131 cd ../..
132
133 # PulseView
134 $GIT_CLONE git://sigrok.org/pulseview
135 cd pulseview
136 mkdir build
137 cd build
138 PKG_CONFIG_PATH=$P $SB cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX -DDISABLE_WERROR=y -DENABLE_TESTS=y ..
139 $SB make $PARALLEL
140 make install
141 cd ../..
142