FreeBSD build support for RocksDB and RocksJava
Summary: Tested on a clean FreeBSD 11.01 x64. Closes https://github.com/facebook/rocksdb/pull/1423 Closes https://github.com/facebook/rocksdb/pull/3357 Differential Revision: D6705868 Pulled By: sagar0 fbshipit-source-id: cbccbbdafd4f42922512ca03619a5d5583a425fd
This commit is contained in:
parent
c33a483f11
commit
22a24c0294
35
INSTALL.md
35
INSTALL.md
@ -107,6 +107,41 @@ to build a portable binary, add `PORTABLE=1` before your make commands, like thi
|
|||||||
* run `brew tap homebrew/versions; brew install gcc48 --use-llvm` to install gcc 4.8 (or higher).
|
* run `brew tap homebrew/versions; brew install gcc48 --use-llvm` to install gcc 4.8 (or higher).
|
||||||
* run `brew install rocksdb`
|
* run `brew install rocksdb`
|
||||||
|
|
||||||
|
* **FreeBSD** (11.01):
|
||||||
|
|
||||||
|
* You can either install RocksDB from the Ports system using `cd /usr/ports/databases/rocksdb && make install`, or you can follow the details below to install dependencies and compile from source code:
|
||||||
|
|
||||||
|
* Install the dependencies for RocksDB:
|
||||||
|
|
||||||
|
export BATCH=YES
|
||||||
|
cd /usr/ports/devel/gmake && make install
|
||||||
|
cd /usr/ports/devel/gflags && make install
|
||||||
|
|
||||||
|
cd /usr/ports/archivers/snappy && make install
|
||||||
|
cd /usr/ports/archivers/bzip2 && make install
|
||||||
|
cd /usr/ports/archivers/liblz4 && make install
|
||||||
|
cd /usr/ports/archivesrs/zstd && make install
|
||||||
|
|
||||||
|
cd /usr/ports/devel/git && make install
|
||||||
|
|
||||||
|
|
||||||
|
* Install the dependencies for RocksJava (optional):
|
||||||
|
|
||||||
|
export BATCH=yes
|
||||||
|
cd /usr/ports/java/openjdk7 && make install
|
||||||
|
|
||||||
|
* Build RocksDB from source:
|
||||||
|
cd ~
|
||||||
|
git clone https://github.com/facebook/rocksdb.git
|
||||||
|
cd rocksdb
|
||||||
|
gmake static_lib
|
||||||
|
|
||||||
|
* Build RocksJava from source (optional):
|
||||||
|
cd rocksdb
|
||||||
|
export JAVA_HOME=/usr/local/openjdk7
|
||||||
|
gmake rocksdbjava
|
||||||
|
|
||||||
|
|
||||||
* **iOS**:
|
* **iOS**:
|
||||||
* Run: `TARGET_OS=IOS make static_lib`. When building the project which uses rocksdb iOS library, make sure to define two important pre-processing macros: `ROCKSDB_LITE` and `IOS_CROSS_COMPILE`.
|
* Run: `TARGET_OS=IOS make static_lib`. When building the project which uses rocksdb iOS library, make sure to define two important pre-processing macros: `ROCKSDB_LITE` and `IOS_CROSS_COMPILE`.
|
||||||
|
|
||||||
|
12
Makefile
12
Makefile
@ -1574,7 +1574,7 @@ else
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM), OS_FREEBSD)
|
ifeq ($(PLATFORM), OS_FREEBSD)
|
||||||
JAVA_INCLUDE += -I$(JAVA_HOME)/include/freebsd
|
JAVA_INCLUDE = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/freebsd
|
||||||
ROCKSDBJNILIB = librocksdbjni-freebsd$(ARCH).so
|
ROCKSDBJNILIB = librocksdbjni-freebsd$(ARCH).so
|
||||||
ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-freebsd$(ARCH).jar
|
ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-freebsd$(ARCH).jar
|
||||||
endif
|
endif
|
||||||
@ -1600,7 +1600,7 @@ libz.a:
|
|||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
tar xvzf zlib-$(ZLIB_VER).tar.gz
|
tar xvzf zlib-$(ZLIB_VER).tar.gz
|
||||||
cd zlib-$(ZLIB_VER) && CFLAGS='-fPIC ${EXTRA_CFLAGS}' LDFLAGS='${EXTRA_LDFLAGS}' ./configure --static && make
|
cd zlib-$(ZLIB_VER) && CFLAGS='-fPIC ${EXTRA_CFLAGS}' LDFLAGS='${EXTRA_LDFLAGS}' ./configure --static && $(MAKE)
|
||||||
cp zlib-$(ZLIB_VER)/libz.a .
|
cp zlib-$(ZLIB_VER)/libz.a .
|
||||||
|
|
||||||
libbz2.a:
|
libbz2.a:
|
||||||
@ -1612,7 +1612,7 @@ libbz2.a:
|
|||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
tar xvzf bzip2-$(BZIP2_VER).tar.gz
|
tar xvzf bzip2-$(BZIP2_VER).tar.gz
|
||||||
cd bzip2-$(BZIP2_VER) && make CFLAGS='-fPIC -O2 -g -D_FILE_OFFSET_BITS=64 ${EXTRA_CFLAGS}' AR='ar ${EXTRA_ARFLAGS}'
|
cd bzip2-$(BZIP2_VER) && $(MAKE) CFLAGS='-fPIC -O2 -g -D_FILE_OFFSET_BITS=64 ${EXTRA_CFLAGS}' AR='ar ${EXTRA_ARFLAGS}'
|
||||||
cp bzip2-$(BZIP2_VER)/libbz2.a .
|
cp bzip2-$(BZIP2_VER)/libbz2.a .
|
||||||
|
|
||||||
libsnappy.a:
|
libsnappy.a:
|
||||||
@ -1625,7 +1625,7 @@ libsnappy.a:
|
|||||||
fi
|
fi
|
||||||
tar xvzf snappy-$(SNAPPY_VER).tar.gz
|
tar xvzf snappy-$(SNAPPY_VER).tar.gz
|
||||||
cd snappy-$(SNAPPY_VER) && CFLAGS='${EXTRA_CFLAGS}' CXXFLAGS='${EXTRA_CXXFLAGS}' LDFLAGS='${EXTRA_LDFLAGS}' ./configure --with-pic --enable-static --disable-shared
|
cd snappy-$(SNAPPY_VER) && CFLAGS='${EXTRA_CFLAGS}' CXXFLAGS='${EXTRA_CXXFLAGS}' LDFLAGS='${EXTRA_LDFLAGS}' ./configure --with-pic --enable-static --disable-shared
|
||||||
cd snappy-$(SNAPPY_VER) && make ${SNAPPY_MAKE_TARGET}
|
cd snappy-$(SNAPPY_VER) && $(MAKE) ${SNAPPY_MAKE_TARGET}
|
||||||
cp snappy-$(SNAPPY_VER)/.libs/libsnappy.a .
|
cp snappy-$(SNAPPY_VER)/.libs/libsnappy.a .
|
||||||
|
|
||||||
liblz4.a:
|
liblz4.a:
|
||||||
@ -1638,7 +1638,7 @@ liblz4.a:
|
|||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
tar xvzf lz4-$(LZ4_VER).tar.gz
|
tar xvzf lz4-$(LZ4_VER).tar.gz
|
||||||
cd lz4-$(LZ4_VER)/lib && make CFLAGS='-fPIC -O2 ${EXTRA_CFLAGS}' all
|
cd lz4-$(LZ4_VER)/lib && $(MAKE) CFLAGS='-fPIC -O2 ${EXTRA_CFLAGS}' all
|
||||||
cp lz4-$(LZ4_VER)/lib/liblz4.a .
|
cp lz4-$(LZ4_VER)/lib/liblz4.a .
|
||||||
|
|
||||||
libzstd.a:
|
libzstd.a:
|
||||||
@ -1651,7 +1651,7 @@ libzstd.a:
|
|||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
tar xvzf zstd-$(ZSTD_VER).tar.gz
|
tar xvzf zstd-$(ZSTD_VER).tar.gz
|
||||||
cd zstd-$(ZSTD_VER)/lib && DESTDIR=. PREFIX= make CFLAGS='-fPIC -O2 ${EXTRA_CFLAGS}' install
|
cd zstd-$(ZSTD_VER)/lib && DESTDIR=. PREFIX= $(MAKE) CFLAGS='-fPIC -O2 ${EXTRA_CFLAGS}' install
|
||||||
cp zstd-$(ZSTD_VER)/lib/libzstd.a .
|
cp zstd-$(ZSTD_VER)/lib/libzstd.a .
|
||||||
|
|
||||||
# A version of each $(LIBOBJECTS) compiled with -fPIC and a fixed set of static compression libraries
|
# A version of each $(LIBOBJECTS) compiled with -fPIC and a fixed set of static compression libraries
|
||||||
|
@ -141,6 +141,7 @@ case "$TARGET_OS" in
|
|||||||
;;
|
;;
|
||||||
FreeBSD)
|
FreeBSD)
|
||||||
PLATFORM=OS_FREEBSD
|
PLATFORM=OS_FREEBSD
|
||||||
|
CXX=clang++
|
||||||
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_FREEBSD"
|
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_FREEBSD"
|
||||||
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread"
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread"
|
||||||
# PORT_FILES=port/freebsd/freebsd_specific.cc
|
# PORT_FILES=port/freebsd/freebsd_specific.cc
|
||||||
|
@ -12,6 +12,10 @@ public class Environment {
|
|||||||
return (OS.contains("win"));
|
return (OS.contains("win"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isFreeBSD() {
|
||||||
|
return (OS.contains("freebsd"));
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isMac() {
|
public static boolean isMac() {
|
||||||
return (OS.contains("mac"));
|
return (OS.contains("mac"));
|
||||||
}
|
}
|
||||||
@ -54,6 +58,8 @@ public class Environment {
|
|||||||
}
|
}
|
||||||
} else if (isMac()) {
|
} else if (isMac()) {
|
||||||
return String.format("%sjni-osx", name);
|
return String.format("%sjni-osx", name);
|
||||||
|
} else if (isFreeBSD()) {
|
||||||
|
return String.format("%sjni-freebsd%s", name, is64Bit() ? "64" : "32");
|
||||||
} else if (isAix() && is64Bit()) {
|
} else if (isAix() && is64Bit()) {
|
||||||
return String.format("%sjni-aix64", name);
|
return String.format("%sjni-aix64", name);
|
||||||
} else if (isSolaris()) {
|
} else if (isSolaris()) {
|
||||||
@ -71,7 +77,7 @@ public class Environment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String appendLibOsSuffix(final String libraryFileName, final boolean shared) {
|
private static String appendLibOsSuffix(final String libraryFileName, final boolean shared) {
|
||||||
if (isUnix() || isAix() || isSolaris()) {
|
if (isUnix() || isAix() || isSolaris() || isFreeBSD()) {
|
||||||
return libraryFileName + ".so";
|
return libraryFileName + ".so";
|
||||||
} else if (isMac()) {
|
} else if (isMac()) {
|
||||||
return libraryFileName + (shared ? ".dylib" : ".jnilib");
|
return libraryFileName + (shared ? ".dylib" : ".jnilib");
|
||||||
|
@ -32,7 +32,7 @@ namespace port {
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
#ifdef OS_LINUX
|
#if defined(OS_LINUX) || defined(OS_FREEBSD)
|
||||||
const char* GetExecutableName() {
|
const char* GetExecutableName() {
|
||||||
static char name[1024];
|
static char name[1024];
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user