blob: 1ee9dc626ce430e934f72cc6982f3795ae34b08f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#!/bin/bash
set -e
set -x
# This script is for building the sixgill GCC plugin for Linux. It relies on
# the gcc checkout because it needs to recompile gmp and the gcc build script
# determines the version of gmp to download.
root_dir=$MOZ_FETCHES_DIR
build_dir=$GECKO_PATH/build
data_dir=$GECKO_PATH/build/unix/build-gcc
sixgill_rev=a642a811d6ee
sixgill_repo=https://hg.mozilla.org/users/sfink_mozilla.com/sixgill
. $data_dir/build-gcc.sh
mkdir $root_dir/gcc-source || true
pushd $root_dir/gcc-source
ln -sf ../gmp-source gmp
ln -sf ../isl-source isl
ln -sf ../mpc-source mpc
ln -sf ../mpfr-source mpfr
popd
export TMPDIR=${TMPDIR:-/tmp/}
export gcc_bindir=$MOZ_FETCHES_DIR/gcc/bin
export gmp_prefix=/tools/gmp
export gmp_dir=$root_dir$gmp_prefix
prepare_sixgill() {(
cd $root_dir
hg clone -r $sixgill_rev $sixgill_repo || ( cd sixgill && hg update -r $sixgill_rev )
)}
build_gmp() {
if ! [ -x $gcc_bindir/gcc ]; then
echo "GCC not found in $gcc_bindir/gcc" >&2
exit 1
fi
# The sixgill plugin uses some gmp symbols, including some not exported by
# cc1/cc1plus. So link the plugin statically to libgmp. Except that the
# default static build does not have -fPIC, and will result in a relocation
# error, so build our own. This requires the gcc and related source to be
# in $root_dir/gcc-source.
mkdir $root_dir/gmp-objdir || true
(
cd $root_dir/gmp-objdir
$root_dir/gcc-source/gmp/configure --disable-shared --with-pic --prefix=$gmp_prefix
make -j8
make install DESTDIR=$root_dir
)
}
build_sixgill() {(
cd $root_dir/sixgill
export CC=$gcc_bindir/gcc
export CXX=$gcc_bindir/g++
export PATH="$gcc_bindir:$PATH"
export LD_LIBRARY_PATH="${gcc_bindir%/bin}/lib64"
export TARGET_CC=$CC
export CPPFLAGS=-I$gmp_dir/include
export EXTRA_LDFLAGS=-L$gmp_dir/lib
export HOST_CFLAGS=$CPPFLAGS
./release.sh --build-and-package --with-gmp=$gmp_dir
tarball=$(ls -td *-sixgill | head -1)/sixgill.tar.xz
cp $tarball $root_dir/sixgill.tar.xz
)}
prepare_sixgill
build_gmp
build_sixgill
# Put a tarball in the artifacts dir
mkdir -p $UPLOAD_DIR
cp $MOZ_FETCHES_DIR/sixgill.tar.* $UPLOAD_DIR
|