From 133e00a43d50465afd4420ce18cbccb9bf21cdf5 Mon Sep 17 00:00:00 2001 From: Azat Khuzhin Date: Mon, 17 Jan 2022 22:37:33 +0300 Subject: [PATCH] Remove unbundled rapidjson support --- CMakeLists.txt | 1 - cmake/find/rapidjson.cmake | 35 -------------------------- contrib/rapidjson-cmake/CMakeLists.txt | 11 ++++++++ src/CMakeLists.txt | 4 +-- src/Functions/CMakeLists.txt | 4 +-- src/configure_config.cmake | 3 +++ 6 files changed, 18 insertions(+), 40 deletions(-) delete mode 100644 cmake/find/rapidjson.cmake create mode 100644 contrib/rapidjson-cmake/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 270c1a95217..f054693fb19 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -506,7 +506,6 @@ include (cmake/find/s3.cmake) include (cmake/find/blob_storage.cmake) include (cmake/find/base64.cmake) include (cmake/find/fast_float.cmake) -include (cmake/find/rapidjson.cmake) include (cmake/find/fastops.cmake) include (cmake/find/odbc.cmake) include (cmake/find/nanodbc.cmake) diff --git a/cmake/find/rapidjson.cmake b/cmake/find/rapidjson.cmake deleted file mode 100644 index cdf6761446e..00000000000 --- a/cmake/find/rapidjson.cmake +++ /dev/null @@ -1,35 +0,0 @@ -option(ENABLE_RAPIDJSON "Use rapidjson" ${ENABLE_LIBRARIES}) -if(NOT ENABLE_RAPIDJSON) - if(USE_INTERNAL_RAPIDJSON_LIBRARY) - message (${RECONFIGURE_MESSAGE_LEVEL} "Can't use internal rapidjson library with ENABLE_RAPIDJSON=OFF") - endif() - return() -endif() - -option(USE_INTERNAL_RAPIDJSON_LIBRARY "Set to FALSE to use system rapidjson library instead of bundled" ON) - -if(NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/rapidjson/include/rapidjson/rapidjson.h") - if(USE_INTERNAL_RAPIDJSON_LIBRARY) - message(WARNING "submodule contrib/rapidjson is missing. to fix try run: \n git submodule update --init") - message (${RECONFIGURE_MESSAGE_LEVEL} "Can't find internal rapidjson library") - set(USE_INTERNAL_RAPIDJSON_LIBRARY 0) - endif() - set(MISSING_INTERNAL_RAPIDJSON_LIBRARY 1) -endif() - -if(NOT USE_INTERNAL_RAPIDJSON_LIBRARY) - find_path(RAPIDJSON_INCLUDE_DIR NAMES rapidjson/rapidjson.h PATHS ${RAPIDJSON_INCLUDE_PATHS}) - if(NOT RAPIDJSON_INCLUDE_DIR) - message (${RECONFIGURE_MESSAGE_LEVEL} "Can't find system rapidjson") - endif() -endif() - -if(RAPIDJSON_INCLUDE_DIR) - set(USE_RAPIDJSON 1) -elseif(NOT MISSING_INTERNAL_RAPIDJSON_LIBRARY) - set(RAPIDJSON_INCLUDE_DIR "${ClickHouse_SOURCE_DIR}/contrib/rapidjson/include") - set(USE_INTERNAL_RAPIDJSON_LIBRARY 1) - set(USE_RAPIDJSON 1) -endif() - -message(STATUS "Using rapidjson=${USE_RAPIDJSON}: ${RAPIDJSON_INCLUDE_DIR}") diff --git a/contrib/rapidjson-cmake/CMakeLists.txt b/contrib/rapidjson-cmake/CMakeLists.txt new file mode 100644 index 00000000000..0d7ba74a399 --- /dev/null +++ b/contrib/rapidjson-cmake/CMakeLists.txt @@ -0,0 +1,11 @@ +option(ENABLE_RAPIDJSON "Use rapidjson" ${ENABLE_LIBRARIES}) + +if(NOT ENABLE_RAPIDJSON) + message(STATUS "Not using rapidjson") + return() +endif() + +set(RAPIDJSON_INCLUDE_DIR "${ClickHouse_SOURCE_DIR}/contrib/rapidjson/include") +add_library(_rapidjson INTERFACE) +target_include_directories(_rapidjson SYSTEM BEFORE INTERFACE ${RAPIDJSON_INCLUDE_DIR}) +add_library(ch_contrib::rapidjson ALIAS _rapidjson) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bbcb7c6c9e9..bd8e1f70f10 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -508,8 +508,8 @@ if (TARGET ch_contrib::simdjson) dbms_target_link_libraries(PRIVATE ch_contrib::simdjson) endif() -if(USE_RAPIDJSON) - dbms_target_include_directories(SYSTEM PRIVATE ${RAPIDJSON_INCLUDE_DIR}) +if (TARGET ch_contrib::rapidjson) + dbms_target_link_directories(PRIVATE ch_contrib::rapidjson) endif() dbms_target_link_libraries(PUBLIC consistent-hashing) diff --git a/src/Functions/CMakeLists.txt b/src/Functions/CMakeLists.txt index 659c1215a9c..74d76eb7cbc 100644 --- a/src/Functions/CMakeLists.txt +++ b/src/Functions/CMakeLists.txt @@ -89,8 +89,8 @@ if (TARGET ch_contrib::simdjson) target_link_libraries(clickhouse_functions PRIVATE ch_contrib::simdjson) endif() -if(USE_RAPIDJSON) - target_include_directories(clickhouse_functions SYSTEM PRIVATE ${RAPIDJSON_INCLUDE_DIR}) +if (TARGET ch_contrib::rapidjson) + target_link_libraries(clickhouse_functions PRIVATE ch_contrib::rapidjson) endif() # ClickHouse developers may use platform-dependent code under some macro (e.g. `#ifdef ENABLE_MULTITARGET`). diff --git a/src/configure_config.cmake b/src/configure_config.cmake index 56144a3ecf0..32c29e5607f 100644 --- a/src/configure_config.cmake +++ b/src/configure_config.cmake @@ -37,3 +37,6 @@ endif() if (TARGET ch_contrib::simdjson) set(USE_SIMDJSON 1) endif() +if (TARGET ch_contrib::rapidjson) + set(USE_RAPIDJSON 1) +endif()