Changeset View
Changeset View
Standalone View
Standalone View
src/leveldb/build_detect_platform
Show First 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | |||||
PLATFORM_CCFLAGS= | PLATFORM_CCFLAGS= | ||||
PLATFORM_CXXFLAGS= | PLATFORM_CXXFLAGS= | ||||
PLATFORM_LDFLAGS= | PLATFORM_LDFLAGS= | ||||
PLATFORM_LIBS= | PLATFORM_LIBS= | ||||
PLATFORM_SHARED_EXT="so" | PLATFORM_SHARED_EXT="so" | ||||
PLATFORM_SHARED_LDFLAGS="-shared -Wl,-soname -Wl," | PLATFORM_SHARED_LDFLAGS="-shared -Wl,-soname -Wl," | ||||
PLATFORM_SHARED_CFLAGS="-fPIC" | PLATFORM_SHARED_CFLAGS="-fPIC" | ||||
PLATFORM_SHARED_VERSIONED=true | PLATFORM_SHARED_VERSIONED=true | ||||
PLATFORM_SSEFLAGS= | |||||
MEMCMP_FLAG= | MEMCMP_FLAG= | ||||
if [ "$CXX" = "g++" ]; then | if [ "$CXX" = "g++" ]; then | ||||
# Use libc's memcmp instead of GCC's memcmp. This results in ~40% | # Use libc's memcmp instead of GCC's memcmp. This results in ~40% | ||||
# performance improvement on readrandom under gcc 4.4.3 on Linux/x86. | # performance improvement on readrandom under gcc 4.4.3 on Linux/x86. | ||||
MEMCMP_FLAG="-fno-builtin-memcmp" | MEMCMP_FLAG="-fno-builtin-memcmp" | ||||
fi | fi | ||||
case "$TARGET_OS" in | case "$TARGET_OS" in | ||||
CYGWIN_*) | CYGWIN_*) | ||||
PLATFORM=OS_LINUX | PLATFORM=OS_LINUX | ||||
COMMON_FLAGS="$MEMCMP_FLAG -lpthread -DOS_LINUX -DCYGWIN" | COMMON_FLAGS="$MEMCMP_FLAG -lpthread -DOS_LINUX -DCYGWIN" | ||||
PLATFORM_LDFLAGS="-lpthread" | PLATFORM_LDFLAGS="-lpthread" | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
;; | ;; | ||||
Darwin) | Darwin) | ||||
PLATFORM=OS_MACOSX | PLATFORM=OS_MACOSX | ||||
COMMON_FLAGS="$MEMCMP_FLAG -DOS_MACOSX" | COMMON_FLAGS="$MEMCMP_FLAG -DOS_MACOSX" | ||||
PLATFORM_SHARED_EXT=dylib | PLATFORM_SHARED_EXT=dylib | ||||
[ -z "$INSTALL_PATH" ] && INSTALL_PATH=`pwd` | [ -z "$INSTALL_PATH" ] && INSTALL_PATH=`pwd` | ||||
PLATFORM_SHARED_LDFLAGS="-dynamiclib -install_name $INSTALL_PATH/" | PLATFORM_SHARED_LDFLAGS="-dynamiclib -install_name $INSTALL_PATH/" | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
;; | ;; | ||||
Linux) | Linux) | ||||
PLATFORM=OS_LINUX | PLATFORM=OS_LINUX | ||||
COMMON_FLAGS="$MEMCMP_FLAG -pthread -DOS_LINUX" | COMMON_FLAGS="$MEMCMP_FLAG -pthread -DOS_LINUX" | ||||
PLATFORM_LDFLAGS="-pthread" | PLATFORM_LDFLAGS="-pthread" | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
;; | ;; | ||||
SunOS) | SunOS) | ||||
PLATFORM=OS_SOLARIS | PLATFORM=OS_SOLARIS | ||||
COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_SOLARIS" | COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_SOLARIS" | ||||
PLATFORM_LIBS="-lpthread -lrt" | PLATFORM_LIBS="-lpthread -lrt" | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
;; | ;; | ||||
FreeBSD) | FreeBSD) | ||||
PLATFORM=OS_FREEBSD | PLATFORM=OS_FREEBSD | ||||
COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_FREEBSD" | COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_FREEBSD" | ||||
PLATFORM_LIBS="-lpthread" | PLATFORM_LIBS="-lpthread" | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
;; | ;; | ||||
GNU/kFreeBSD) | GNU/kFreeBSD) | ||||
PLATFORM=OS_KFREEBSD | PLATFORM=OS_KFREEBSD | ||||
COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_KFREEBSD" | COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_KFREEBSD" | ||||
PLATFORM_LIBS="-lpthread" | PLATFORM_LIBS="-lpthread" | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
;; | ;; | ||||
NetBSD) | NetBSD) | ||||
PLATFORM=OS_NETBSD | PLATFORM=OS_NETBSD | ||||
COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_NETBSD" | COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_NETBSD" | ||||
PLATFORM_LIBS="-lpthread -lgcc_s" | PLATFORM_LIBS="-lpthread -lgcc_s" | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
;; | ;; | ||||
OpenBSD) | OpenBSD) | ||||
PLATFORM=OS_OPENBSD | PLATFORM=OS_OPENBSD | ||||
COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_OPENBSD" | COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_OPENBSD" | ||||
PLATFORM_LDFLAGS="-pthread" | PLATFORM_LDFLAGS="-pthread" | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
;; | ;; | ||||
DragonFly) | DragonFly) | ||||
PLATFORM=OS_DRAGONFLYBSD | PLATFORM=OS_DRAGONFLYBSD | ||||
COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_DRAGONFLYBSD" | COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_DRAGONFLYBSD" | ||||
PLATFORM_LIBS="-lpthread" | PLATFORM_LIBS="-lpthread" | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
;; | ;; | ||||
OS_ANDROID_CROSSCOMPILE) | OS_ANDROID_CROSSCOMPILE) | ||||
PLATFORM=OS_ANDROID | PLATFORM=OS_ANDROID | ||||
COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_ANDROID -DLEVELDB_PLATFORM_POSIX" | COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_ANDROID -DLEVELDB_PLATFORM_POSIX" | ||||
PLATFORM_LDFLAGS="" # All pthread features are in the Android C library | PLATFORM_LDFLAGS="" # All pthread features are in the Android C library | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
CROSS_COMPILE=true | CROSS_COMPILE=true | ||||
;; | ;; | ||||
HP-UX) | HP-UX) | ||||
PLATFORM=OS_HPUX | PLATFORM=OS_HPUX | ||||
COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_HPUX" | COMMON_FLAGS="$MEMCMP_FLAG -D_REENTRANT -DOS_HPUX" | ||||
PLATFORM_LDFLAGS="-pthread" | PLATFORM_LDFLAGS="-pthread" | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
# man ld: +h internal_name | # man ld: +h internal_name | ||||
PLATFORM_SHARED_LDFLAGS="-shared -Wl,+h -Wl," | PLATFORM_SHARED_LDFLAGS="-shared -Wl,+h -Wl," | ||||
;; | ;; | ||||
IOS) | IOS) | ||||
PLATFORM=IOS | PLATFORM=IOS | ||||
COMMON_FLAGS="$MEMCMP_FLAG -DOS_MACOSX" | COMMON_FLAGS="$MEMCMP_FLAG -DOS_MACOSX" | ||||
[ -z "$INSTALL_PATH" ] && INSTALL_PATH=`pwd` | [ -z "$INSTALL_PATH" ] && INSTALL_PATH=`pwd` | ||||
PORT_FILE=port/port_posix.cc | PORT_FILE=port/port_posix.cc | ||||
PORT_SSE_FILE=port/port_posix_sse.cc | |||||
PLATFORM_SHARED_EXT= | PLATFORM_SHARED_EXT= | ||||
PLATFORM_SHARED_LDFLAGS= | PLATFORM_SHARED_LDFLAGS= | ||||
PLATFORM_SHARED_CFLAGS= | PLATFORM_SHARED_CFLAGS= | ||||
PLATFORM_SHARED_VERSIONED= | PLATFORM_SHARED_VERSIONED= | ||||
;; | ;; | ||||
OS_WINDOWS_CROSSCOMPILE | NATIVE_WINDOWS) | OS_WINDOWS_CROSSCOMPILE | NATIVE_WINDOWS) | ||||
PLATFORM=OS_WINDOWS | PLATFORM=OS_WINDOWS | ||||
COMMON_FLAGS="-fno-builtin-memcmp -D_REENTRANT -DOS_WINDOWS -DLEVELDB_PLATFORM_WINDOWS -DWINVER=0x0500 -D__USE_MINGW_ANSI_STDIO=1" | COMMON_FLAGS="-fno-builtin-memcmp -D_REENTRANT -DOS_WINDOWS -DLEVELDB_PLATFORM_WINDOWS -DWINVER=0x0500 -D__USE_MINGW_ANSI_STDIO=1" | ||||
Show All 18 Lines | |||||
PRUNE_BENCH="-name *_bench.cc -prune" | PRUNE_BENCH="-name *_bench.cc -prune" | ||||
PRUNE_TOOL="-name leveldbutil.cc -prune" | PRUNE_TOOL="-name leveldbutil.cc -prune" | ||||
PORTABLE_FILES=`find $DIRS $PRUNE_TEST -o $PRUNE_BENCH -o $PRUNE_TOOL -o -name '*.cc' -print | sort | sed "s,^$PREFIX/,," | tr "\n" " "` | PORTABLE_FILES=`find $DIRS $PRUNE_TEST -o $PRUNE_BENCH -o $PRUNE_TOOL -o -name '*.cc' -print | sort | sed "s,^$PREFIX/,," | tr "\n" " "` | ||||
set +f # re-enable globbing | set +f # re-enable globbing | ||||
# The sources consist of the portable files, plus the platform-specific port | # The sources consist of the portable files, plus the platform-specific port | ||||
# file. | # file. | ||||
echo "SOURCES=$PORTABLE_FILES $PORT_FILE" >> $OUTPUT | echo "SOURCES=$PORTABLE_FILES $PORT_FILE $PORT_SSE_FILE" >> $OUTPUT | ||||
echo "MEMENV_SOURCES=helpers/memenv/memenv.cc" >> $OUTPUT | echo "MEMENV_SOURCES=helpers/memenv/memenv.cc" >> $OUTPUT | ||||
if [ "$CROSS_COMPILE" = "true" ]; then | if [ "$CROSS_COMPILE" = "true" ]; then | ||||
# Cross-compiling; do not try any compilation tests. | # Cross-compiling; do not try any compilation tests. | ||||
true | true | ||||
else | else | ||||
CXXOUTPUT="${TMPDIR}/leveldb_build_detect_platform-cxx.$$" | CXXOUTPUT="${TMPDIR}/leveldb_build_detect_platform-cxx.$$" | ||||
Show All 14 Lines | EOF | ||||
$CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -ltcmalloc 2>/dev/null <<EOF | $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -ltcmalloc 2>/dev/null <<EOF | ||||
int main() {} | int main() {} | ||||
EOF | EOF | ||||
if [ "$?" = 0 ]; then | if [ "$?" = 0 ]; then | ||||
PLATFORM_LIBS="$PLATFORM_LIBS -ltcmalloc" | PLATFORM_LIBS="$PLATFORM_LIBS -ltcmalloc" | ||||
fi | fi | ||||
rm -f $CXXOUTPUT 2>/dev/null | rm -f $CXXOUTPUT 2>/dev/null | ||||
# Test if gcc SSE 4.2 is supported | |||||
$CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -msse4.2 2>/dev/null <<EOF | |||||
int main() {} | |||||
EOF | |||||
if [ "$?" = 0 ]; then | |||||
PLATFORM_SSEFLAGS="-msse4.2" | |||||
fi | |||||
rm -f $CXXOUTPUT 2>/dev/null | |||||
fi | |||||
# Use the SSE 4.2 CRC32C intrinsics iff runtime checks indicate compiler supports them. | |||||
if [ -n "$PLATFORM_SSEFLAGS" ]; then | |||||
PLATFORM_SSEFLAGS="$PLATFORM_SSEFLAGS -DLEVELDB_PLATFORM_POSIX_SSE" | |||||
fi | fi | ||||
PLATFORM_CCFLAGS="$PLATFORM_CCFLAGS $COMMON_FLAGS" | PLATFORM_CCFLAGS="$PLATFORM_CCFLAGS $COMMON_FLAGS" | ||||
PLATFORM_CXXFLAGS="$PLATFORM_CXXFLAGS $COMMON_FLAGS" | PLATFORM_CXXFLAGS="$PLATFORM_CXXFLAGS $COMMON_FLAGS" | ||||
echo "CC=$CC" >> $OUTPUT | echo "CC=$CC" >> $OUTPUT | ||||
echo "CXX=$CXX" >> $OUTPUT | echo "CXX=$CXX" >> $OUTPUT | ||||
echo "PLATFORM=$PLATFORM" >> $OUTPUT | echo "PLATFORM=$PLATFORM" >> $OUTPUT | ||||
echo "PLATFORM_LDFLAGS=$PLATFORM_LDFLAGS" >> $OUTPUT | echo "PLATFORM_LDFLAGS=$PLATFORM_LDFLAGS" >> $OUTPUT | ||||
echo "PLATFORM_LIBS=$PLATFORM_LIBS" >> $OUTPUT | echo "PLATFORM_LIBS=$PLATFORM_LIBS" >> $OUTPUT | ||||
echo "PLATFORM_CCFLAGS=$PLATFORM_CCFLAGS" >> $OUTPUT | echo "PLATFORM_CCFLAGS=$PLATFORM_CCFLAGS" >> $OUTPUT | ||||
echo "PLATFORM_CXXFLAGS=$PLATFORM_CXXFLAGS" >> $OUTPUT | echo "PLATFORM_CXXFLAGS=$PLATFORM_CXXFLAGS" >> $OUTPUT | ||||
echo "PLATFORM_SSEFLAGS=$PLATFORM_SSEFLAGS" >> $OUTPUT | |||||
echo "PLATFORM_SHARED_CFLAGS=$PLATFORM_SHARED_CFLAGS" >> $OUTPUT | echo "PLATFORM_SHARED_CFLAGS=$PLATFORM_SHARED_CFLAGS" >> $OUTPUT | ||||
echo "PLATFORM_SHARED_EXT=$PLATFORM_SHARED_EXT" >> $OUTPUT | echo "PLATFORM_SHARED_EXT=$PLATFORM_SHARED_EXT" >> $OUTPUT | ||||
echo "PLATFORM_SHARED_LDFLAGS=$PLATFORM_SHARED_LDFLAGS" >> $OUTPUT | echo "PLATFORM_SHARED_LDFLAGS=$PLATFORM_SHARED_LDFLAGS" >> $OUTPUT | ||||
echo "PLATFORM_SHARED_VERSIONED=$PLATFORM_SHARED_VERSIONED" >> $OUTPUT | echo "PLATFORM_SHARED_VERSIONED=$PLATFORM_SHARED_VERSIONED" >> $OUTPUT |