c63519fa47
The leveldb and univalue 3rd party libraries are not installed and not needed by anyone outside of the Hub. So move them there, making it easier for 3rd party usage.
144 lines
3.9 KiB
CMake
144 lines
3.9 KiB
CMake
# This file is part of the Flowee project
|
|
# Copyright (C) 2020 Tom Zander <tom@flowee.org>
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
cmake_minimum_required(VERSION 3.13)
|
|
project(Leveldb)
|
|
|
|
# This project can take advantage of C++11.
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
|
|
include(CheckIncludeFileCXX)
|
|
check_include_file_cxx("atomic" LEVELDB_ATOMIC_PRESENT)
|
|
|
|
include_directories(.)
|
|
|
|
# Leveldb library
|
|
add_library(leveldb
|
|
db/builder.cc
|
|
db/c.cc
|
|
db/dbformat.cc
|
|
db/db_impl.cc
|
|
db/db_iter.cc
|
|
db/dumpfile.cc
|
|
db/filename.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_builder.cc
|
|
table/block.cc
|
|
table/filter_block.cc
|
|
table/format.cc
|
|
table/iterator.cc
|
|
table/merger.cc
|
|
table/table_builder.cc
|
|
table/table.cc
|
|
table/two_level_iterator.cc
|
|
util/arena.cc
|
|
util/bloom.cc
|
|
util/cache.cc
|
|
util/coding.cc
|
|
util/comparator.cc
|
|
util/crc32c.cc
|
|
util/env.cc
|
|
util/env_posix.cc
|
|
util/filter_policy.cc
|
|
util/hash.cc
|
|
util/histogram.cc
|
|
util/logging.cc
|
|
util/options.cc
|
|
util/status.cc
|
|
helpers/memenv/memenv.cc
|
|
)
|
|
|
|
# Select the proper port: posix or Windows.
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
|
set(LEVELDB_PLATFORM WINDOWS)
|
|
set(LEVELDB_OS WINDOWS)
|
|
target_sources(leveldb
|
|
PRIVATE
|
|
util/env_win.cc
|
|
port/port_win.cc
|
|
)
|
|
target_compile_definitions(leveldb
|
|
PRIVATE
|
|
WINVER=0x0500
|
|
__USE_MINGW_ANSI_STDIO=1
|
|
)
|
|
|
|
find_package(SHLWAPI REQUIRED)
|
|
target_link_libraries(leveldb ${SHLWAPI_LIBRARY})
|
|
target_include_directories(leveldb PUBLIC ${SHLWAPI_INCLUDE_DIR})
|
|
else()
|
|
set(LEVELDB_PLATFORM POSIX)
|
|
target_sources(leveldb PRIVATE port/port_posix.cc)
|
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
find_package(Threads REQUIRED)
|
|
target_link_libraries(leveldb Threads::Threads)
|
|
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
set(LEVELDB_OS LINUX)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|
set(LEVELDB_OS MACOSX)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "(Solaris|SunOS)")
|
|
set(LEVELDB_OS SOLARIS)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
|
set(LEVELDB_OS FREEBSD)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "KFreeBSD")
|
|
set(LEVELDB_OS KFREEBSD)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
|
|
set(LEVELDB_OS NETBSD)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
|
|
set(LEVELDB_OS OPENBSD)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "DragonFly")
|
|
set(LEVELDB_OS DRAGONFLYBSD)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android")
|
|
set(LEVELDB_OS ANDROID)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "HPUX")
|
|
# No idea what's the proper system name is here.
|
|
set(LEVELDB_OS HPUX)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "iOS")
|
|
# No idea what's the proper system name is here.
|
|
set(LEVELDB_OS IOS)
|
|
else()
|
|
message(FATAL_ERROR "Cannot build leveldb for ${CMAKE_SYSTEM_NAME}. Please file a bug report.")
|
|
endif()
|
|
endif()
|
|
|
|
# Right now this is not used but the latest version of leveldb uses this
|
|
# so we might as well be ready for it.
|
|
if (HAVE_CRC32C)
|
|
target_link_libraries(leveldb crc32c)
|
|
endif (HAVE_CRC32C)
|
|
if (HAVE_SNAPPY)
|
|
target_link_libraries(leveldb snappy)
|
|
endif (HAVE_SNAPPY)
|
|
|
|
target_include_directories(leveldb PUBLIC include helpers/memenv)
|
|
target_compile_definitions(leveldb
|
|
PUBLIC
|
|
OS_${LEVELDB_OS}
|
|
LEVELDB_PLATFORM_${LEVELDB_PLATFORM}
|
|
)
|
|
if(LEVELDB_ATOMIC_PRESENT)
|
|
target_compile_definitions(leveldb PUBLIC LEVELDB_ATOMIC_PRESENT)
|
|
endif(LEVELDB_ATOMIC_PRESENT)
|