|
|
|
@ -210,107 +210,137 @@ EOF |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether Snappy library is installed |
|
|
|
|
# http://code.google.com/p/snappy/ |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <snappy.h> |
|
|
|
|
int main() {} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_SNAPPY; then |
|
|
|
|
# Test whether Snappy library is installed |
|
|
|
|
# http://code.google.com/p/snappy/ |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 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" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DSNAPPY" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lsnappy" |
|
|
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lsnappy" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether gflags library is installed |
|
|
|
|
# http://gflags.github.io/gflags/ |
|
|
|
|
# check if the namespace is gflags |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF |
|
|
|
|
#include <gflags/gflags.h> |
|
|
|
|
int main() {} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_GFLAGS; then |
|
|
|
|
# Test whether gflags library is installed |
|
|
|
|
# http://gflags.github.io/gflags/ |
|
|
|
|
# check if the namespace is gflags |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF |
|
|
|
|
#include <gflags/gflags.h> |
|
|
|
|
int main() {} |
|
|
|
|
EOF |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags" |
|
|
|
|
else |
|
|
|
|
# check if namespace is google |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF |
|
|
|
|
#include <gflags/gflags.h> |
|
|
|
|
using namespace google; |
|
|
|
|
int main() {} |
|
|
|
|
EOF |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=google" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether zlib library is installed |
|
|
|
|
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <zlib.h> |
|
|
|
|
int main() {} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_ZLIB; then |
|
|
|
|
# Test whether zlib library is installed |
|
|
|
|
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 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" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DZLIB" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lz" |
|
|
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lz" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether bzip library is installed |
|
|
|
|
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <bzlib.h> |
|
|
|
|
int main() {} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_BZIP; then |
|
|
|
|
# Test whether bzip library is installed |
|
|
|
|
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 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" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DBZIP2" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lbz2" |
|
|
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lbz2" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether lz4 library is installed |
|
|
|
|
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <lz4.h> |
|
|
|
|
#include <lz4hc.h> |
|
|
|
|
int main() {} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_LZ4; then |
|
|
|
|
# Test whether lz4 library is installed |
|
|
|
|
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 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" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DLZ4" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -llz4" |
|
|
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -llz4" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether zstd library is installed |
|
|
|
|
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <zstd.h> |
|
|
|
|
int main() {} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_ZSTD; then |
|
|
|
|
# Test whether zstd library is installed |
|
|
|
|
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <zstd.h> |
|
|
|
|
int main() {} |
|
|
|
|
EOF |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DZSTD" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lzstd" |
|
|
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lzstd" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DZSTD" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lzstd" |
|
|
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lzstd" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether numa is available |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null -lnuma 2>/dev/null <<EOF |
|
|
|
|
#include <numa.h> |
|
|
|
|
#include <numaif.h> |
|
|
|
|
int main() {} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_NUMA; then |
|
|
|
|
# Test whether numa is available |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null -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" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DNUMA" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lnuma" |
|
|
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lnuma" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether tbb is available |
|
|
|
|
$CXX $CFLAGS $LDFLAGS -x c++ - -o /dev/null -ltbb 2>/dev/null <<EOF |
|
|
|
|
#include <tbb/tbb.h> |
|
|
|
|
int main() {} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_TBB; then |
|
|
|
|
# Test whether tbb is available |
|
|
|
|
$CXX $CFLAGS $LDFLAGS -x c++ - -o /dev/null -ltbb 2>/dev/null <<EOF |
|
|
|
|
#include <tbb/tbb.h> |
|
|
|
|
int main() {} |
|
|
|
|
EOF |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DTBB" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -ltbb" |
|
|
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -ltbb" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DTBB" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -ltbb" |
|
|
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -ltbb" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether jemalloc is available |
|
|
|
|
if echo 'int main() {}' | $CXX $CFLAGS -x c++ - -o /dev/null -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 |
|
|
|
|
else |
|
|
|
|
if ! test $ROCKSDB_DISABLE_JEMALLOC; then |
|
|
|
|
# Test whether jemalloc is available |
|
|
|
|
if echo 'int main() {}' | $CXX $CFLAGS -x c++ - -o /dev/null -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 |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
if ! test $JEMALLOC && ! test $ROCKSDB_DISABLE_TCMALLOC; then |
|
|
|
|
# jemalloc is not available. Let's try tcmalloc |
|
|
|
|
if echo 'int main() {}' | $CXX $CFLAGS -x c++ - -o /dev/null \ |
|
|
|
|
-ltcmalloc 2>/dev/null; then |
|
|
|
@ -319,88 +349,100 @@ EOF |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether malloc_usable_size is available |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <malloc.h> |
|
|
|
|
int main() { |
|
|
|
|
size_t res = malloc_usable_size(0); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_MALLOC_USABLE_SIZE; then |
|
|
|
|
# Test whether malloc_usable_size is available |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <malloc.h> |
|
|
|
|
int main() { |
|
|
|
|
size_t res = malloc_usable_size(0); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
EOF |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_MALLOC_USABLE_SIZE" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_MALLOC_USABLE_SIZE" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether PTHREAD_MUTEX_ADAPTIVE_NP mutex type is available |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <pthread.h> |
|
|
|
|
int main() { |
|
|
|
|
int x = PTHREAD_MUTEX_ADAPTIVE_NP; |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_PTHREAD_MUTEX_ADAPTIVE_NP; then |
|
|
|
|
# Test whether PTHREAD_MUTEX_ADAPTIVE_NP mutex type is available |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <pthread.h> |
|
|
|
|
int main() { |
|
|
|
|
int x = PTHREAD_MUTEX_ADAPTIVE_NP; |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
EOF |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether backtrace is available |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 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 $CFLAGS -lexecinfo -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <execinfo.h> |
|
|
|
|
if ! test $ROCKSDB_DISABLE_BACKTRACE; then |
|
|
|
|
# Test whether backtrace is available |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 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" |
|
|
|
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lexecinfo" |
|
|
|
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -lexecinfo" |
|
|
|
|
else |
|
|
|
|
# Test whether execinfo library is installed |
|
|
|
|
$CXX $CFLAGS -lexecinfo -x c++ - -o /dev/null 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 |
|
|
|
|
|
|
|
|
|
# Test if -pg is supported |
|
|
|
|
$CXX $CFLAGS -pg -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
int main() { |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_PG; then |
|
|
|
|
# Test if -pg is supported |
|
|
|
|
$CXX $CFLAGS -pg -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
int main() { |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
EOF |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
PROFILING_FLAGS=-pg |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
PROFILING_FLAGS=-pg |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether sync_file_range is supported for compatibility with an old glibc |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 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); |
|
|
|
|
} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_SYNC_FILE_RANGE; then |
|
|
|
|
# Test whether sync_file_range is supported for compatibility with an old glibc |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 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" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_RANGESYNC_PRESENT" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Test whether sched_getcpu is supported |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <sched.h> |
|
|
|
|
int main() { |
|
|
|
|
int cpuid = sched_getcpu(); |
|
|
|
|
} |
|
|
|
|
if ! test $ROCKSDB_DISABLE_SCHED_GETCPU; then |
|
|
|
|
# Test whether sched_getcpu is supported |
|
|
|
|
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF |
|
|
|
|
#include <sched.h> |
|
|
|
|
int main() { |
|
|
|
|
int cpuid = sched_getcpu(); |
|
|
|
|
} |
|
|
|
|
EOF |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_SCHED_GETCPU_PRESENT" |
|
|
|
|
if [ "$?" = 0 ]; then |
|
|
|
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_SCHED_GETCPU_PRESENT" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|