mirror of
https://github.com/status-im/nim-rocksdb.git
synced 2025-02-22 20:08:30 +00:00
88 lines
2.8 KiB
Bash
Executable File
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}
|