CodeCommitsIssuesPull requestsActionsInsightsSecurity
CLICKHOUSE-3545

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

cmake/find_capnp.cmake

52lines · modecode

1option (ENABLE_CAPNP "Enable Cap'n Proto" ON)
2
3if (ENABLE_CAPNP)
4
5 # cmake 3.5.1 bug:
6 # capnproto uses this cmake feature:
7 # target_compile_features(kj PUBLIC cxx_constexpr)
8 # old cmake adds -std=gnu++11 to end of all compile commands (even if -std=gnu++17 already present in compile string)
9 # cmake 3.9.1 (ubuntu artful) have no this bug (c++17 support added to cmake 3.8.2)
10 if (CMAKE_VERSION VERSION_LESS "3.8.0")
11 set (USE_INTERNAL_CAPNP_LIBRARY_DEFAULT 0)
12 set (MISSING_INTERNAL_CAPNP_LIBRARY 1)
13 else ()
14 set (USE_INTERNAL_CAPNP_LIBRARY_DEFAULT ${NOT_UNBUNDLED})
15 endif ()
16
17 option (USE_INTERNAL_CAPNP_LIBRARY "Set to FALSE to use system capnproto library instead of bundled" ${USE_INTERNAL_CAPNP_LIBRARY_DEFAULT})
18
19 if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/capnproto/c++/CMakeLists.txt")
20 if (USE_INTERNAL_CAPNP_LIBRARY)
21 message (WARNING "submodule contrib/capnproto is missing. to fix try run: \n git submodule update --init --recursive")
22 endif ()
23 set (USE_INTERNAL_CAPNP_LIBRARY 0)
24 set (MISSING_INTERNAL_CAPNP_LIBRARY 1)
25 endif ()
26
27 if (NOT USE_INTERNAL_CAPNP_LIBRARY)
28 set (CAPNP_PATHS "/usr/local/opt/capnp/lib")
29 set (CAPNP_INCLUDE_PATHS "/usr/local/opt/capnp/include")
30 find_library (CAPNP capnp PATHS ${CAPNP_PATHS})
31 find_library (CAPNPC capnpc PATHS ${CAPNP_PATHS})
32 find_library (KJ kj PATHS ${CAPNP_PATHS})
33 set (CAPNP_LIBRARY ${CAPNP} ${CAPNPC} ${KJ})
34 find_path (CAPNP_INCLUDE_DIR NAMES capnp/schema-parser.h PATHS ${CAPNP_INCLUDE_PATHS})
35 endif ()
36
37 if (CAPNP_INCLUDE_DIR AND CAPNP_LIBRARY)
38 set(USE_CAPNP 1)
39 elseif (NOT MISSING_INTERNAL_CAPNP_LIBRARY)
40 set (USE_INTERNAL_CAPNP_LIBRARY 1)
41 set (CAPNP_INCLUDE_DIR "${ClickHouse_SOURCE_DIR}/contrib/capnproto/c++/src")
42 set (CAPNP_LIBRARY capnpc)
43 set (USE_CAPNP 1)
44 endif ()
45
46endif ()
47
48if (USE_CAPNP)
49 message (STATUS "Using capnp=${USE_CAPNP}: ${CAPNP_INCLUDE_DIR} : ${CAPNP_LIBRARY}")
50else ()
51 message (STATUS "Build without capnp (support for Cap'n Proto format will be disabled)")
52endif ()