zcashd/zcutil/build.sh

91 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
export LC_ALL=C
set -eu
set +x
cmd_pref() {
if command -v "$2" >/dev/null; then
eval "$1=$2"
else
eval "$1=$3"
fi
}
# If a g-prefixed version of the command exists, use it preferentially.
gprefix() {
cmd_pref "$1" "g$2" "$2"
}
gprefix READLINK readlink
cd "$(dirname "$("$READLINK" -f "$0")")/.."
# Allow user overrides to $MAKE. Typical usage for users who need it:
# MAKE=gmake ./zcutil/build.sh -j$(nproc)
if [ -z "${MAKE-}" ]; then
MAKE="make"
fi
# Allow overrides to $BUILD and $HOST for porters. Most users will not need it.
# BUILD=i686-pc-linux-gnu ./zcutil/build.sh
if [ -z "${BUILD-}" ]; then
BUILD="$(./depends/config.guess)"
fi
if [ -z "${HOST-}" ]; then
HOST="$BUILD"
fi
# Allow users to set arbitrary compile flags. Most users will not need this.
if [ -z "${CONFIGURE_FLAGS-}" ]; then
CONFIGURE_FLAGS=""
fi
if [ "$*" = '--help' ]
then
cat <<EOF
Usage:
$0 --help
Show this help message and exit.
$0 [ MAKEARGS... ]
Build Zcash and most of its transitive dependencies from
source. MAKEARGS are applied to both dependencies and Zcash itself.
Pass flags to ./configure using the CONFIGURE_FLAGS environment variable.
For example, to enable coverage instrumentation (thus enabling "make cov"
to work), call:
CONFIGURE_FLAGS="--enable-lcov --disable-hardening" ./zcutil/build.sh
For verbose output, use:
./zcutil/build.sh V=1
EOF
exit 0
fi
set -x
eval "$MAKE" --version
as --version
case "$CONFIGURE_FLAGS" in
(*"--enable-debug"*)
DEBUG=1
;;
(*)
DEBUG=
;;esac
HOST="$HOST" BUILD="$BUILD" "$MAKE" "$@" -C ./depends/ DEBUG="$DEBUG"
if [ "${BUILD_STAGE:-all}" = "depends" ]
then
exit 0
fi
./zcutil/clean.sh
./autogen.sh
CONFIG_SITE="$PWD/depends/$HOST/share/config.site" ./configure $CONFIGURE_FLAGS
"$MAKE" "$@"