nim-rocksdb/scripts/build_static_deps.sh
bhartnett 92d25ea795
Improve build script (#85)
* Pass in NPROC in -j make parameter
2025-02-10 11:12:38 +08:00

88 lines
2.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Nim-RocksDB
# Copyright 2024-2025 Status Research & Development GmbH
# Licensed under either of
#
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
# * GPL license, version 2.0, ([LICENSE-GPLv2](LICENSE-GPLv2) or https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
#
# at your option. This file may not be copied, modified, or distributed except according to those terms.
set -e
cd "$(dirname "${BASH_SOURCE[0]}")"/..
REPO_DIR="${PWD}"
ROCKSDB_LIB_DIR="${REPO_DIR}/vendor/rocksdb"
BUILD_DEST="${REPO_DIR}/build"
: "${MAKE:=make}"
[[ -z "$NPROC" ]] && NPROC=2 # number of CPU cores available
git submodule update --init
export DISABLE_WARNING_AS_ERROR=1
export ROCKSDB_DISABLE_SNAPPY=1
export ROCKSDB_DISABLE_ZLIB=1
export ROCKSDB_DISABLE_BZIP=1
export PORTABLE=1
export DEBUG_LEVEL=0
#export USE_LTO=1
if [ -f "${BUILD_DEST}/librocksdb.a" ] && \
[ -f "${BUILD_DEST}/liblz4.a" ] && \
[ -f "${BUILD_DEST}/libzstd.a" ] && \
[ -f "${BUILD_DEST}/version.txt" ]; then
ROCKSDB_VERSION_BEFORE=$(cat "${BUILD_DEST}/version.txt")
cd ${REPO_DIR}/vendor/rocksdb
ROCKSDB_VERSION_AFTER=$(${REPO_DIR}/vendor/rocksdb/build_tools/version.sh full)
cd ${REPO_DIR}
if [[ ${ROCKSDB_VERSION_BEFORE} == ${ROCKSDB_VERSION_AFTER} ]]; then
echo "RocksDb static libraries already built. Skipping build."
exit 0
fi
fi
if ${MAKE} -C "${ROCKSDB_LIB_DIR}" -q unity.a; then
echo "RocksDb static libraries already built. Skipping build."
# Copy the built libraries in case the build directory has been removed
mkdir -p "${BUILD_DEST}"
cp "${ROCKSDB_LIB_DIR}/liblz4.a" "${BUILD_DEST}/"
cp "${ROCKSDB_LIB_DIR}/libzstd.a" "${BUILD_DEST}/"
cp "${ROCKSDB_LIB_DIR}/unity.a" "${BUILD_DEST}/librocksdb.a"
cd ${REPO_DIR}/vendor/rocksdb
${REPO_DIR}/vendor/rocksdb/build_tools/version.sh full > "${BUILD_DEST}/version.txt" 2>&1
cd ${REPO_DIR}
exit 0
else
${REPO_DIR}/scripts/clean_build_artifacts.sh
echo "Building RocksDb static libraries."
fi
${MAKE} -j${NPROC} -C "${ROCKSDB_LIB_DIR}" liblz4.a libzstd.a --no-print-directory > /dev/null 2>&1
export EXTRA_CFLAGS="-fpermissive -Wno-error -w -I${ROCKSDB_LIB_DIR}/lz4-1.9.4/lib -I${ROCKSDB_LIB_DIR}/zstd-1.5.5/lib -DLZ4 -DZSTD"
export EXTRA_CXXFLAGS="-fpermissive -Wno-error -w -I${ROCKSDB_LIB_DIR}/lz4-1.9.4/lib -I${ROCKSDB_LIB_DIR}/zstd-1.5.5/lib -DLZ4 -DZSTD"
${MAKE} -j${NPROC} -C "${ROCKSDB_LIB_DIR}" unity.a --no-print-directory > /dev/null 2>&1
#cat "${REPO_DIR}/vendor/rocksdb/make_config.mk"
mkdir -p "${BUILD_DEST}"
cp "${ROCKSDB_LIB_DIR}/liblz4.a" "${BUILD_DEST}/"
cp "${ROCKSDB_LIB_DIR}/libzstd.a" "${BUILD_DEST}/"
cp "${ROCKSDB_LIB_DIR}/unity.a" "${BUILD_DEST}/librocksdb.a"
cd ${REPO_DIR}/vendor/rocksdb
${REPO_DIR}/vendor/rocksdb/build_tools/version.sh full > "${BUILD_DEST}/version.txt" 2>&1
cd ${REPO_DIR}