mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-17 18:35:20 +02:00
179 lines
4.5 KiB
CMake
179 lines
4.5 KiB
CMake
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)
|
|
message(FATAL_ERROR "LevelDB currently doesn't support Windows")
|
|
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
|