* run `brew tap homebrew/versions; brew install gcc48 --use-llvm` to install gcc 4.8 (or higher).
* 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**:
* 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`.
endif
endif
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
ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-freebsd$(ARCH).jar
endif
exit 1; \
fi
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 .
libbz2.a:
exit 1; \
fi
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 .
libsnappy.a:
fi
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) && make ${SNAPPY_MAKE_TARGET}
+ cd snappy-$(SNAPPY_VER) && $(MAKE) ${SNAPPY_MAKE_TARGET}
cp snappy-$(SNAPPY_VER)/.libs/libsnappy.a .
liblz4.a:
exit 1; \
fi
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 .
libzstd.a:
exit 1; \
fi
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 .
# A version of each $(LIBOBJECTS) compiled with -fPIC and a fixed set of static compression libraries
;;
FreeBSD)
PLATFORM=OS_FREEBSD
+ CXX=clang++
COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_FREEBSD"
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread"
# PORT_FILES=port/freebsd/freebsd_specific.cc
return (OS.contains("win"));
}
+ public static boolean isFreeBSD() {
+ return (OS.contains("freebsd"));
+ }
+
public static boolean isMac() {
return (OS.contains("mac"));
}
}
} else if (isMac()) {
return String.format("%sjni-osx", name);
+ } else if (isFreeBSD()) {
+ return String.format("%sjni-freebsd%s", name, is64Bit() ? "64" : "32");
} else if (isAix() && is64Bit()) {
return String.format("%sjni-aix64", name);
} else if (isSolaris()) {
}
private static String appendLibOsSuffix(final String libraryFileName, final boolean shared) {
- if (isUnix() || isAix() || isSolaris()) {
+ if (isUnix() || isAix() || isSolaris() || isFreeBSD()) {
return libraryFileName + ".so";
} else if (isMac()) {
return libraryFileName + (shared ? ".dylib" : ".jnilib");
namespace {
-#ifdef OS_LINUX
+#if defined(OS_LINUX) || defined(OS_FREEBSD)
const char* GetExecutableName() {
static char name[1024];