Pass PLATFORM_FLAGS in build_detect_platform (#8111)
Summary: At least under MacOS, some things were excluded from the build (like Snappy) because the compilation flags were not passed in correctly. This PR does a few things: - Passes the EXTRA_CXX/LDFLAGS into build_detect_platform. This means that if some tool (like TBB for example) is not installed in a standard place, it could still be detected by build_detect_platform. In this case, the developer would invoke: "EXTRA_CXXFLAGS=<path to TBB include> EXTRA_LDFLAGS=<path to TBB library> make", and the build script would find the tools in the extra location. - Changes the compilation tests to use PLATFORM_CXXFLAGS. This change causes the EXTRA_FLAGS passed in to the script to be included in the compilation check. Additionally, flags set by the script itself (like --std=c++11) will be used during the checks. Validated that the make_platform.mk file generated on Linux does not change with this change. On my MacOS machine, the SNAPPY libraries are now available (they were not before as they required --std=c++11 to build). I also verified that I can build against TBB installed on my Mac by passing in the EXTRA CXX and LD FLAGS to the location in which TBB is installed. Pull Request resolved: https://github.com/facebook/rocksdb/pull/8111 Reviewed By: jay-zhuang Differential Revision: D27353516 Pulled By: mrambacher fbshipit-source-id: b6b378c96dbf678bab1479556dcbcb49c47e807d
This commit is contained in:
parent
335c5a6be5
commit
493a4e28d9
2
Makefile
2
Makefile
@ -259,6 +259,8 @@ AM_SHARE = $(AM_V_CCLD) $(CXX) $(PLATFORM_SHARED_LDFLAGS)$@ -L. $(patsubst lib%.
|
|||||||
# Export some common variables that might have been passed as Make variables
|
# Export some common variables that might have been passed as Make variables
|
||||||
# instead of environment variables.
|
# instead of environment variables.
|
||||||
dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; \
|
dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; \
|
||||||
|
export CXXFLAGS="$(EXTRA_CXXFLAGS)"; \
|
||||||
|
export LDFLAGS="$(EXTRA_LDFLAGS)"; \
|
||||||
export COMPILE_WITH_ASAN="$(COMPILE_WITH_ASAN)"; \
|
export COMPILE_WITH_ASAN="$(COMPILE_WITH_ASAN)"; \
|
||||||
export COMPILE_WITH_TSAN="$(COMPILE_WITH_TSAN)"; \
|
export COMPILE_WITH_TSAN="$(COMPILE_WITH_TSAN)"; \
|
||||||
export COMPILE_WITH_UBSAN="$(COMPILE_WITH_UBSAN)"; \
|
export COMPILE_WITH_UBSAN="$(COMPILE_WITH_UBSAN)"; \
|
||||||
|
@ -177,7 +177,7 @@ case "$TARGET_OS" in
|
|||||||
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt -ldl"
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt -ldl"
|
||||||
if test $ROCKSDB_USE_IO_URING; then
|
if test $ROCKSDB_USE_IO_URING; then
|
||||||
# check for liburing
|
# check for liburing
|
||||||
$CXX $CFLAGS -x c++ - -luring -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -luring -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <liburing.h>
|
#include <liburing.h>
|
||||||
int main() {
|
int main() {
|
||||||
struct io_uring ring;
|
struct io_uring ring;
|
||||||
@ -288,7 +288,7 @@ if [ "$CROSS_COMPILE" = "true" -o "$FBCODE_BUILD" = "true" ]; then
|
|||||||
else
|
else
|
||||||
if ! test $ROCKSDB_DISABLE_FALLOCATE; then
|
if ! test $ROCKSDB_DISABLE_FALLOCATE; then
|
||||||
# Test whether fallocate is available
|
# Test whether fallocate is available
|
||||||
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <linux/falloc.h>
|
#include <linux/falloc.h>
|
||||||
int main() {
|
int main() {
|
||||||
@ -304,7 +304,7 @@ EOF
|
|||||||
if ! test $ROCKSDB_DISABLE_SNAPPY; then
|
if ! test $ROCKSDB_DISABLE_SNAPPY; then
|
||||||
# Test whether Snappy library is installed
|
# Test whether Snappy library is installed
|
||||||
# http://code.google.com/p/snappy/
|
# http://code.google.com/p/snappy/
|
||||||
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <snappy.h>
|
#include <snappy.h>
|
||||||
int main() {}
|
int main() {}
|
||||||
EOF
|
EOF
|
||||||
@ -319,7 +319,7 @@ EOF
|
|||||||
# Test whether gflags library is installed
|
# Test whether gflags library is installed
|
||||||
# http://gflags.github.io/gflags/
|
# http://gflags.github.io/gflags/
|
||||||
# check if the namespace is gflags
|
# check if the namespace is gflags
|
||||||
if $CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF
|
if $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF
|
||||||
#include <gflags/gflags.h>
|
#include <gflags/gflags.h>
|
||||||
using namespace GFLAGS_NAMESPACE;
|
using namespace GFLAGS_NAMESPACE;
|
||||||
int main() {}
|
int main() {}
|
||||||
@ -328,7 +328,7 @@ EOF
|
|||||||
COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1"
|
COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1"
|
||||||
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags"
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags"
|
||||||
# check if namespace is gflags
|
# check if namespace is gflags
|
||||||
elif $CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF
|
elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF
|
||||||
#include <gflags/gflags.h>
|
#include <gflags/gflags.h>
|
||||||
using namespace gflags;
|
using namespace gflags;
|
||||||
int main() {}
|
int main() {}
|
||||||
@ -337,7 +337,7 @@ EOF
|
|||||||
COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1 -DGFLAGS_NAMESPACE=gflags"
|
COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1 -DGFLAGS_NAMESPACE=gflags"
|
||||||
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags"
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags"
|
||||||
# check if namespace is google
|
# check if namespace is google
|
||||||
elif $CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF
|
elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF
|
||||||
#include <gflags/gflags.h>
|
#include <gflags/gflags.h>
|
||||||
using namespace google;
|
using namespace google;
|
||||||
int main() {}
|
int main() {}
|
||||||
@ -350,7 +350,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_ZLIB; then
|
if ! test $ROCKSDB_DISABLE_ZLIB; then
|
||||||
# Test whether zlib library is installed
|
# Test whether zlib library is installed
|
||||||
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
int main() {}
|
int main() {}
|
||||||
EOF
|
EOF
|
||||||
@ -363,7 +363,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_BZIP; then
|
if ! test $ROCKSDB_DISABLE_BZIP; then
|
||||||
# Test whether bzip library is installed
|
# Test whether bzip library is installed
|
||||||
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <bzlib.h>
|
#include <bzlib.h>
|
||||||
int main() {}
|
int main() {}
|
||||||
EOF
|
EOF
|
||||||
@ -376,7 +376,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_LZ4; then
|
if ! test $ROCKSDB_DISABLE_LZ4; then
|
||||||
# Test whether lz4 library is installed
|
# Test whether lz4 library is installed
|
||||||
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <lz4.h>
|
#include <lz4.h>
|
||||||
#include <lz4hc.h>
|
#include <lz4hc.h>
|
||||||
int main() {}
|
int main() {}
|
||||||
@ -390,7 +390,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_ZSTD; then
|
if ! test $ROCKSDB_DISABLE_ZSTD; then
|
||||||
# Test whether zstd library is installed
|
# Test whether zstd library is installed
|
||||||
$CXX $CFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <zstd.h>
|
#include <zstd.h>
|
||||||
int main() {}
|
int main() {}
|
||||||
EOF
|
EOF
|
||||||
@ -403,7 +403,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_NUMA; then
|
if ! test $ROCKSDB_DISABLE_NUMA; then
|
||||||
# Test whether numa is available
|
# Test whether numa is available
|
||||||
$CXX $CFLAGS -x c++ - -o /dev/null -lnuma 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null -lnuma 2>/dev/null <<EOF
|
||||||
#include <numa.h>
|
#include <numa.h>
|
||||||
#include <numaif.h>
|
#include <numaif.h>
|
||||||
int main() {}
|
int main() {}
|
||||||
@ -417,7 +417,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_TBB; then
|
if ! test $ROCKSDB_DISABLE_TBB; then
|
||||||
# Test whether tbb is available
|
# Test whether tbb is available
|
||||||
$CXX $CFLAGS $LDFLAGS -x c++ - -o /dev/null -ltbb 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS $LDFLAGS -x c++ - -o /dev/null -ltbb 2>/dev/null <<EOF
|
||||||
#include <tbb/tbb.h>
|
#include <tbb/tbb.h>
|
||||||
int main() {}
|
int main() {}
|
||||||
EOF
|
EOF
|
||||||
@ -430,7 +430,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_JEMALLOC; then
|
if ! test $ROCKSDB_DISABLE_JEMALLOC; then
|
||||||
# Test whether jemalloc is available
|
# Test whether jemalloc is available
|
||||||
if echo 'int main() {}' | $CXX $CFLAGS -x c++ - -o /dev/null -ljemalloc \
|
if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null -ljemalloc \
|
||||||
2>/dev/null; then
|
2>/dev/null; then
|
||||||
# This will enable some preprocessor identifiers in the Makefile
|
# This will enable some preprocessor identifiers in the Makefile
|
||||||
JEMALLOC=1
|
JEMALLOC=1
|
||||||
@ -451,7 +451,7 @@ EOF
|
|||||||
fi
|
fi
|
||||||
if ! test $JEMALLOC && ! test $ROCKSDB_DISABLE_TCMALLOC; then
|
if ! test $JEMALLOC && ! test $ROCKSDB_DISABLE_TCMALLOC; then
|
||||||
# jemalloc is not available. Let's try tcmalloc
|
# jemalloc is not available. Let's try tcmalloc
|
||||||
if echo 'int main() {}' | $CXX $CFLAGS -x c++ - -o /dev/null \
|
if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null \
|
||||||
-ltcmalloc 2>/dev/null; then
|
-ltcmalloc 2>/dev/null; then
|
||||||
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -ltcmalloc"
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -ltcmalloc"
|
||||||
JAVA_LDFLAGS="$JAVA_LDFLAGS -ltcmalloc"
|
JAVA_LDFLAGS="$JAVA_LDFLAGS -ltcmalloc"
|
||||||
@ -460,7 +460,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_MALLOC_USABLE_SIZE; then
|
if ! test $ROCKSDB_DISABLE_MALLOC_USABLE_SIZE; then
|
||||||
# Test whether malloc_usable_size is available
|
# Test whether malloc_usable_size is available
|
||||||
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
int main() {
|
int main() {
|
||||||
size_t res = malloc_usable_size(0);
|
size_t res = malloc_usable_size(0);
|
||||||
@ -475,7 +475,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_MEMKIND; then
|
if ! test $ROCKSDB_DISABLE_MEMKIND; then
|
||||||
# Test whether memkind library is installed
|
# Test whether memkind library is installed
|
||||||
$CXX $CFLAGS $COMMON_FLAGS -lmemkind -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -lmemkind -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <memkind.h>
|
#include <memkind.h>
|
||||||
int main() {
|
int main() {
|
||||||
memkind_malloc(MEMKIND_DAX_KMEM, 1024);
|
memkind_malloc(MEMKIND_DAX_KMEM, 1024);
|
||||||
@ -491,7 +491,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_PTHREAD_MUTEX_ADAPTIVE_NP; then
|
if ! test $ROCKSDB_DISABLE_PTHREAD_MUTEX_ADAPTIVE_NP; then
|
||||||
# Test whether PTHREAD_MUTEX_ADAPTIVE_NP mutex type is available
|
# Test whether PTHREAD_MUTEX_ADAPTIVE_NP mutex type is available
|
||||||
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
int main() {
|
int main() {
|
||||||
int x = PTHREAD_MUTEX_ADAPTIVE_NP;
|
int x = PTHREAD_MUTEX_ADAPTIVE_NP;
|
||||||
@ -506,7 +506,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_BACKTRACE; then
|
if ! test $ROCKSDB_DISABLE_BACKTRACE; then
|
||||||
# Test whether backtrace is available
|
# Test whether backtrace is available
|
||||||
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <execinfo.h>
|
#include <execinfo.h>
|
||||||
int main() {
|
int main() {
|
||||||
void* frames[1];
|
void* frames[1];
|
||||||
@ -518,7 +518,7 @@ EOF
|
|||||||
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_BACKTRACE"
|
COMMON_FLAGS="$COMMON_FLAGS -DROCKSDB_BACKTRACE"
|
||||||
else
|
else
|
||||||
# Test whether execinfo library is installed
|
# Test whether execinfo library is installed
|
||||||
$CXX $CFLAGS -lexecinfo -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -lexecinfo -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <execinfo.h>
|
#include <execinfo.h>
|
||||||
int main() {
|
int main() {
|
||||||
void* frames[1];
|
void* frames[1];
|
||||||
@ -535,7 +535,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_PG; then
|
if ! test $ROCKSDB_DISABLE_PG; then
|
||||||
# Test if -pg is supported
|
# Test if -pg is supported
|
||||||
$CXX $CFLAGS -pg -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -pg -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
int main() {
|
int main() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -547,7 +547,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_SYNC_FILE_RANGE; then
|
if ! test $ROCKSDB_DISABLE_SYNC_FILE_RANGE; then
|
||||||
# Test whether sync_file_range is supported for compatibility with an old glibc
|
# Test whether sync_file_range is supported for compatibility with an old glibc
|
||||||
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
int main() {
|
int main() {
|
||||||
int fd = open("/dev/null", 0);
|
int fd = open("/dev/null", 0);
|
||||||
@ -561,7 +561,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_SCHED_GETCPU; then
|
if ! test $ROCKSDB_DISABLE_SCHED_GETCPU; then
|
||||||
# Test whether sched_getcpu is supported
|
# Test whether sched_getcpu is supported
|
||||||
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
int main() {
|
int main() {
|
||||||
int cpuid = sched_getcpu();
|
int cpuid = sched_getcpu();
|
||||||
@ -575,7 +575,7 @@ EOF
|
|||||||
|
|
||||||
if ! test $ROCKSDB_DISABLE_AUXV_GETAUXVAL; then
|
if ! test $ROCKSDB_DISABLE_AUXV_GETAUXVAL; then
|
||||||
# Test whether getauxval is supported
|
# Test whether getauxval is supported
|
||||||
$CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <sys/auxv.h>
|
#include <sys/auxv.h>
|
||||||
int main() {
|
int main() {
|
||||||
uint64_t auxv = getauxval(AT_HWCAP);
|
uint64_t auxv = getauxval(AT_HWCAP);
|
||||||
@ -603,7 +603,7 @@ fi
|
|||||||
# -Wshorten-64-to-32 breaks compilation on FreeBSD i386
|
# -Wshorten-64-to-32 breaks compilation on FreeBSD i386
|
||||||
if ! [ "$TARGET_OS" = FreeBSD -a "$TARGET_ARCHITECTURE" = i386 ]; then
|
if ! [ "$TARGET_OS" = FreeBSD -a "$TARGET_ARCHITECTURE" = i386 ]; then
|
||||||
# Test whether -Wshorten-64-to-32 is available
|
# Test whether -Wshorten-64-to-32 is available
|
||||||
$CXX $CFLAGS -x c++ - -o /dev/null -Wshorten-64-to-32 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null -Wshorten-64-to-32 2>/dev/null <<EOF
|
||||||
int main() {}
|
int main() {}
|
||||||
EOF
|
EOF
|
||||||
if [ "$?" = 0 ]; then
|
if [ "$?" = 0 ]; then
|
||||||
|
Loading…
Reference in New Issue
Block a user