cmake_minimum_required(VERSION 3.4) set(JAVA_JUNIT_VERSION "4.13.1") set(JAVA_HAMCR_VERSION "2.2") set(JAVA_MOCKITO_VERSION "1.10.19") set(JAVA_CGLIB_VERSION "3.3.0") set(JAVA_ASSERTJ_VERSION "2.9.0") if(${CMAKE_VERSION} VERSION_LESS "3.11.4") message("Please consider switching to CMake 3.11.4 or newer") endif() set(CMAKE_JAVA_COMPILE_FLAGS -source 8) set(JNI_NATIVE_SOURCES rocksjni/backup_engine_options.cc rocksjni/backupenginejni.cc rocksjni/cache.cc rocksjni/cassandra_compactionfilterjni.cc rocksjni/cassandra_value_operator.cc rocksjni/checkpoint.cc rocksjni/clock_cache.cc rocksjni/columnfamilyhandle.cc rocksjni/compact_range_options.cc rocksjni/compaction_filter.cc rocksjni/compaction_filter_factory.cc rocksjni/compaction_filter_factory_jnicallback.cc rocksjni/compaction_job_info.cc rocksjni/compaction_job_stats.cc rocksjni/compaction_options.cc rocksjni/compaction_options_fifo.cc rocksjni/compaction_options_universal.cc rocksjni/comparator.cc rocksjni/comparatorjnicallback.cc rocksjni/compression_options.cc rocksjni/concurrent_task_limiter.cc rocksjni/config_options.cc rocksjni/env.cc rocksjni/env_options.cc rocksjni/event_listener.cc rocksjni/event_listener_jnicallback.cc rocksjni/export_import_files_metadatajni.cc rocksjni/filter.cc rocksjni/hyper_clock_cache.cc rocksjni/import_column_family_options.cc rocksjni/ingest_external_file_options.cc rocksjni/iterator.cc rocksjni/jni_multiget_helpers.cc rocksjni/jni_perf_context.cc rocksjni/jnicallback.cc rocksjni/loggerjnicallback.cc rocksjni/lru_cache.cc rocksjni/memory_util.cc rocksjni/memtablejni.cc rocksjni/merge_operator.cc rocksjni/native_comparator_wrapper_test.cc rocksjni/optimistic_transaction_db.cc rocksjni/optimistic_transaction_options.cc rocksjni/options.cc rocksjni/options_util.cc rocksjni/persistent_cache.cc rocksjni/ratelimiterjni.cc rocksjni/remove_emptyvalue_compactionfilterjni.cc rocksjni/restorejni.cc rocksjni/rocks_callback_object.cc rocksjni/rocksdb_exception_test.cc rocksjni/rocksjni.cc rocksjni/slice.cc rocksjni/snapshot.cc rocksjni/sst_file_manager.cc rocksjni/sst_file_reader_iterator.cc rocksjni/sst_file_readerjni.cc rocksjni/sst_file_writerjni.cc rocksjni/sst_partitioner.cc rocksjni/statistics.cc rocksjni/statisticsjni.cc rocksjni/stderr_logger.cc rocksjni/table.cc rocksjni/table_filter.cc rocksjni/table_filter_jnicallback.cc rocksjni/table_properties_collector_factory.cc rocksjni/testable_event_listener.cc rocksjni/thread_status.cc rocksjni/trace_writer.cc rocksjni/trace_writer_jnicallback.cc rocksjni/transaction.cc rocksjni/transaction_db.cc rocksjni/transaction_db_options.cc rocksjni/transaction_log.cc rocksjni/transaction_notifier.cc rocksjni/transaction_notifier_jnicallback.cc rocksjni/transaction_options.cc rocksjni/ttl.cc rocksjni/wal_filter.cc rocksjni/wal_filter_jnicallback.cc rocksjni/write_batch.cc rocksjni/write_batch_test.cc rocksjni/write_batch_with_index.cc rocksjni/write_buffer_manager.cc rocksjni/writebatchhandlerjnicallback.cc ) set(JAVA_MAIN_CLASSES src/main/java/org/rocksdb/AbstractCompactionFilter.java src/main/java/org/rocksdb/AbstractCompactionFilterFactory.java src/main/java/org/rocksdb/AbstractComparator.java src/main/java/org/rocksdb/AbstractComparatorJniBridge.java src/main/java/org/rocksdb/AbstractEventListener.java src/main/java/org/rocksdb/AbstractImmutableNativeReference.java src/main/java/org/rocksdb/AbstractMutableOptions.java src/main/java/org/rocksdb/AbstractNativeReference.java src/main/java/org/rocksdb/AbstractRocksIterator.java src/main/java/org/rocksdb/AbstractSlice.java src/main/java/org/rocksdb/AbstractTableFilter.java src/main/java/org/rocksdb/AbstractTraceWriter.java src/main/java/org/rocksdb/AbstractTransactionNotifier.java src/main/java/org/rocksdb/AbstractWalFilter.java src/main/java/org/rocksdb/AbstractWriteBatch.java src/main/java/org/rocksdb/AdvancedColumnFamilyOptionsInterface.java src/main/java/org/rocksdb/AdvancedMutableColumnFamilyOptionsInterface.java src/main/java/org/rocksdb/BackgroundErrorReason.java src/main/java/org/rocksdb/BackupEngine.java src/main/java/org/rocksdb/BackupEngineOptions.java src/main/java/org/rocksdb/BackupInfo.java src/main/java/org/rocksdb/BlockBasedTableConfig.java src/main/java/org/rocksdb/BloomFilter.java src/main/java/org/rocksdb/BuiltinComparator.java src/main/java/org/rocksdb/ByteBufferGetStatus.java src/main/java/org/rocksdb/Cache.java src/main/java/org/rocksdb/CassandraCompactionFilter.java src/main/java/org/rocksdb/CassandraValueMergeOperator.java src/main/java/org/rocksdb/Checkpoint.java src/main/java/org/rocksdb/ChecksumType.java src/main/java/org/rocksdb/ClockCache.java src/main/java/org/rocksdb/ColumnFamilyDescriptor.java src/main/java/org/rocksdb/ColumnFamilyHandle.java src/main/java/org/rocksdb/ColumnFamilyMetaData.java src/main/java/org/rocksdb/ColumnFamilyOptions.java src/main/java/org/rocksdb/ColumnFamilyOptionsInterface.java src/main/java/org/rocksdb/CompactRangeOptions.java src/main/java/org/rocksdb/CompactionJobInfo.java src/main/java/org/rocksdb/CompactionJobStats.java src/main/java/org/rocksdb/CompactionOptions.java src/main/java/org/rocksdb/CompactionOptionsFIFO.java src/main/java/org/rocksdb/CompactionOptionsUniversal.java src/main/java/org/rocksdb/CompactionPriority.java src/main/java/org/rocksdb/CompactionReason.java src/main/java/org/rocksdb/CompactionStopStyle.java src/main/java/org/rocksdb/CompactionStyle.java src/main/java/org/rocksdb/ComparatorOptions.java src/main/java/org/rocksdb/ComparatorType.java src/main/java/org/rocksdb/CompressionOptions.java src/main/java/org/rocksdb/CompressionType.java src/main/java/org/rocksdb/ConcurrentTaskLimiter.java src/main/java/org/rocksdb/ConcurrentTaskLimiterImpl.java src/main/java/org/rocksdb/ConfigOptions.java src/main/java/org/rocksdb/DBOptions.java src/main/java/org/rocksdb/DBOptionsInterface.java src/main/java/org/rocksdb/DataBlockIndexType.java src/main/java/org/rocksdb/DbPath.java src/main/java/org/rocksdb/DirectSlice.java src/main/java/org/rocksdb/EncodingType.java src/main/java/org/rocksdb/Env.java src/main/java/org/rocksdb/EnvOptions.java src/main/java/org/rocksdb/EventListener.java src/main/java/org/rocksdb/Experimental.java src/main/java/org/rocksdb/ExportImportFilesMetaData.java src/main/java/org/rocksdb/ExternalFileIngestionInfo.java src/main/java/org/rocksdb/FileOperationInfo.java src/main/java/org/rocksdb/Filter.java src/main/java/org/rocksdb/FilterPolicyType.java src/main/java/org/rocksdb/FlushJobInfo.java src/main/java/org/rocksdb/FlushOptions.java src/main/java/org/rocksdb/FlushReason.java src/main/java/org/rocksdb/GetStatus.java src/main/java/org/rocksdb/HashLinkedListMemTableConfig.java src/main/java/org/rocksdb/HashSkipListMemTableConfig.java src/main/java/org/rocksdb/HistogramData.java src/main/java/org/rocksdb/HistogramType.java src/main/java/org/rocksdb/Holder.java src/main/java/org/rocksdb/HyperClockCache.java src/main/java/org/rocksdb/ImportColumnFamilyOptions.java src/main/java/org/rocksdb/IndexShorteningMode.java src/main/java/org/rocksdb/IndexType.java src/main/java/org/rocksdb/InfoLogLevel.java src/main/java/org/rocksdb/IngestExternalFileOptions.java src/main/java/org/rocksdb/KeyMayExist.java src/main/java/org/rocksdb/LRUCache.java src/main/java/org/rocksdb/LevelMetaData.java src/main/java/org/rocksdb/LiveFileMetaData.java src/main/java/org/rocksdb/LogFile.java src/main/java/org/rocksdb/Logger.java src/main/java/org/rocksdb/LoggerInterface.java src/main/java/org/rocksdb/LoggerType.java src/main/java/org/rocksdb/MemTableConfig.java src/main/java/org/rocksdb/MemTableInfo.java src/main/java/org/rocksdb/MemoryUsageType.java src/main/java/org/rocksdb/MemoryUtil.java src/main/java/org/rocksdb/MergeOperator.java src/main/java/org/rocksdb/MutableColumnFamilyOptions.java src/main/java/org/rocksdb/MutableColumnFamilyOptionsInterface.java src/main/java/org/rocksdb/MutableDBOptions.java src/main/java/org/rocksdb/MutableDBOptionsInterface.java src/main/java/org/rocksdb/MutableOptionKey.java src/main/java/org/rocksdb/MutableOptionValue.java src/main/java/org/rocksdb/NativeComparatorWrapper.java src/main/java/org/rocksdb/NativeLibraryLoader.java src/main/java/org/rocksdb/OperationStage.java src/main/java/org/rocksdb/OperationType.java src/main/java/org/rocksdb/OptimisticTransactionDB.java src/main/java/org/rocksdb/OptimisticTransactionOptions.java src/main/java/org/rocksdb/OptionString.java src/main/java/org/rocksdb/Options.java src/main/java/org/rocksdb/OptionsUtil.java src/main/java/org/rocksdb/PerfContext.java src/main/java/org/rocksdb/PerfLevel.java src/main/java/org/rocksdb/PersistentCache.java src/main/java/org/rocksdb/PlainTableConfig.java src/main/java/org/rocksdb/PrepopulateBlobCache.java src/main/java/org/rocksdb/Priority.java src/main/java/org/rocksdb/Range.java src/main/java/org/rocksdb/RateLimiter.java src/main/java/org/rocksdb/RateLimiterMode.java src/main/java/org/rocksdb/ReadOptions.java src/main/java/org/rocksdb/ReadTier.java src/main/java/org/rocksdb/RemoveEmptyValueCompactionFilter.java src/main/java/org/rocksdb/RestoreOptions.java src/main/java/org/rocksdb/ReusedSynchronisationType.java src/main/java/org/rocksdb/RocksCallbackObject.java src/main/java/org/rocksdb/RocksDB.java src/main/java/org/rocksdb/RocksDBException.java src/main/java/org/rocksdb/RocksEnv.java src/main/java/org/rocksdb/RocksIterator.java src/main/java/org/rocksdb/RocksIteratorInterface.java src/main/java/org/rocksdb/RocksMemEnv.java src/main/java/org/rocksdb/RocksMutableObject.java src/main/java/org/rocksdb/RocksObject.java src/main/java/org/rocksdb/SanityLevel.java src/main/java/org/rocksdb/SizeApproximationFlag.java src/main/java/org/rocksdb/SkipListMemTableConfig.java src/main/java/org/rocksdb/Slice.java src/main/java/org/rocksdb/Snapshot.java src/main/java/org/rocksdb/SstFileManager.java src/main/java/org/rocksdb/SstFileMetaData.java src/main/java/org/rocksdb/SstFileReader.java src/main/java/org/rocksdb/SstFileReaderIterator.java src/main/java/org/rocksdb/SstFileWriter.java src/main/java/org/rocksdb/SstPartitionerFactory.java src/main/java/org/rocksdb/SstPartitionerFixedPrefixFactory.java src/main/java/org/rocksdb/StateType.java src/main/java/org/rocksdb/Statistics.java src/main/java/org/rocksdb/StatisticsCollector.java src/main/java/org/rocksdb/StatisticsCollectorCallback.java src/main/java/org/rocksdb/StatsCollectorInput.java src/main/java/org/rocksdb/StatsLevel.java src/main/java/org/rocksdb/Status.java src/main/java/org/rocksdb/StringAppendOperator.java src/main/java/org/rocksdb/TableFileCreationBriefInfo.java src/main/java/org/rocksdb/TableFileCreationInfo.java src/main/java/org/rocksdb/TableFileCreationReason.java src/main/java/org/rocksdb/TableFileDeletionInfo.java src/main/java/org/rocksdb/TableFilter.java src/main/java/org/rocksdb/TableFormatConfig.java src/main/java/org/rocksdb/TableProperties.java src/main/java/org/rocksdb/TablePropertiesCollectorFactory.java src/main/java/org/rocksdb/ThreadStatus.java src/main/java/org/rocksdb/ThreadType.java src/main/java/org/rocksdb/TickerType.java src/main/java/org/rocksdb/TimedEnv.java src/main/java/org/rocksdb/TraceOptions.java src/main/java/org/rocksdb/TraceWriter.java src/main/java/org/rocksdb/Transaction.java src/main/java/org/rocksdb/TransactionDB.java src/main/java/org/rocksdb/TransactionDBOptions.java src/main/java/org/rocksdb/TransactionLogIterator.java src/main/java/org/rocksdb/TransactionOptions.java src/main/java/org/rocksdb/TransactionalDB.java src/main/java/org/rocksdb/TransactionalOptions.java src/main/java/org/rocksdb/TtlDB.java src/main/java/org/rocksdb/TxnDBWritePolicy.java src/main/java/org/rocksdb/UInt64AddOperator.java src/main/java/org/rocksdb/VectorMemTableConfig.java src/main/java/org/rocksdb/WALRecoveryMode.java src/main/java/org/rocksdb/WBWIRocksIterator.java src/main/java/org/rocksdb/WalFileType.java src/main/java/org/rocksdb/WalFilter.java src/main/java/org/rocksdb/WalProcessingOption.java src/main/java/org/rocksdb/WriteBatch.java src/main/java/org/rocksdb/WriteBatchInterface.java src/main/java/org/rocksdb/WriteBatchWithIndex.java src/main/java/org/rocksdb/WriteBufferManager.java src/main/java/org/rocksdb/WriteOptions.java src/main/java/org/rocksdb/WriteStallCondition.java src/main/java/org/rocksdb/WriteStallInfo.java src/main/java/org/rocksdb/util/BufferUtil.java src/main/java/org/rocksdb/util/ByteUtil.java src/main/java/org/rocksdb/util/BytewiseComparator.java src/main/java/org/rocksdb/util/Environment.java src/main/java/org/rocksdb/util/IntComparator.java src/main/java/org/rocksdb/util/ReverseBytewiseComparator.java src/main/java/org/rocksdb/util/SizeUnit.java src/main/java/org/rocksdb/util/StdErrLogger.java src/test/java/org/rocksdb/NativeComparatorWrapperTest.java src/test/java/org/rocksdb/RocksDBExceptionTest.java src/test/java/org/rocksdb/RocksNativeLibraryResource.java src/test/java/org/rocksdb/WriteBatchTest.java src/test/java/org/rocksdb/test/TestableEventListener.java src/test/java/org/rocksdb/util/CapturingWriteBatchHandler.java src/test/java/org/rocksdb/util/WriteBatchGetter.java ) set(JAVA_TEST_CLASSES src/test/java/org/rocksdb/AbstractTransactionTest.java src/test/java/org/rocksdb/BackupEngineOptionsTest.java src/test/java/org/rocksdb/BackupEngineTest.java src/test/java/org/rocksdb/BlobOptionsTest.java src/test/java/org/rocksdb/BlockBasedTableConfigTest.java src/test/java/org/rocksdb/BuiltinComparatorTest.java src/test/java/org/rocksdb/ByteBufferUnsupportedOperationTest.java src/test/java/org/rocksdb/BytewiseComparatorRegressionTest.java src/test/java/org/rocksdb/CheckPointTest.java src/test/java/org/rocksdb/ClockCacheTest.java src/test/java/org/rocksdb/ColumnFamilyOptionsTest.java src/test/java/org/rocksdb/ColumnFamilyTest.java src/test/java/org/rocksdb/CompactRangeOptionsTest.java src/test/java/org/rocksdb/CompactionFilterFactoryTest.java src/test/java/org/rocksdb/CompactionJobInfoTest.java src/test/java/org/rocksdb/CompactionJobStatsTest.java src/test/java/org/rocksdb/CompactionOptionsFIFOTest.java src/test/java/org/rocksdb/CompactionOptionsTest.java src/test/java/org/rocksdb/CompactionOptionsUniversalTest.java src/test/java/org/rocksdb/CompactionPriorityTest.java src/test/java/org/rocksdb/CompactionStopStyleTest.java src/test/java/org/rocksdb/ComparatorOptionsTest.java src/test/java/org/rocksdb/CompressionOptionsTest.java src/test/java/org/rocksdb/CompressionTypesTest.java src/test/java/org/rocksdb/ConcurrentTaskLimiterTest.java src/test/java/org/rocksdb/DBOptionsTest.java src/test/java/org/rocksdb/DefaultEnvTest.java src/test/java/org/rocksdb/DirectSliceTest.java src/test/java/org/rocksdb/EnvOptionsTest.java src/test/java/org/rocksdb/EventListenerTest.java src/test/java/org/rocksdb/FilterTest.java src/test/java/org/rocksdb/FlushOptionsTest.java src/test/java/org/rocksdb/FlushTest.java src/test/java/org/rocksdb/HyperClockCacheTest.java src/test/java/org/rocksdb/ImportColumnFamilyTest.java src/test/java/org/rocksdb/InfoLogLevelTest.java src/test/java/org/rocksdb/IngestExternalFileOptionsTest.java src/test/java/org/rocksdb/KeyExistsTest.java src/test/java/org/rocksdb/KeyMayExistTest.java src/test/java/org/rocksdb/LRUCacheTest.java src/test/java/org/rocksdb/LoggerTest.java src/test/java/org/rocksdb/MemTableTest.java src/test/java/org/rocksdb/MemoryUtilTest.java src/test/java/org/rocksdb/MergeCFVariantsTest.java src/test/java/org/rocksdb/MergeTest.java src/test/java/org/rocksdb/MergeVariantsTest.java src/test/java/org/rocksdb/MixedOptionsTest.java src/test/java/org/rocksdb/MultiColumnRegressionTest.java src/test/java/org/rocksdb/MultiGetManyKeysTest.java src/test/java/org/rocksdb/MultiGetTest.java src/test/java/org/rocksdb/MutableColumnFamilyOptionsTest.java src/test/java/org/rocksdb/MutableDBOptionsTest.java src/test/java/org/rocksdb/MutableOptionsGetSetTest.java src/test/java/org/rocksdb/NativeLibraryLoaderTest.java src/test/java/org/rocksdb/OptimisticTransactionDBTest.java src/test/java/org/rocksdb/OptimisticTransactionOptionsTest.java src/test/java/org/rocksdb/OptimisticTransactionTest.java src/test/java/org/rocksdb/OptionsTest.java src/test/java/org/rocksdb/OptionsUtilTest.java src/test/java/org/rocksdb/PerfContextTest.java src/test/java/org/rocksdb/PerfLevelTest.java src/test/java/org/rocksdb/PlainTableConfigTest.java src/test/java/org/rocksdb/PlatformRandomHelper.java src/test/java/org/rocksdb/PutCFVariantsTest.java src/test/java/org/rocksdb/PutMultiplePartsTest.java src/test/java/org/rocksdb/PutVariantsTest.java src/test/java/org/rocksdb/RateLimiterTest.java src/test/java/org/rocksdb/ReadOnlyTest.java src/test/java/org/rocksdb/ReadOptionsTest.java src/test/java/org/rocksdb/RocksDBTest.java src/test/java/org/rocksdb/RocksIteratorTest.java src/test/java/org/rocksdb/RocksMemEnvTest.java src/test/java/org/rocksdb/SecondaryDBTest.java src/test/java/org/rocksdb/SliceTest.java src/test/java/org/rocksdb/SnapshotTest.java src/test/java/org/rocksdb/SstFileManagerTest.java src/test/java/org/rocksdb/SstFileReaderTest.java src/test/java/org/rocksdb/SstFileWriterTest.java src/test/java/org/rocksdb/SstPartitionerTest.java src/test/java/org/rocksdb/StatisticsCollectorTest.java src/test/java/org/rocksdb/StatisticsTest.java src/test/java/org/rocksdb/StatsCallbackMock.java src/test/java/org/rocksdb/TableFilterTest.java src/test/java/org/rocksdb/TimedEnvTest.java src/test/java/org/rocksdb/TransactionDBOptionsTest.java src/test/java/org/rocksdb/TransactionDBTest.java src/test/java/org/rocksdb/TransactionLogIteratorTest.java src/test/java/org/rocksdb/TransactionOptionsTest.java src/test/java/org/rocksdb/TransactionTest.java src/test/java/org/rocksdb/TtlDBTest.java src/test/java/org/rocksdb/Types.java src/test/java/org/rocksdb/VerifyChecksumsTest.java src/test/java/org/rocksdb/WALRecoveryModeTest.java src/test/java/org/rocksdb/WalFilterTest.java src/test/java/org/rocksdb/WriteBatchHandlerTest.java src/test/java/org/rocksdb/WriteBatchThreadedTest.java src/test/java/org/rocksdb/WriteBatchWithIndexTest.java src/test/java/org/rocksdb/WriteOptionsTest.java src/test/java/org/rocksdb/test/RemoveEmptyValueCompactionFilterFactory.java src/test/java/org/rocksdb/test/RemoveEmptyValueCompactionFilterFactory.java src/test/java/org/rocksdb/test/RemoveEmptyValueCompactionFilterFactory.java src/test/java/org/rocksdb/test/RocksJunitRunner.java src/test/java/org/rocksdb/test/TestableEventListener.java src/test/java/org/rocksdb/test/TestableEventListener.java src/test/java/org/rocksdb/util/ByteBufferAllocator.java src/test/java/org/rocksdb/util/BytewiseComparatorIntTest.java src/test/java/org/rocksdb/util/BytewiseComparatorTest.java src/test/java/org/rocksdb/util/DirectByteBufferAllocator.java src/test/java/org/rocksdb/util/EnvironmentTest.java src/test/java/org/rocksdb/util/HeapByteBufferAllocator.java src/test/java/org/rocksdb/util/IntComparatorTest.java src/test/java/org/rocksdb/util/JNIComparatorTest.java src/test/java/org/rocksdb/util/ReverseBytewiseComparatorIntTest.java src/test/java/org/rocksdb/util/SizeUnitTest.java src/test/java/org/rocksdb/util/StdErrLoggerTest.java src/test/java/org/rocksdb/util/TestUtil.java ) set(JAVA_TEST_RUNNING_CLASSES org.rocksdb.BackupEngineOptionsTest org.rocksdb.BackupEngineTest org.rocksdb.BlobOptionsTest org.rocksdb.BlockBasedTableConfigTest org.rocksdb.BuiltinComparatorTest org.rocksdb.ByteBufferUnsupportedOperationTest org.rocksdb.BytewiseComparatorRegressionTest org.rocksdb.CheckPointTest org.rocksdb.ClockCacheTest org.rocksdb.ColumnFamilyOptionsTest org.rocksdb.ColumnFamilyTest org.rocksdb.CompactRangeOptionsTest org.rocksdb.CompactionFilterFactoryTest org.rocksdb.CompactionJobInfoTest org.rocksdb.CompactionJobStatsTest org.rocksdb.CompactionOptionsFIFOTest org.rocksdb.CompactionOptionsTest org.rocksdb.CompactionOptionsUniversalTest org.rocksdb.CompactionPriorityTest org.rocksdb.CompactionStopStyleTest org.rocksdb.ComparatorOptionsTest org.rocksdb.CompressionOptionsTest org.rocksdb.CompressionTypesTest org.rocksdb.ConcurrentTaskLimiterTest org.rocksdb.DBOptionsTest org.rocksdb.DefaultEnvTest org.rocksdb.DirectSliceTest org.rocksdb.EnvOptionsTest org.rocksdb.EventListenerTest org.rocksdb.FilterTest org.rocksdb.FlushOptionsTest org.rocksdb.FlushTest org.rocksdb.HyperClockCacheTest org.rocksdb.ImportColumnFamilyTest org.rocksdb.InfoLogLevelTest org.rocksdb.IngestExternalFileOptionsTest org.rocksdb.KeyExistsTest org.rocksdb.KeyMayExistTest org.rocksdb.LRUCacheTest org.rocksdb.LoggerTest org.rocksdb.MemTableTest org.rocksdb.MemoryUtilTest org.rocksdb.MergeCFVariantsTest org.rocksdb.MergeTest org.rocksdb.MergeVariantsTest org.rocksdb.MixedOptionsTest org.rocksdb.MultiColumnRegressionTest org.rocksdb.MultiGetManyKeysTest org.rocksdb.MultiGetTest org.rocksdb.MutableColumnFamilyOptionsTest org.rocksdb.MutableDBOptionsTest org.rocksdb.MutableOptionsGetSetTest org.rocksdb.NativeComparatorWrapperTest org.rocksdb.NativeLibraryLoaderTest org.rocksdb.OptimisticTransactionDBTest org.rocksdb.OptimisticTransactionOptionsTest org.rocksdb.OptimisticTransactionTest org.rocksdb.OptionsTest org.rocksdb.OptionsUtilTest org.rocksdb.PerfContextTest org.rocksdb.PerfLevelTest org.rocksdb.PlainTableConfigTest org.rocksdb.PutCFVariantsTest org.rocksdb.PutMultiplePartsTest org.rocksdb.PutVariantsTest org.rocksdb.RateLimiterTest org.rocksdb.ReadOnlyTest org.rocksdb.ReadOptionsTest org.rocksdb.RocksDBExceptionTest org.rocksdb.RocksDBTest org.rocksdb.RocksIteratorTest org.rocksdb.RocksMemEnvTest org.rocksdb.SecondaryDBTest org.rocksdb.SliceTest org.rocksdb.SnapshotTest org.rocksdb.SstFileManagerTest org.rocksdb.SstFileReaderTest org.rocksdb.SstFileWriterTest org.rocksdb.SstPartitionerTest org.rocksdb.StatisticsCollectorTest org.rocksdb.StatisticsTest org.rocksdb.TableFilterTest org.rocksdb.TimedEnvTest org.rocksdb.TransactionDBOptionsTest org.rocksdb.TransactionDBTest org.rocksdb.TransactionLogIteratorTest org.rocksdb.TransactionOptionsTest org.rocksdb.TransactionTest org.rocksdb.TtlDBTest org.rocksdb.VerifyChecksumsTest org.rocksdb.WALRecoveryModeTest org.rocksdb.WalFilterTest org.rocksdb.WriteBatchHandlerTest org.rocksdb.WriteBatchTest org.rocksdb.WriteBatchThreadedTest org.rocksdb.WriteBatchWithIndexTest org.rocksdb.WriteOptionsTest org.rocksdb.util.BytewiseComparatorIntTest org.rocksdb.util.BytewiseComparatorTest org.rocksdb.util.EnvironmentTest org.rocksdb.util.IntComparatorTest org.rocksdb.util.JNIComparatorTest org.rocksdb.util.ReverseBytewiseComparatorIntTest org.rocksdb.util.SizeUnitTest org.rocksdb.util.StdErrLoggerTest ) include(FindJava) include(UseJava) find_package(JNI) include_directories(${JNI_INCLUDE_DIRS}) include_directories(${PROJECT_SOURCE_DIR}/java) set(JAVA_TEST_LIBDIR ${PROJECT_SOURCE_DIR}/java/test-libs) set(JAVA_TMP_JAR ${JAVA_TEST_LIBDIR}/tmp.jar) set(JAVA_JUNIT_JAR ${JAVA_TEST_LIBDIR}/junit-${JAVA_JUNIT_VERSION}.jar) set(JAVA_HAMCR_JAR ${JAVA_TEST_LIBDIR}/hamcrest-${JAVA_HAMCR_VERSION}.jar) set(JAVA_MOCKITO_JAR ${JAVA_TEST_LIBDIR}/mockito-all-${JAVA_MOCKITO_VERSION}.jar) set(JAVA_CGLIB_JAR ${JAVA_TEST_LIBDIR}/cglib-${JAVA_CGLIB_VERSION}.jar) set(JAVA_ASSERTJ_JAR ${JAVA_TEST_LIBDIR}/assertj-core-${JAVA_ASSERTJ_VERSION}.jar) set(JAVA_TESTCLASSPATH ${JAVA_JUNIT_JAR} ${JAVA_HAMCR_JAR} ${JAVA_MOCKITO_JAR} ${JAVA_CGLIB_JAR} ${JAVA_ASSERTJ_JAR}) message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}") message("MINGW: ${MINGW}") if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") set(JAVA_RUN_TESTCLASSPATH ${JAVA_JUNIT_JAR}$${JAVA_HAMCR_JAR}$${JAVA_MOCKITO_JAR}$${JAVA_CGLIB_JAR}$${JAVA_ASSERTJ_JAR}) else() set(JAVA_RUN_TESTCLASSPATH ${JAVA_JUNIT_JAR}:${JAVA_HAMCR_JAR}:${JAVA_MOCKITO_JAR}:${JAVA_CGLIB_JAR}:${JAVA_ASSERTJ_JAR}) endif() set(JNI_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/java/include) file(MAKE_DIRECTORY ${JNI_OUTPUT_DIR}) if(${Java_VERSION_MINOR} VERSION_LESS_EQUAL "7" AND ${Java_VERSION_MAJOR} STREQUAL "1") message(FATAL_ERROR "Detected Java 7 or older (${Java_VERSION_STRING}), minimum required version in now Java 8") endif() if(${Java_VERSION_MAJOR} VERSION_GREATER_EQUAL "10" AND ${CMAKE_VERSION} VERSION_LESS "3.11.4") # Java 10 and newer don't have javah, but the alternative GENERATE_NATIVE_HEADERS requires CMake 3.11.4 or newer message(FATAL_ERROR "Detected Java 10 or newer (${Java_VERSION_STRING}), to build with CMake please upgrade CMake to 3.11.4 or newer") elseif(${CMAKE_VERSION} VERSION_LESS "3.11.4") # Old CMake message("Using an old CMAKE (${CMAKE_VERSION}) - JNI headers generated in separate step") add_jar( rocksdbjni_classes SOURCES ${JAVA_MAIN_CLASSES} ) else () # Java 1.8 or newer prepare the JAR... message("Preparing Jar for JDK ${Java_VERSION_STRING}") message("JAVA_TESTCLASSPATH=${JAVA_TESTCLASSPATH}") add_jar( rocksdbjni_classes SOURCES ${JAVA_MAIN_CLASSES} INCLUDE_JARS ${ROCKSDBJNI_CLASSES_JAR_FILE} ${JAVA_TESTCLASSPATH} GENERATE_NATIVE_HEADERS rocksdbjni_headers DESTINATION ${JNI_OUTPUT_DIR} ) endif() add_jar( rocksdbjni_test_classes SOURCES ${JAVA_MAIN_CLASSES} ${JAVA_TEST_CLASSES} INCLUDE_JARS ${JAVA_TESTCLASSPATH} GENERATE_NATIVE_HEADERS rocksdbjni_test_headers DESTINATION ${JNI_OUTPUT_DIR} ) if(NOT EXISTS ${PROJECT_SOURCE_DIR}/java/classes) file(MAKE_DIRECTORY ${PROJECT_SOURCE_DIR}/java/classes) endif() if(NOT EXISTS ${JAVA_TEST_LIBDIR}) file(MAKE_DIRECTORY mkdir ${JAVA_TEST_LIBDIR}) endif() if (DEFINED CUSTOM_DEPS_URL) set(DEPS_URL ${CUSTOM_DEPS_URL}/) else () # Using a Facebook AWS account for S3 storage. (maven.org has a history # of failing in Travis builds.) set(DEPS_URL "https://rocksdb-deps.s3-us-west-2.amazonaws.com/jars") endif() if(NOT EXISTS ${JAVA_JUNIT_JAR}) message("Downloading ${JAVA_JUNIT_JAR}") file(DOWNLOAD ${DEPS_URL}/junit-${JAVA_JUNIT_VERSION}.jar ${JAVA_TMP_JAR} STATUS downloadStatus) list(GET downloadStatus 0 error_code) list(GET downloadStatus 1 error_message) if(NOT error_code EQUAL 0) message(FATAL_ERROR "Failed downloading ${JAVA_JUNIT_JAR}: ${error_message}") endif() file(RENAME ${JAVA_TMP_JAR} ${JAVA_JUNIT_JAR}) endif() if(NOT EXISTS ${JAVA_HAMCR_JAR}) message("Downloading ${JAVA_HAMCR_JAR}") file(DOWNLOAD ${DEPS_URL}/hamcrest-${JAVA_HAMCR_VERSION}.jar ${JAVA_TMP_JAR} STATUS downloadStatus) list(GET downloadStatus 0 error_code) list(GET downloadStatus 1 error_message) if(NOT error_code EQUAL 0) message(FATAL_ERROR "Failed downloading ${JAVA_HAMCR_JAR}: ${error_message}") endif() file(RENAME ${JAVA_TMP_JAR} ${JAVA_HAMCR_JAR}) endif() if(NOT EXISTS ${JAVA_MOCKITO_JAR}) message("Downloading ${JAVA_MOCKITO_JAR}") file(DOWNLOAD ${DEPS_URL}/mockito-all-${JAVA_MOCKITO_VERSION}.jar ${JAVA_TMP_JAR} STATUS downloadStatus) list(GET downloadStatus 0 error_code) list(GET downloadStatus 1 error_message) if(NOT error_code EQUAL 0) message(FATAL_ERROR "Failed downloading ${JAVA_MOCKITO_JAR}: ${error_message}") endif() file(RENAME ${JAVA_TMP_JAR} ${JAVA_MOCKITO_JAR}) endif() if(NOT EXISTS ${JAVA_CGLIB_JAR}) message("Downloading ${JAVA_CGLIB_JAR}") file(DOWNLOAD ${DEPS_URL}/cglib-${JAVA_CGLIB_VERSION}.jar ${JAVA_TMP_JAR} STATUS downloadStatus) list(GET downloadStatus 0 error_code) list(GET downloadStatus 1 error_message) if(NOT error_code EQUAL 0) message(FATAL_ERROR "Failed downloading ${JAVA_CGLIB_JAR}: ${error_message}") endif() file(RENAME ${JAVA_TMP_JAR} ${JAVA_CGLIB_JAR}) endif() if(NOT EXISTS ${JAVA_ASSERTJ_JAR}) message("Downloading ${JAVA_ASSERTJ_JAR}") file(DOWNLOAD ${DEPS_URL}/assertj-core-${JAVA_ASSERTJ_VERSION}.jar ${JAVA_TMP_JAR} STATUS downloadStatus) list(GET downloadStatus 0 error_code) list(GET downloadStatus 1 error_message) if(NOT error_code EQUAL 0) message(FATAL_ERROR "Failed downloading ${JAVA_ASSERTJ_JAR}: ${error_message}") endif() file(RENAME ${JAVA_TMP_JAR} ${JAVA_ASSERTJ_JAR}) endif() if(${CMAKE_VERSION} VERSION_LESS "3.11.4") # Old CMake ONLY generate JNI headers, otherwise JNI is handled in add_jar step above message("Preparing JNI headers for old CMake (${CMAKE_VERSION})") set(NATIVE_JAVA_CLASSES org.rocksdb.AbstractCompactionFilter org.rocksdb.AbstractCompactionFilterFactory org.rocksdb.AbstractComparator org.rocksdb.AbstractEventListener org.rocksdb.AbstractImmutableNativeReference org.rocksdb.AbstractNativeReference org.rocksdb.AbstractRocksIterator org.rocksdb.AbstractSlice org.rocksdb.AbstractTableFilter org.rocksdb.AbstractTraceWriter org.rocksdb.AbstractTransactionNotifier org.rocksdb.AbstractWalFilter org.rocksdb.BackupEngineOptions org.rocksdb.BackupEngine org.rocksdb.BlockBasedTableConfig org.rocksdb.BloomFilter org.rocksdb.CassandraCompactionFilter org.rocksdb.CassandraValueMergeOperator org.rocksdb.Checkpoint org.rocksdb.ClockCache org.rocksdb.Cache org.rocksdb.ColumnFamilyHandle org.rocksdb.ColumnFamilyOptions org.rocksdb.CompactionJobInfo org.rocksdb.CompactionJobStats org.rocksdb.CompactionOptions org.rocksdb.CompactionOptionsFIFO org.rocksdb.CompactionOptionsUniversal org.rocksdb.CompactRangeOptions org.rocksdb.ComparatorOptions org.rocksdb.CompressionOptions org.rocksdb.ConcurrentTaskLimiterImpl org.rocksdb.ConfigOptions org.rocksdb.DBOptions org.rocksdb.DirectSlice org.rocksdb.Env org.rocksdb.EnvOptions org.rocksdb.Filter org.rocksdb.FlushOptions org.rocksdb.HashLinkedListMemTableConfig org.rocksdb.HashSkipListMemTableConfig org.rocksdb.HyperClockCache org.rocksdb.IngestExternalFileOptions org.rocksdb.Logger org.rocksdb.LRUCache org.rocksdb.MemoryUtil org.rocksdb.MemTableConfig org.rocksdb.NativeComparatorWrapper org.rocksdb.NativeLibraryLoader org.rocksdb.OptimisticTransactionDB org.rocksdb.OptimisticTransactionOptions org.rocksdb.Options org.rocksdb.OptionsUtil org.rocksdb.PersistentCache org.rocksdb.PlainTableConfig org.rocksdb.RateLimiter org.rocksdb.ReadOptions org.rocksdb.RemoveEmptyValueCompactionFilter org.rocksdb.RestoreOptions org.rocksdb.RocksCallbackObject org.rocksdb.RocksDB org.rocksdb.RocksEnv org.rocksdb.RocksIterator org.rocksdb.RocksIteratorInterface org.rocksdb.RocksMemEnv org.rocksdb.RocksMutableObject org.rocksdb.RocksObject org.rocksdb.SkipListMemTableConfig org.rocksdb.Slice org.rocksdb.Snapshot org.rocksdb.SstFileManager org.rocksdb.SstFileWriter org.rocksdb.SstFileReader org.rocksdb.SstFileReaderIterator org.rocksdb.SstPartitionerFactory org.rocksdb.SstPartitionerFixedPrefixFactory org.rocksdb.Statistics org.rocksdb.StringAppendOperator org.rocksdb.TableFormatConfig org.rocksdb.ThreadStatus org.rocksdb.TimedEnv org.rocksdb.Transaction org.rocksdb.TransactionDB org.rocksdb.TransactionDBOptions org.rocksdb.TransactionLogIterator org.rocksdb.TransactionOptions org.rocksdb.TtlDB org.rocksdb.UInt64AddOperator org.rocksdb.VectorMemTableConfig org.rocksdb.WBWIRocksIterator org.rocksdb.WriteBatch org.rocksdb.WriteBatch.Handler org.rocksdb.WriteBatchInterface org.rocksdb.WriteBatchWithIndex org.rocksdb.WriteOptions org.rocksdb.NativeComparatorWrapperTest org.rocksdb.RocksDBExceptionTest org.rocksdb.SnapshotTest org.rocksdb.WriteBatchTest org.rocksdb.WriteBatchTestInternalHelper org.rocksdb.WriteBufferManager org.rocksdb.test.TestableEventListener ) create_javah( TARGET rocksdbjni_headers CLASSES ${NATIVE_JAVA_CLASSES} CLASSPATH rocksdbjni_classes ${JAVA_TESTCLASSPATH} OUTPUT_DIR ${JNI_OUTPUT_DIR} ) endif() if(NOT MSVC) set_property(TARGET ${ROCKSDB_STATIC_LIB} PROPERTY POSITION_INDEPENDENT_CODE ON) endif() set(ROCKSDBJNI_STATIC_LIB rocksdbjni${ARTIFACT_SUFFIX}) if(MINGW) # Build mingw only as staic library. add_library(${ROCKSDBJNI_STATIC_LIB} ${JNI_NATIVE_SOURCES}) else() add_library(${ROCKSDBJNI_STATIC_LIB} SHARED ${JNI_NATIVE_SOURCES}) endif() add_dependencies(${ROCKSDBJNI_STATIC_LIB} rocksdbjni_headers) target_link_libraries(${ROCKSDBJNI_STATIC_LIB} ${ROCKSDB_STATIC_LIB} ${ROCKSDB_LIB}) if(NOT MINGW) set(ROCKSDBJNI_SHARED_LIB rocksdbjni-shared${ARTIFACT_SUFFIX}) add_library(${ROCKSDBJNI_SHARED_LIB} SHARED ${JNI_NATIVE_SOURCES}) add_dependencies(${ROCKSDBJNI_SHARED_LIB} rocksdbjni_headers) target_link_libraries(${ROCKSDBJNI_SHARED_LIB} ${ROCKSDB_STATIC_LIB} ${ROCKSDB_LIB}) set_target_properties( ${ROCKSDBJNI_SHARED_LIB} PROPERTIES COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_CFG_INTDIR} COMPILE_PDB_NAME ${ROCKSDBJNI_STATIC_LIB}.pdb ) endif() # Javadoc Jar set(ROCKSDB_JAVADOC_JAR rocksdbjni-${CMAKE_PROJECT_VERSION}-javadoc.jar) create_javadoc(rocksdb PACKAGES org.rocksdb org.rocksdb.util SOURCEPATH "${PROJECT_SOURCE_DIR}/java/src/main/java" WINDOWTITLE "RocksDB Java API JavaDoc" AUTHOR FALSE USE FALSE VERSION TRUE ) add_custom_target(rocksdb_javadocs_jar ALL COMMAND ${Java_JAR_EXECUTABLE} cvf ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_JAVADOC_JAR} -C ${CMAKE_CURRENT_BINARY_DIR}/javadoc/rocksdb . BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_JAVADOC_JAR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS rocksdb_javadoc ) # Sources Jar set(ROCKSDB_SOURCES_JAR rocksdbjni-${CMAKE_PROJECT_VERSION}-sources.jar) add_custom_target(rocksdb_sources_jar ALL ${Java_JAR_EXECUTABLE} cvf ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_SOURCES_JAR} -C ${PROJECT_SOURCE_DIR}/java/src/main/java/ . BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_SOURCES_JAR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) set(bitness 32) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(bitness 64) endif() if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") set_target_properties( ${ROCKSDBJNI_STATIC_LIB} PROPERTIES OUTPUT_NAME librocksdbjni-win${bitness} ) set(ROCKSDB_JAR rocksdbjni-${CMAKE_PROJECT_VERSION}-win${bitness}.jar) elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") set_target_properties( ${ROCKSDBJNI_STATIC_LIB} PROPERTIES OUTPUT_NAME "rocksdbjni-linux${bitness}" ) set(ROCKSDB_JAR rocksdbjni-${CMAKE_PROJECT_VERSION}-linux${bitness}.jar) elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set_target_properties( ${ROCKSDBJNI_STATIC_LIB} PROPERTIES OUTPUT_NAME rocksdbjni-osx-${CMAKE_SYSTEM_PROCESSOR} ) set_target_properties( ${ROCKSDBJNI_STATIC_LIB} PROPERTIES SUFFIX ".jnilib" ) set(ROCKSDB_JAR rocksdbjni-${CMAKE_PROJECT_VERSION}-osx.jar) else() set(ROCKSDB_JAR rocksdb-${CMAKE_PROJECT_VERSION}.jar) endif() get_target_property(ROCKS_JAR_FILE rocksdbjni_classes JAR_FILE) add_custom_target(rocksdbjava ALL COMMAND ${CMAKE_COMMAND} -E copy ${ROCKS_JAR_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_JAR} COMMAND ${Java_JAR_EXECUTABLE} -uf ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_JAR} -C $ $ COMMAND ${Java_JAR_EXECUTABLE} -uf ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_JAR} -C ${CMAKE_CURRENT_SOURCE_DIR} HISTORY-JAVA.md DEPENDS ${ROCKSDBJNI_STATIC_LIB} rocksdbjni_classes BYPRODUCTS ${ROCKSDB_JAR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) enable_testing() get_target_property(ROCKSDBJNI_CLASSES_TEST_JAR_FILE rocksdbjni_test_classes JAR_FILE) foreach (CLAZZ ${JAVA_TEST_RUNNING_CLASSES}) if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") add_test( NAME jtest_${CLAZZ} COMMAND ${Java_JAVA_EXECUTABLE} ${JVMARGS} -ea -Xcheck:jni -Djava.library.path=${PROJECT_BINARY_DIR}/java/${CMAKE_BUILD_TYPE} -classpath ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_JAR}$${JAVA_RUN_TESTCLASSPATH}$${ROCKSDBJNI_CLASSES_TEST_JAR_FILE} org.rocksdb.test.RocksJunitRunner ${CLAZZ} ) else() add_test( NAME jtest_${CLAZZ} COMMAND ${Java_JAVA_EXECUTABLE} ${JVMARGS} -ea -Xcheck:jni -Djava.library.path=${PROJECT_BINARY_DIR}/java -classpath ${JAVA_RUN_TESTCLASSPATH}:${ROCKSDBJNI_CLASSES_TEST_JAR_FILE}:${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_JAR} org.rocksdb.test.RocksJunitRunner ${CLAZZ} ) endif() endforeach(CLAZZ)