cloudflare/ClickHouse
Publicmirrored fromhttps://github.com/cloudflare/ClickHouse
cmake/find_capnp.cmake
52lines · modecode
8 years ago
| 1 | option (ENABLE_CAPNP "Enable Cap'n Proto" ON) |
| 2 | |
| 3 | if (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 | |
| 46 | endif () |
| 47 | |
| 48 | if (USE_CAPNP) |
| 49 | message (STATUS "Using capnp=${USE_CAPNP}: ${CAPNP_INCLUDE_DIR} : ${CAPNP_LIBRARY}") |
| 50 | else () |
| 51 | message (STATUS "Build without capnp (support for Cap'n Proto format will be disabled)") |
| 52 | endif () |