diff options
author | costan <costan@google.com> | 2018-04-17 13:23:10 -0700 |
---|---|---|
committer | Victor Costan <pwnall@chromium.org> | 2018-04-17 13:26:47 -0700 |
commit | d177a0263cce4344d05188521ad53459c369b940 (patch) | |
tree | 0777844f4688d9f27040a9fe5defdb8b98c402c9 /CMakeLists.txt | |
parent | 14cce848e7b8a040a8f457d5a796722a55e19597 (diff) | |
download | leveldb-d177a0263cce4344d05188521ad53459c369b940.tar.gz |
Replace port_posix with port_stdcxx.
The porting layer implements threading primitives: atomic pointers,
condition variables, mutexes, thread-safe initialization. These are all
specified in C++11, so the reference open source port implementation can
become platform-independent.
The porting layer will remain in place to allow the use of other
implementations with more features, such as the built-in deadlock
detection in abseil's Mutex.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193245934
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 64 |
1 files changed, 16 insertions, 48 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5588120..4bf3df3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,33 +79,10 @@ if(BUILD_SHARED_LIBS) add_compile_options(-fvisibility=hidden) endif(BUILD_SHARED_LIBS) -# POSIX code is specified separately so we can leave it out in the future. -add_library(leveldb_port_posix OBJECT "") -target_sources(leveldb_port_posix - PRIVATE - "${PROJECT_SOURCE_DIR}/port/port_posix.cc" - - PUBLIC - # The headers below are dependencies for leveldb, but aren't needed by users - # that link to the installed version of leveldb and rely on its public API. - $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/${LEVELDB_PORT_CONFIG_DIR}/port_config.h> - $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/port/atomic_pointer.h> - $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/port/port_posix.h> - $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/port/port.h> -) -if (NOT HAVE_CXX17_HAS_INCLUDE) - target_compile_definitions(leveldb_port_posix - PRIVATE - LEVELDB_HAS_PORT_CONFIG_H=1 - ) -endif(NOT HAVE_CXX17_HAS_INCLUDE) -if(BUILD_SHARED_LIBS) - set_property(TARGET leveldb_port_posix PROPERTY POSITION_INDEPENDENT_CODE ON) -endif(BUILD_SHARED_LIBS) - add_library(leveldb "") target_sources(leveldb PRIVATE + "${PROJECT_BINARY_DIR}/${LEVELDB_PORT_CONFIG_DIR}/port_config.h" "${PROJECT_SOURCE_DIR}/db/builder.cc" "${PROJECT_SOURCE_DIR}/db/builder.h" "${PROJECT_SOURCE_DIR}/db/c.cc" @@ -136,6 +113,8 @@ target_sources(leveldb "${PROJECT_SOURCE_DIR}/db/version_set.h" "${PROJECT_SOURCE_DIR}/db/write_batch_internal.h" "${PROJECT_SOURCE_DIR}/db/write_batch.cc" + "${PROJECT_SOURCE_DIR}/port/atomic_pointer.h" + "${PROJECT_SOURCE_DIR}/port/port_stdcxx.h" "${PROJECT_SOURCE_DIR}/port/port.h" "${PROJECT_SOURCE_DIR}/port/thread_annotations.h" "${PROJECT_SOURCE_DIR}/table/block_builder.cc" @@ -163,7 +142,6 @@ target_sources(leveldb "${PROJECT_SOURCE_DIR}/util/comparator.cc" "${PROJECT_SOURCE_DIR}/util/crc32c.cc" "${PROJECT_SOURCE_DIR}/util/crc32c.h" - "${PROJECT_SOURCE_DIR}/util/env_posix.cc" "${PROJECT_SOURCE_DIR}/util/env.cc" "${PROJECT_SOURCE_DIR}/util/filter_policy.cc" "${PROJECT_SOURCE_DIR}/util/hash.cc" @@ -172,10 +150,8 @@ target_sources(leveldb "${PROJECT_SOURCE_DIR}/util/logging.h" "${PROJECT_SOURCE_DIR}/util/mutexlock.h" "${PROJECT_SOURCE_DIR}/util/options.cc" - "${PROJECT_SOURCE_DIR}/util/posix_logger.h" "${PROJECT_SOURCE_DIR}/util/random.h" "${PROJECT_SOURCE_DIR}/util/status.cc" - $<TARGET_OBJECTS:leveldb_port_posix> # Only CMake 3.3+ supports PUBLIC sources in targets exported by "install". $<$<VERSION_GREATER:CMAKE_VERSION,3.2>:PUBLIC> @@ -195,12 +171,21 @@ target_sources(leveldb "${LEVELDB_PUBLIC_INCLUDE_DIR}/table.h" "${LEVELDB_PUBLIC_INCLUDE_DIR}/write_batch.h" ) + +# POSIX code is specified separately so we can leave it out in the future. +target_sources(leveldb + PRIVATE + "${PROJECT_SOURCE_DIR}/util/env_posix.cc" + "${PROJECT_SOURCE_DIR}/util/posix_logger.h" +) + # MemEnv is not part of the interface and could be pulled to a separate library. target_sources(leveldb PRIVATE "${PROJECT_SOURCE_DIR}/helpers/memenv/memenv.cc" "${PROJECT_SOURCE_DIR}/helpers/memenv/memenv.h" ) + target_include_directories(leveldb PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> @@ -234,11 +219,6 @@ if(HAVE_CLANG_THREAD_SAFETY) -Werror -Wthread-safety) endif(HAVE_CLANG_THREAD_SAFETY) -# TODO(costan): This is only needed for port_posix. -set(THREADS_PREFER_PTHREAD_FLAG ON) -find_package(Threads REQUIRED) -target_link_libraries(leveldb Threads::Threads) - if(HAVE_CRC32C) target_link_libraries(leveldb crc32c) endif(HAVE_CRC32C) @@ -249,6 +229,10 @@ if(HAVE_TCMALLOC) target_link_libraries(leveldb tcmalloc) endif(HAVE_TCMALLOC) +# Needed by port_stdcxx.h +find_package(Threads REQUIRED) +target_link_libraries(leveldb Threads::Threads) + add_executable(leveldbutil "${PROJECT_SOURCE_DIR}/db/leveldbutil.cc" ) @@ -271,14 +255,6 @@ if(LEVELDB_BUILD_TESTS) "${test_file}" ) - if(BUILD_SHARED_LIBS) - # Port functions aren't exposed in the shared library build. - target_sources("${test_target_name}" - PRIVATE - $<TARGET_OBJECTS:leveldb_port_posix> - ) - endif(BUILD_SHARED_LIBS) - target_link_libraries("${test_target_name}" leveldb) target_compile_definitions("${test_target_name}" PRIVATE @@ -351,14 +327,6 @@ if(LEVELDB_BUILD_BENCHMARKS) "${bench_file}" ) - if(BUILD_SHARED_LIBS) - # Port functions aren't exposed in the shared library build. - target_sources("${bench_target_name}" - PRIVATE - $<TARGET_OBJECTS:leveldb_port_posix> - ) - endif(BUILD_SHARED_LIBS) - target_link_libraries("${bench_target_name}" leveldb) target_compile_definitions("${bench_target_name}" PRIVATE |