#!/bin/bash # Param1: The prefix to mingw staging # Param2: Path to java comparison tool # Param3: Number of make jobs. Defaults to 1. # Exit immediately if anything fails: set -e set -o xtrace MINGWPREFIX=$1 JAVA_COMPARISON_TOOL=$2 RUN_EXPENSIVE_TESTS=$3 JOBS=${4-1} OUT_DIR=${5-} if [ $# -lt 2 ]; then echo "Usage: $0 [mingw-prefix] [java-comparison-tool] <make jobs> <save output dir>" exit 1 fi DISTDIR=@PACKAGE@-@VERSION@ # Cross-compile for windows first (breaking the mingw/windows build is most common) cd @abs_top_srcdir@ make distdir mkdir -p win32-build rsync -av $DISTDIR/ win32-build/ rm -r $DISTDIR cd win32-build if [ $RUN_EXPENSIVE_TESTS = 1 ]; then ./configure --disable-silent-rules --disable-ccache --prefix=$MINGWPREFIX --host=i586-mingw32msvc --with-qt-bindir=$MINGWPREFIX/host/bin --with-qt-plugindir=$MINGWPREFIX/plugins --with-qt-incdir=$MINGWPREFIX/include --with-boost=$MINGWPREFIX --with-protoc-bindir=$MINGWPREFIX/host/bin CPPFLAGS=-I$MINGWPREFIX/include LDFLAGS=-L$MINGWPREFIX/lib --with-comparison-tool="$JAVA_COMPARISON_TOOL" else ./configure --disable-silent-rules --disable-ccache --prefix=$MINGWPREFIX --host=i586-mingw32msvc --with-qt-bindir=$MINGWPREFIX/host/bin --with-qt-plugindir=$MINGWPREFIX/plugins --with-qt-incdir=$MINGWPREFIX/include --with-boost=$MINGWPREFIX --with-protoc-bindir=$MINGWPREFIX/host/bin CPPFLAGS=-I$MINGWPREFIX/include LDFLAGS=-L$MINGWPREFIX/lib fi make -j$JOBS # And compile for Linux: cd @abs_top_srcdir@ make distdir mkdir -p linux-build rsync -av $DISTDIR/ linux-build/ rm -r $DISTDIR cd linux-build if [ $RUN_EXPENSIVE_TESTS = 1 ]; then ./configure --disable-silent-rules --disable-ccache --with-comparison-tool="$JAVA_COMPARISON_TOOL" --enable-comparison-tool-reorg-tests else ./configure --disable-silent-rules --disable-ccache --with-comparison-tool="$JAVA_COMPARISON_TOOL" fi make -j$JOBS # link interesting binaries to parent out/ directory, if it exists. Do this before # running unit tests (we want bad binaries to be easy to find) if [ -d "$OUT_DIR" -a -w "$OUT_DIR" ]; then set +e # Windows: cp @abs_top_srcdir@/win32-build/src/bitcoind.exe $OUT_DIR/bitcoind.exe cp @abs_top_srcdir@/win32-build/src/test/test_bitcoin.exe $OUT_DIR/test_bitcoin.exe cp @abs_top_srcdir@/win32-build/src/qt/bitcoind-qt.exe $OUT_DIR/bitcoin-qt.exe # Linux: cp @abs_top_srcdir@/linux-build/src/bitcoind $OUT_DIR/bitcoind cp @abs_top_srcdir@/linux-build/src/test/test_bitcoin $OUT_DIR/test_bitcoin cp @abs_top_srcdir@/linux-build/src/qt/bitcoind-qt $OUT_DIR/bitcoin-qt set -e fi # Run unit tests and blockchain-tester on Linux: cd @abs_top_srcdir@/linux-build make check # Run RPC integration test on Linux: @abs_top_srcdir@/qa/rpc-tests/wallet.sh @abs_top_srcdir@/linux-build/src if [ $RUN_EXPENSIVE_TESTS = 1 ]; then # Run unit tests and blockchain-tester on Windows: cd @abs_top_srcdir@/win32-build make check fi # Clean up builds (pull-tester machine doesn't have infinite disk space) cd @abs_top_srcdir@/linux-build make clean cd @abs_top_srcdir@/win32-build make clean # TODO: Fix code coverage builds on pull-tester machine # # Test code coverage # cd @abs_top_srcdir@ # make distdir # mv $DISTDIR linux-coverage-build # cd linux-coverage-build # ./configure --enable-lcov --disable-silent-rules --disable-ccache --with-comparison-tool="$JAVA_COMPARISON_TOOL" # make -j$JOBS # make cov