mirror of https://github.com/facebook/rocksdb.git
349 lines
12 KiB
CMake
349 lines
12 KiB
CMake
# This cmake build is for Windows only.
|
|
#
|
|
# Prerequisites:
|
|
# You must have Visual Studio 2013 Update 4 installed. Start the Developer Command Prompt window that is a part of Visual Studio installation.
|
|
# Run the build commands from within the Developer Command Prompt window to have paths to the compiler and runtime libraries set.
|
|
# Make sure that Git is in your PATH
|
|
#
|
|
# To build Rocksdb for Windows is as easy as 1-2-3-4-5:
|
|
#
|
|
# 1. Update paths to thirdparty libraries in thirdparty.cmake file
|
|
# 2. Create a new directory for build artifacts
|
|
# mkdir build
|
|
# cd build
|
|
# 3. Run cmake to generate project files for Windows
|
|
# cmake -G "Visual Studio 12 Win64" ..
|
|
# 4. Then build the project in debug mode (you may want to add /m:<N> flag to run msbuild in <N> parallel threads)
|
|
# msbuild ALL_BUILD.vcxproj
|
|
# 5. And release mode (/m:<N> is also supported)
|
|
# msbuild ALL_BUILD.vcxproj /p:Configuration=Release
|
|
#
|
|
|
|
cmake_minimum_required(VERSION 2.6)
|
|
project(rocksdb)
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/thirdparty.inc)
|
|
|
|
execute_process(COMMAND $ENV{COMSPEC} " /C date /T" OUTPUT_VARIABLE DATE)
|
|
execute_process(COMMAND $ENV{COMSPEC} " /C time /T" OUTPUT_VARIABLE TIME)
|
|
string(REGEX REPLACE "(..)/(..)/..(..).*" "\\1/\\2/\\3" DATE ${DATE})
|
|
string(REGEX REPLACE "(..):(.....).*" " \\1:\\2" TIME ${TIME})
|
|
string(CONCAT GIT_DATE_TIME ${DATE} ${TIME})
|
|
|
|
execute_process(COMMAND $ENV{COMSPEC} " /C git rev-parse HEAD 2>nil" OUTPUT_VARIABLE GIT_SHA)
|
|
string(REGEX REPLACE "[^0-9a-f]+" "" GIT_SHA ${GIT_SHA})
|
|
|
|
set(BUILD_VERSION_CC ${CMAKE_CURRENT_SOURCE_DIR}/util/build_version.cc)
|
|
|
|
add_custom_command(OUTPUT ${BUILD_VERSION_CC}
|
|
COMMAND echo "#include \"build_version.h\"" > ${BUILD_VERSION_CC}
|
|
COMMAND echo "const char* rocksdb_build_git_sha = \"rocksdb_build_git_sha:${GIT_SHA}\";" >> ${BUILD_VERSION_CC}
|
|
COMMAND echo "const char* rocksdb_build_git_datetime = \"rocksdb_build_git_datetime:${GIT_DATE_TIME}\";" >> ${BUILD_VERSION_CC}
|
|
COMMAND echo const char* rocksdb_build_compile_date = __DATE__\; >> ${BUILD_VERSION_CC}
|
|
)
|
|
|
|
add_custom_target(GenerateBuildVersion DEPENDS ${BUILD_VERSION_CC})
|
|
|
|
add_definitions(${GFLAGS_CXX_FLAGS} ${SNAPPY_CXX_FLAGS})
|
|
include_directories(${GFLAGS_INCLUDE} ${SNAPPY_INCLUDE} ${JEMALLOC_INCLUDE})
|
|
set (THIRDPARTY_LIBS ${GFLAGS_LIBS} ${SNAPPY_LIBS} ${JEMALLOC_LIBS})
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi /nologo /W3 /WX /EHsc /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TP /errorReport:queue")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FC /d2Zi+ /wd4018 /wd4100 /wd4101 /wd4127 /wd4189 /wd4200 /wd4244 /wd4267 /wd4296 /wd4305 /wd4307 /wd4309 /wd4512 /wd4701 /wd4702 /wd4800 /wd4804 /wd4996")
|
|
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /RTC1 /Gm /MDd")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2 /Oi /Gm- /Gy /MD")
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG")
|
|
|
|
add_definitions(-DWIN32 -DOS_WIN -D_MBCS -DWIN64)
|
|
|
|
include_directories(${PROJECT_SOURCE_DIR})
|
|
include_directories(${PROJECT_SOURCE_DIR}/include)
|
|
include_directories(${PROJECT_SOURCE_DIR}/port)
|
|
include_directories(${PROJECT_SOURCE_DIR}/third-party/gtest-1.7.0/fused-src)
|
|
|
|
set(ROCKSDB_LIBS rocksdblib)
|
|
set(ROCKSDB_LIBS_JE rocksdblib_je)
|
|
set(THIRDPARTY_LIBS ${THIRDPARTY_LIBS} gtest)
|
|
set(SYSTEM_LIBS Shlwapi.lib Rpcrt4.lib)
|
|
|
|
set(LIBS ${ROCKSDB_LIBS} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
|
|
set(LIBS_JE ${ROCKSDB_LIBS_JE} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
|
|
|
|
add_subdirectory(third-party/gtest-1.7.0/fused-src/gtest)
|
|
|
|
set(SOURCES
|
|
db/builder.cc
|
|
db/c.cc
|
|
db/column_family.cc
|
|
db/compaction.cc
|
|
db/compaction_job.cc
|
|
db/compaction_picker.cc
|
|
db/dbformat.cc
|
|
db/db_filesnapshot.cc
|
|
db/db_impl.cc
|
|
db/db_impl_debug.cc
|
|
db/db_impl_experimental.cc
|
|
db/db_impl_readonly.cc
|
|
db/db_iter.cc
|
|
db/event_helpers.cc
|
|
db/experimental.cc
|
|
db/filename.cc
|
|
db/file_indexer.cc
|
|
db/flush_job.cc
|
|
db/flush_scheduler.cc
|
|
db/forward_iterator.cc
|
|
db/internal_stats.cc
|
|
db/log_reader.cc
|
|
db/log_writer.cc
|
|
db/managed_iterator.cc
|
|
db/memtable.cc
|
|
db/memtable_allocator.cc
|
|
db/memtable_list.cc
|
|
db/merge_helper.cc
|
|
db/merge_operator.cc
|
|
db/repair.cc
|
|
db/slice.cc
|
|
db/table_cache.cc
|
|
db/table_properties_collector.cc
|
|
db/transaction_log_impl.cc
|
|
db/version_builder.cc
|
|
db/version_edit.cc
|
|
db/version_set.cc
|
|
db/wal_manager.cc
|
|
db/write_batch.cc
|
|
db/write_batch_base.cc
|
|
db/write_controller.cc
|
|
db/write_thread.cc
|
|
port/stack_trace.cc
|
|
port/win/env_win.cc
|
|
port/win/port_win.cc
|
|
port/win/win_logger.cc
|
|
table/adaptive_table_factory.cc
|
|
table/block.cc
|
|
table/block_based_filter_block.cc
|
|
table/block_based_table_builder.cc
|
|
table/block_based_table_factory.cc
|
|
table/block_based_table_reader.cc
|
|
table/block_builder.cc
|
|
table/block_hash_index.cc
|
|
table/block_prefix_index.cc
|
|
table/bloom_block.cc
|
|
table/cuckoo_table_builder.cc
|
|
table/cuckoo_table_factory.cc
|
|
table/cuckoo_table_reader.cc
|
|
table/flush_block_policy.cc
|
|
table/format.cc
|
|
table/full_filter_block.cc
|
|
table/get_context.cc
|
|
table/iterator.cc
|
|
table/merger.cc
|
|
table/meta_blocks.cc
|
|
table/mock_table.cc
|
|
table/plain_table_builder.cc
|
|
table/plain_table_factory.cc
|
|
table/plain_table_index.cc
|
|
table/plain_table_key_coding.cc
|
|
table/plain_table_reader.cc
|
|
table/table_properties.cc
|
|
table/two_level_iterator.cc
|
|
util/arena.cc
|
|
util/auto_roll_logger.cc
|
|
util/bloom.cc
|
|
util/build_version.cc
|
|
util/cache.cc
|
|
util/coding.cc
|
|
util/compaction_job_stats_impl.cc
|
|
util/comparator.cc
|
|
util/crc32c.cc
|
|
util/db_info_dumper.cc
|
|
util/dynamic_bloom.cc
|
|
util/env.cc
|
|
util/env_hdfs.cc
|
|
util/event_logger.cc
|
|
util/file_util.cc
|
|
util/filter_policy.cc
|
|
util/hash.cc
|
|
util/hash_cuckoo_rep.cc
|
|
util/hash_linklist_rep.cc
|
|
util/hash_skiplist_rep.cc
|
|
util/histogram.cc
|
|
util/instrumented_mutex.cc
|
|
util/iostats_context.cc
|
|
util/ldb_cmd.cc
|
|
util/ldb_tool.cc
|
|
util/logging.cc
|
|
util/log_buffer.cc
|
|
util/memenv.cc
|
|
util/mock_env.cc
|
|
util/murmurhash.cc
|
|
util/mutable_cf_options.cc
|
|
util/options.cc
|
|
util/options_builder.cc
|
|
util/options_helper.cc
|
|
util/perf_context.cc
|
|
util/perf_level.cc
|
|
util/rate_limiter.cc
|
|
util/skiplistrep.cc
|
|
util/slice.cc
|
|
util/sst_dump_tool.cc
|
|
util/statistics.cc
|
|
util/status.cc
|
|
util/string_util.cc
|
|
util/sync_point.cc
|
|
util/testharness.cc
|
|
util/testutil.cc
|
|
util/thread_local.cc
|
|
util/thread_status_impl.cc
|
|
util/thread_status_updater.cc
|
|
util/thread_status_updater_debug.cc
|
|
util/thread_status_util.cc
|
|
util/thread_status_util_debug.cc
|
|
util/vectorrep.cc
|
|
util/xfunc.cc
|
|
util/xxhash.cc
|
|
utilities/backupable/backupable_db.cc
|
|
utilities/checkpoint/checkpoint.cc
|
|
utilities/compacted_db/compacted_db_impl.cc
|
|
utilities/convenience/convenience.cc
|
|
utilities/document/document_db.cc
|
|
utilities/document/json_document.cc
|
|
utilities/document/json_document_builder.cc
|
|
utilities/flashcache/flashcache.cc
|
|
utilities/geodb/geodb_impl.cc
|
|
utilities/leveldb_options/leveldb_options.cc
|
|
utilities/merge_operators/string_append/stringappend.cc
|
|
utilities/merge_operators/string_append/stringappend2.cc
|
|
utilities/merge_operators/put.cc
|
|
utilities/merge_operators/uint64add.cc
|
|
utilities/redis/redis_lists.cc
|
|
utilities/spatialdb/spatial_db.cc
|
|
utilities/transactions/optimistic_transaction_db_impl.cc
|
|
utilities/transactions/optimistic_transaction_impl.cc
|
|
utilities/ttl/db_ttl_impl.cc
|
|
utilities/write_batch_with_index/write_batch_with_index.cc
|
|
utilities/write_batch_with_index/write_batch_with_index_internal.cc
|
|
)
|
|
|
|
add_library(rocksdblib ${SOURCES})
|
|
set_target_properties(rocksdblib PROPERTIES COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/rocksdblib.pdb")
|
|
add_dependencies(rocksdblib GenerateBuildVersion)
|
|
|
|
add_library(rocksdblib_je ${SOURCES})
|
|
set_target_properties(rocksdblib_je PROPERTIES COMPILE_FLAGS "${JEMALLOC_CXX_FLAGS} /Fd${CMAKE_CFG_INTDIR}/rocksdblib_je.pdb")
|
|
add_dependencies(rocksdblib_je GenerateBuildVersion)
|
|
|
|
add_library(rocksdb SHARED ${SOURCES})
|
|
set_target_properties(rocksdb PROPERTIES COMPILE_FLAGS "-DROCKSDB_DLL -DROCKSDB_LIBRARY_EXPORTS /Fd${CMAKE_CFG_INTDIR}/rocksdb.pdb")
|
|
add_dependencies(rocksdb GenerateBuildVersion)
|
|
target_link_libraries(rocksdb ${LIBS})
|
|
|
|
add_library(rocksdb_je SHARED ${SOURCES})
|
|
set_target_properties(rocksdb_je PROPERTIES COMPILE_FLAGS "${JEMALLOC_CXX_FLAGS} -DROCKSDB_DLL -DROCKSDB_LIBRARY_EXPORTS /Fd${CMAKE_CFG_INTDIR}/rocksdb_je.pdb")
|
|
add_dependencies(rocksdb_je GenerateBuildVersion)
|
|
target_link_libraries(rocksdb_je ${LIBS_JE})
|
|
|
|
set(APPS
|
|
db/db_bench.cc
|
|
db/memtablerep_bench.cc
|
|
table/table_reader_bench.cc
|
|
tools/db_stress.cc
|
|
tools/db_repl_stress.cc
|
|
tools/sst_dump.cc
|
|
tools/dump/rocksdb_dump.cc
|
|
tools/dump/rocksdb_undump.cc
|
|
util/cache_bench.cc
|
|
)
|
|
|
|
set(TESTS
|
|
db/c_test.c
|
|
db/column_family_test.cc
|
|
db/compact_files_test.cc
|
|
db/compaction_job_test.cc
|
|
db/compaction_job_stats_test.cc
|
|
db/compaction_picker_test.cc
|
|
db/comparator_db_test.cc
|
|
db/corruption_test.cc
|
|
db/cuckoo_table_db_test.cc
|
|
db/db_iter_test.cc
|
|
db/db_test.cc
|
|
db/dbformat_test.cc
|
|
db/deletefile_test.cc
|
|
db/fault_injection_test.cc
|
|
db/file_indexer_test.cc
|
|
db/filename_test.cc
|
|
db/flush_job_test.cc
|
|
db/listener_test.cc
|
|
db/log_test.cc
|
|
db/memtable_list_test.cc
|
|
db/merge_test.cc
|
|
db/perf_context_test.cc
|
|
db/plain_table_db_test.cc
|
|
db/prefix_test.cc
|
|
db/skiplist_test.cc
|
|
db/table_properties_collector_test.cc
|
|
db/version_builder_test.cc
|
|
db/version_edit_test.cc
|
|
db/version_set_test.cc
|
|
db/wal_manager_test.cc
|
|
db/write_batch_test.cc
|
|
db/write_callback_test.cc
|
|
db/write_controller_test.cc
|
|
table/block_based_filter_block_test.cc
|
|
table/block_hash_index_test.cc
|
|
table/block_test.cc
|
|
table/cuckoo_table_builder_test.cc
|
|
table/cuckoo_table_reader_test.cc
|
|
table/full_filter_block_test.cc
|
|
table/merger_test.cc
|
|
table/table_test.cc
|
|
tools/db_sanity_test.cc
|
|
tools/reduce_levels_test.cc
|
|
util/arena_test.cc
|
|
util/autovector_test.cc
|
|
util/auto_roll_logger_test.cc
|
|
util/bloom_test.cc
|
|
util/cache_test.cc
|
|
util/coding_test.cc
|
|
util/crc32c_test.cc
|
|
util/dynamic_bloom_test.cc
|
|
util/env_test.cc
|
|
util/event_logger_test.cc
|
|
util/filelock_test.cc
|
|
util/histogram_test.cc
|
|
util/manual_compaction_test.cc
|
|
util/memenv_test.cc
|
|
util/mock_env_test.cc
|
|
util/options_test.cc
|
|
util/rate_limiter_test.cc
|
|
util/slice_transform_test.cc
|
|
util/sst_dump_test.cc
|
|
util/thread_list_test.cc
|
|
util/thread_local_test.cc
|
|
utilities/backupable/backupable_db_test.cc
|
|
utilities/checkpoint/checkpoint_test.cc
|
|
utilities/document/document_db_test.cc
|
|
utilities/document/json_document_test.cc
|
|
utilities/geodb/geodb_test.cc
|
|
utilities/merge_operators/string_append/stringappend_test.cc
|
|
utilities/redis/redis_lists_test.cc
|
|
utilities/spatialdb/spatial_db_test.cc
|
|
utilities/transactions/optimistic_transaction_test.cc
|
|
utilities/ttl/ttl_test.cc
|
|
utilities/write_batch_with_index/write_batch_with_index_test.cc
|
|
)
|
|
|
|
set(EXES ${APPS} ${TESTS})
|
|
|
|
foreach(sourcefile ${EXES})
|
|
string(REPLACE ".cc" "" exename ${sourcefile})
|
|
string(REPLACE ".c" "" exename ${exename})
|
|
string(REGEX REPLACE "^((.+)/)+" "" exename ${exename})
|
|
add_executable(${exename} ${sourcefile})
|
|
target_link_libraries(${exename} ${LIBS})
|
|
add_executable(${exename}_je ${sourcefile})
|
|
set_target_properties(${exename}_je PROPERTIES COMPILE_FLAGS ${JEMALLOC_CXX_FLAGS})
|
|
target_link_libraries(${exename}_je ${LIBS_JE})
|
|
endforeach(sourcefile ${EXES})
|