From 978cda0e9ccf4bf193fa329340f8f796895a85aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 8 May 2019 10:40:25 +0200 Subject: [PATCH 1/2] git ignore .idea --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c4b242534f..a0d3ce7039 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.sw* .vscode .DS_Store +.idea # Build directory. build/ From 3e73a396a082efc76e065ae974fe18c3bb27219d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 8 May 2019 10:42:03 +0200 Subject: [PATCH 2/2] cmake: Use find_package() to find Snappy --- CMakeLists.txt | 12 ++++++++---- cmake/FindSnappy.cmake | 31 +++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 cmake/FindSnappy.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ea33ab966..47f13abdb0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,9 @@ cmake_minimum_required(VERSION 3.9) # Keep the version below in sync with the one in db.h project(leveldb VERSION 1.22.0 LANGUAGES C CXX) +# Include local CMake modules. +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + # This project can use C11, but will gracefully decay down to C89. set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED OFF) @@ -31,12 +34,13 @@ option(LEVELDB_INSTALL "Install LevelDB's header and library" ON) include(TestBigEndian) test_big_endian(LEVELDB_IS_BIG_ENDIAN) +find_package(Snappy) + include(CheckIncludeFile) check_include_file("unistd.h" HAVE_UNISTD_H) include(CheckLibraryExists) check_library_exists(crc32c crc32c_value "" HAVE_CRC32C) -check_library_exists(snappy snappy_compress "" HAVE_SNAPPY) check_library_exists(tcmalloc malloc "" HAVE_TCMALLOC) include(CheckCXXSymbolExists) @@ -251,9 +255,9 @@ endif(HAVE_CLANG_THREAD_SAFETY) if(HAVE_CRC32C) target_link_libraries(leveldb crc32c) endif(HAVE_CRC32C) -if(HAVE_SNAPPY) - target_link_libraries(leveldb snappy) -endif(HAVE_SNAPPY) +if(TARGET Snappy::snappy) + target_link_libraries(leveldb Snappy::snappy) +endif() if(HAVE_TCMALLOC) target_link_libraries(leveldb tcmalloc) endif(HAVE_TCMALLOC) diff --git a/cmake/FindSnappy.cmake b/cmake/FindSnappy.cmake new file mode 100644 index 0000000000..88c1de98f2 --- /dev/null +++ b/cmake/FindSnappy.cmake @@ -0,0 +1,31 @@ +# Copyright 2019 The LevelDB Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. See the AUTHORS file for names of contributors. + +find_library(SNAPPY_LIBRARY + NAMES snappy + HINTS ${SNAPPY_ROOT_DIR}/lib +) + +find_path(SNAPPY_INCLUDE_DIR + NAMES snappy.h + HINTS ${SNAPPY_ROOT_DIR}/include +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Snappy DEFAULT_MSG SNAPPY_LIBRARY SNAPPY_INCLUDE_DIR) + +mark_as_advanced(SNAPPY_LIBRARY SNAPPY_INCLUDE_DIR) + +if(SNAPPY_FOUND) + set(HAVE_SNAPPY TRUE) # For compatibity with generating port_config.h. + + # Add imported targets. + # Follow the package naming convetion 'Snappy::' from + # https://github.com/google/snappy/blob/master/CMakeLists.txt#L211. + add_library(Snappy::snappy UNKNOWN IMPORTED) + set_target_properties(Snappy::snappy PROPERTIES + IMPORTED_LOCATION ${SNAPPY_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES ${SNAPPY_INCLUDE_DIR} + ) +endif()