xref: /OK3568_Linux_fs/buildroot/package/leveldb/0004-cmake-Use-find_package-to-find-Snappy.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFrom 450c1d88b3e1af34614294830b4dc0612d198d26 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: =?UTF-8?q?Pawe=C5=82=20Bylica?= <chfast@gmail.com>
3*4882a593SmuzhiyunDate: Wed, 8 May 2019 10:42:03 +0200
4*4882a593SmuzhiyunSubject: [PATCH] cmake: Use find_package() to find Snappy
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunUpstream: https://github.com/google/leveldb/pull/686/commits/3e73a396a082efc76e065ae974fe18c3bb27219d
7*4882a593Smuzhiyun[Thomas: this commit allows to fix the detection of the snappy library
8*4882a593Smuzhiyunin static link configurations]
9*4882a593SmuzhiyunSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun CMakeLists.txt         | 12 ++++++++----
12*4882a593Smuzhiyun cmake/FindSnappy.cmake | 31 +++++++++++++++++++++++++++++++
13*4882a593Smuzhiyun 2 files changed, 39 insertions(+), 4 deletions(-)
14*4882a593Smuzhiyun create mode 100644 cmake/FindSnappy.cmake
15*4882a593Smuzhiyun
16*4882a593Smuzhiyundiff --git a/CMakeLists.txt b/CMakeLists.txt
17*4882a593Smuzhiyunindex 78fead6..2efccda 100644
18*4882a593Smuzhiyun--- a/CMakeLists.txt
19*4882a593Smuzhiyun+++ b/CMakeLists.txt
20*4882a593Smuzhiyun@@ -6,6 +6,9 @@ cmake_minimum_required(VERSION 3.9)
21*4882a593Smuzhiyun # Keep the version below in sync with the one in db.h
22*4882a593Smuzhiyun project(leveldb VERSION 1.22.0 LANGUAGES C CXX)
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun+# Include local CMake modules.
25*4882a593Smuzhiyun+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
26*4882a593Smuzhiyun+
27*4882a593Smuzhiyun # This project can use C11, but will gracefully decay down to C89.
28*4882a593Smuzhiyun set(CMAKE_C_STANDARD 11)
29*4882a593Smuzhiyun set(CMAKE_C_STANDARD_REQUIRED OFF)
30*4882a593Smuzhiyun@@ -31,13 +34,14 @@ option(LEVELDB_INSTALL "Install LevelDB's header and library" ON)
31*4882a593Smuzhiyun include(TestBigEndian)
32*4882a593Smuzhiyun test_big_endian(LEVELDB_IS_BIG_ENDIAN)
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun+find_package(Snappy)
35*4882a593Smuzhiyun+
36*4882a593Smuzhiyun include(CheckIncludeFile)
37*4882a593Smuzhiyun check_include_file("unistd.h" HAVE_UNISTD_H)
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun include(CheckLibraryExists)
40*4882a593Smuzhiyun check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_ATOMIC)
41*4882a593Smuzhiyun check_library_exists(crc32c crc32c_value "" HAVE_CRC32C)
42*4882a593Smuzhiyun-check_library_exists(snappy snappy_compress "" HAVE_SNAPPY)
43*4882a593Smuzhiyun check_library_exists(tcmalloc malloc "" HAVE_TCMALLOC)
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun include(CheckCXXSymbolExists)
46*4882a593Smuzhiyun@@ -276,9 +280,9 @@ endif(HAVE_ATOMIC)
47*4882a593Smuzhiyun if(HAVE_CRC32C)
48*4882a593Smuzhiyun   target_link_libraries(leveldb crc32c)
49*4882a593Smuzhiyun endif(HAVE_CRC32C)
50*4882a593Smuzhiyun-if(HAVE_SNAPPY)
51*4882a593Smuzhiyun-  target_link_libraries(leveldb snappy)
52*4882a593Smuzhiyun-endif(HAVE_SNAPPY)
53*4882a593Smuzhiyun+if(TARGET Snappy::snappy)
54*4882a593Smuzhiyun+  target_link_libraries(leveldb Snappy::snappy)
55*4882a593Smuzhiyun+endif()
56*4882a593Smuzhiyun if(HAVE_TCMALLOC)
57*4882a593Smuzhiyun   target_link_libraries(leveldb tcmalloc)
58*4882a593Smuzhiyun endif(HAVE_TCMALLOC)
59*4882a593Smuzhiyundiff --git a/cmake/FindSnappy.cmake b/cmake/FindSnappy.cmake
60*4882a593Smuzhiyunnew file mode 100644
61*4882a593Smuzhiyunindex 0000000..88c1de9
62*4882a593Smuzhiyun--- /dev/null
63*4882a593Smuzhiyun+++ b/cmake/FindSnappy.cmake
64*4882a593Smuzhiyun@@ -0,0 +1,31 @@
65*4882a593Smuzhiyun+# Copyright 2019 The LevelDB Authors. All rights reserved.
66*4882a593Smuzhiyun+# Use of this source code is governed by a BSD-style license that can be
67*4882a593Smuzhiyun+# found in the LICENSE file. See the AUTHORS file for names of contributors.
68*4882a593Smuzhiyun+
69*4882a593Smuzhiyun+find_library(SNAPPY_LIBRARY
70*4882a593Smuzhiyun+    NAMES snappy
71*4882a593Smuzhiyun+    HINTS ${SNAPPY_ROOT_DIR}/lib
72*4882a593Smuzhiyun+)
73*4882a593Smuzhiyun+
74*4882a593Smuzhiyun+find_path(SNAPPY_INCLUDE_DIR
75*4882a593Smuzhiyun+    NAMES snappy.h
76*4882a593Smuzhiyun+    HINTS ${SNAPPY_ROOT_DIR}/include
77*4882a593Smuzhiyun+)
78*4882a593Smuzhiyun+
79*4882a593Smuzhiyun+include(FindPackageHandleStandardArgs)
80*4882a593Smuzhiyun+find_package_handle_standard_args(Snappy DEFAULT_MSG SNAPPY_LIBRARY SNAPPY_INCLUDE_DIR)
81*4882a593Smuzhiyun+
82*4882a593Smuzhiyun+mark_as_advanced(SNAPPY_LIBRARY SNAPPY_INCLUDE_DIR)
83*4882a593Smuzhiyun+
84*4882a593Smuzhiyun+if(SNAPPY_FOUND)
85*4882a593Smuzhiyun+  set(HAVE_SNAPPY TRUE) # For compatibity with generating port_config.h.
86*4882a593Smuzhiyun+
87*4882a593Smuzhiyun+  # Add imported targets.
88*4882a593Smuzhiyun+  # Follow the package naming convetion 'Snappy::' from
89*4882a593Smuzhiyun+  # https://github.com/google/snappy/blob/master/CMakeLists.txt#L211.
90*4882a593Smuzhiyun+  add_library(Snappy::snappy UNKNOWN IMPORTED)
91*4882a593Smuzhiyun+  set_target_properties(Snappy::snappy PROPERTIES
92*4882a593Smuzhiyun+      IMPORTED_LOCATION ${SNAPPY_LIBRARY}
93*4882a593Smuzhiyun+      INTERFACE_INCLUDE_DIRECTORIES ${SNAPPY_INCLUDE_DIR}
94*4882a593Smuzhiyun+  )
95*4882a593Smuzhiyun+endif()
96*4882a593Smuzhiyun--
97*4882a593Smuzhiyun2.26.2
98*4882a593Smuzhiyun
99