From 38b4af1126a55764a13113ec2da9d3f1a87a0ed7 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Tue, 30 Jun 2026 16:44:12 +0200 Subject: [PATCH 1/2] MDEV-37996 CMake: MariaDB:: targets for bundled-or-system libraries Stop overwriting the standard find_package() result variables (ZLIB_FOUND, ZLIB_LIBRARIES, ZLIB_INCLUDE_DIR(S), ...), this breaks vcpkg. Provide namespaced INTERFACE targets that point at either the bundled or the system library and carry their include directories (and, for SSL, the compile definitions): MariaDB::zlib, MariaDB::OpenSSL, MariaDB::pcre2-8, MariaDB::pcre2-posix, MariaDB::fmt, MariaDB::readline Link these consistently instead of the scattered ${*_LIBRARIES} and ${*_INCLUDE_DIR(S)} variables sprinkled across the tree. --- client/CMakeLists.txt | 9 ++---- cmake/libfmt.cmake | 9 ++++++ cmake/mariadb_connector_c.cmake | 18 +++++++++++ cmake/pcre.cmake | 15 +++++++++ cmake/plugin.cmake | 12 ++++--- cmake/readline.cmake | 11 +++++++ cmake/ssl.cmake | 24 ++++++++++++++ cmake/zlib.cmake | 37 +++++++++++----------- extra/CMakeLists.txt | 2 +- extra/mariabackup/CMakeLists.txt | 3 +- libmysqld/CMakeLists.txt | 20 +++++------- libmysqld/examples/CMakeLists.txt | 6 ++-- mysys/CMakeLists.txt | 4 +-- mysys_ssl/CMakeLists.txt | 9 ++---- plugin/feedback/CMakeLists.txt | 8 ++--- plugin/qc_info/CMakeLists.txt | 3 +- sql/CMakeLists.txt | 12 ++----- storage/archive/CMakeLists.txt | 2 +- storage/connect/CMakeLists.txt | 2 +- storage/innobase/CMakeLists.txt | 2 +- storage/maria/CMakeLists.txt | 6 ++-- storage/maria/unittest/CMakeLists.txt | 2 +- storage/perfschema/CMakeLists.txt | 4 +-- storage/perfschema/unittest/CMakeLists.txt | 2 -- storage/rocksdb/CMakeLists.txt | 2 +- storage/rocksdb/build_rocksdb.cmake | 2 +- unittest/embedded/CMakeLists.txt | 2 -- unittest/mysys/CMakeLists.txt | 2 -- vio/CMakeLists.txt | 6 ++-- 29 files changed, 139 insertions(+), 97 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index a8e80bc8b5ba3..380ad3b4c8ca9 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -16,13 +16,10 @@ INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/include - ${PCRE_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/mysys_ssl - ${ZLIB_INCLUDE_DIRS} - ${SSL_INCLUDE_DIRS} + $ ${CMAKE_SOURCE_DIR}/sql ${CMAKE_SOURCE_DIR}/strings - ${MY_READLINE_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ) @@ -40,13 +37,13 @@ MYSQL_ADD_EXECUTABLE(mariadb completion_hash.cc mysql.cc readline.cc ${CMAKE_SOURCE_DIR}/sql/sql_string.cc) TARGET_LINK_LIBRARIES(mariadb ${CLIENT_LIB}) IF(UNIX) - TARGET_LINK_LIBRARIES(mariadb ${MY_READLINE_LIBRARY}) + TARGET_LINK_LIBRARIES(mariadb MariaDB::readline) SET_TARGET_PROPERTIES(mariadb PROPERTIES ENABLE_EXPORTS TRUE) ENDIF(UNIX) MYSQL_ADD_EXECUTABLE(mariadb-test mysqltest.cc ${CMAKE_SOURCE_DIR}/sql/sql_string.cc COMPONENT Test) SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS ${PCRE2_DEBIAN_HACK}") -TARGET_LINK_LIBRARIES(mariadb-test ${CLIENT_LIB} pcre2-posix pcre2-8) +TARGET_LINK_LIBRARIES(mariadb-test ${CLIENT_LIB} MariaDB::pcre2-posix MariaDB::pcre2-8) SET_TARGET_PROPERTIES(mariadb-test PROPERTIES ENABLE_EXPORTS TRUE) diff --git a/cmake/libfmt.cmake b/cmake/libfmt.cmake index 7fded49b9169a..a5296614ae6cb 100644 --- a/cmake/libfmt.cmake +++ b/cmake/libfmt.cmake @@ -47,6 +47,15 @@ MACRO (CHECK_LIBFMT) ELSE() FIND_FILE(Libfmt_core_h fmt/core.h) # for build_depends.cmake ENDIF() + # MariaDB::fmt - header-only fmt, pointing at the bundled or the system copy. + # (the sources that use it #define FMT_HEADER_ONLY themselves) + ADD_LIBRARY(mariadb_fmt INTERFACE) + TARGET_INCLUDE_DIRECTORIES(mariadb_fmt INTERFACE ${LIBFMT_INCLUDE_DIR}) + IF(TARGET libfmt) + # bundled: make sure the headers are downloaded before consumers compile + ADD_DEPENDENCIES(mariadb_fmt libfmt) + ENDIF() + ADD_LIBRARY(MariaDB::fmt ALIAS mariadb_fmt) ENDMACRO() MARK_AS_ADVANCED(LIBFMT_INCLUDE_DIR) diff --git a/cmake/mariadb_connector_c.cmake b/cmake/mariadb_connector_c.cmake index aff69b3ba17f8..308eeddaac293 100644 --- a/cmake/mariadb_connector_c.cmake +++ b/cmake/mariadb_connector_c.cmake @@ -43,9 +43,27 @@ SET(CLIENT_PLUGIN_PVIO_NPIPE STATIC) SET(CLIENT_PLUGIN_PVIO_SHMEM STATIC) SET(CLIENT_PLUGIN_PVIO_SOCKET STATIC) +# Connector/C consumes the FindZLIB-style variables directly. +# Provide a shim. +IF(BUILD_BUNDLED_ZLIB) + SET(ZLIB_FOUND TRUE) + SET(ZLIB_LIBRARY zlib) + SET(ZLIB_LIBRARIES zlib) + SET(ZLIB_INCLUDE_DIR ${ZLIB_BUNDLED_INCLUDE_DIR}) +ENDIF() + MESSAGE("== Configuring MariaDB Connector/C") ADD_SUBDIRECTORY(libmariadb) +IF(BUILD_BUNDLED_ZLIB) + # The shim above is only for Connector/C. Don't let it leak into later + # find_package(ZLIB) + FOREACH(v ZLIB_FOUND ZLIB_LIBRARY ZLIB_LIBRARIES ZLIB_INCLUDE_DIR) + UNSET(${v}) + UNSET(${v} CACHE) + ENDFOREACH() +ENDIF() + IF(MSVC AND TARGET mariadb_obj AND TARGET mariadbclient) # With MSVC, do not produce LTCG-compiled static client libraries. # They are not usable by end-users, being tied to exact compiler version diff --git a/cmake/pcre.cmake b/cmake/pcre.cmake index 9ebab4e66fee0..7a2bf263ef817 100644 --- a/cmake/pcre.cmake +++ b/cmake/pcre.cmake @@ -107,5 +107,20 @@ MACRO (CHECK_PCRE) ENDIF() ENDIF() ENDIF() + # MariaDB::pcre2-8 and MariaDB::pcre2-posix - the pcre2 libraries plus their + # headers, pointing at the bundled imported targets or the system libraries. + # For the bundled case the include dir comes from the pcre2 targets; for + # system from PCRE_INCLUDE_DIRS. + IF(NOT TARGET mariadb_pcre2_8) + ADD_LIBRARY(mariadb_pcre2_8 INTERFACE) + TARGET_LINK_LIBRARIES(mariadb_pcre2_8 INTERFACE pcre2-8) + TARGET_INCLUDE_DIRECTORIES(mariadb_pcre2_8 INTERFACE ${PCRE_INCLUDE_DIRS}) + ADD_LIBRARY(MariaDB::pcre2-8 ALIAS mariadb_pcre2_8) + + ADD_LIBRARY(mariadb_pcre2_posix INTERFACE) + TARGET_LINK_LIBRARIES(mariadb_pcre2_posix INTERFACE pcre2-posix) + TARGET_INCLUDE_DIRECTORIES(mariadb_pcre2_posix INTERFACE ${PCRE_INCLUDE_DIRS}) + ADD_LIBRARY(MariaDB::pcre2-posix ALIAS mariadb_pcre2_posix) + ENDIF() ENDMACRO() diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake index 5909e6131bbf6..0a8baf3ae12ad 100644 --- a/cmake/plugin.cmake +++ b/cmake/plugin.cmake @@ -41,12 +41,16 @@ MACRO(MYSQL_ADD_PLUGIN) ) IF(NOT WITHOUT_SERVER OR ARG_CLIENT) - # Add common include directories - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include + # Add common include directories. zlib and ssl headers are made available to + # all plugins (several engines #include , and violite.h pulls in + # under HAVE_OPENSSL); the dirs come from the MariaDB::zlib / + # MariaDB::OpenSSL targets so we don't rely on the FindZLIB / FindOpenSSL + # result variables. + INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql ${PCRE_INCLUDE_DIRS} - ${SSL_INCLUDE_DIRS} - ${ZLIB_INCLUDE_DIRS}) + $ + $) LIST(GET ARG_UNPARSED_ARGUMENTS 0 plugin) SET(SOURCES ${ARG_UNPARSED_ARGUMENTS}) diff --git a/cmake/readline.cmake b/cmake/readline.cmake index 55a2867d2a337..2867c6797071f 100644 --- a/cmake/readline.cmake +++ b/cmake/readline.cmake @@ -224,5 +224,16 @@ MACRO (MYSQL_CHECK_READLINE) SET(CMAKE_REQUIRED_INCLUDES) ENDIF(NOT WIN32) CHECK_INCLUDE_FILES ("curses.h;term.h" HAVE_TERM_H) + + # MariaDB::readline - bundled readline or system readline/libedit (+curses). + # Empty on Windows (no readline there); consumers may link it unconditionally. + ADD_LIBRARY(mariadb_readline INTERFACE) + IF(MY_READLINE_LIBRARY) + TARGET_LINK_LIBRARIES(mariadb_readline INTERFACE ${MY_READLINE_LIBRARY}) + ENDIF() + IF(MY_READLINE_INCLUDE_DIR) + TARGET_INCLUDE_DIRECTORIES(mariadb_readline INTERFACE ${MY_READLINE_INCLUDE_DIR}) + ENDIF() + ADD_LIBRARY(MariaDB::readline ALIAS mariadb_readline) ENDMACRO() diff --git a/cmake/ssl.cmake b/cmake/ssl.cmake index 8be48e2a59752..259e10b9df941 100644 --- a/cmake/ssl.cmake +++ b/cmake/ssl.cmake @@ -64,6 +64,11 @@ MACRO (MYSQL_USE_BUNDLED_SSL) CHANGE_SSL_SETTINGS("bundled") ADD_SUBDIRECTORY(extra/wolfssl) MESSAGE_ONCE(SSL_LIBRARIES "SSL_LIBRARIES = ${SSL_LIBRARIES}") + ADD_LIBRARY(mariadb_ssl INTERFACE) + TARGET_LINK_LIBRARIES(mariadb_ssl INTERFACE wolfssl) + TARGET_INCLUDE_DIRECTORIES(mariadb_ssl INTERFACE ${INC_DIRS}) + TARGET_COMPILE_DEFINITIONS(mariadb_ssl INTERFACE + HAVE_OPENSSL HAVE_WOLFSSL WOLFSSL_USER_SETTINGS) ENDMACRO() # MYSQL_CHECK_SSL @@ -141,11 +146,29 @@ MACRO (MYSQL_CHECK_SSL) SET(SSL_INTERNAL_INCLUDE_DIRS "") SET(SSL_DEFINES "-DHAVE_OPENSSL") + ADD_LIBRARY(mariadb_ssl INTERFACE) + TARGET_LINK_LIBRARIES(mariadb_ssl INTERFACE + OpenSSL::SSL OpenSSL::Crypto) + # Put the include dir on the target itself (not only transitively via + # OpenSSL::SSL) so $ + # also works for consumers that need the openssl headers but do not link + # the library (violite.h pulls in under HAVE_OPENSSL). + TARGET_INCLUDE_DIRECTORIES(mariadb_ssl INTERFACE ${OPENSSL_INCLUDE_DIR}) + IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + TARGET_LINK_LIBRARIES(mariadb_ssl INTERFACE ${LIBSOCKET}) + ENDIF() + IF(CMAKE_SYSTEM_NAME MATCHES "Linux") + TARGET_LINK_LIBRARIES(mariadb_ssl INTERFACE ${CMAKE_DL_LIBS}) + ENDIF() + TARGET_COMPILE_DEFINITIONS(mariadb_ssl INTERFACE HAVE_OPENSSL) + # Silence "deprecated in OpenSSL 3.0" IF((NOT OPENSSL_VERSION) # 3.0 not determined by older cmake OR NOT(OPENSSL_VERSION VERSION_LESS "3.0.0")) SET(SSL_DEFINES "${SSL_DEFINES} -DOPENSSL_API_COMPAT=0x10100000L") SET(CMAKE_REQUIRED_DEFINITIONS -DOPENSSL_API_COMPAT=0x10100000L) + TARGET_COMPILE_DEFINITIONS(mariadb_ssl INTERFACE + OPENSSL_API_COMPAT=0x10100000L) ENDIF() SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR}) @@ -174,6 +197,7 @@ MACRO (MYSQL_CHECK_SSL) MESSAGE(FATAL_ERROR "Wrong option for WITH_SSL. Valid values are: ${WITH_SSL_DOC}") ENDIF() + ADD_LIBRARY(MariaDB::OpenSSL ALIAS mariadb_ssl) ENDMACRO() diff --git a/cmake/zlib.cmake b/cmake/zlib.cmake index 2a7043b325428..335efbe766b8c 100644 --- a/cmake/zlib.cmake +++ b/cmake/zlib.cmake @@ -13,32 +13,30 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA +# Bundled zlib. Builds the bundled copy and points MariaDB::zlib at it. +# Note: we intentionally do NOT touch the standard FindZLIB result variables +# (ZLIB_FOUND, ZLIB_LIBRARIES, ZLIB_INCLUDE_DIR(S), ...). Overwriting them +# confuses other find_package() calls (notably under vcpkg). MACRO (MYSQL_USE_BUNDLED_ZLIB) - SET(ZLIB_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/zlib ${CMAKE_BINARY_DIR}/zlib) SET(BUILD_BUNDLED_ZLIB 1) - SET(ZLIB_LIBRARIES zlib CACHE INTERNAL "Bundled zlib library") - # temporarily define ZLIB_LIBRARY and ZLIB_INCLUDE_DIR for libmariadb - SET(ZLIB_LIBRARY ${ZLIB_LIBRARIES}) - SET(ZLIB_INCLUDE_DIR ${ZLIB_INCLUDE_DIRS}) - SET(ZLIB_FOUND TRUE) - IF(VCPKG_INSTALLED_DIR) - # Avoid errors in vcpkg's FIND_PACKAGE - # for packages dependend on zlib - SET(CMAKE_DISABLE_FIND_PACKAGE_ZLIB 1) - ENDIF() + SET(ZLIB_BUNDLED_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/zlib ${CMAKE_BINARY_DIR}/zlib + CACHE INTERNAL "Bundled zlib include directories") SET(WITH_ZLIB "bundled" CACHE STRING "Use bundled zlib") ADD_SUBDIRECTORY(zlib) + ADD_LIBRARY(mariadb_zlib INTERFACE) + TARGET_LINK_LIBRARIES(mariadb_zlib INTERFACE zlib) + TARGET_INCLUDE_DIRECTORIES(mariadb_zlib INTERFACE ${ZLIB_BUNDLED_INCLUDE_DIR}) ENDMACRO() # MYSQL_CHECK_ZLIB_WITH_COMPRESS # # Provides the following configure options: -# WITH_ZLIB_BUNDLED -# If this is set,we use bundled zlib -# If this is not set,search for system zlib. -# if system zlib is not found, use bundled copy -# ZLIB_LIBRARIES, ZLIB_INCLUDE_DIRS -# are set after this macro has run +# WITH_ZLIB=[bundled|system] +# If this is "bundled", we use bundled zlib. +# Otherwise search for system zlib, and fall back to the bundled copy if it +# is not found (or not usable). +# Defines the MariaDB::zlib target, which points at either the system +# ZLIB::ZLIB or the bundled zlib, and carries the right include directories. MACRO (MYSQL_CHECK_ZLIB_WITH_COMPRESS) @@ -60,8 +58,10 @@ MACRO (MYSQL_CHECK_ZLIB_WITH_COMPRESS) IF(HAVE_CRC32 AND HAVE_COMPRESSBOUND AND HAVE_DEFLATEBOUND) SET(WITH_ZLIB "system" CACHE STRING "Which zlib to use (possible values are 'bundled' or 'system')") + ADD_LIBRARY(mariadb_zlib INTERFACE) + TARGET_LINK_LIBRARIES(mariadb_zlib INTERFACE ZLIB::ZLIB) ELSE() - SET(ZLIB_FOUND FALSE CACHE INTERNAL "Zlib found but not usable") + SET(ZLIB_FOUND FALSE) MESSAGE(STATUS "system zlib found but not usable") ENDIF() ENDIF() @@ -69,5 +69,6 @@ MACRO (MYSQL_CHECK_ZLIB_WITH_COMPRESS) MYSQL_USE_BUNDLED_ZLIB() ENDIF() ENDIF() + ADD_LIBRARY(MariaDB::zlib ALIAS mariadb_zlib) SET(HAVE_COMPRESS 1) ENDMACRO() diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt index 00fe76433ca8b..2f58a5521539c 100644 --- a/extra/CMakeLists.txt +++ b/extra/CMakeLists.txt @@ -13,7 +13,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${ZLIB_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) # Default install component for the files is Server here SET(MYSQL_INSTALL_COMPONENT Server) diff --git a/extra/mariabackup/CMakeLists.txt b/extra/mariabackup/CMakeLists.txt index fcb6589a19c11..58ff2b2cda39a 100644 --- a/extra/mariabackup/CMakeLists.txt +++ b/extra/mariabackup/CMakeLists.txt @@ -37,7 +37,6 @@ INCLUDE_DIRECTORIES( ) IF(NOT HAVE_SYSTEM_REGEX) - INCLUDE_DIRECTORIES(${PCRE_INCLUDE_DIRS}) ADD_DEFINITIONS(${PCRE2_DEBIAN_HACK}) ENDIF() @@ -85,7 +84,7 @@ SET_TARGET_PROPERTIES(mariadb-backup PROPERTIES ENABLE_EXPORTS TRUE) TARGET_LINK_LIBRARIES(mariadb-backup sql sql_builtins aria) IF(NOT HAVE_SYSTEM_REGEX) - TARGET_LINK_LIBRARIES(mariadb-backup pcre2-posix) + TARGET_LINK_LIBRARIES(mariadb-backup MariaDB::pcre2-posix) ENDIF() diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index 845efbd675934..248330349702b 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -14,18 +14,13 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -ADD_DEFINITIONS(-DMYSQL_SERVER -DEMBEDDED_LIBRARY - ${SSL_DEFINES}) +ADD_DEFINITIONS(-DMYSQL_SERVER -DEMBEDDED_LIBRARY) INCLUDE_DIRECTORIES( -${CMAKE_SOURCE_DIR}/include +${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/libmysqld ${CMAKE_SOURCE_DIR}/sql -${CMAKE_BINARY_DIR}/sql -${PCRE_INCLUDE_DIRS} -${LIBFMT_INCLUDE_DIR} -${ZLIB_INCLUDE_DIRS} -${SSL_INCLUDE_DIRS} +${CMAKE_BINARY_DIR}/sql ${SSL_INTERNAL_INCLUDE_DIRS} ) @@ -162,7 +157,8 @@ ENDIF() IF(TARGET libfmt) ADD_DEPENDENCIES(sql_embedded libfmt) ENDIF() -TARGET_LINK_LIBRARIES(sql_embedded LINK_PRIVATE tpool ${CRC32_LIBRARY} pcre2-8) +TARGET_LINK_LIBRARIES(sql_embedded LINK_PRIVATE tpool ${CRC32_LIBRARY} + MariaDB::pcre2-8 MariaDB::fmt MariaDB::OpenSSL MariaDB::zlib) # On Windows, static embedded server library is called mysqlserver.lib # On Unix, it is libmysqld.a @@ -177,9 +173,9 @@ ELSE() ENDIF() -SET(LIBS - dbug strings mysys mysys_ssl pcre2-8 vio - ${ZLIB_LIBRARIES} ${SSL_LIBRARIES} +SET(LIBS + dbug strings mysys mysys_ssl MariaDB::pcre2-8 vio + MariaDB::zlib MariaDB::OpenSSL ${LIBWRAP} ${LIBCRYPT} ${CMAKE_DL_LIBS} ${EMBEDDED_PLUGIN_LIBS} sql_embedded diff --git a/libmysqld/examples/CMakeLists.txt b/libmysqld/examples/CMakeLists.txt index d6646a128ca76..2cdd97a11fb1e 100644 --- a/libmysqld/examples/CMakeLists.txt +++ b/libmysqld/examples/CMakeLists.txt @@ -15,9 +15,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/libmysqld/include - ${PCRE_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/sql - ${MY_READLINE_INCLUDE_DIR} ) @@ -29,12 +27,12 @@ MYSQL_ADD_EXECUTABLE(mariadb-embedded ../../client/completion_hash.cc COMPONENT Client) TARGET_LINK_LIBRARIES(mariadb-embedded mysqlserver) IF(UNIX) - TARGET_LINK_LIBRARIES(mariadb-embedded ${MY_READLINE_LIBRARY}) + TARGET_LINK_LIBRARIES(mariadb-embedded MariaDB::readline) ENDIF(UNIX) MYSQL_ADD_EXECUTABLE(mariadb-test-embedded ../../client/mysqltest.cc COMPONENT Test) -TARGET_LINK_LIBRARIES(mariadb-test-embedded mysqlserver pcre2-posix pcre2-8) +TARGET_LINK_LIBRARIES(mariadb-test-embedded mysqlserver MariaDB::pcre2-posix MariaDB::pcre2-8) SET_SOURCE_FILES_PROPERTIES(../../client/mysqltest.cc PROPERTIES COMPILE_FLAGS "${PCRE2_DEBIAN_HACK}") IF(CMAKE_GENERATOR MATCHES "Xcode") diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt index 9366994a17414..145473e00af7f 100644 --- a/mysys/CMakeLists.txt +++ b/mysys/CMakeLists.txt @@ -14,7 +14,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys) SET(MYSYS_SOURCES array.c charset-def.c charset.c my_default.c get_password.c @@ -164,7 +164,7 @@ ENDIF() ADD_CONVENIENCE_LIBRARY(mysys ${MYSYS_SOURCES}) MAYBE_DISABLE_IPO(mysys) -TARGET_LINK_LIBRARIES(mysys dbug strings ${ZLIB_LIBRARIES} +TARGET_LINK_LIBRARIES(mysys dbug strings MariaDB::zlib ${LIBNSL} ${LIBM} ${LIBRT} ${CMAKE_DL_LIBS} ${LIBSOCKET} ${LIBEXECINFO}) DTRACE_INSTRUMENT(mysys) diff --git a/mysys_ssl/CMakeLists.txt b/mysys_ssl/CMakeLists.txt index 1c3f60b5bb091..82093dbb84de1 100644 --- a/mysys_ssl/CMakeLists.txt +++ b/mysys_ssl/CMakeLists.txt @@ -14,12 +14,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/mysys_ssl - ${SSL_INCLUDE_DIRS}) - -IF(SSL_DEFINES) -ADD_DEFINITIONS(${SSL_DEFINES}) -ENDIF() + ${CMAKE_SOURCE_DIR}/mysys_ssl) SET(MYSYS_SSL_HIDDEN_SOURCES my_sha1.cc @@ -45,5 +40,5 @@ IF(WITH_SSL STREQUAL "bundled" AND HAVE_VISIBILITY_HIDDEN) ENDIF() ADD_CONVENIENCE_LIBRARY(mysys_ssl ${MYSYS_SSL_SOURCES}) -TARGET_LINK_LIBRARIES(mysys_ssl dbug strings ${SSL_LIBRARIES}) +TARGET_LINK_LIBRARIES(mysys_ssl dbug strings MariaDB::OpenSSL) DTRACE_INSTRUMENT(mysys_ssl) diff --git a/plugin/feedback/CMakeLists.txt b/plugin/feedback/CMakeLists.txt index fc35cbadc31bb..f0d721643af3d 100644 --- a/plugin/feedback/CMakeLists.txt +++ b/plugin/feedback/CMakeLists.txt @@ -1,12 +1,8 @@ -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql - ${PCRE_INCLUDE_DIRS} - ${SSL_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql) SET(FEEDBACK_SOURCES feedback.cc sender_thread.cc url_base.cc url_http.cc utils.cc) -ADD_DEFINITIONS(${SSL_DEFINES}) - INCLUDE (CheckIncludeFiles) CHECK_INCLUDE_FILES (netdb.h HAVE_NETDB_H) IF(HAVE_NETDB_H) @@ -18,6 +14,6 @@ IF(WIN32) ENDIF(WIN32) MYSQL_ADD_PLUGIN(FEEDBACK ${FEEDBACK_SOURCES} - LINK_LIBRARIES ${SSL_LIBRARIES} + LINK_LIBRARIES MariaDB::OpenSSL ${MAYBE_STATIC_ONLY} RECOMPILE_FOR_EMBEDDED DEFAULT) diff --git a/plugin/qc_info/CMakeLists.txt b/plugin/qc_info/CMakeLists.txt index 329f49c1fc970..ec678f22cbb2b 100644 --- a/plugin/qc_info/CMakeLists.txt +++ b/plugin/qc_info/CMakeLists.txt @@ -1,4 +1,3 @@ -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql - ${PCRE_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql) MYSQL_ADD_PLUGIN(QUERY_CACHE_INFO qc_info.cc RECOMPILE_FOR_EMBEDDED) diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index e8119f01e4c22..fc0ba24fc8358 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -54,10 +54,6 @@ ENDIF() INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql -${LIBFMT_INCLUDE_DIR} -${PCRE_INCLUDE_DIRS} -${ZLIB_INCLUDE_DIRS} -${SSL_INCLUDE_DIRS} ${CMAKE_BINARY_DIR}/sql ) @@ -85,10 +81,6 @@ ADD_CUSTOM_COMMAND( ADD_DEFINITIONS(-DMYSQL_SERVER -DHAVE_EVENT_SCHEDULER) -IF(SSL_DEFINES) - ADD_DEFINITIONS(${SSL_DEFINES}) -ENDIF() - SET (SQL_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/yy_mariadb.cc ${CMAKE_CURRENT_BINARY_DIR}/yy_oracle.cc @@ -220,10 +212,10 @@ ADD_LIBRARY(sql STATIC ${SQL_SOURCE}) MAYBE_DISABLE_IPO(sql) DTRACE_INSTRUMENT(sql) TARGET_LINK_LIBRARIES(sql - mysys mysys_ssl dbug strings vio pcre2-8 + mysys mysys_ssl dbug strings vio MariaDB::pcre2-8 tpool ${LIBWRAP} ${LIBCRYPT} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT} - ${SSL_LIBRARIES} + MariaDB::OpenSSL MariaDB::fmt ${LIBSYSTEMD}) IF(TARGET pcre2) diff --git a/storage/archive/CMakeLists.txt b/storage/archive/CMakeLists.txt index 5c7b6aa4aab19..6288f42393a51 100644 --- a/storage/archive/CMakeLists.txt +++ b/storage/archive/CMakeLists.txt @@ -14,5 +14,5 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA SET(ARCHIVE_SOURCES azio.c ha_archive.cc ha_archive.h) -MYSQL_ADD_PLUGIN(archive ${ARCHIVE_SOURCES} STORAGE_ENGINE LINK_LIBRARIES ${ZLIB_LIBRARIES}) +MYSQL_ADD_PLUGIN(archive ${ARCHIVE_SOURCES} STORAGE_ENGINE LINK_LIBRARIES MariaDB::zlib) diff --git a/storage/connect/CMakeLists.txt b/storage/connect/CMakeLists.txt index 01b3df4b1a030..73bf3aa3e23a8 100644 --- a/storage/connect/CMakeLists.txt +++ b/storage/connect/CMakeLists.txt @@ -412,7 +412,7 @@ MYSQL_ADD_PLUGIN(connect ${CONNECT_SOURCES} STORAGE_ENGINE COMPONENT connect-engine RECOMPILE_FOR_EMBEDDED - LINK_LIBRARIES ${ZLIB_LIBRARIES} ${XML_LIBRARY} ${ICONV_LIBRARY} + LINK_LIBRARIES MariaDB::zlib ${XML_LIBRARY} ${ICONV_LIBRARY} ${ODBC_LIBRARY} ${JDBC_LIBRARY} ${MONGOC_LIBRARY} ${IPHLPAPI_LIBRARY} ${REST_LIBRARY}) IF(NOT TARGET connect) diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt index 66e03d0a3a281..9fbcbb9758f21 100644 --- a/storage/innobase/CMakeLists.txt +++ b/storage/innobase/CMakeLists.txt @@ -441,7 +441,7 @@ MYSQL_ADD_PLUGIN(innobase ${INNOBASE_SOURCES} STORAGE_ENGINE MODULE_OUTPUT_NAME ha_innodb DEFAULT RECOMPILE_FOR_EMBEDDED LINK_LIBRARIES - ${ZLIB_LIBRARIES} + MariaDB::zlib ${NUMA_LIBRARY} ${LIBSYSTEMD} ${LINKER_SCRIPT} diff --git a/storage/maria/CMakeLists.txt b/storage/maria/CMakeLists.txt index 426a19f0447f6..d0034eb7b8560 100644 --- a/storage/maria/CMakeLists.txt +++ b/storage/maria/CMakeLists.txt @@ -14,8 +14,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${SSL_INCLUDE_DIRS}) - IF(SSL_DEFINES) SET_SOURCE_FILES_PROPERTIES(ma_crypt.c PROPERTIES COMPILE_FLAGS ${SSL_DEFINES}) ENDIF() @@ -124,7 +122,7 @@ ENDIF() IF (CURL_FOUND) INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS}) MYSQL_ADD_PLUGIN(s3 ha_s3.cc ${S3_SOURCES} COMPONENT s3-engine - LINK_LIBRARIES ${CURL_LIBRARIES} ${ZLIB_LIBRARIES} STORAGE_ENGINE NOT_EMBEDDED CONFIG s3.cnf) + LINK_LIBRARIES ${CURL_LIBRARIES} MariaDB::zlib STORAGE_ENGINE NOT_EMBEDDED CONFIG s3.cnf) ENDIF() SET(CPACK_RPM_s3-engine_PACKAGE_SUMMARY "Amazon S3 archival storage engine for MariaDB" PARENT_SCOPE) @@ -132,7 +130,7 @@ SET(CPACK_RPM_s3-engine_PACKAGE_DESCRIPTION "The S3 storage engine allows one to IF(TARGET s3) MYSQL_ADD_EXECUTABLE(aria_s3_copy aria_s3_copy.cc ${S3_SOURCES} COMPONENT s3-engine) - TARGET_LINK_LIBRARIES(aria_s3_copy aria myisam mysys mysys_ssl ${CURL_LIBRARIES} ${ZLIB_LIBRARIES}) + TARGET_LINK_LIBRARIES(aria_s3_copy aria myisam mysys mysys_ssl ${CURL_LIBRARIES} MariaDB::zlib) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/libmarias3) ADD_DEFINITIONS(-DWITH_S3_STORAGE_ENGINE) ENDIF() diff --git a/storage/maria/unittest/CMakeLists.txt b/storage/maria/unittest/CMakeLists.txt index a7b3441044d1e..646939b1c5452 100644 --- a/storage/maria/unittest/CMakeLists.txt +++ b/storage/maria/unittest/CMakeLists.txt @@ -15,7 +15,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib ${CMAKE_SOURCE_DIR}/unittest/mytap) -LINK_LIBRARIES(aria myisam mytap mysys dbug strings ${ZLIB_LIBRARIES}) +LINK_LIBRARIES(aria myisam mytap mysys dbug strings MariaDB::zlib) MY_ADD_TESTS(ma_control_file trnman) diff --git a/storage/perfschema/CMakeLists.txt b/storage/perfschema/CMakeLists.txt index 402f62d569d13..0ec0c3740da3f 100644 --- a/storage/perfschema/CMakeLists.txt +++ b/storage/perfschema/CMakeLists.txt @@ -23,9 +23,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql ${CMAKE_BINARY_DIR}/sql - ${CMAKE_CURRENT_BINARY_DIR} - ${PCRE_INCLUDE_DIRS} - ${SSL_INCLUDE_DIRS}) + ${CMAKE_CURRENT_BINARY_DIR}) ADD_DEFINITIONS(-DMYSQL_SERVER) IF (SSL_DEFINES) diff --git a/storage/perfschema/unittest/CMakeLists.txt b/storage/perfschema/unittest/CMakeLists.txt index 600795c78fcfd..a94bdbb058a24 100644 --- a/storage/perfschema/unittest/CMakeLists.txt +++ b/storage/perfschema/unittest/CMakeLists.txt @@ -22,9 +22,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/include/mysql - ${PCRE_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/sql - ${SSL_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/unittest/mytap ${CMAKE_SOURCE_DIR}/storage/perfschema) diff --git a/storage/rocksdb/CMakeLists.txt b/storage/rocksdb/CMakeLists.txt index 5f35ccbb8c0e9..f7ffebd3133a4 100644 --- a/storage/rocksdb/CMakeLists.txt +++ b/storage/rocksdb/CMakeLists.txt @@ -199,7 +199,7 @@ ADD_CONVENIENCE_LIBRARY(rocksdb_aux_lib ADD_DEPENDENCIES(rocksdb_aux_lib GenError) # MARIAROCKS-TODO: how to properly depend on -lrt ? -TARGET_LINK_LIBRARIES(rocksdb_aux_lib rocksdblib ${ZLIB_LIBRARIES}) +TARGET_LINK_LIBRARIES(rocksdb_aux_lib rocksdblib MariaDB::zlib) if (UNIX AND NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") TARGET_LINK_LIBRARIES(rocksdb_aux_lib -lrt) endif() diff --git a/storage/rocksdb/build_rocksdb.cmake b/storage/rocksdb/build_rocksdb.cmake index 8866f26f03a1a..ec2634d9a865b 100644 --- a/storage/rocksdb/build_rocksdb.cmake +++ b/storage/rocksdb/build_rocksdb.cmake @@ -79,7 +79,7 @@ check_lib(Snappy) check_lib(ZSTD ZDICT_trainFromBuffer) add_definitions(-DZLIB) -list(APPEND THIRDPARTY_LIBS ${ZLIB_LIBRARIES}) +list(APPEND THIRDPARTY_LIBS MariaDB::zlib) ADD_FEATURE_INFO(ROCKSDB_ZLIB "ON" "zlib Compression in the RocksDB storage engine") if(CMAKE_SYSTEM_NAME MATCHES "Cygwin") diff --git a/unittest/embedded/CMakeLists.txt b/unittest/embedded/CMakeLists.txt index 428bb811de6fc..6d4bae9237f69 100644 --- a/unittest/embedded/CMakeLists.txt +++ b/unittest/embedded/CMakeLists.txt @@ -1,9 +1,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/libmysqld/include - ${PCRE_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/sql - ${MY_READLINE_INCLUDE_DIR} ) diff --git a/unittest/mysys/CMakeLists.txt b/unittest/mysys/CMakeLists.txt index 10527add49608..8fc267d8665b4 100644 --- a/unittest/mysys/CMakeLists.txt +++ b/unittest/mysys/CMakeLists.txt @@ -18,9 +18,7 @@ MY_ADD_TESTS(base64 bitmap byte_order crc32 dynstring lf my_atomic my_getopt waiting_threads LINK_LIBRARIES mysys) MY_ADD_TESTS(my_vsnprintf LINK_LIBRARIES strings mysys) -ADD_DEFINITIONS(${SSL_DEFINES}) MY_ADD_TESTS(aes LINK_LIBRARIES mysys mysys_ssl) -INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS}) MY_ADD_TESTS(ma_dyncol LINK_LIBRARIES mysys) IF(WIN32) diff --git a/vio/CMakeLists.txt b/vio/CMakeLists.txt index e7987cb9c2fcc..983b248127116 100644 --- a/vio/CMakeLists.txt +++ b/vio/CMakeLists.txt @@ -13,11 +13,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include -${SSL_INCLUDE_DIRS}) -ADD_DEFINITIONS(${SSL_DEFINES}) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) SET(VIO_SOURCES vio.c viosocket.c viossl.c viopipe.c viosslfactories.c) ADD_CONVENIENCE_LIBRARY(vio ${VIO_SOURCES}) TARGET_LINK_LIBRARIES(vio ${LIBSOCKET}) -TARGET_LINK_LIBRARIES(vio ${SSL_LIBRARIES}) +TARGET_LINK_LIBRARIES(vio MariaDB::OpenSSL) From 4bd757b61ccaf6a58116755193bcf69b6ba1b329 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Tue, 30 Jun 2026 23:09:49 +0200 Subject: [PATCH 2/2] MDEV-37996 update libmariadb to use server's MariaDB::zlib Remove hack in cmake/mariadb_connector_c.cmake that sets variables to make connectors FIND_PACKAGE(ZLIB) use server's zlib. it is not necessary anymore, and is expressed more directly. --- cmake/mariadb_connector_c.cmake | 18 ------------------ libmariadb | 2 +- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/cmake/mariadb_connector_c.cmake b/cmake/mariadb_connector_c.cmake index 308eeddaac293..aff69b3ba17f8 100644 --- a/cmake/mariadb_connector_c.cmake +++ b/cmake/mariadb_connector_c.cmake @@ -43,27 +43,9 @@ SET(CLIENT_PLUGIN_PVIO_NPIPE STATIC) SET(CLIENT_PLUGIN_PVIO_SHMEM STATIC) SET(CLIENT_PLUGIN_PVIO_SOCKET STATIC) -# Connector/C consumes the FindZLIB-style variables directly. -# Provide a shim. -IF(BUILD_BUNDLED_ZLIB) - SET(ZLIB_FOUND TRUE) - SET(ZLIB_LIBRARY zlib) - SET(ZLIB_LIBRARIES zlib) - SET(ZLIB_INCLUDE_DIR ${ZLIB_BUNDLED_INCLUDE_DIR}) -ENDIF() - MESSAGE("== Configuring MariaDB Connector/C") ADD_SUBDIRECTORY(libmariadb) -IF(BUILD_BUNDLED_ZLIB) - # The shim above is only for Connector/C. Don't let it leak into later - # find_package(ZLIB) - FOREACH(v ZLIB_FOUND ZLIB_LIBRARY ZLIB_LIBRARIES ZLIB_INCLUDE_DIR) - UNSET(${v}) - UNSET(${v} CACHE) - ENDFOREACH() -ENDIF() - IF(MSVC AND TARGET mariadb_obj AND TARGET mariadbclient) # With MSVC, do not produce LTCG-compiled static client libraries. # They are not usable by end-users, being tied to exact compiler version diff --git a/libmariadb b/libmariadb index 93bb9266666a0..fdf12149fcf44 160000 --- a/libmariadb +++ b/libmariadb @@ -1 +1 @@ -Subproject commit 93bb9266666a0a838187679ad2cc14af169895da +Subproject commit fdf12149fcf445974f7c42bd043a0e01b908f235