1cmake_minimum_required(VERSION 3.4)
2
3if(${CMAKE_VERSION} VERSION_LESS "3.11.4")
4    message("Please consider switching to CMake 3.11.4 or newer")
5endif()
6
7set(CMAKE_JAVA_COMPILE_FLAGS -source 7)
8
9set(JNI_NATIVE_SOURCES
10        rocksjni/backupablejni.cc
11        rocksjni/backupenginejni.cc
12        rocksjni/cassandra_compactionfilterjni.cc
13        rocksjni/cassandra_value_operator.cc
14        rocksjni/checkpoint.cc
15        rocksjni/clock_cache.cc
16        rocksjni/columnfamilyhandle.cc
17        rocksjni/compaction_filter.cc
18        rocksjni/compaction_filter_factory.cc
19        rocksjni/compaction_filter_factory_jnicallback.cc
20        rocksjni/compaction_job_info.cc
21        rocksjni/compaction_job_stats.cc
22        rocksjni/compaction_options.cc
23        rocksjni/compaction_options_fifo.cc
24        rocksjni/compaction_options_universal.cc
25        rocksjni/compact_range_options.cc
26        rocksjni/comparator.cc
27        rocksjni/comparatorjnicallback.cc
28        rocksjni/compression_options.cc
29        rocksjni/env.cc
30        rocksjni/env_options.cc
31        rocksjni/filter.cc
32        rocksjni/ingest_external_file_options.cc
33        rocksjni/iterator.cc
34        rocksjni/jnicallback.cc
35        rocksjni/loggerjnicallback.cc
36        rocksjni/lru_cache.cc
37        rocksjni/memory_util.cc
38        rocksjni/memtablejni.cc
39        rocksjni/merge_operator.cc
40        rocksjni/native_comparator_wrapper_test.cc
41        rocksjni/optimistic_transaction_db.cc
42        rocksjni/optimistic_transaction_options.cc
43        rocksjni/options.cc
44        rocksjni/options_util.cc
45        rocksjni/persistent_cache.cc
46        rocksjni/ratelimiterjni.cc
47        rocksjni/remove_emptyvalue_compactionfilterjni.cc
48        rocksjni/restorejni.cc
49        rocksjni/rocks_callback_object.cc
50        rocksjni/rocksdb_exception_test.cc
51        rocksjni/rocksjni.cc
52        rocksjni/slice.cc
53        rocksjni/snapshot.cc
54        rocksjni/sst_file_manager.cc
55        rocksjni/sst_file_writerjni.cc
56        rocksjni/sst_file_readerjni.cc
57        rocksjni/sst_file_reader_iterator.cc
58        rocksjni/statistics.cc
59        rocksjni/statisticsjni.cc
60        rocksjni/table.cc
61        rocksjni/table_filter.cc
62        rocksjni/table_filter_jnicallback.cc
63        rocksjni/thread_status.cc
64        rocksjni/trace_writer.cc
65        rocksjni/trace_writer_jnicallback.cc
66        rocksjni/transaction.cc
67        rocksjni/transaction_db.cc
68        rocksjni/transaction_db_options.cc
69        rocksjni/transaction_log.cc
70        rocksjni/transaction_notifier.cc
71        rocksjni/transaction_notifier_jnicallback.cc
72        rocksjni/transaction_options.cc
73        rocksjni/ttl.cc
74        rocksjni/wal_filter.cc
75        rocksjni/wal_filter_jnicallback.cc
76        rocksjni/write_batch.cc
77        rocksjni/writebatchhandlerjnicallback.cc
78        rocksjni/write_batch_test.cc
79        rocksjni/write_batch_with_index.cc
80        rocksjni/write_buffer_manager.cc
81)
82
83set(JAVA_MAIN_CLASSES
84  src/main/java/org/rocksdb/AbstractCompactionFilter.java
85  src/main/java/org/rocksdb/AbstractCompactionFilterFactory.java
86  src/main/java/org/rocksdb/AbstractComparator.java
87  src/main/java/org/rocksdb/AbstractImmutableNativeReference.java
88  src/main/java/org/rocksdb/AbstractMutableOptions.java
89  src/main/java/org/rocksdb/AbstractNativeReference.java
90  src/main/java/org/rocksdb/AbstractRocksIterator.java
91  src/main/java/org/rocksdb/AbstractSlice.java
92  src/main/java/org/rocksdb/AbstractTableFilter.java
93  src/main/java/org/rocksdb/AbstractTraceWriter.java
94  src/main/java/org/rocksdb/AbstractTransactionNotifier.java
95  src/main/java/org/rocksdb/AbstractWalFilter.java
96  src/main/java/org/rocksdb/AbstractWriteBatch.java
97  src/main/java/org/rocksdb/AccessHint.java
98  src/main/java/org/rocksdb/AdvancedColumnFamilyOptionsInterface.java
99  src/main/java/org/rocksdb/AdvancedMutableColumnFamilyOptionsInterface.java
100  src/main/java/org/rocksdb/BackupableDBOptions.java
101  src/main/java/org/rocksdb/BackupEngine.java
102  src/main/java/org/rocksdb/BackupInfo.java
103  src/main/java/org/rocksdb/BlockBasedTableConfig.java
104  src/main/java/org/rocksdb/BloomFilter.java
105  src/main/java/org/rocksdb/BuiltinComparator.java
106  src/main/java/org/rocksdb/Cache.java
107  src/main/java/org/rocksdb/CassandraCompactionFilter.java
108  src/main/java/org/rocksdb/CassandraValueMergeOperator.java
109  src/main/java/org/rocksdb/Checkpoint.java
110  src/main/java/org/rocksdb/ChecksumType.java
111  src/main/java/org/rocksdb/ClockCache.java
112  src/main/java/org/rocksdb/ColumnFamilyDescriptor.java
113  src/main/java/org/rocksdb/ColumnFamilyHandle.java
114  src/main/java/org/rocksdb/ColumnFamilyMetaData.java
115  src/main/java/org/rocksdb/ColumnFamilyOptionsInterface.java
116  src/main/java/org/rocksdb/ColumnFamilyOptions.java
117  src/main/java/org/rocksdb/CompactionJobInfo.java
118  src/main/java/org/rocksdb/CompactionJobStats.java
119  src/main/java/org/rocksdb/CompactionOptions.java
120  src/main/java/org/rocksdb/CompactionOptionsFIFO.java
121  src/main/java/org/rocksdb/CompactionOptionsUniversal.java
122  src/main/java/org/rocksdb/CompactionPriority.java
123  src/main/java/org/rocksdb/CompactionReason.java
124  src/main/java/org/rocksdb/CompactRangeOptions.java
125  src/main/java/org/rocksdb/CompactionStopStyle.java
126  src/main/java/org/rocksdb/CompactionStyle.java
127  src/main/java/org/rocksdb/ComparatorOptions.java
128  src/main/java/org/rocksdb/ComparatorType.java
129  src/main/java/org/rocksdb/CompressionOptions.java
130  src/main/java/org/rocksdb/CompressionType.java
131  src/main/java/org/rocksdb/DataBlockIndexType.java
132  src/main/java/org/rocksdb/DBOptionsInterface.java
133  src/main/java/org/rocksdb/DBOptions.java
134  src/main/java/org/rocksdb/DbPath.java
135  src/main/java/org/rocksdb/DirectSlice.java
136  src/main/java/org/rocksdb/EncodingType.java
137  src/main/java/org/rocksdb/Env.java
138  src/main/java/org/rocksdb/EnvOptions.java
139  src/main/java/org/rocksdb/Experimental.java
140  src/main/java/org/rocksdb/Filter.java
141  src/main/java/org/rocksdb/FlushOptions.java
142  src/main/java/org/rocksdb/HashLinkedListMemTableConfig.java
143  src/main/java/org/rocksdb/HashSkipListMemTableConfig.java
144  src/main/java/org/rocksdb/HdfsEnv.java
145  src/main/java/org/rocksdb/HistogramData.java
146  src/main/java/org/rocksdb/HistogramType.java
147  src/main/java/org/rocksdb/Holder.java
148  src/main/java/org/rocksdb/IndexType.java
149  src/main/java/org/rocksdb/InfoLogLevel.java
150  src/main/java/org/rocksdb/IngestExternalFileOptions.java
151  src/main/java/org/rocksdb/LevelMetaData.java
152  src/main/java/org/rocksdb/LiveFileMetaData.java
153  src/main/java/org/rocksdb/LogFile.java
154  src/main/java/org/rocksdb/Logger.java
155  src/main/java/org/rocksdb/LRUCache.java
156  src/main/java/org/rocksdb/MemoryUsageType.java
157  src/main/java/org/rocksdb/MemoryUtil.java
158  src/main/java/org/rocksdb/MemTableConfig.java
159  src/main/java/org/rocksdb/MergeOperator.java
160  src/main/java/org/rocksdb/MutableColumnFamilyOptions.java
161  src/main/java/org/rocksdb/MutableColumnFamilyOptionsInterface.java
162  src/main/java/org/rocksdb/MutableDBOptions.java
163  src/main/java/org/rocksdb/MutableDBOptionsInterface.java
164  src/main/java/org/rocksdb/MutableOptionKey.java
165  src/main/java/org/rocksdb/MutableOptionValue.java
166  src/main/java/org/rocksdb/NativeComparatorWrapper.java
167  src/main/java/org/rocksdb/NativeLibraryLoader.java
168  src/main/java/org/rocksdb/OperationStage.java
169  src/main/java/org/rocksdb/OperationType.java
170  src/main/java/org/rocksdb/OptimisticTransactionDB.java
171  src/main/java/org/rocksdb/OptimisticTransactionOptions.java
172  src/main/java/org/rocksdb/Options.java
173  src/main/java/org/rocksdb/OptionsUtil.java
174  src/main/java/org/rocksdb/PersistentCache.java
175  src/main/java/org/rocksdb/PlainTableConfig.java
176  src/main/java/org/rocksdb/Priority.java
177  src/main/java/org/rocksdb/Range.java
178  src/main/java/org/rocksdb/RateLimiter.java
179  src/main/java/org/rocksdb/RateLimiterMode.java
180  src/main/java/org/rocksdb/ReadOptions.java
181  src/main/java/org/rocksdb/ReadTier.java
182  src/main/java/org/rocksdb/RemoveEmptyValueCompactionFilter.java
183  src/main/java/org/rocksdb/RestoreOptions.java
184  src/main/java/org/rocksdb/ReusedSynchronisationType.java
185  src/main/java/org/rocksdb/RocksCallbackObject.java
186  src/main/java/org/rocksdb/RocksDBException.java
187  src/main/java/org/rocksdb/RocksDB.java
188  src/main/java/org/rocksdb/RocksEnv.java
189  src/main/java/org/rocksdb/RocksIteratorInterface.java
190  src/main/java/org/rocksdb/RocksIterator.java
191  src/main/java/org/rocksdb/RocksMemEnv.java
192  src/main/java/org/rocksdb/RocksMutableObject.java
193  src/main/java/org/rocksdb/RocksObject.java
194  src/main/java/org/rocksdb/SizeApproximationFlag.java
195  src/main/java/org/rocksdb/SkipListMemTableConfig.java
196  src/main/java/org/rocksdb/Slice.java
197  src/main/java/org/rocksdb/Snapshot.java
198  src/main/java/org/rocksdb/SstFileManager.java
199  src/main/java/org/rocksdb/SstFileMetaData.java
200  src/main/java/org/rocksdb/SstFileWriter.java
201  src/main/java/org/rocksdb/SstFileReader.java
202  src/main/java/org/rocksdb/SstFileReaderIterator.java
203  src/main/java/org/rocksdb/StateType.java
204  src/main/java/org/rocksdb/StatisticsCollectorCallback.java
205  src/main/java/org/rocksdb/StatisticsCollector.java
206  src/main/java/org/rocksdb/Statistics.java
207  src/main/java/org/rocksdb/StatsCollectorInput.java
208  src/main/java/org/rocksdb/StatsLevel.java
209  src/main/java/org/rocksdb/Status.java
210  src/main/java/org/rocksdb/StringAppendOperator.java
211  src/main/java/org/rocksdb/TableFilter.java
212  src/main/java/org/rocksdb/TableProperties.java
213  src/main/java/org/rocksdb/TableFormatConfig.java
214  src/main/java/org/rocksdb/ThreadType.java
215  src/main/java/org/rocksdb/ThreadStatus.java
216  src/main/java/org/rocksdb/TickerType.java
217  src/main/java/org/rocksdb/TimedEnv.java
218  src/main/java/org/rocksdb/TraceOptions.java
219  src/main/java/org/rocksdb/TraceWriter.java
220  src/main/java/org/rocksdb/TransactionalDB.java
221  src/main/java/org/rocksdb/TransactionalOptions.java
222  src/main/java/org/rocksdb/TransactionDB.java
223  src/main/java/org/rocksdb/TransactionDBOptions.java
224  src/main/java/org/rocksdb/Transaction.java
225  src/main/java/org/rocksdb/TransactionLogIterator.java
226  src/main/java/org/rocksdb/TransactionOptions.java
227  src/main/java/org/rocksdb/TtlDB.java
228  src/main/java/org/rocksdb/TxnDBWritePolicy.java
229  src/main/java/org/rocksdb/VectorMemTableConfig.java
230  src/main/java/org/rocksdb/WalFileType.java
231  src/main/java/org/rocksdb/WalFilter.java
232  src/main/java/org/rocksdb/WalProcessingOption.java
233  src/main/java/org/rocksdb/WALRecoveryMode.java
234  src/main/java/org/rocksdb/WBWIRocksIterator.java
235  src/main/java/org/rocksdb/WriteBatch.java
236  src/main/java/org/rocksdb/WriteBatchInterface.java
237  src/main/java/org/rocksdb/WriteBatchWithIndex.java
238  src/main/java/org/rocksdb/WriteOptions.java
239  src/main/java/org/rocksdb/WriteBufferManager.java
240  src/main/java/org/rocksdb/util/ByteUtil.java
241  src/main/java/org/rocksdb/util/BytewiseComparator.java
242  src/main/java/org/rocksdb/util/Environment.java
243  src/main/java/org/rocksdb/util/IntComparator.java
244  src/main/java/org/rocksdb/util/ReverseBytewiseComparator.java
245  src/main/java/org/rocksdb/util/SizeUnit.java
246  src/main/java/org/rocksdb/UInt64AddOperator.java
247)
248
249set(JAVA_TEST_CLASSES
250  src/test/java/org/rocksdb/BackupEngineTest.java
251  src/test/java/org/rocksdb/IngestExternalFileOptionsTest.java
252  src/test/java/org/rocksdb/NativeComparatorWrapperTest.java
253  src/test/java/org/rocksdb/PlatformRandomHelper.java
254  src/test/java/org/rocksdb/RocksDBExceptionTest.java
255  src/test/java/org/rocksdb/RocksNativeLibraryResource.java
256  src/test/java/org/rocksdb/SnapshotTest.java
257  src/test/java/org/rocksdb/WriteBatchTest.java
258  src/test/java/org/rocksdb/util/CapturingWriteBatchHandler.java
259  src/test/java/org/rocksdb/util/WriteBatchGetter.java
260)
261
262include(FindJava)
263include(UseJava)
264find_package(JNI)
265
266include_directories(${JNI_INCLUDE_DIRS})
267include_directories(${PROJECT_SOURCE_DIR}/java)
268
269set(JAVA_TEST_LIBDIR ${PROJECT_SOURCE_DIR}/java/test-libs)
270set(JAVA_TMP_JAR ${JAVA_TEST_LIBDIR}/tmp.jar)
271set(JAVA_JUNIT_JAR ${JAVA_TEST_LIBDIR}/junit-4.12.jar)
272set(JAVA_HAMCR_JAR ${JAVA_TEST_LIBDIR}/hamcrest-core-1.3.jar)
273set(JAVA_MOCKITO_JAR ${JAVA_TEST_LIBDIR}/mockito-all-1.10.19.jar)
274set(JAVA_CGLIB_JAR ${JAVA_TEST_LIBDIR}/cglib-2.2.2.jar)
275set(JAVA_ASSERTJ_JAR ${JAVA_TEST_LIBDIR}/assertj-core-1.7.1.jar)
276set(JAVA_TESTCLASSPATH ${JAVA_JUNIT_JAR} ${JAVA_HAMCR_JAR} ${JAVA_MOCKITO_JAR} ${JAVA_CGLIB_JAR} ${JAVA_ASSERTJ_JAR})
277
278set(JNI_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/java/include)
279file(MAKE_DIRECTORY ${JNI_OUTPUT_DIR})
280
281if(${Java_VERSION_MAJOR} VERSION_GREATER_EQUAL "10" AND ${CMAKE_VERSION} VERSION_LESS "3.11.4")
282  # Java 10 and newer don't have javah, but the alternative GENERATE_NATIVE_HEADERS requires CMake 3.11.4 or newer
283  message(FATAL_ERROR "Detected Java 10 or newer (${Java_VERSION_STRING}), to build with CMake please upgrade CMake to 3.11.4 or newer")
284
285elseif(${CMAKE_VERSION} VERSION_LESS "3.11.4" OR (${Java_VERSION_MINOR} STREQUAL "7" AND ${Java_VERSION_MAJOR} STREQUAL "1"))
286  # Old CMake or Java 1.7 prepare the JAR...
287  message("Preparing Jar for Java 7")
288  add_jar(
289      rocksdbjni_classes
290      SOURCES
291      ${JAVA_MAIN_CLASSES}
292      ${JAVA_TEST_CLASSES}
293      INCLUDE_JARS ${JAVA_TESTCLASSPATH}
294  )
295
296else ()
297  # Java 1.8 or newer prepare the JAR...
298  message("Preparing Jar for JDK ${Java_VERSION_STRING}")
299  add_jar(
300      rocksdbjni_classes
301      SOURCES
302      ${JAVA_MAIN_CLASSES}
303      ${JAVA_TEST_CLASSES}
304      INCLUDE_JARS ${JAVA_TESTCLASSPATH}
305      GENERATE_NATIVE_HEADERS rocksdbjni_headers DESTINATION ${JNI_OUTPUT_DIR}
306  )
307
308endif()
309
310if(NOT EXISTS ${PROJECT_SOURCE_DIR}/java/classes)
311  file(MAKE_DIRECTORY ${PROJECT_SOURCE_DIR}/java/classes)
312endif()
313
314if(NOT EXISTS ${JAVA_TEST_LIBDIR})
315  file(MAKE_DIRECTORY mkdir ${JAVA_TEST_LIBDIR})
316endif()
317
318if (DEFINED CUSTOM_DEPS_URL)
319  set(DEPS_URL ${CUSTOM_DEPS_URL}/)
320else ()
321  # Using a Facebook AWS account for S3 storage. (maven.org has a history
322  # of failing in Travis builds.)
323  set(DEPS_URL "https://rocksdb-deps.s3-us-west-2.amazonaws.com/jars")
324endif()
325
326if(NOT EXISTS ${JAVA_JUNIT_JAR})
327  message("Downloading ${JAVA_JUNIT_JAR}")
328  file(DOWNLOAD ${DEPS_URL}/junit-4.12.jar ${JAVA_TMP_JAR} STATUS downloadStatus)
329  list(GET downloadStatus 0 error_code)
330  list(GET downloadStatus 1 error_message)
331  if(NOT error_code EQUAL 0)
332    message(FATAL_ERROR "Failed downloading ${JAVA_JUNIT_JAR}: ${error_message}")
333  endif()
334  file(RENAME ${JAVA_TMP_JAR} ${JAVA_JUNIT_JAR})
335endif()
336if(NOT EXISTS ${JAVA_HAMCR_JAR})
337  message("Downloading ${JAVA_HAMCR_JAR}")
338  file(DOWNLOAD ${DEPS_URL}/hamcrest-core-1.3.jar ${JAVA_TMP_JAR} STATUS downloadStatus)
339  list(GET downloadStatus 0 error_code)
340  list(GET downloadStatus 1 error_message)
341  if(NOT error_code EQUAL 0)
342    message(FATAL_ERROR "Failed downloading ${JAVA_HAMCR_JAR}: ${error_message}")
343  endif()
344  file(RENAME ${JAVA_TMP_JAR} ${JAVA_HAMCR_JAR})
345endif()
346if(NOT EXISTS ${JAVA_MOCKITO_JAR})
347  message("Downloading ${JAVA_MOCKITO_JAR}")
348  file(DOWNLOAD ${DEPS_URL}/mockito-all-1.10.19.jar ${JAVA_TMP_JAR} STATUS downloadStatus)
349  list(GET downloadStatus 0 error_code)
350  list(GET downloadStatus 1 error_message)
351  if(NOT error_code EQUAL 0)
352    message(FATAL_ERROR "Failed downloading ${JAVA_MOCKITO_JAR}: ${error_message}")
353  endif()
354  file(RENAME ${JAVA_TMP_JAR} ${JAVA_MOCKITO_JAR})
355endif()
356if(NOT EXISTS ${JAVA_CGLIB_JAR})
357  message("Downloading ${JAVA_CGLIB_JAR}")
358  file(DOWNLOAD ${DEPS_URL}/cglib-2.2.2.jar ${JAVA_TMP_JAR} STATUS downloadStatus)
359  list(GET downloadStatus 0 error_code)
360  list(GET downloadStatus 1 error_message)
361  if(NOT error_code EQUAL 0)
362    message(FATAL_ERROR "Failed downloading ${JAVA_CGLIB_JAR}: ${error_message}")
363  endif()
364  file(RENAME ${JAVA_TMP_JAR} ${JAVA_CGLIB_JAR})
365endif()
366if(NOT EXISTS ${JAVA_ASSERTJ_JAR})
367  message("Downloading ${JAVA_ASSERTJ_JAR}")
368  file(DOWNLOAD ${DEPS_URL}/assertj-core-1.7.1.jar ${JAVA_TMP_JAR} STATUS downloadStatus)
369  list(GET downloadStatus 0 error_code)
370  list(GET downloadStatus 1 error_message)
371  if(NOT error_code EQUAL 0)
372    message(FATAL_ERROR "Failed downloading ${JAVA_ASSERTJ_JAR}: ${error_message}")
373  endif()
374  file(RENAME ${JAVA_TMP_JAR} ${JAVA_ASSERTJ_JAR})
375endif()
376
377if(${CMAKE_VERSION} VERSION_LESS "3.11.4" OR (${Java_VERSION_MINOR} STREQUAL "7" AND ${Java_VERSION_MAJOR} STREQUAL "1"))
378  # Old CMake or Java 1.7 ONLY generate JNI headers, Java 1.8+ JNI is handled in add_jar step above
379  message("Preparing JNI headers for Java 7")
380  set(NATIVE_JAVA_CLASSES
381          org.rocksdb.AbstractCompactionFilter
382          org.rocksdb.AbstractCompactionFilterFactory
383          org.rocksdb.AbstractComparator
384          org.rocksdb.AbstractImmutableNativeReference
385          org.rocksdb.AbstractNativeReference
386          org.rocksdb.AbstractRocksIterator
387          org.rocksdb.AbstractSlice
388          org.rocksdb.AbstractTableFilter
389          org.rocksdb.AbstractTraceWriter
390          org.rocksdb.AbstractTransactionNotifier
391          org.rocksdb.AbstractWalFilter
392          org.rocksdb.BackupableDBOptions
393          org.rocksdb.BackupEngine
394          org.rocksdb.BlockBasedTableConfig
395          org.rocksdb.BloomFilter
396          org.rocksdb.CassandraCompactionFilter
397          org.rocksdb.CassandraValueMergeOperator
398          org.rocksdb.Checkpoint
399          org.rocksdb.ClockCache
400          org.rocksdb.ColumnFamilyHandle
401          org.rocksdb.ColumnFamilyOptions
402          org.rocksdb.CompactionJobInfo
403          org.rocksdb.CompactionJobStats
404          org.rocksdb.CompactionOptions
405          org.rocksdb.CompactionOptionsFIFO
406          org.rocksdb.CompactionOptionsUniversal
407          org.rocksdb.CompactRangeOptions
408          org.rocksdb.ComparatorOptions
409          org.rocksdb.CompressionOptions
410          org.rocksdb.DBOptions
411          org.rocksdb.DirectSlice
412          org.rocksdb.Env
413          org.rocksdb.EnvOptions
414          org.rocksdb.Filter
415          org.rocksdb.FlushOptions
416          org.rocksdb.HashLinkedListMemTableConfig
417          org.rocksdb.HashSkipListMemTableConfig
418          org.rocksdb.HdfsEnv
419          org.rocksdb.IngestExternalFileOptions
420          org.rocksdb.Logger
421          org.rocksdb.LRUCache
422          org.rocksdb.MemoryUtil
423          org.rocksdb.MemTableConfig
424          org.rocksdb.NativeComparatorWrapper
425          org.rocksdb.NativeLibraryLoader
426          org.rocksdb.OptimisticTransactionDB
427          org.rocksdb.OptimisticTransactionOptions
428          org.rocksdb.Options
429          org.rocksdb.OptionsUtil
430          org.rocksdb.PersistentCache
431          org.rocksdb.PlainTableConfig
432          org.rocksdb.RateLimiter
433          org.rocksdb.ReadOptions
434          org.rocksdb.RemoveEmptyValueCompactionFilter
435          org.rocksdb.RestoreOptions
436          org.rocksdb.RocksCallbackObject
437          org.rocksdb.RocksDB
438          org.rocksdb.RocksEnv
439          org.rocksdb.RocksIterator
440          org.rocksdb.RocksIteratorInterface
441          org.rocksdb.RocksMemEnv
442          org.rocksdb.RocksMutableObject
443          org.rocksdb.RocksObject
444          org.rocksdb.SkipListMemTableConfig
445          org.rocksdb.Slice
446          org.rocksdb.Snapshot
447          org.rocksdb.SstFileManager
448          org.rocksdb.SstFileWriter
449          org.rocksdb.SstFileReader
450          org.rocksdb.SstFileReaderIterator
451          org.rocksdb.Statistics
452          org.rocksdb.StringAppendOperator
453          org.rocksdb.TableFormatConfig
454          org.rocksdb.ThreadStatus
455          org.rocksdb.TimedEnv
456          org.rocksdb.Transaction
457          org.rocksdb.TransactionDB
458          org.rocksdb.TransactionDBOptions
459          org.rocksdb.TransactionLogIterator
460          org.rocksdb.TransactionOptions
461          org.rocksdb.TtlDB
462          org.rocksdb.UInt64AddOperator
463          org.rocksdb.VectorMemTableConfig
464          org.rocksdb.WBWIRocksIterator
465          org.rocksdb.WriteBatch
466          org.rocksdb.WriteBatch.Handler
467          org.rocksdb.WriteBatchInterface
468          org.rocksdb.WriteBatchWithIndex
469          org.rocksdb.WriteOptions
470          org.rocksdb.NativeComparatorWrapperTest
471          org.rocksdb.RocksDBExceptionTest
472          org.rocksdb.SnapshotTest
473          org.rocksdb.WriteBatchTest
474          org.rocksdb.WriteBatchTestInternalHelper
475          org.rocksdb.WriteBufferManager
476  )
477
478  create_javah(
479    TARGET rocksdbjni_headers
480    CLASSES ${NATIVE_JAVA_CLASSES}
481    CLASSPATH rocksdbjni_classes ${JAVA_TESTCLASSPATH}
482    OUTPUT_DIR ${JNI_OUTPUT_DIR}
483  )
484endif()
485
486if(NOT MSVC)
487  set_property(TARGET ${ROCKSDB_STATIC_LIB} PROPERTY POSITION_INDEPENDENT_CODE ON)
488endif()
489
490set(ROCKSDBJNI_STATIC_LIB rocksdbjni${ARTIFACT_SUFFIX})
491add_library(${ROCKSDBJNI_STATIC_LIB} ${JNI_NATIVE_SOURCES})
492add_dependencies(${ROCKSDBJNI_STATIC_LIB} rocksdbjni_headers)
493target_link_libraries(${ROCKSDBJNI_STATIC_LIB} ${ROCKSDB_STATIC_LIB} ${ROCKSDB_LIB})
494
495if(NOT MINGW)
496  set(ROCKSDBJNI_SHARED_LIB rocksdbjni-shared${ARTIFACT_SUFFIX})
497  add_library(${ROCKSDBJNI_SHARED_LIB} SHARED ${JNI_NATIVE_SOURCES})
498  add_dependencies(${ROCKSDBJNI_SHARED_LIB} rocksdbjni_headers)
499  target_link_libraries(${ROCKSDBJNI_SHARED_LIB} ${ROCKSDB_STATIC_LIB} ${ROCKSDB_LIB})
500
501  set_target_properties(
502    ${ROCKSDBJNI_SHARED_LIB}
503    PROPERTIES
504    COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_CFG_INTDIR}
505    COMPILE_PDB_NAME ${ROCKSDBJNI_STATIC_LIB}.pdb
506  )
507endif()
508