1NATIVE_JAVA_CLASSES = \ 2 org.rocksdb.AbstractCompactionFilter\ 3 org.rocksdb.AbstractCompactionFilterFactory\ 4 org.rocksdb.AbstractComparator\ 5 org.rocksdb.AbstractSlice\ 6 org.rocksdb.AbstractTableFilter\ 7 org.rocksdb.AbstractTraceWriter\ 8 org.rocksdb.AbstractTransactionNotifier\ 9 org.rocksdb.AbstractWalFilter\ 10 org.rocksdb.BackupEngine\ 11 org.rocksdb.BackupableDBOptions\ 12 org.rocksdb.BlockBasedTableConfig\ 13 org.rocksdb.BloomFilter\ 14 org.rocksdb.Checkpoint\ 15 org.rocksdb.ClockCache\ 16 org.rocksdb.CassandraCompactionFilter\ 17 org.rocksdb.CassandraValueMergeOperator\ 18 org.rocksdb.ColumnFamilyHandle\ 19 org.rocksdb.ColumnFamilyOptions\ 20 org.rocksdb.CompactionJobInfo\ 21 org.rocksdb.CompactionJobStats\ 22 org.rocksdb.CompactionOptions\ 23 org.rocksdb.CompactionOptionsFIFO\ 24 org.rocksdb.CompactionOptionsUniversal\ 25 org.rocksdb.CompactRangeOptions\ 26 org.rocksdb.ComparatorOptions\ 27 org.rocksdb.CompressionOptions\ 28 org.rocksdb.DBOptions\ 29 org.rocksdb.DirectSlice\ 30 org.rocksdb.Env\ 31 org.rocksdb.EnvOptions\ 32 org.rocksdb.FlushOptions\ 33 org.rocksdb.Filter\ 34 org.rocksdb.IngestExternalFileOptions\ 35 org.rocksdb.HashLinkedListMemTableConfig\ 36 org.rocksdb.HashSkipListMemTableConfig\ 37 org.rocksdb.HdfsEnv\ 38 org.rocksdb.Logger\ 39 org.rocksdb.LRUCache\ 40 org.rocksdb.MemoryUsageType\ 41 org.rocksdb.MemoryUtil\ 42 org.rocksdb.MergeOperator\ 43 org.rocksdb.NativeComparatorWrapper\ 44 org.rocksdb.OptimisticTransactionDB\ 45 org.rocksdb.OptimisticTransactionOptions\ 46 org.rocksdb.Options\ 47 org.rocksdb.OptionsUtil\ 48 org.rocksdb.PersistentCache\ 49 org.rocksdb.PlainTableConfig\ 50 org.rocksdb.RateLimiter\ 51 org.rocksdb.ReadOptions\ 52 org.rocksdb.RemoveEmptyValueCompactionFilter\ 53 org.rocksdb.RestoreOptions\ 54 org.rocksdb.RocksCallbackObject\ 55 org.rocksdb.RocksDB\ 56 org.rocksdb.RocksEnv\ 57 org.rocksdb.RocksIterator\ 58 org.rocksdb.RocksMemEnv\ 59 org.rocksdb.SkipListMemTableConfig\ 60 org.rocksdb.Slice\ 61 org.rocksdb.SstFileManager\ 62 org.rocksdb.SstFileWriter\ 63 org.rocksdb.SstFileReader\ 64 org.rocksdb.SstFileReaderIterator\ 65 org.rocksdb.Statistics\ 66 org.rocksdb.ThreadStatus\ 67 org.rocksdb.TimedEnv\ 68 org.rocksdb.Transaction\ 69 org.rocksdb.TransactionDB\ 70 org.rocksdb.TransactionDBOptions\ 71 org.rocksdb.TransactionOptions\ 72 org.rocksdb.TransactionLogIterator\ 73 org.rocksdb.TtlDB\ 74 org.rocksdb.VectorMemTableConfig\ 75 org.rocksdb.Snapshot\ 76 org.rocksdb.StringAppendOperator\ 77 org.rocksdb.UInt64AddOperator\ 78 org.rocksdb.WriteBatch\ 79 org.rocksdb.WriteBatch.Handler\ 80 org.rocksdb.WriteOptions\ 81 org.rocksdb.WriteBatchWithIndex\ 82 org.rocksdb.WriteBufferManager\ 83 org.rocksdb.WBWIRocksIterator 84 85NATIVE_JAVA_TEST_CLASSES = org.rocksdb.RocksDBExceptionTest\ 86 org.rocksdb.NativeComparatorWrapperTest.NativeStringComparatorWrapper\ 87 org.rocksdb.WriteBatchTest\ 88 org.rocksdb.WriteBatchTestInternalHelper 89 90ROCKSDB_MAJOR = $(shell egrep "ROCKSDB_MAJOR.[0-9]" ../include/rocksdb/version.h | cut -d ' ' -f 3) 91ROCKSDB_MINOR = $(shell egrep "ROCKSDB_MINOR.[0-9]" ../include/rocksdb/version.h | cut -d ' ' -f 3) 92ROCKSDB_PATCH = $(shell egrep "ROCKSDB_PATCH.[0-9]" ../include/rocksdb/version.h | cut -d ' ' -f 3) 93 94NATIVE_INCLUDE = ./include 95ARCH := $(shell getconf LONG_BIT) 96ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-linux$(ARCH).jar 97ifeq ($(PLATFORM), OS_MACOSX) 98ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-osx.jar 99endif 100 101JAVA_TESTS = \ 102 org.rocksdb.BackupableDBOptionsTest\ 103 org.rocksdb.BackupEngineTest\ 104 org.rocksdb.BlockBasedTableConfigTest\ 105 org.rocksdb.BuiltinComparatorTest\ 106 org.rocksdb.util.BytewiseComparatorTest\ 107 org.rocksdb.util.BytewiseComparatorIntTest\ 108 org.rocksdb.CheckPointTest\ 109 org.rocksdb.ClockCacheTest\ 110 org.rocksdb.ColumnFamilyOptionsTest\ 111 org.rocksdb.ColumnFamilyTest\ 112 org.rocksdb.CompactionFilterFactoryTest\ 113 org.rocksdb.CompactionJobInfoTest\ 114 org.rocksdb.CompactionJobStatsTest\ 115 org.rocksdb.CompactionOptionsTest\ 116 org.rocksdb.CompactionOptionsFIFOTest\ 117 org.rocksdb.CompactionOptionsUniversalTest\ 118 org.rocksdb.CompactionPriorityTest\ 119 org.rocksdb.CompactionStopStyleTest\ 120 org.rocksdb.ComparatorOptionsTest\ 121 org.rocksdb.CompressionOptionsTest\ 122 org.rocksdb.CompressionTypesTest\ 123 org.rocksdb.DBOptionsTest\ 124 org.rocksdb.DirectSliceTest\ 125 org.rocksdb.util.EnvironmentTest\ 126 org.rocksdb.EnvOptionsTest\ 127 org.rocksdb.HdfsEnvTest\ 128 org.rocksdb.IngestExternalFileOptionsTest\ 129 org.rocksdb.util.IntComparatorTest\ 130 org.rocksdb.util.JNIComparatorTest\ 131 org.rocksdb.FilterTest\ 132 org.rocksdb.FlushTest\ 133 org.rocksdb.InfoLogLevelTest\ 134 org.rocksdb.KeyMayExistTest\ 135 org.rocksdb.LoggerTest\ 136 org.rocksdb.LRUCacheTest\ 137 org.rocksdb.MemoryUtilTest\ 138 org.rocksdb.MemTableTest\ 139 org.rocksdb.MergeTest\ 140 org.rocksdb.MixedOptionsTest\ 141 org.rocksdb.MutableColumnFamilyOptionsTest\ 142 org.rocksdb.MutableDBOptionsTest\ 143 org.rocksdb.NativeComparatorWrapperTest\ 144 org.rocksdb.NativeLibraryLoaderTest\ 145 org.rocksdb.OptimisticTransactionTest\ 146 org.rocksdb.OptimisticTransactionDBTest\ 147 org.rocksdb.OptimisticTransactionOptionsTest\ 148 org.rocksdb.OptionsUtilTest\ 149 org.rocksdb.OptionsTest\ 150 org.rocksdb.PlainTableConfigTest\ 151 org.rocksdb.RateLimiterTest\ 152 org.rocksdb.ReadOnlyTest\ 153 org.rocksdb.ReadOptionsTest\ 154 org.rocksdb.util.ReverseBytewiseComparatorIntTest\ 155 org.rocksdb.RocksDBTest\ 156 org.rocksdb.RocksDBExceptionTest\ 157 org.rocksdb.DefaultEnvTest\ 158 org.rocksdb.RocksIteratorTest\ 159 org.rocksdb.RocksMemEnvTest\ 160 org.rocksdb.util.SizeUnitTest\ 161 org.rocksdb.SliceTest\ 162 org.rocksdb.SnapshotTest\ 163 org.rocksdb.SstFileManagerTest\ 164 org.rocksdb.SstFileWriterTest\ 165 org.rocksdb.SstFileReaderTest\ 166 org.rocksdb.TableFilterTest\ 167 org.rocksdb.TimedEnvTest\ 168 org.rocksdb.TransactionTest\ 169 org.rocksdb.TransactionDBTest\ 170 org.rocksdb.TransactionOptionsTest\ 171 org.rocksdb.TransactionDBOptionsTest\ 172 org.rocksdb.TransactionLogIteratorTest\ 173 org.rocksdb.TtlDBTest\ 174 org.rocksdb.StatisticsTest\ 175 org.rocksdb.StatisticsCollectorTest\ 176 org.rocksdb.WalFilterTest\ 177 org.rocksdb.WALRecoveryModeTest\ 178 org.rocksdb.WriteBatchHandlerTest\ 179 org.rocksdb.WriteBatchTest\ 180 org.rocksdb.WriteBatchThreadedTest\ 181 org.rocksdb.WriteOptionsTest\ 182 org.rocksdb.WriteBatchWithIndexTest 183 184MAIN_SRC = src/main/java 185TEST_SRC = src/test/java 186OUTPUT = target 187MAIN_CLASSES = $(OUTPUT)/classes 188TEST_CLASSES = $(OUTPUT)/test-classes 189JAVADOC = $(OUTPUT)/apidocs 190 191BENCHMARK_MAIN_SRC = benchmark/src/main/java 192BENCHMARK_OUTPUT = benchmark/target 193BENCHMARK_MAIN_CLASSES = $(BENCHMARK_OUTPUT)/classes 194 195SAMPLES_MAIN_SRC = samples/src/main/java 196SAMPLES_OUTPUT = samples/target 197SAMPLES_MAIN_CLASSES = $(SAMPLES_OUTPUT)/classes 198 199JAVA_TEST_LIBDIR = test-libs 200JAVA_JUNIT_JAR = $(JAVA_TEST_LIBDIR)/junit-4.12.jar 201JAVA_HAMCR_JAR = $(JAVA_TEST_LIBDIR)/hamcrest-core-1.3.jar 202JAVA_MOCKITO_JAR = $(JAVA_TEST_LIBDIR)/mockito-all-1.10.19.jar 203JAVA_CGLIB_JAR = $(JAVA_TEST_LIBDIR)/cglib-2.2.2.jar 204JAVA_ASSERTJ_JAR = $(JAVA_TEST_LIBDIR)/assertj-core-1.7.1.jar 205JAVA_TESTCLASSPATH = $(JAVA_JUNIT_JAR):$(JAVA_HAMCR_JAR):$(JAVA_MOCKITO_JAR):$(JAVA_CGLIB_JAR):$(JAVA_ASSERTJ_JAR) 206 207MVN_LOCAL = ~/.m2/repository 208 209# Set the default JAVA_ARGS to "" for DEBUG_LEVEL=0 210JAVA_ARGS ?= 211 212JAVAC_ARGS ?= 213 214# When debugging add -Xcheck:jni to the java args 215ifneq ($(DEBUG_LEVEL),0) 216 JAVA_ARGS += -ea -Xcheck:jni 217 JAVAC_ARGS += -Xlint:deprecation -Xlint:unchecked 218endif 219 220# Using a Facebook AWS account for S3 storage. (maven.org has a history 221# of failing in Travis builds.) 222DEPS_URL?=https://rocksdb-deps.s3-us-west-2.amazonaws.com/jars 223 224clean: clean-not-downloaded clean-downloaded 225 226clean-not-downloaded: 227 $(AM_V_at)rm -rf $(NATIVE_INCLUDE) 228 $(AM_V_at)rm -rf $(OUTPUT) 229 $(AM_V_at)rm -rf $(BENCHMARK_OUTPUT) 230 $(AM_V_at)rm -rf $(SAMPLES_OUTPUT) 231 232clean-downloaded: 233 $(AM_V_at)rm -rf $(JAVA_TEST_LIBDIR) 234 235 236javadocs: java 237 $(AM_V_GEN)mkdir -p $(JAVADOC) 238 $(AM_V_at)javadoc -d $(JAVADOC) -sourcepath $(MAIN_SRC) -subpackages org 239 240javalib: java java_test javadocs 241 242java: 243 $(AM_V_GEN)mkdir -p $(MAIN_CLASSES) 244ifeq ($(shell java -version 2>&1 | grep 1.7.0 > /dev/null; printf $$?), 0) 245 $(AM_V_at)javac $(JAVAC_ARGS) -d $(MAIN_CLASSES)\ 246 $(MAIN_SRC)/org/rocksdb/util/*.java\ 247 $(MAIN_SRC)/org/rocksdb/*.java 248else 249 $(AM_V_at)javac $(JAVAC_ARGS) -h $(NATIVE_INCLUDE) -d $(MAIN_CLASSES)\ 250 $(MAIN_SRC)/org/rocksdb/util/*.java\ 251 $(MAIN_SRC)/org/rocksdb/*.java 252endif 253 $(AM_V_at)@cp ../HISTORY.md ./HISTORY-CPP.md 254 $(AM_V_at)@rm -f ./HISTORY-CPP.md 255ifeq ($(shell java -version 2>&1 | grep 1.7.0 > /dev/null; printf $$?), 0) 256 $(AM_V_at)javah -cp $(MAIN_CLASSES) -d $(NATIVE_INCLUDE) -jni $(NATIVE_JAVA_CLASSES) 257endif 258 259sample: java 260 $(AM_V_GEN)mkdir -p $(SAMPLES_MAIN_CLASSES) 261 $(AM_V_at)javac $(JAVAC_ARGS) -cp $(MAIN_CLASSES) -d $(SAMPLES_MAIN_CLASSES) $(SAMPLES_MAIN_SRC)/RocksDBSample.java 262 $(AM_V_at)@rm -rf /tmp/rocksdbjni 263 $(AM_V_at)@rm -rf /tmp/rocksdbjni_not_found 264 java $(JAVA_ARGS) -Djava.library.path=target -cp $(MAIN_CLASSES):$(SAMPLES_MAIN_CLASSES) RocksDBSample /tmp/rocksdbjni 265 $(AM_V_at)@rm -rf /tmp/rocksdbjni 266 $(AM_V_at)@rm -rf /tmp/rocksdbjni_not_found 267 268column_family_sample: java 269 $(AM_V_GEN)mkdir -p $(SAMPLES_MAIN_CLASSES) 270 $(AM_V_at)javac $(JAVAC_ARGS) -cp $(MAIN_CLASSES) -d $(SAMPLES_MAIN_CLASSES) $(SAMPLES_MAIN_SRC)/RocksDBColumnFamilySample.java 271 $(AM_V_at)@rm -rf /tmp/rocksdbjni 272 java $(JAVA_ARGS) -Djava.library.path=target -cp $(MAIN_CLASSES):$(SAMPLES_MAIN_CLASSES) RocksDBColumnFamilySample /tmp/rocksdbjni 273 $(AM_V_at)@rm -rf /tmp/rocksdbjni 274 275transaction_sample: java 276 $(AM_V_GEN)mkdir -p $(SAMPLES_MAIN_CLASSES) 277 $(AM_V_at)javac -cp $(MAIN_CLASSES) -d $(SAMPLES_MAIN_CLASSES) $(SAMPLES_MAIN_SRC)/TransactionSample.java 278 $(AM_V_at)@rm -rf /tmp/rocksdbjni 279 java -ea -Xcheck:jni -Djava.library.path=target -cp $(MAIN_CLASSES):$(SAMPLES_MAIN_CLASSES) TransactionSample /tmp/rocksdbjni 280 $(AM_V_at)@rm -rf /tmp/rocksdbjni 281 282optimistic_transaction_sample: java 283 $(AM_V_GEN)mkdir -p $(SAMPLES_MAIN_CLASSES) 284 $(AM_V_at)javac -cp $(MAIN_CLASSES) -d $(SAMPLES_MAIN_CLASSES) $(SAMPLES_MAIN_SRC)/OptimisticTransactionSample.java 285 $(AM_V_at)@rm -rf /tmp/rocksdbjni 286 java -ea -Xcheck:jni -Djava.library.path=target -cp $(MAIN_CLASSES):$(SAMPLES_MAIN_CLASSES) OptimisticTransactionSample /tmp/rocksdbjni 287 $(AM_V_at)@rm -rf /tmp/rocksdbjni 288 289resolve_test_deps: 290 test -d "$(JAVA_TEST_LIBDIR)" || mkdir -p "$(JAVA_TEST_LIBDIR)" 291 test -s "$(JAVA_JUNIT_JAR)" || cp $(MVN_LOCAL)/junit/junit/4.12/junit-4.12.jar $(JAVA_TEST_LIBDIR) || curl --fail --insecure --output $(JAVA_JUNIT_JAR) --location $(DEPS_URL)/junit-4.12.jar 292 test -s "$(JAVA_HAMCR_JAR)" || cp $(MVN_LOCAL)/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar $(JAVA_TEST_LIBDIR) || curl --fail --insecure --output $(JAVA_HAMCR_JAR) --location $(DEPS_URL)/hamcrest-core-1.3.jar 293 test -s "$(JAVA_MOCKITO_JAR)" || cp $(MVN_LOCAL)/org/mockito/mockito-all/1.10.19/mockito-all-1.10.19.jar $(JAVA_TEST_LIBDIR) || curl --fail --insecure --output "$(JAVA_MOCKITO_JAR)" --location $(DEPS_URL)/mockito-all-1.10.19.jar 294 test -s "$(JAVA_CGLIB_JAR)" || cp $(MVN_LOCAL)/cglib/cglib/2.2.2/cglib-2.2.2.jar $(JAVA_TEST_LIBDIR) || curl --fail --insecure --output "$(JAVA_CGLIB_JAR)" --location $(DEPS_URL)/cglib-2.2.2.jar 295 test -s "$(JAVA_ASSERTJ_JAR)" || cp $(MVN_LOCAL)/org/assertj/assertj-core/1.7.1/assertj-core-1.7.1.jar $(JAVA_TEST_LIBDIR) || curl --fail --insecure --output "$(JAVA_ASSERTJ_JAR)" --location $(DEPS_URL)/assertj-core-1.7.1.jar 296 297java_test: java resolve_test_deps 298 $(AM_V_GEN)mkdir -p $(TEST_CLASSES) 299ifeq ($(shell java -version 2>&1|grep 1.7.0 >/dev/null; printf $$?),0) 300 $(AM_V_at)javac $(JAVAC_ARGS) -cp $(MAIN_CLASSES):$(JAVA_TESTCLASSPATH) -d $(TEST_CLASSES)\ 301 $(TEST_SRC)/org/rocksdb/test/*.java\ 302 $(TEST_SRC)/org/rocksdb/util/*.java\ 303 $(TEST_SRC)/org/rocksdb/*.java 304 $(AM_V_at)javah -cp $(MAIN_CLASSES):$(TEST_CLASSES) -d $(NATIVE_INCLUDE) -jni $(NATIVE_JAVA_TEST_CLASSES) 305else 306 $(AM_V_at)javac $(JAVAC_ARGS) -cp $(MAIN_CLASSES):$(JAVA_TESTCLASSPATH) -h $(NATIVE_INCLUDE) -d $(TEST_CLASSES)\ 307 $(TEST_SRC)/org/rocksdb/test/*.java\ 308 $(TEST_SRC)/org/rocksdb/util/*.java\ 309 $(TEST_SRC)/org/rocksdb/*.java 310endif 311 312test: java java_test run_test 313 314run_test: 315 java $(JAVA_ARGS) -Djava.library.path=target -cp "$(MAIN_CLASSES):$(TEST_CLASSES):$(JAVA_TESTCLASSPATH):target/*" org.rocksdb.test.RocksJunitRunner $(JAVA_TESTS) 316 317db_bench: java 318 $(AM_V_GEN)mkdir -p $(BENCHMARK_MAIN_CLASSES) 319 $(AM_V_at)javac $(JAVAC_ARGS) -cp $(MAIN_CLASSES) -d $(BENCHMARK_MAIN_CLASSES) $(BENCHMARK_MAIN_SRC)/org/rocksdb/benchmark/*.java 320