Skip to content

Commit

Permalink
Install dependencies in a custom prefix and remove sudo in build.
Browse files Browse the repository at this point in the history
Signed-off-by: Sam Stuewe <[email protected]>
  • Loading branch information
madars authored and HalosGhost committed Mar 1, 2024
1 parent d42bf3d commit 9910693
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 27 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ doxygen_generated
# Default build folder
build/

# Default dependency installation folder
prefix/

# 3rd party generated files
3rdparty/secp256k1_genctx
3rdparty/src/ecmult_static_context.h
Expand Down
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")

include_directories(3rdparty 3rdparty/secp256k1/include /usr/lib /usr/local/lib /usr/local/include /opt/homebrew/include)

if(DEFINED CMAKE_PREFIX_PATH)
include_directories(SYSTEM "${CMAKE_PREFIX_PATH}/include")
endif()

if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_compile_options(-fprofile-arcs -ftest-coverage)
endif()
Expand Down
7 changes: 5 additions & 2 deletions scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,24 @@ set -e

echo "Building..."

# see PREFIX in ./scripts/configure.sh
PREFIX="$(cd "$(dirname "$0")"/.. && pwd)/prefix"

if [ -z ${BUILD_DIR+x} ]; then
export BUILD_DIR=build
fi

mkdir -p $BUILD_DIR
cd $BUILD_DIR

CMAKE_FLAGS=""
CMAKE_FLAGS=-DCMAKE_PREFIX_PATH="${PREFIX}"
CPUS=1
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
CPUS=$(grep -c ^processor /proc/cpuinfo)
elif [[ "$OSTYPE" == "darwin"* ]]; then
CPUS=$(sysctl -n hw.ncpu)
XCODE_CMDLINE_DIR=$(xcode-select -p)
CMAKE_FLAGS+="-DCMAKE_C_COMPILER=${XCODE_CMDLINE_DIR}/usr/bin/clang -DCMAKE_CXX_COMPILER=${XCODE_CMDLINE_DIR}/usr/bin/clang++ -DCMAKE_CXX_FLAGS=-isystem\ /usr/local/include -DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
CMAKE_FLAGS+=" -DCMAKE_C_COMPILER=${XCODE_CMDLINE_DIR}/usr/bin/clang -DCMAKE_CXX_COMPILER=${XCODE_CMDLINE_DIR}/usr/bin/clang++ -DCMAKE_CXX_FLAGS=-isystem\ /usr/local/include -DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
fi

CMAKE_BUILD_TYPE="Debug"
Expand Down
52 changes: 27 additions & 25 deletions scripts/configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@ end="\033[0m"

set -e

SUDO=''
if (( $EUID != 0 )); then
echo -e "non-root user, sudo required"
SUDO='sudo'
fi
# install in a custom prefix rather than /usr/local. by default, this
# chooses "prefix" directory alongside "scripts" where configure.sh
# resides.

PREFIX="$(cd "$(dirname "$0")"/.. && pwd)/prefix"
echo "Will install local dependencies in the following prefix: $PREFIX"
mkdir -p $PREFIX $PREFIX/lib $PREFIX/include

CMAKE_BUILD_TYPE="Debug"
if [[ "$BUILD_RELEASE" == "1" ]]; then
Expand All @@ -36,9 +38,9 @@ tar xzvf ${LEVELDB_VERSION}.tar.gz
rm -rf ${LEVELDB_VERSION}.tar.gz
mv leveldb-${LEVELDB_VERSION} "leveldb-${LEVELDB_VERSION}-${CMAKE_BUILD_TYPE}"
cd "leveldb-${LEVELDB_VERSION}-${CMAKE_BUILD_TYPE}"
cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DLEVELDB_BUILD_TESTS=0 -DLEVELDB_BUILD_BENCHMARKS=0 -DBUILD_SHARED_LIBS=0 -DHAVE_SNAPPY=0 .
cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DLEVELDB_BUILD_TESTS=0 -DLEVELDB_BUILD_BENCHMARKS=0 -DBUILD_SHARED_LIBS=0 -DHAVE_SNAPPY=0 .
make -j$CPUS
$SUDO make install
make install
cd ..

NURAFT_VERSION="1.3.0"
Expand All @@ -60,12 +62,12 @@ if [[ "$BUILD_RELEASE" == "1" ]]; then
fi
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DDISABLE_SSL=1 ..
cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DDISABLE_SSL=1 ..
make -j$CPUS static_lib

