From 2ab07fbd71186667783d266145e52fffa27e0199 Mon Sep 17 00:00:00 2001 From: kssenii Date: Mon, 14 Dec 2020 21:33:02 +0000 Subject: [PATCH] Update libraries --- cmake/find/libpqxx.cmake | 2 +- contrib/libpq | 2 +- contrib/libpq-cmake/CMakeLists.txt | 21 +----- contrib/libpqxx | 2 +- contrib/libpqxx-cmake/CMakeLists.txt | 101 +++++++++++++++++++-------- 5 files changed, 77 insertions(+), 51 deletions(-) diff --git a/cmake/find/libpqxx.cmake b/cmake/find/libpqxx.cmake index b635fb80878..8bfb48a0e54 100644 --- a/cmake/find/libpqxx.cmake +++ b/cmake/find/libpqxx.cmake @@ -11,7 +11,7 @@ if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/libpqxx/CMakeLists.txt") return() endif() -if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/libpq") +if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/libpq/include") message (ERROR "submodule contrib/libpq is missing. to fix try run: \n git submodule update --init --recursive") message (${RECONFIGURE_MESSAGE_LEVEL} "Can't find internal libpq needed for libpqxx") set (USE_LIBPQXX 0) diff --git a/contrib/libpq b/contrib/libpq index d94250f9145..d53cfd7f523 160000 --- a/contrib/libpq +++ b/contrib/libpq @@ -1 +1 @@ -Subproject commit d94250f91457f11de6a37f7a6ba162601ddead27 +Subproject commit d53cfd7f5237e0765ca4c12c6408fdd722b954e1 diff --git a/contrib/libpq-cmake/CMakeLists.txt b/contrib/libpq-cmake/CMakeLists.txt index 8678f0141c7..d58e27371af 100644 --- a/contrib/libpq-cmake/CMakeLists.txt +++ b/contrib/libpq-cmake/CMakeLists.txt @@ -5,7 +5,6 @@ set(SRCS ${LIBPQ_SOURCE_DIR}/fe-auth-scram.c ${LIBPQ_SOURCE_DIR}/fe-connect.c ${LIBPQ_SOURCE_DIR}/fe-exec.c -# ${LIBPQ_SOURCE_DIR}/fe-gssapi-common.c ${LIBPQ_SOURCE_DIR}/fe-lobj.c ${LIBPQ_SOURCE_DIR}/fe-misc.c ${LIBPQ_SOURCE_DIR}/fe-print.c @@ -13,7 +12,6 @@ set(SRCS ${LIBPQ_SOURCE_DIR}/fe-protocol3.c ${LIBPQ_SOURCE_DIR}/fe-secure.c ${LIBPQ_SOURCE_DIR}/fe-secure-common.c -# ${LIBPQ_SOURCE_DIR}/fe-secure-gssapi.c ${LIBPQ_SOURCE_DIR}/fe-secure-openssl.c ${LIBPQ_SOURCE_DIR}/legacy-pqsignal.c ${LIBPQ_SOURCE_DIR}/libpq-events.c @@ -30,8 +28,6 @@ set(SRCS ${LIBPQ_SOURCE_DIR}/common/base64.c ${LIBPQ_SOURCE_DIR}/common/link-canary.c ${LIBPQ_SOURCE_DIR}/common/fe_memutils.c - ${LIBPQ_SOURCE_DIR}/common/sha2.c - ${LIBPQ_SOURCE_DIR}/common/sha2_openssl.c ${LIBPQ_SOURCE_DIR}/common/string.c ${LIBPQ_SOURCE_DIR}/common/pg_get_line.c ${LIBPQ_SOURCE_DIR}/common/stringinfo.c @@ -43,34 +39,19 @@ set(SRCS ${LIBPQ_SOURCE_DIR}/port/strerror.c ${LIBPQ_SOURCE_DIR}/port/inet_net_ntop.c ${LIBPQ_SOURCE_DIR}/port/getpeereid.c - ${LIBPQ_SOURCE_DIR}/port/chklocale.c - ${LIBPQ_SOURCE_DIR}/port/dirmod.c - ${LIBPQ_SOURCE_DIR}/port/dlopen.c - ${LIBPQ_SOURCE_DIR}/port/erand48.c - ${LIBPQ_SOURCE_DIR}/port/explicit_bzero.c - ${LIBPQ_SOURCE_DIR}/port/fls.c - ${LIBPQ_SOURCE_DIR}/port/getopt.c - ${LIBPQ_SOURCE_DIR}/port/kill.c - ${LIBPQ_SOURCE_DIR}/port/link.c ${LIBPQ_SOURCE_DIR}/port/noblock.c - ${LIBPQ_SOURCE_DIR}/port/open.c - ${LIBPQ_SOURCE_DIR}/port/path.c ${LIBPQ_SOURCE_DIR}/port/pg_strong_random.c ${LIBPQ_SOURCE_DIR}/port/pgstrcasecmp.c ${LIBPQ_SOURCE_DIR}/port/thread.c - - ${LIBPQ_SOURCE_DIR}/error/elog.c - ${LIBPQ_SOURCE_DIR}/error/errlog.c ) add_library(libpq ${SRCS}) -target_include_directories (libpq PUBLIC ${LIBPQ_SOURCE_DIR}/configs) - target_include_directories (libpq PUBLIC ${LIBPQ_SOURCE_DIR}) target_include_directories (libpq PUBLIC ${LIBPQ_SOURCE_DIR}/include) +target_include_directories (libpq PRIVATE ${LIBPQ_SOURCE_DIR}/configs) target_include_directories (libpq PRIVATE ${LIBPQ_SOURCE_DIR}/include/common) target_include_directories (libpq PRIVATE ${LIBPQ_SOURCE_DIR}/include/libpq) diff --git a/contrib/libpqxx b/contrib/libpqxx index aa8aa6cb48f..58d2a028d16 160000 --- a/contrib/libpqxx +++ b/contrib/libpqxx @@ -1 +1 @@ -Subproject commit aa8aa6cb48fcb8ccabc22a0df78f1250279cd233 +Subproject commit 58d2a028d1600225ac3a478d6b3a06ba2f0c01f6 diff --git a/contrib/libpqxx-cmake/CMakeLists.txt b/contrib/libpqxx-cmake/CMakeLists.txt index 993927e9d3c..ed372951f82 100644 --- a/contrib/libpqxx-cmake/CMakeLists.txt +++ b/contrib/libpqxx-cmake/CMakeLists.txt @@ -1,33 +1,78 @@ set (LIBRARY_DIR ${ClickHouse_SOURCE_DIR}/contrib/libpqxx) set (SRCS - ${LIBRARY_DIR}/src/strconv.cxx - ${LIBRARY_DIR}/src/array.cxx - ${LIBRARY_DIR}/src/binarystring.cxx - ${LIBRARY_DIR}/src/connection.cxx - ${LIBRARY_DIR}/src/cursor.cxx - ${LIBRARY_DIR}/src/encodings.cxx - ${LIBRARY_DIR}/src/errorhandler.cxx - ${LIBRARY_DIR}/src/except.cxx - ${LIBRARY_DIR}/src/field.cxx - ${LIBRARY_DIR}/src/largeobject.cxx - ${LIBRARY_DIR}/src/notification.cxx - ${LIBRARY_DIR}/src/pipeline.cxx - ${LIBRARY_DIR}/src/result.cxx - ${LIBRARY_DIR}/src/robusttransaction.cxx - ${LIBRARY_DIR}/src/sql_cursor.cxx - ${LIBRARY_DIR}/src/stream_from.cxx - ${LIBRARY_DIR}/src/stream_to.cxx - ${LIBRARY_DIR}/src/subtransaction.cxx - ${LIBRARY_DIR}/src/transaction.cxx - ${LIBRARY_DIR}/src/transaction_base.cxx - ${LIBRARY_DIR}/src/row.cxx - ${LIBRARY_DIR}/src/util.cxx - ${LIBRARY_DIR}/src/version.cxx - ) + ${LIBRARY_DIR}/src/strconv.cxx + ${LIBRARY_DIR}/src/array.cxx + ${LIBRARY_DIR}/src/binarystring.cxx + ${LIBRARY_DIR}/src/connection.cxx + ${LIBRARY_DIR}/src/cursor.cxx + ${LIBRARY_DIR}/src/encodings.cxx + ${LIBRARY_DIR}/src/errorhandler.cxx + ${LIBRARY_DIR}/src/except.cxx + ${LIBRARY_DIR}/src/field.cxx + ${LIBRARY_DIR}/src/largeobject.cxx + ${LIBRARY_DIR}/src/notification.cxx + ${LIBRARY_DIR}/src/pipeline.cxx + ${LIBRARY_DIR}/src/result.cxx + ${LIBRARY_DIR}/src/robusttransaction.cxx + ${LIBRARY_DIR}/src/sql_cursor.cxx + ${LIBRARY_DIR}/src/stream_from.cxx + ${LIBRARY_DIR}/src/stream_to.cxx + ${LIBRARY_DIR}/src/subtransaction.cxx + ${LIBRARY_DIR}/src/transaction.cxx + ${LIBRARY_DIR}/src/transaction_base.cxx + ${LIBRARY_DIR}/src/row.cxx + ${LIBRARY_DIR}/src/util.cxx + ${LIBRARY_DIR}/src/version.cxx +) -add_library(libpqxx ${SRCS}) -target_link_libraries(libpqxx PRIVATE ${LIBPQ_LIBRARY}) +# Need to explicitly include each header file, because in the directory include/pqxx there are also files +# like just 'array'. So if including the whole directory with `target_include_directories`, it will make +# conflicts with all includes of . +set (HDRS + ${LIBRARY_DIR}/include/pqxx/array.hxx + ${LIBRARY_DIR}/include/pqxx/binarystring.hxx + ${LIBRARY_DIR}/include/pqxx/composite.hxx + ${LIBRARY_DIR}/include/pqxx/connection.hxx + ${LIBRARY_DIR}/include/pqxx/cursor.hxx + ${LIBRARY_DIR}/include/pqxx/dbtransaction.hxx + ${LIBRARY_DIR}/include/pqxx/errorhandler.hxx + ${LIBRARY_DIR}/include/pqxx/except.hxx + ${LIBRARY_DIR}/include/pqxx/field.hxx + ${LIBRARY_DIR}/include/pqxx/isolation.hxx + ${LIBRARY_DIR}/include/pqxx/largeobject.hxx + ${LIBRARY_DIR}/include/pqxx/nontransaction.hxx + ${LIBRARY_DIR}/include/pqxx/notification.hxx + ${LIBRARY_DIR}/include/pqxx/pipeline.hxx + ${LIBRARY_DIR}/include/pqxx/prepared_statement.hxx + ${LIBRARY_DIR}/include/pqxx/result.hxx + ${LIBRARY_DIR}/include/pqxx/robusttransaction.hxx + ${LIBRARY_DIR}/include/pqxx/row.hxx + ${LIBRARY_DIR}/include/pqxx/separated_list.hxx + ${LIBRARY_DIR}/include/pqxx/strconv.hxx + ${LIBRARY_DIR}/include/pqxx/stream_from.hxx + ${LIBRARY_DIR}/include/pqxx/stream_to.hxx + ${LIBRARY_DIR}/include/pqxx/subtransaction.hxx + ${LIBRARY_DIR}/include/pqxx/transaction.hxx + ${LIBRARY_DIR}/include/pqxx/transaction_base.hxx + ${LIBRARY_DIR}/include/pqxx/types.hxx + ${LIBRARY_DIR}/include/pqxx/util.hxx + ${LIBRARY_DIR}/include/pqxx/version.hxx + ${LIBRARY_DIR}/include/pqxx/zview.hxx +) + +add_library(libpqxx ${SRCS} ${HDRS}) + +target_link_libraries(libpqxx PUBLIC ${LIBPQ_LIBRARY}) +target_include_directories (libpqxx PRIVATE ${LIBRARY_DIR}/include) + +# crutch +set(CM_CONFIG_H_IN "${LIBRARY_DIR}/include/pqxx/config.h.in") +set(CM_CONFIG_PUB "${LIBRARY_DIR}/include/pqxx/config-public-compiler.h") +set(CM_CONFIG_INT "${LIBRARY_DIR}/include/pqxx/config-internal-compiler.h") +set(CM_CONFIG_PQ "${LIBRARY_DIR}/include/pqxx/config-internal-libpq.h") + +configure_file("${CM_CONFIG_H_IN}" "${CM_CONFIG_INT}" @ONLY) +configure_file("${CM_CONFIG_H_IN}" "${CM_CONFIG_PUB}" @ONLY) +configure_file("${CM_CONFIG_H_IN}" "${CM_CONFIG_PQ}" @ONLY) -target_include_directories (libpqxx SYSTEM BEFORE PRIVATE ${LIBRARY_DIR}/include) -target_include_directories (libpqxx PRIVATE ${LIBRARY_DIR}/include/pqxx)