From 58841ef12f6cba1bb622353c1fcaa0e3c6fb46c9 Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Tue, 23 Oct 2012 01:18:44 +0400 Subject: Add dummy and LevelDB database backends --- src/leveldb/CMakeLists.txt | 177 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 src/leveldb/CMakeLists.txt (limited to 'src/leveldb/CMakeLists.txt') diff --git a/src/leveldb/CMakeLists.txt b/src/leveldb/CMakeLists.txt new file mode 100644 index 000000000..44d2a93fc --- /dev/null +++ b/src/leveldb/CMakeLists.txt @@ -0,0 +1,177 @@ +set(CMAKE_LEGACY_CYGWIN_WIN32 0) +cmake_minimum_required(VERSION 2.8) + +PROJECT(leveldb) +# version +set(LIB_MAJOR 0) +set(LIB_MINOR 0) +set(LIB_RELEASE 1) +set(CMAKE_INSTALL_SO_NO_EXE "0") + +include(CheckIncludeFile) +include_directories(${CMAKE_CURRENT_SOURCE_DIR} include) + + +# STATIC/DYNAMIC LIBRARY INCLUSION +if(MINGW OR WIN32) + OPTION(STATIC "build a static binaries. This is mainly intended for the win32-package and the MACOSX-bundle." ON ) +else(MINGW OR WIN32) + OPTION(STATIC "build a static binaries. This is mainly intended for the win32-package and the MACOSX-bundle." OFF ) +endif() + + + +# OS detection +if(WIN32) + add_definitions(-DLEVELDB_PLATFORM_WINDOWS -DOS_WIN -DWIN32_LEAN_AND_MEAN) + if(MINGW) +add_definitions(-DMINGW) + endif() + if(MSVC) + add_definitions(-DCOMPILER_MSVC) + endif() + set(PORT_SRCS port/port_win.cc util/env_boost.cc) + set(CIF_SRCS) +elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + add_definitions(-DLEVELDB_PLATFORM_POSIX -DOS_FREEBSD) + set(PORT_SRCS port/port_posix.cc util/env_posix.cc) + set(CIF_SRCS db/c.cc) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + add_definitions(-DLEVELDB_PLATFORM_POSIX -DOS_LINUX) + # link pthread + set(PORT_SRCS port/port_posix.cc util/env_posix.cc) + set(CIF_SRCS db/c.cc) +elseif(CYGWIN) + add_definitions(-DLEVELDB_PLATFORM_POSIX -DOS_LINUX) + set(PORT_SRCS port/port_posix.cc util/env_posix.cc) + set(CIF_SRCS db/c.cc) +elseif(APPLE) + add_definitions(-DLEVELDB_PLATFORM_POSIX -DOS_MACOSX) + set(PORT_SRCS port/port_posix.cc util/env_posix.cc) + set(CIF_SRCS db/c.cc) +endif() + +# FIXME: check cstdatomic here.. + +set(SRCS + db/builder.cc + db/db_impl.cc + db/db_iter.cc + db/filename.cc + db/dbformat.cc + db/log_reader.cc + db/log_writer.cc + db/memtable.cc + db/repair.cc + db/table_cache.cc + db/version_edit.cc + db/version_set.cc + db/write_batch.cc + table/block.cc + table/block_builder.cc + table/filter_block.cc + table/format.cc + table/iterator.cc + table/merger.cc + table/table.cc + table/table_builder.cc + table/two_level_iterator.cc + util/env.cc + util/arena.cc + util/bloom.cc + util/cache.cc + util/coding.cc + util/comparator.cc + util/crc32c.cc + util/filter_policy.cc + util/hash.cc + util/histogram.cc + util/logging.cc + util/options.cc + util/status.cc + ${PORT_SRCS} + ${CIF_SRCS} + ) + +set(HDRS + include/leveldb/c.h + include/leveldb/cache.h + include/leveldb/comparator.h + include/leveldb/db.h + include/leveldb/env.h + include/leveldb/iterator.h + include/leveldb/options.h + include/leveldb/slice.h + include/leveldb/status.h + include/leveldb/table.h + include/leveldb/table_builder.h + include/leveldb/write_batch.h) + +set(TESTHARNESS_SRCS + util/testutil.cc + util/testharness.cc) + +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +if(BUILDSTATIC) + add_library(leveldb STATIC ${SRCS}) +else(BUILDSTATIC) + add_library(leveldb SHARED ${SRCS}) +endif() + +set(_soversion ${LIB_MAJOR}.${LIB_MINOR}.${LIB_RELEASE}) +set_target_properties(leveldb PROPERTIES SOVERSION ${LIB_MAJOR} VERSION ${_soversion}) +target_link_libraries(leveldb pthread) +SET (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) + +IF(MINGW) + set_property(TARGET leveldb PROPERTY LINK_SEARCH_END_STATIC ON) + set_target_properties(leveldb PROPERTIES LINK_FLAGS "-static-libgcc") +ENDIF() + +INSTALL(FILES ${HDRS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/leveldb) +if(MINGW OR WIN32) + INSTALL(TARGETS leveldb DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) +else(MINGW OR wIN32) + INSTALL(TARGETS leveldb LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) +endif() + +if(TESTDB) + ENABLE_TESTING() + # TESTS + add_library(leveldb-testharness STATIC ${TESTHARNESS_SRCS}) + + macro(leveldb_test ${nam}) + endmacro() + + macro(leveldb_tests) + foreach(t ${ARGN}) + get_filename_component(_tname ${t} NAME_WE) + add_executable(${_tname} ${t}) + target_link_libraries(${_tname} + leveldb-testharness + leveldb +pthread + ) + endforeach() + endmacro() + + leveldb_tests( + db/db_bench.cc + util/arena_test.cc + db/c_test.c + util/cache_test.cc + util/coding_test.cc + db/corruption_test.cc + util/crc32c_test.cc + db/db_test.cc + db/dbformat_test.cc + util/env_test.cc + db/log_test.cc + table/table_test.cc + db/skiplist_test.cc + db/version_edit_test.cc + db/version_set_test.cc + db/write_batch_test.cc) +endif() +# TODO: memenv_test -- cgit v1.2.3