From af30cfdd6ef9f2b44a1ab9aa8b410ca3a98e298e Mon Sep 17 00:00:00 2001 From: Ilya Kitaev Date: Thu, 22 Sep 2016 21:39:43 +0300 Subject: [PATCH 1/2] build: added "libunwind_off" config option so it can be built on other distros than Ubuntu --- build.sh | 15 +++++++++++++-- get_libwallet_api.sh | 27 ++++++++++++++++++++------- monero-core.pro | 10 ++++++++-- 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/build.sh b/build.sh index 347f5aaa..a8c2a2c3 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,6 @@ #!/bin/bash +source ./utils.sh pushd $(pwd) ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" MONERO_DIR=monero @@ -9,9 +10,19 @@ if [ ! -d $MONERO_DIR ]; then fi if [ ! -d build ]; then mkdir build; fi -cd build -qmake ../monero-core.pro "CONFIG+=release" +CONFIG="CONFIG+=release" + +platform=$(get_platform) +if [ "$platform" == "linux" ]; then + distro=$(lsb_release -is) + if [ "$distro" == "Ubuntu" ]; then + CONFIG="$CONFIG libunwind_off" + fi +fi + +cd build +qmake ../monero-core.pro "$CONFIG" make make deploy popd diff --git a/get_libwallet_api.sh b/get_libwallet_api.sh index b8c8d479..7ef6f0ff 100755 --- a/get_libwallet_api.sh +++ b/get_libwallet_api.sh @@ -8,6 +8,8 @@ CPU_CORE_COUNT=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.nc pushd $(pwd) ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $ROOT_DIR/utils.sh + INSTALL_DIR=$ROOT_DIR/wallet MONERO_DIR=$ROOT_DIR/monero @@ -29,19 +31,29 @@ rm -fr $MONERO_DIR/include mkdir -p $MONERO_DIR/build/release pushd $MONERO_DIR/build/release -if [ "$(uname)" == "Darwin" ]; then +# reusing function from "utils.sh" +platform=$(get_platform) + +if [ "$platform" == "darwin" ]; then # Do something under Mac OS X platform + echo "Configuring build for MacOS.." cmake -D CMAKE_BUILD_TYPE=Release -D STATIC=ON -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../.. -elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then +elif [ "$platform" == "linux" ]; then # Do something under GNU/Linux platform - PLATFORM="Linux" + echo "Configuring build for Linux.." cmake -D CMAKE_BUILD_TYPE=Release -D STATIC=ON -D BUILD_GUI_DEPS=ON -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../.. -elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then +elif [ "$platform" == "mingw64" ]; then # Do something under Windows NT platform + echo "Configuring build for MINGW64.." cmake -D CMAKE_BUILD_TYPE=Release -D STATIC=ON -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" -G "MSYS Makefiles" ../.. -elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then +elif [ "$platform" == "mingw32" ]; then # Do something under Windows NT platform + echo "Configuring build for MINGW32.." cmake -D CMAKE_BUILD_TYPE=Release -D STATIC=ON -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" -G "MSYS Makefiles" ../.. +else + echo "Unsupported platform: $platform" + popd + exit 1 fi @@ -54,10 +66,11 @@ popd # since filename conflict (random.c.obj) # for Linux, we use libunbound shipped with the system, so we don't need to build it -if [ "$PLATFORM" != "Linux" ]; then +if [ "$platform" != "linux" ]; then echo "Building libunbound..." pushd $MONERO_DIR/build/release/external/unbound - make -j$CPU_CORE_COUNT + # no need to make, it was already built as dependency for libwallet + # make -j$CPU_CORE_COUNT make install -j$CPU_CORE_COUNT popd fi diff --git a/monero-core.pro b/monero-core.pro index c90960e4..4c1a5158 100644 --- a/monero-core.pro +++ b/monero-core.pro @@ -86,9 +86,15 @@ linux { -lssl \ -lcrypto \ -Wl,-Bdynamic \ - # currently monero has an issue with "static" build and linunwind-dev - # -lunwind \ -ldl + # currently monero has an issue with "static" build and linunwind-dev, + # so we link libunwind-dev only for non-Ubuntu distros + CONFIG(libunwind_off) { + message(Building without libunwind) + } else { + message(Building with libunwind) + LIBS += -Wl,-Bdynamic -lunwind + } } macx { From 3abee20196f1eae58268b5eebb85d952ebc78200 Mon Sep 17 00:00:00 2001 From: Ilya Kitaev Date: Fri, 23 Sep 2016 00:08:08 +0300 Subject: [PATCH 2/2] build: get_platform function reused --- utils.sh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 utils.sh diff --git a/utils.sh b/utils.sh new file mode 100755 index 00000000..d6132941 --- /dev/null +++ b/utils.sh @@ -0,0 +1,29 @@ +#!/bin/bash + + +function get_platform { + local platform="unknown" + if [ "$(uname)" == "Darwin" ]; then + platform="darwin" + elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then + platform="linux" + elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then + platform="mingw64" + elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then + platform="mingw32" + fi + echo "$platform" + +} + + + + + + + + + + + +