mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-11 13:48:23 +02:00
We're going to copy an x86_64-unknown-linux-gnu ld into the clang build, which clang will then use in preference to things on PATH. We therefore need to ensure that this ld is the same ld as would be used for other builds, such as PGO. This change is the most expedient way to do that; future work will make the gcc job(s) depend on linux64-binutils directly. Differential Revision: https://phabricator.services.mozilla.com/D22882 --HG-- extra : moz-landing-system : lando
91 lines
2.4 KiB
Bash
Executable file
91 lines
2.4 KiB
Bash
Executable file
#!/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.
|
|
|
|
WORKSPACE=$HOME/workspace
|
|
HOME_DIR=$WORKSPACE/build
|
|
UPLOAD_DIR=$HOME/artifacts
|
|
|
|
root_dir=$HOME_DIR
|
|
build_dir=$HOME_DIR/src/build
|
|
data_dir=$HOME_DIR/src/build/unix/build-gcc
|
|
|
|
# Download and unpack upstream toolchain artifacts (ie, the gcc binary).
|
|
. $(dirname $0)/tooltool-download.sh
|
|
|
|
gcc_version=6.4.0
|
|
gcc_ext=xz
|
|
binutils_version=2.28.1
|
|
binutils_ext=xz
|
|
sixgill_rev=bc0ef9258470
|
|
sixgill_repo=https://hg.mozilla.org/users/sfink_mozilla.com/sixgill
|
|
|
|
. $data_dir/build-gcc.sh
|
|
|
|
pushd $root_dir/gcc-$gcc_version
|
|
ln -sf ../binutils-2.31.1 binutils
|
|
ln -sf ../gmp-5.1.3 gmp
|
|
ln -sf ../isl-0.15 isl
|
|
ln -sf ../mpc-0.8.2 mpc
|
|
ln -sf ../mpfr-3.1.5 mpfr
|
|
popd
|
|
|
|
export TMPDIR=${TMPDIR:-/tmp/}
|
|
export gcc_bindir=$root_dir/src/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-$gcc_version.
|
|
|
|
mkdir $root_dir/gmp-objdir || true
|
|
(
|
|
cd $root_dir/gmp-objdir
|
|
$root_dir/gcc-$gcc_version/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 $HOME_DIR/sixgill.tar.* $UPLOAD_DIR
|