echo -e "${green}Copying nuraft to /usr/local"
$SUDO cp libnuraft.a /usr/local/lib
$SUDO cp -r ../include/libnuraft /usr/local/include
echo -e "${green}Copying nuraft to $PREFIX/lib and $PREFIX/include"
cp libnuraft.a $PREFIX/lib
cp -r ../include/libnuraft $PREFIX/include

cd ../..

Expand All @@ -75,7 +77,7 @@ tar zxf lua-5.4.3.tar.gz
rm -rf lua-5.4.3.tar.gz
cd lua-5.4.3
make -j$CPUS
$SUDO make install
make INSTALL_TOP=$PREFIX install
cd ..

if [[ "$OSTYPE" != "darwin"* ]]; then
Expand All @@ -87,9 +89,9 @@ if [[ "$OSTYPE" != "darwin"* ]]; then
rm -rf curl-${CURL_VERSION}.tar.gz
mkdir -p curl-${CURL_VERSION}/build
cd curl-${CURL_VERSION}/build
../configure --disable-shared --without-ssl --without-libpsl --without-libidn2 --without-brotli --without-zstd --without-zlib
../configure --prefix="${PREFIX}" --disable-shared --without-ssl --without-libpsl --without-libidn2 --without-brotli --without-zstd --without-zlib
make -j$CPUS
$SUDO make install
make install
cd ../..
fi

Expand All @@ -100,9 +102,9 @@ tar xzvf ${JSONCPP_VERSION}.tar.gz
rm -rf ${JSONCPP_VERSION}.tar.gz
mkdir -p jsoncpp-${JSONCPP_VERSION}/build
cd jsoncpp-${JSONCPP_VERSION}/build
cmake .. -DBUILD_SHARED_LIBS=NO -DBUILD_STATIC_LIBS=YES -DJSONCPP_WITH_TESTS=OFF -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF
cmake .. -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DBUILD_SHARED_LIBS=NO -DBUILD_STATIC_LIBS=YES -DJSONCPP_WITH_TESTS=OFF -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF
make -j$CPUS
$SUDO make install
make install
cd ../..

# NOTE: evmc v10.0.0 requires evmone v0.9.0
Expand All @@ -115,9 +117,9 @@ rm v${EVMC_VER}.zip
cd evmc-${EVMC_VER}
mkdir build
cd build
cmake ..
cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" ..
make -j$CPUS
$SUDO make install
make install
cd ../..

# NOTE: updating evmone to v0.10.0 requires c++20
Expand All @@ -132,13 +134,13 @@ mv ../evmc-${EVMC_VER} ./evmc
mkdir ./evmc/.git
if [[ "$OSTYPE" == "darwin"* ]]; then
# Mac Silicon: clang 'ar' does not allow empty member list, fails w/ -DBUILD_SHARED_LIBS=OFF
cmake -S . -B build
cmake -S . -B build -DCMAKE_INSTALL_PREFIX="${PREFIX}"
else
cmake -S . -B build -DBUILD_SHARED_LIBS=OFF
cmake -S . -B build -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${PREFIX}"
fi
cmake --build build --parallel
cd build
$SUDO make install
make install
cd ../..
rm -rf evmone-${EVMONE_VER}

Expand All @@ -151,8 +153,8 @@ mkdir build
cd build
cmake -DETHASH_BUILD_ETHASH=OFF -DETHASH_BUILD_TESTS=OFF ..
cmake --build . --parallel
$SUDO cp ./lib/keccak/libkeccak.a /usr/local/lib
$SUDO cp -r ../include/ethash /usr/local/include
cp ./lib/keccak/libkeccak.a $PREFIX/lib
cp -r ../include/ethash $PREFIX/include
cd ../..

wget https://gnu.askapache.com/libmicrohttpd/libmicrohttpd-0.9.75.tar.gz
Expand All @@ -162,8 +164,8 @@ rm libmicrohttpd-0.9.75.tar.gz
cd libmicrohttpd-0.9.75
mkdir build
cd build
../configure --disable-curl --disable-examples --disable-doc --disable-shared --disable-https
../configure --prefix="${PREFIX}" --disable-curl --disable-examples --disable-doc --disable-shared --disable-https
make -j $CPUS
$SUDO make install
make install
cd ../../
rm -rf libmicrohttpd-0.9.75

0 comments on commit 9910693

Please sign in to comment.