mirror of
https://github.com/facebook/rocksdb.git
synced 2026-07-07 14:47:40 +08:00
8c0790bdf8
Summary: Refresh the fbcode platform010 toolchain and library pins to current third-party2 versions, and remove the now-unused Intel TBB dependency. Toolchain / deps: - Fix update_dependencies.sh: the gcc and binutils trees moved from centos8-native to centos9-native, so the old paths resolved to nothing and a re-run emitted empty GCC_BASE/BINUTILS_BASE. Point them at centos9-native. - Bump clang 15 -> 21; binutils 2.37 -> 2.43; libunwind 1.4 -> 1.8; valgrind 3.19 -> 3.22; plus hash-only refreshes for the LATEST-tracked libs. Regenerate dependencies_platform010.sh. - Keep GCC pinned at 11.x. The only newer GCC in third-party2 (13.x) is built for glibc >= 2.35 (its libgcc_s needs _dl_find_object@GLIBC_2.35), but platform010 ships glibc 2.34, so GCC 13 will not link/run here. - zlib stays 1.2.8 (the only version with an x86_64 platform010 build). - Document why GCC/libgcc/glibc/zlib remain pinned in update_dependencies.sh. Remove TBB (no longer used) from the build system: the get_lib_base entry, both fbcode_config*.sh, build_detect_platform detection, the CMake WITH_TBB option / find_dependency, and cmake/modules/FindTBB.cmake. Dockerfiles and the HISTORY.md changelog are left untouched. (TBB was used by the old clock cache, long ago removed.) Although this change was originally motivated by upgrading gcc for its libasan not to hit process lifetime thread limits, upgrading gcc proved impractical under platform010. Bonus: fix USBAN+gcc build by making GetParam() valid by the time it is called in several test class constructors. Pull Request resolved: https://github.com/facebook/rocksdb/pull/14882 Test Plan: a variety of local builds (gcc, clang; various sanitizers) using fbcode tooling No production code changes Reviewed By: xingbowang Differential Revision: D109631787 Pulled By: pdillinger fbshipit-source-id: 9c466c59b039c2a67ee0318c0ccbac02e19f537b
844 lines
30 KiB
Bash
Executable File
844 lines
30 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Detects OS we're compiling on and outputs a file specified by the first
|
|
# argument, which in turn gets read while processing Makefile.
|
|
#
|
|
# The output will set the following variables:
|
|
# CC C Compiler path
|
|
# CXX C++ Compiler path
|
|
# PLATFORM_LDFLAGS Linker flags
|
|
# JAVA_LDFLAGS Linker flags for RocksDBJava
|
|
# JAVA_STATIC_LDFLAGS Linker flags for RocksDBJava static build
|
|
# JAVAC_ARGS Arguments for javac
|
|
# PLATFORM_SHARED_EXT Extension for shared libraries
|
|
# PLATFORM_SHARED_LDFLAGS Flags for building shared library
|
|
# PLATFORM_SHARED_CFLAGS Flags for compiling objects for shared library
|
|
# PLATFORM_CCFLAGS C compiler flags
|
|
# PLATFORM_CXXFLAGS C++ compiler flags. Will contain:
|
|
# PLATFORM_SHARED_VERSIONED Set to 'true' if platform supports versioned
|
|
# shared libraries, empty otherwise.
|
|
# FIND Command for the find utility
|
|
# WATCH Command for the watch utility
|
|
#
|
|
# The PLATFORM_CCFLAGS and PLATFORM_CXXFLAGS might include the following:
|
|
#
|
|
# -DROCKSDB_PLATFORM_POSIX if posix-platform based
|
|
# -DSNAPPY if the Snappy library is present
|
|
# -DLZ4 if the LZ4 library is present
|
|
# -DZSTD if the ZSTD library is present
|
|
# -DNUMA if the NUMA library is present
|
|
# -DMEMKIND if the memkind library is present
|
|
#
|
|
# Using gflags in rocksdb:
|
|
# Our project depends on gflags, which requires users to take some extra steps
|
|
# before they can compile the whole repository:
|
|
# 1. Install gflags. You may download it from here:
|
|
# https://gflags.github.io/gflags/ (Mac users can `brew install gflags`)
|
|
# 2. Once installed, add the include path for gflags to your CPATH env var and
|
|
# the lib path to LIBRARY_PATH. If installed with default settings, the lib
|
|
# will be /usr/local/lib and the include path will be /usr/local/include
|
|
|
|
OUTPUT=$1
|
|
if test -z "$OUTPUT"; then
|
|
echo "usage: $0 <output-filename>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# we depend on C++20, but should be compatible with newer standards
|
|
if [ "$ROCKSDB_CXX_STANDARD" ]; then
|
|
PLATFORM_CXXFLAGS="-std=$ROCKSDB_CXX_STANDARD"
|
|
else
|
|
PLATFORM_CXXFLAGS="-std=c++20"
|
|
fi
|
|
|
|
# we currently depend on POSIX platform
|
|
COMMON_FLAGS="-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX"
|
|
|
|
# Default to fbcode gcc on Meta internal machines
|
|
IS_META_HOST="$(hostname | grep -E '(facebook|meta).com|fbinfra.net')"
|
|
if [ -z "$ROCKSDB_NO_FBCODE" -a "$IS_META_HOST" ]; then
|
|
if [ -d /mnt/gvfs/third-party ]; then
|
|
echo "NOTE: Using fbcode build" >&2
|
|
FBCODE_BUILD="true"
|
|
# If we're compiling with TSAN or shared lib, we need pic build
|
|
PIC_BUILD=$COMPILE_WITH_TSAN
|
|
if [ "$LIB_MODE" == "shared" ]; then
|
|
PIC_BUILD=1
|
|
fi
|
|
source "$PWD/build_tools/fbcode_config_platform010.sh"
|
|
else
|
|
echo "************************************************************************" >&2
|
|
echo "WARNING: -d /mnt/gvfs/third-party failed; no fbcode build" >&2
|
|
echo "************************************************************************" >&2
|
|
fi
|
|
fi
|
|
|
|
# Delete existing output, if it exists
|
|
rm -f "$OUTPUT"
|
|
touch "$OUTPUT"
|
|
|
|
if test -z "$CC"; then
|
|
if [ "$USE_CLANG" -a -x "$(command -v clang)" ]; then
|
|
CC=clang
|
|
elif [ -x "$(command -v cc)" ]; then
|
|
CC=cc
|
|
elif [ -x "$(command -v clang)" ]; then
|
|
CC=clang
|
|
else
|
|
CC=cc
|
|
fi
|
|
fi
|
|
|
|
if test -z "$CXX"; then
|
|
if [ "$USE_CLANG" -a -x "$(command -v clang++)" ]; then
|
|
CXX=clang++
|
|
elif [ -x "$(command -v g++)" ]; then
|
|
CXX=g++
|
|
elif [ -x "$(command -v clang++)" ]; then
|
|
CXX=clang++
|
|
else
|
|
CXX=g++
|
|
fi
|
|
fi
|
|
|
|
if test -z "$AR"; then
|
|
if [ "$USE_CLANG" -a -x "$(command -v llvm-ar)" ]; then
|
|
AR=llvm-ar
|
|
elif [ -x "$(command -v gcc-ar)" ]; then
|
|
AR=gcc-ar
|
|
elif [ -x "$(command -v llvm-ar)" ]; then
|
|
AR=llvm-ar
|
|
else
|
|
AR=ar
|
|
fi
|
|
fi
|
|
|
|
# Detect OS
|
|
if test -z "$TARGET_OS"; then
|
|
TARGET_OS=`uname -s`
|
|
fi
|
|
|
|
if test -z "$TARGET_ARCHITECTURE"; then
|
|
TARGET_ARCHITECTURE=`uname -m`
|
|
fi
|
|
|
|
if test -z "$CLANG_SCAN_BUILD"; then
|
|
CLANG_SCAN_BUILD=scan-build
|
|
fi
|
|
|
|
if test -z "$CLANG_ANALYZER"; then
|
|
CLANG_ANALYZER=$(command -v clang++ 2> /dev/null)
|
|
fi
|
|
|
|
if test -z "$FIND"; then
|
|
FIND=find
|
|
fi
|
|
|
|
if test -z "$WATCH"; then
|
|
WATCH=watch
|
|
fi
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS ${CFLAGS}"
|
|
CROSS_COMPILE=
|
|
PLATFORM_CCFLAGS=
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS"
|
|
PLATFORM_SHARED_EXT="so"
|
|
PLATFORM_SHARED_LDFLAGS="-Wl,--no-as-needed -shared -Wl,-soname -Wl,"
|
|
PLATFORM_SHARED_CFLAGS="-fPIC"
|
|
PLATFORM_SHARED_VERSIONED=true
|
|
|
|
# Prefer lld linker when available on Linux. lld is typically 5-10x faster
|
|
# than the default ld.bfd for large C++ projects. macOS uses ld64 (or
|
|
# ld-prime) which is already fast, so we skip lld detection there.
|
|
# Set ROCKSDB_NO_FAST_LINKER=1 to disable this auto-detection.
|
|
if [ -z "$ROCKSDB_NO_FAST_LINKER" ] && [ "$TARGET_OS" = "Linux" ]; then
|
|
if $CXX -fuse-ld=lld -L/usr/local/lib -x c++ - -o /dev/null 2>/dev/null <<EOF
|
|
int main() { return 0; }
|
|
EOF
|
|
then
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -fuse-ld=lld"
|
|
# Ensure lld can find libraries in /usr/local/lib (lld does not
|
|
# search there by default, unlike ld.bfd)
|
|
if [ -d /usr/local/lib ]; then
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -L/usr/local/lib"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# generic port files (working on all platform by #ifdef) go directly in /port
|
|
GENERIC_PORT_FILES=`cd "$ROCKSDB_ROOT"; find port -name '*.cc' | tr "\n" " "`
|
|
|
|
# On GCC, we pick libc's memcmp over GCC's memcmp via -fno-builtin-memcmp
|
|
case "$TARGET_OS" in
|
|
Darwin)
|
|
PLATFORM=OS_MACOSX
|
|
COMMON_FLAGS="$COMMON_FLAGS -DOS_MACOSX"
|
|
PLATFORM_SHARED_EXT=dylib
|
|
PLATFORM_SHARED_LDFLAGS="-dynamiclib -install_name "
|
|
# PORT_FILES=port/darwin/darwin_specific.cc
|
|
;;
|
|
IOS)
|
|
PLATFORM=IOS
|
|
COMMON_FLAGS="$COMMON_FLAGS -DOS_MACOSX -DIOS_CROSS_COMPILE "
|
|
PLATFORM_SHARED_EXT=dylib
|
|
PLATFORM_SHARED_LDFLAGS="-dynamiclib -install_name "
|
|
CROSS_COMPILE=true
|
|
PLATFORM_SHARED_VERSIONED=
|
|
;;
|
|
Linux)
|
|
PLATFORM=OS_LINUX
|
|
COMMON_FLAGS="$COMMON_FLAGS -DOS_LINUX"
|
|
if [ -z "$USE_CLANG" ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp"
|
|
else
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic"
|
|
fi
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt -ldl"
|
|
# PORT_FILES=port/linux/linux_specific.cc
|
|
;;
|
|
SunOS)
|
|
PLATFORM=OS_SOLARIS
|
|
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_SOLARIS -m64"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt -static-libstdc++ -static-libgcc -m64"
|
|
# PORT_FILES=port/sunos/sunos_specific.cc
|
|
;;
|
|
AIX)
|
|
PLATFORM=OS_AIX
|
|
CC=gcc
|
|
COMMON_FLAGS="$COMMON_FLAGS -maix64 -pthread -fno-builtin-memcmp -D_REENTRANT -DOS_AIX -D__STDC_FORMAT_MACROS"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -pthread -lpthread -lrt -maix64 -static-libstdc++ -static-libgcc"
|
|
# PORT_FILES=port/aix/aix_specific.cc
|
|
;;
|
|
FreeBSD)
|
|
PLATFORM=OS_FREEBSD
|
|
CXX=clang++
|
|
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_FREEBSD"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread"
|
|
# PORT_FILES=port/freebsd/freebsd_specific.cc
|
|
;;
|
|
GNU/kFreeBSD)
|
|
PLATFORM=OS_GNU_KFREEBSD
|
|
COMMON_FLAGS="$COMMON_FLAGS -DOS_GNU_KFREEBSD"
|
|
if [ -z "$USE_CLANG" ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp"
|
|
else
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic"
|
|
fi
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt"
|
|
# PORT_FILES=port/gnu_kfreebsd/gnu_kfreebsd_specific.cc
|
|
;;
|
|
NetBSD)
|
|
PLATFORM=OS_NETBSD
|
|
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_NETBSD"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lgcc_s"
|
|
# PORT_FILES=port/netbsd/netbsd_specific.cc
|
|
;;
|
|
OpenBSD)
|
|
PLATFORM=OS_OPENBSD
|
|
CXX=clang++
|
|
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_OPENBSD"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -pthread"
|
|
# PORT_FILES=port/openbsd/openbsd_specific.cc
|
|
FIND=gfind
|
|
WATCH=gnuwatch
|
|
;;
|
|
DragonFly)
|
|
PLATFORM=OS_DRAGONFLYBSD
|
|
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_DRAGONFLYBSD"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread"
|
|
# PORT_FILES=port/dragonfly/dragonfly_specific.cc
|
|
;;
|
|
Cygwin)
|
|
PLATFORM=CYGWIN
|
|
PLATFORM_SHARED_CFLAGS=""
|
|
PLATFORM_CXXFLAGS="-std=gnu++11"
|
|
COMMON_FLAGS="$COMMON_FLAGS -DCYGWIN"
|
|
if [ -z "$USE_CLANG" ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp"
|
|
else
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic"
|
|
fi
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt"
|
|
# PORT_FILES=port/linux/linux_specific.cc
|
|
;;
|
|
OS_ANDROID_CROSSCOMPILE)
|
|
PLATFORM=OS_ANDROID
|
|
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_ANDROID -DROCKSDB_PLATFORM_POSIX"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS " # All pthread features are in the Android C library
|
|
# PORT_FILES=port/android/android.cc
|
|
CROSS_COMPILE=true
|
|
;;
|
|
*)
|
|
echo "Unknown platform!" >&2
|
|
exit 1
|
|
esac
|
|
|
|
PLATFORM_CXXFLAGS="$PLATFORM_CXXFLAGS ${CXXFLAGS}"
|
|
JAVA_LDFLAGS="$PLATFORM_LDFLAGS"
|
|
JAVA_STATIC_LDFLAGS="$PLATFORM_LDFLAGS"
|
|
JAVAC_ARGS="-source 8"
|
|
|
|
if [ "$CROSS_COMPILE" = "true" -o "$FBCODE_BUILD" = "true" ]; then
|
|
# Cross-compiling; do not try any compilation tests.
|
|
# Also don't need any compilation tests if compiling on fbcode
|
|
if [ "$FBCODE_BUILD" = "true" ]; then
|
|
# Enable backtrace on fbcode since the necessary libraries are present
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_BACKTRACE"
|
|
FOLLY_DIR="third-party/folly"
|
|
fi
|
|
true
|
|
else
|
|
if ! test $ROCKSDB_DISABLE_FALLOCATE; then
|
|
# Test whether fallocate is available
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <fcntl.h>
|
|
#include <linux/falloc.h>
|
|
int main() {
|
|
int fd = open("/dev/null", 0);
|
|
fallocate(fd, FALLOC_FL_KEEP_SIZE, 0, 1024);
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_FALLOCATE_PRESENT"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_SNAPPY; then
|
|
# Test whether Snappy library is installed
|
|
# http://code.google.com/p/snappy/
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <snappy.h>
|
|
int main() {}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DSNAPPY"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lsnappy"
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lsnappy"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_GFLAGS; then
|
|
# Test whether gflags library is installed
|
|
# http://gflags.github.io/gflags/
|
|
# check if the namespace is gflags
|
|
if $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null << EOF
|
|
#include <gflags/gflags.h>
|
|
using namespace GFLAGS_NAMESPACE;
|
|
int main() {}
|
|
EOF
|
|
then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1"
|
|
# Hack: don't link extra gflags assuming it comes with folly
|
|
[ "$USE_FOLLY" ] || PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags"
|
|
# check if namespace is gflags
|
|
elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null << EOF
|
|
#include <gflags/gflags.h>
|
|
using namespace gflags;
|
|
int main() {}
|
|
EOF
|
|
then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1 -DGFLAGS_NAMESPACE=gflags"
|
|
# Hack: don't link extra gflags assuming it comes with folly
|
|
[ "$USE_FOLLY" ] || PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags"
|
|
# check if namespace is google
|
|
elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null << EOF
|
|
#include <gflags/gflags.h>
|
|
using namespace google;
|
|
int main() {}
|
|
EOF
|
|
then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1 -DGFLAGS_NAMESPACE=google"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_ZLIB; then
|
|
# Test whether zlib library is installed
|
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <zlib.h>
|
|
int main() {}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DZLIB"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lz"
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lz"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_BZIP; then
|
|
# Test whether bzip library is installed
|
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <bzlib.h>
|
|
int main() {}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DBZIP2"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lbz2"
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lbz2"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_LZ4; then
|
|
# Test whether lz4 library is installed
|
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <lz4.h>
|
|
#include <lz4hc.h>
|
|
int main() {}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DLZ4"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -llz4"
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -llz4"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_ZSTD; then
|
|
# Test whether zstd library is installed with minimum version
|
|
# (Keep in sync with compression.h)
|
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
|
#include <zstd.h>
|
|
#if ZSTD_VERSION_NUMBER < 10400
|
|
#error "ZSTD support requires version >= 1.4.0 (libzstd-devel)"
|
|
#endif // ZSTD_VERSION_NUMBER
|
|
int main() {}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DZSTD"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lzstd"
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lzstd"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_NUMA; then
|
|
# Test whether numa is available
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o -lnuma 2>/dev/null <<EOF
|
|
#include <numa.h>
|
|
#include <numaif.h>
|
|
int main() {}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DNUMA"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lnuma"
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lnuma"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_JEMALLOC; then
|
|
# Test whether jemalloc is available
|
|
if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS $LDFLAGS -x c++ - -o test.o -ljemalloc \
|
|
2>/dev/null; then
|
|
# This will enable some preprocessor identifiers in the Makefile
|
|
JEMALLOC=1
|
|
# JEMALLOC can be enabled either using the flag (like here) or by
|
|
# providing direct link to the jemalloc library
|
|
WITH_JEMALLOC_FLAG=1
|
|
# check for JEMALLOC installed with HomeBrew
|
|
if [ "$PLATFORM" == "OS_MACOSX" ]; then
|
|
if [ "$TARGET_ARCHITECTURE" = "arm64" ]; then
|
|
# on M1 Macs, homebrew installs here instead of /usr/local
|
|
JEMALLOC_PREFIX="/opt/homebrew"
|
|
else
|
|
JEMALLOC_PREFIX="/usr/local"
|
|
fi
|
|
if hash brew 2>/dev/null && brew ls --versions jemalloc > /dev/null; then
|
|
JEMALLOC_VER=$(brew ls --versions jemalloc | tail -n 1 | cut -f 2 -d ' ')
|
|
JEMALLOC_INCLUDE="-I${JEMALLOC_PREFIX}/Cellar/jemalloc/${JEMALLOC_VER}/include"
|
|
JEMALLOC_LIB="${JEMALLOC_PREFIX}/Cellar/jemalloc/${JEMALLOC_VER}/lib/libjemalloc_pic.a"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -L${JEMALLOC_PREFIX}/lib $JEMALLOC_LIB"
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -L${JEMALLOC_PREFIX}/lib $JEMALLOC_LIB"
|
|
JAVA_STATIC_LDFLAGS="$JAVA_STATIC_LDFLAGS -L${JEMALLOC_PREFIX}/lib $JEMALLOC_LIB"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
if ! test $JEMALLOC && ! test $ROCKSDB_DISABLE_TCMALLOC; then
|
|
# jemalloc is not available. Let's try tcmalloc
|
|
if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o \
|
|
-ltcmalloc 2>/dev/null; then
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -ltcmalloc"
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -ltcmalloc"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_MALLOC_USABLE_SIZE; then
|
|
# Test whether malloc_usable_size is available
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <malloc.h>
|
|
int main() {
|
|
size_t res = malloc_usable_size(0);
|
|
(void)res;
|
|
return 0;
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_MALLOC_USABLE_SIZE"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_MEMKIND; then
|
|
# Test whether memkind library is installed
|
|
$CXX $PLATFORM_CXXFLAGS $LDFLAGS -x c++ - -o test.o -lmemkind 2>/dev/null <<EOF
|
|
#include <memkind.h>
|
|
int main() {
|
|
memkind_malloc(MEMKIND_DAX_KMEM, 1024);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DMEMKIND"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lmemkind"
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lmemkind"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_PTHREAD_MUTEX_ADAPTIVE_NP; then
|
|
# Test whether PTHREAD_MUTEX_ADAPTIVE_NP mutex type is available
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <pthread.h>
|
|
int main() {
|
|
int x = PTHREAD_MUTEX_ADAPTIVE_NP;
|
|
(void)x;
|
|
return 0;
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_BACKTRACE; then
|
|
# Test whether backtrace is available
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <execinfo.h>
|
|
int main() {
|
|
void* frames[1];
|
|
backtrace_symbols(frames, backtrace(frames, 1));
|
|
return 0;
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_BACKTRACE"
|
|
else
|
|
# Test whether execinfo library is installed
|
|
$CXX $PLATFORM_CXXFLAGS -lexecinfo -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <execinfo.h>
|
|
int main() {
|
|
void* frames[1];
|
|
backtrace_symbols(frames, backtrace(frames, 1));
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_BACKTRACE"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lexecinfo"
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lexecinfo"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_PG; then
|
|
# Test if -pg is supported
|
|
$CXX $PLATFORM_CXXFLAGS -pg -x c++ - -o test.o 2>/dev/null <<EOF
|
|
int main() {
|
|
return 0;
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
PROFILING_FLAGS=-pg
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_SYNC_FILE_RANGE; then
|
|
# Test whether sync_file_range is supported for compatibility with an old glibc
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <fcntl.h>
|
|
int main() {
|
|
int fd = open("/dev/null", 0);
|
|
sync_file_range(fd, 0, 1024, SYNC_FILE_RANGE_WRITE);
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_RANGESYNC_PRESENT"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_SCHED_GETCPU; then
|
|
# Test whether sched_getcpu is supported
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <sched.h>
|
|
int main() {
|
|
int cpuid = sched_getcpu();
|
|
(void)cpuid;
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_SCHED_GETCPU_PRESENT"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_AUXV_GETAUXVAL; then
|
|
# Test whether getauxval is supported
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <sys/auxv.h>
|
|
int main() {
|
|
uint64_t auxv = getauxval(AT_HWCAP);
|
|
(void)auxv;
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_AUXV_GETAUXVAL_PRESENT"
|
|
fi
|
|
fi
|
|
|
|
if ! test $ROCKSDB_DISABLE_ALIGNED_NEW; then
|
|
# Test whether c++17 aligned-new is supported
|
|
$CXX $PLATFORM_CXXFLAGS -faligned-new -x c++ - -o test.o 2>/dev/null <<EOF
|
|
struct alignas(1024) t {int a;};
|
|
int main() {}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
PLATFORM_CXXFLAGS="$PLATFORM_CXXFLAGS -faligned-new -DHAVE_ALIGNED_NEW"
|
|
fi
|
|
fi
|
|
if ! test $ROCKSDB_DISABLE_BENCHMARK; then
|
|
# Test whether google benchmark is available
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null -lbenchmark -lpthread 2>/dev/null <<EOF
|
|
#include <benchmark/benchmark.h>
|
|
int main() {}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lbenchmark"
|
|
fi
|
|
fi
|
|
if test $USE_FOLLY || test $USE_FOLLY_LITE; then
|
|
# Test whether libfolly library is installed
|
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
|
#include <folly/synchronization/DistributedMutex.h>
|
|
int main() {}
|
|
EOF
|
|
if [ "$?" != 0 ]; then
|
|
FOLLY_DIR="./third-party/folly"
|
|
fi
|
|
fi
|
|
|
|
if test -z "$ROCKSDB_USE_IO_URING"; then
|
|
ROCKSDB_USE_IO_URING=1
|
|
fi
|
|
if [ "$ROCKSDB_USE_IO_URING" -ne 0 -a "$PLATFORM" = OS_LINUX ]; then
|
|
# check for liburing
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -luring -o test.o 2>/dev/null <<EOF
|
|
#include <liburing.h>
|
|
int main() {
|
|
struct io_uring ring;
|
|
io_uring_queue_init(1, &ring, 0);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -luring"
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_IOURING_PRESENT"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# TODO(tec): Fix -Wshorten-64-to-32 errors on FreeBSD and enable the warning.
|
|
# -Wshorten-64-to-32 breaks compilation on FreeBSD aarch64 and i386
|
|
if ! { [ "$TARGET_OS" = FreeBSD -o "$TARGET_OS" = OpenBSD ] && [ "$TARGET_ARCHITECTURE" = arm64 -o "$TARGET_ARCHITECTURE" = i386 ]; }; then
|
|
# Test whether -Wshorten-64-to-32 is available
|
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o -Wshorten-64-to-32 2>/dev/null <<EOF
|
|
int main() {}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -Wshorten-64-to-32"
|
|
fi
|
|
fi
|
|
|
|
if [ "$PORTABLE" == "" ] || [ "$PORTABLE" == 0 ]; then
|
|
if test -n "`echo $TARGET_ARCHITECTURE | grep ^ppc64`"; then
|
|
# Tune for this POWER processor, treating '+' models as base models
|
|
POWER=`LD_SHOW_AUXV=1 /bin/true | grep AT_PLATFORM | grep -E -o power[0-9]+`
|
|
COMMON_FLAGS="$COMMON_FLAGS -mcpu=$POWER -mtune=$POWER "
|
|
elif test -n "`echo $TARGET_ARCHITECTURE | grep -e^arm -e^aarch64`"; then
|
|
# TODO: Handle this with approprite options.
|
|
COMMON_FLAGS="$COMMON_FLAGS"
|
|
elif test -n "`echo $TARGET_ARCHITECTURE | grep ^aarch64`"; then
|
|
COMMON_FLAGS="$COMMON_FLAGS"
|
|
elif test -n "`echo $TARGET_ARCHITECTURE | grep ^s390x`"; then
|
|
if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ \
|
|
-march=native - -o /dev/null 2>/dev/null; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -march=native "
|
|
else
|
|
COMMON_FLAGS="$COMMON_FLAGS -march=z196 "
|
|
fi
|
|
COMMON_FLAGS="$COMMON_FLAGS"
|
|
elif test -n "`echo $TARGET_ARCHITECTURE | grep ^riscv64`"; then
|
|
RISC_ISA=$(cat /proc/cpuinfo | grep -E '^isa\s*:' | head -1 | cut --delimiter=: -f 2 | cut -b 2-)
|
|
if [ -n "${RISCV_ISA}" ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -march=${RISC_ISA}"
|
|
fi
|
|
elif [ "$TARGET_OS" == "IOS" ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS"
|
|
else
|
|
COMMON_FLAGS="$COMMON_FLAGS -march=native "
|
|
fi
|
|
else
|
|
# PORTABLE specified
|
|
if [ "$PORTABLE" == 1 ]; then
|
|
if test -n "`echo $TARGET_ARCHITECTURE | grep ^s390x`"; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -march=z196 "
|
|
elif test -n "`echo $TARGET_ARCHITECTURE | grep ^riscv64`"; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -march=rv64gc"
|
|
elif test "$USE_SSE"; then
|
|
# USE_SSE is DEPRECATED
|
|
# This is a rough approximation of the old USE_SSE behavior
|
|
COMMON_FLAGS="$COMMON_FLAGS -march=haswell"
|
|
fi
|
|
# Other than those cases, not setting -march= here.
|
|
else
|
|
# Assume PORTABLE is a minimum assumed cpu type, e.g. PORTABLE=haswell
|
|
COMMON_FLAGS="$COMMON_FLAGS -march=${PORTABLE}"
|
|
fi
|
|
|
|
if [[ "${PLATFORM}" == "OS_MACOSX" ]]; then
|
|
# For portability compile for macOS 10.14 (2018) or newer
|
|
COMMON_FLAGS="$COMMON_FLAGS -mmacosx-version-min=10.14"
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -mmacosx-version-min=10.14"
|
|
# -mmacosx-version-min must come first here.
|
|
PLATFORM_SHARED_LDFLAGS="-mmacosx-version-min=10.14 $PLATFORM_SHARED_LDFLAGS"
|
|
PLATFORM_CMAKE_FLAGS="-DCMAKE_OSX_DEPLOYMENT_TARGET=10.14"
|
|
JAVA_STATIC_DEPS_COMMON_FLAGS="-mmacosx-version-min=10.14"
|
|
JAVA_STATIC_DEPS_LDFLAGS="$JAVA_STATIC_DEPS_COMMON_FLAGS"
|
|
JAVA_STATIC_DEPS_CCFLAGS="$JAVA_STATIC_DEPS_COMMON_FLAGS"
|
|
JAVA_STATIC_DEPS_CXXFLAGS="$JAVA_STATIC_DEPS_COMMON_FLAGS"
|
|
fi
|
|
fi
|
|
|
|
if test -n "`echo $TARGET_ARCHITECTURE | grep ^ppc64`"; then
|
|
# check for GNU libc on ppc64
|
|
$CXX -x c++ - -o /dev/null 2>/dev/null <<EOF
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <gnu/libc-version.h>
|
|
|
|
int main(int argc, char *argv[]) {
|
|
printf("GNU libc version: %s\n", gnu_get_libc_version());
|
|
return 0;
|
|
}
|
|
EOF
|
|
if [ "$?" != 0 ]; then
|
|
PPC_LIBC_IS_GNU=0
|
|
fi
|
|
fi
|
|
|
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <cstdint>
|
|
int main() {
|
|
uint64_t a = 0xffffFFFFffffFFFF;
|
|
__uint128_t b = __uint128_t(a) * a;
|
|
a = static_cast<uint64_t>(b >> 64);
|
|
(void)a;
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DHAVE_UINT128_EXTENSION"
|
|
fi
|
|
|
|
if [ "$FBCODE_BUILD" != "true" -a "$PLATFORM" = OS_LINUX ]; then
|
|
$CXX $COMMON_FLAGS $PLATFORM_SHARED_CFLAGS -x c++ -c - -o test_dl.o 2>/dev/null <<EOF
|
|
void dummy_func() {}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
$CXX $COMMON_FLAGS $PLATFORM_SHARED_LDFLAGS test_dl.o -o test.o 2>/dev/null
|
|
if [ "$?" = 0 ]; then
|
|
EXEC_LDFLAGS+="-ldl"
|
|
rm -f test_dl.o
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# check for F_FULLFSYNC
|
|
$CXX $PLATFORM_CXXFALGS -x c++ - -o test.o 2>/dev/null <<EOF
|
|
#include <fcntl.h>
|
|
int main() {
|
|
fcntl(0, F_FULLFSYNC);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if [ "$?" = 0 ]; then
|
|
COMMON_FLAGS="$COMMON_FLAGS -DHAVE_FULLFSYNC"
|
|
fi
|
|
|
|
rm -f test.o test_dl.o
|
|
|
|
# Get the path for the folly installation dir
|
|
if [ "$USE_FOLLY" ]; then
|
|
if [ "$FOLLY_DIR" ]; then
|
|
FOLLY_PATH=`cd $FOLLY_DIR && $PYTHON build/fbcode_builder/getdeps.py show-inst-dir folly`
|
|
fi
|
|
fi
|
|
if [ "$USE_FOLLY_LITE" ]; then
|
|
if [ "$FOLLY_DIR" ]; then
|
|
BOOST_SOURCE_PATH=`cd $FOLLY_DIR && $PYTHON build/fbcode_builder/getdeps.py show-source-dir boost`
|
|
FMT_SOURCE_PATH=`cd $FOLLY_DIR && $PYTHON build/fbcode_builder/getdeps.py show-source-dir fmt`
|
|
fi
|
|
fi
|
|
|
|
PLATFORM_CCFLAGS="$PLATFORM_CCFLAGS $COMMON_FLAGS"
|
|
PLATFORM_CXXFLAGS="$PLATFORM_CXXFLAGS $COMMON_FLAGS"
|
|
|
|
VALGRIND_VER="$VALGRIND_VER"
|
|
|
|
ROCKSDB_MAJOR=`build_tools/version.sh major`
|
|
ROCKSDB_MINOR=`build_tools/version.sh minor`
|
|
ROCKSDB_PATCH=`build_tools/version.sh patch`
|
|
|
|
echo "CC=$CC" >> "$OUTPUT"
|
|
echo "CXX=$CXX" >> "$OUTPUT"
|
|
echo "AR=$AR" >> "$OUTPUT"
|
|
echo "PLATFORM=$PLATFORM" >> "$OUTPUT"
|
|
echo "PLATFORM_LDFLAGS=$PLATFORM_LDFLAGS" >> "$OUTPUT"
|
|
echo "PLATFORM_CMAKE_FLAGS=$PLATFORM_CMAKE_FLAGS" >> "$OUTPUT"
|
|
echo "JAVA_LDFLAGS=$JAVA_LDFLAGS" >> "$OUTPUT"
|
|
echo "JAVA_STATIC_LDFLAGS=$JAVA_STATIC_LDFLAGS" >> "$OUTPUT"
|
|
echo "JAVA_STATIC_DEPS_CCFLAGS=$JAVA_STATIC_DEPS_CCFLAGS" >> "$OUTPUT"
|
|
echo "JAVA_STATIC_DEPS_CXXFLAGS=$JAVA_STATIC_DEPS_CXXFLAGS" >> "$OUTPUT"
|
|
echo "JAVA_STATIC_DEPS_LDFLAGS=$JAVA_STATIC_DEPS_LDFLAGS" >> "$OUTPUT"
|
|
echo "JAVAC_ARGS=$JAVAC_ARGS" >> "$OUTPUT"
|
|
echo "VALGRIND_VER=$VALGRIND_VER" >> "$OUTPUT"
|
|
echo "PLATFORM_CCFLAGS=$PLATFORM_CCFLAGS" >> "$OUTPUT"
|
|
echo "PLATFORM_CXXFLAGS=$PLATFORM_CXXFLAGS" >> "$OUTPUT"
|
|
echo "PLATFORM_SHARED_CFLAGS=$PLATFORM_SHARED_CFLAGS" >> "$OUTPUT"
|
|
echo "PLATFORM_SHARED_EXT=$PLATFORM_SHARED_EXT" >> "$OUTPUT"
|
|
echo "PLATFORM_SHARED_LDFLAGS=$PLATFORM_SHARED_LDFLAGS" >> "$OUTPUT"
|
|
echo "PLATFORM_SHARED_VERSIONED=$PLATFORM_SHARED_VERSIONED" >> "$OUTPUT"
|
|
echo "EXEC_LDFLAGS=$EXEC_LDFLAGS" >> "$OUTPUT"
|
|
echo "JEMALLOC_INCLUDE=$JEMALLOC_INCLUDE" >> "$OUTPUT"
|
|
echo "JEMALLOC_LIB=$JEMALLOC_LIB" >> "$OUTPUT"
|
|
echo "ROCKSDB_MAJOR=$ROCKSDB_MAJOR" >> "$OUTPUT"
|
|
echo "ROCKSDB_MINOR=$ROCKSDB_MINOR" >> "$OUTPUT"
|
|
echo "ROCKSDB_PATCH=$ROCKSDB_PATCH" >> "$OUTPUT"
|
|
echo "CLANG_SCAN_BUILD=$CLANG_SCAN_BUILD" >> "$OUTPUT"
|
|
echo "CLANG_ANALYZER=$CLANG_ANALYZER" >> "$OUTPUT"
|
|
echo "PROFILING_FLAGS=$PROFILING_FLAGS" >> "$OUTPUT"
|
|
echo "FIND=$FIND" >> "$OUTPUT"
|
|
echo "WATCH=$WATCH" >> "$OUTPUT"
|
|
echo "FOLLY_PATH=$FOLLY_PATH" >> "$OUTPUT"
|
|
echo "BOOST_SOURCE_PATH=$BOOST_SOURCE_PATH" >> "$OUTPUT"
|
|
echo "FMT_SOURCE_PATH=$FMT_SOURCE_PATH" >> "$OUTPUT"
|
|
|
|
# This will enable some related identifiers for the preprocessor
|
|
if test -n "$JEMALLOC"; then
|
|
echo "JEMALLOC=1" >> "$OUTPUT"
|
|
fi
|
|
# Indicates that jemalloc should be enabled using -ljemalloc flag
|
|
# The alternative is to porvide a direct link to the library via JEMALLOC_LIB
|
|
# and JEMALLOC_INCLUDE
|
|
if test -n "$WITH_JEMALLOC_FLAG"; then
|
|
echo "WITH_JEMALLOC_FLAG=$WITH_JEMALLOC_FLAG" >> "$OUTPUT"
|
|
fi
|
|
if test -n "$USE_FOLLY"; then
|
|
echo "USE_FOLLY=$USE_FOLLY" >> "$OUTPUT"
|
|
fi
|
|
if test -n "$PPC_LIBC_IS_GNU"; then
|
|
echo "PPC_LIBC_IS_GNU=$PPC_LIBC_IS_GNU" >> "$OUTPUT"
|
|
fi
|