- #!/bin/sh
-
- # Detects OS we're compiling on and generates build_config.mk,
- # which in turn gets read while processing Makefile.
-
- # build_config.mk will set the following variables:
- # - PORT_CFLAGS will either set:
- # -DLEVELDB_PLATFORM_POSIX if cstatomic is present
- # -DLEVELDB_PLATFORM_NOATOMIC if it is not
- # - PLATFORM_CFLAGS with compiler flags for the platform
- # - PLATFORM_LDFLAGS with linker flags for the platform
-
- # Delete existing build_config.mk
- rm -f build_config.mk
-
- # Detect OS
- case `uname -s` in
- Darwin)
- PLATFORM=OS_MACOSX
- echo "PLATFORM_CFLAGS=-DOS_MACOSX" >> build_config.mk
- echo "PLATFORM_LDFLAGS=" >> build_config.mk
- ;;
- Linux)
- PLATFORM=OS_LINUX
- echo "PLATFORM_CFLAGS=-pthread -DOS_LINUX" >> build_config.mk
- echo "PLATFORM_LDFLAGS=-lpthread" >> build_config.mk
- ;;
- SunOS)
- PLATFORM=OS_SOLARIS
- echo "PLATFORM_CFLAGS=-D_REENTRANT -DOS_SOLARIS" >> build_config.mk
- echo "PLATFORM_LDFLAGS=-lpthread -lrt" >> build_config.mk
- ;;
- FreeBSD)
- PLATFORM=OS_FREEBSD
- echo "PLATFORM_CFLAGS=-D_REENTRANT -DOS_FREEBSD" >> build_config.mk
- echo "PLATFORM_LDFLAGS=-lpthread" >> build_config.mk
- ;;
- GNU/kFreeBSD)
- PLATFORM=OS_FREEBSD
- echo "PLATFORM_CFLAGS=-pthread -DOS_FREEBSD" >> build_config.mk
- echo "PLATFORM_LDFLAGS=-lpthread -lrt" >> build_config.mk
- ;;
- *)
- echo "Unknown platform!"
- exit 1
- esac
-
- echo "PLATFORM=$PLATFORM" >> build_config.mk
-
- # On GCC, use libc's memcmp, not GCC's memcmp
- PORT_CFLAGS="-fno-builtin-memcmp"
-
- # Detect C++0x -- this determines whether we'll use port_noatomic.h
- # or port_posix.h by:
- # 1. Rrying to compile with -std=c++0x and including <cstdatomic>.
- # 2. If g++ returns error code, we know to use port_posix.h
- g++ $CFLAGS -std=c++0x -x c++ - -o /dev/null 2>/dev/null <<EOF
- #include <cstdatomic>
- int main() {}
- EOF
- if [ "$?" = 0 ]; then
- PORT_CFLAGS="$PORT_CFLAGS -DLEVELDB_PLATFORM_POSIX -DLEVELDB_CSTDATOMIC_PRESENT -std=c++0x"
- else
- PORT_CFLAGS="$PORT_CFLAGS -DLEVELDB_PLATFORM_POSIX"
- fi
-
- # Test whether Snappy library is installed
- # http://code.google.com/p/snappy/
- g++ $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
- #include <snappy.h>
- int main() {}
- EOF
- if [ "$?" = 0 ]; then
- echo "SNAPPY=1" >> build_config.mk
- else
- echo "SNAPPY=0" >> build_config.mk
- fi
-
- echo "PORT_CFLAGS=$PORT_CFLAGS" >> build_config.mk
|