diff --git a/debug-build.sh b/debug-build.sh index a18818b20..d3ba81320 100755 --- a/debug-build.sh +++ b/debug-build.sh @@ -9,7 +9,8 @@ echo "Compiling a debug build with --enable-debug..." # run correct build script for detected OS if [[ "$OSTYPE" == "linux-gnu"* ]]; then - CONFIGURE_FLAGS=--enable-debug ./util/build.sh --disable-tests $@ + # TODO: we only have debug builds on linux for now + CONFIGURE_FLAGS=--enable-debug ./util/debug-build.sh --disable-tests $@ elif [[ "$OSTYPE" == "darwin"* ]]; then # code from ./util/build.sh needs to be ported to support --disable-tests #./util/build-mac.sh --disable-tests $@ diff --git a/util/build.sh b/util/build.sh index fcb3e2ef7..cbcd9a416 100755 --- a/util/build.sh +++ b/util/build.sh @@ -118,8 +118,7 @@ HOST="$HOST" BUILD="$BUILD" "$MAKE" "$@" -C ./depends/ V=1 ./autogen.sh -#TODO: only use rdynamic for a debug build -CONFIG_SITE="$PWD/depends/$HOST/share/config.site" ./configure "$HARDENING_ARG" "$LCOV_ARG" "$TEST_ARG" "$MINING_ARG" $CONFIGURE_FLAGS CXXFLAGS='-g -rdynamic' +CONFIG_SITE="$PWD/depends/$HOST/share/config.site" ./configure "$HARDENING_ARG" "$LCOV_ARG" "$TEST_ARG" "$MINING_ARG" $CONFIGURE_FLAGS CXXFLAGS='-g' # Build CryptoConditions stuff WD=$PWD diff --git a/util/debug-build.sh b/util/debug-build.sh new file mode 100755 index 000000000..a47681506 --- /dev/null +++ b/util/debug-build.sh @@ -0,0 +1,143 @@ +#!/usr/bin/env bash +# Copyright (c) 2016-2024 The Hush developers +# Distributed under the GPLv3 software license, see the accompanying +# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html + +set -eu -o pipefail + +# Check if cmake, a new dependency for randomx support, is installed on system and exits if it is not +if ! [ -x "$(command -v cmake)" ]; then + echo 'Error: cmake is not installed. Install cmake and try again.' >&2 + exit 1 +fi + +if ! [ -x "$(command -v autoreconf)" ]; then + echo 'Error: autoconf is not installed. Install autoconf and try again.' >&2 + echo 'On Debian-like systems: apt install autoconf' >&2 + exit 1 +fi + +function cmd_pref() { + if type -p "$2" > /dev/null; then + eval "$1=$2" + else + eval "$1=$3" + fi +} +cat <<'EOF' + .~~~~~~~~~~~~~~~~. +{{ Building Hush!! }} + `~~~~~~~~~~~~~~~~` + \ ^__^ + \ (@@)\_______ + (__)\ HUSH )\/\ $ + z zz ||----w | z | +zz zz z || z ||xxx z z|z zz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +EOF + +# If a g-prefixed version of the command exists, use it preferentially. +function 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 ./util/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 ./util/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 [ "x$*" = 'x--help' ] +then + cat ./util/dragon.txt + cat <