From 3b590e7bfb01d3447fd762cb02937e38c77c59b1 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 4 Aug 2026 16:04:35 +0200 Subject: [PATCH] MDEV-40608 MariaDB-devel is incomplete for plugins create and install mariadb-plugin-config.cmake --- .gitignore | 1 + CMakeLists.txt | 13 +++++++- cmake/plugin.cmake | 22 +++++-------- support-files/CMakeLists.txt | 6 ++++ support-files/mariadb-plugin-config.cmake.in | 33 ++++++++++++++++++++ 5 files changed, 59 insertions(+), 16 deletions(-) create mode 100644 support-files/mariadb-plugin-config.cmake.in diff --git a/.gitignore b/.gitignore index 11a6c4600d711..551a2e8fa7d79 100644 --- a/.gitignore +++ b/.gitignore @@ -264,6 +264,7 @@ support-files/mariadb-extra.socket support-files/mariadb@.service support-files/mariadb@.socket support-files/mariadb-extra@.socket +support-files/mariadb-plugin-config.cmake support-files/mini-benchmark support-files/my-huge.cnf support-files/my-innodb-heavy-4G.cnf diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f68ec93a13ae..6e151f1e4851c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -493,7 +493,18 @@ SET(PYTHON_SHEBANG "/usr/bin/env python3" CACHE STRING "python shebang") MARK_AS_ADVANCED(PYTHON_SHEBANG) # Add storage engines and plugins. -CONFIGURE_PLUGINS() +IF(NOT WITHOUT_SERVER) + FILE(GLOB dirs_storage ${CMAKE_SOURCE_DIR}/storage/*) +ENDIF() + +FILE(GLOB dirs_plugin ${CMAKE_SOURCE_DIR}/plugin/*) +FOREACH(dir ${dirs_storage} ${dirs_plugin}) + IF (EXISTS ${dir}/CMakeLists.txt) + ADD_SUBDIRECTORY(${dir}) + ENDIF() +ENDFOREACH() + +VERIFY_PLUGINS() ADD_SUBDIRECTORY(include) ADD_SUBDIRECTORY(dbug) diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake index a0deacbcb578b..8a99b999dd1d1 100644 --- a/cmake/plugin.cmake +++ b/cmake/plugin.cmake @@ -17,7 +17,7 @@ INCLUDE(CMakeParseArguments) -# MYSQL_ADD_PLUGIN(plugin_name source1...sourceN +# MARIADB_ADD_PLUGIN(plugin_name source1...sourceN # [STORAGE_ENGINE] # [STATIC_ONLY|MODULE_ONLY] # [MANDATORY|DEFAULT] @@ -32,7 +32,7 @@ INCLUDE(CMakeParseArguments) # [LINK_LIBRARIES lib1...libN] # [DEPENDS target1...targetN] -MACRO(MYSQL_ADD_PLUGIN) +MACRO(MARIADB_ADD_PLUGIN) CMAKE_PARSE_ARGUMENTS(ARG "STORAGE_ENGINE;STATIC_ONLY;MODULE_ONLY;MANDATORY;DEFAULT;DISABLED;NOT_EMBEDDED;RECOMPILE_FOR_EMBEDDED;CLIENT" "MODULE_OUTPUT_NAME;STATIC_OUTPUT_NAME;COMPONENT;CONFIG;VERSION" @@ -326,20 +326,12 @@ MACRO(MYSQL_ADD_PLUGIN) ENDMACRO() -# Add all CMake projects under storage and plugin -# subdirectories, configure sql_builtins.cc -MACRO(CONFIGURE_PLUGINS) - IF(NOT WITHOUT_SERVER) - FILE(GLOB dirs_storage ${CMAKE_SOURCE_DIR}/storage/*) - ENDIF() - - FILE(GLOB dirs_plugin ${CMAKE_SOURCE_DIR}/plugin/*) - FOREACH(dir ${dirs_storage} ${dirs_plugin}) - IF (EXISTS ${dir}/CMakeLists.txt) - ADD_SUBDIRECTORY(${dir}) - ENDIF() - ENDFOREACH() +MACRO(MYSQL_ADD_PLUGIN) + MARIADB_ADD_PLUGIN(${ARGV}) +ENDMACRO() +# verify that all -DPLUGIN_xxx=YES plugins are being built +MACRO(VERIFY_PLUGINS) GET_CMAKE_PROPERTY(ALL_VARS VARIABLES) FOREACH (V ${ALL_VARS}) IF (V MATCHES "^PLUGIN_") diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt index 1e2b5ef37c332..542b9743444d2 100644 --- a/support-files/CMakeLists.txt +++ b/support-files/CMakeLists.txt @@ -256,4 +256,10 @@ IF(UNIX AND NOT WITHOUT_SERVER) WORKING_DIRECTORY \$ENV{DESTDIR}${prefix})" COMPONENT SupportFiles) ENDIF(INSTALL_SYSCONFDIR) + + FILE(READ ${CMAKE_SOURCE_DIR}/cmake/install_layout.cmake install_layout.cmake) + FILE(READ ${CMAKE_SOURCE_DIR}/cmake/plugin.cmake plugin.cmake) + CONFIGURE_FILE(mariadb-plugin-config.cmake.in mariadb-plugin-config.cmake @ONLY) + INSTALL(FILES mariadb-plugin-config.cmake DESTINATION ${INSTALL_SHAREDIR}/cmake/mariadb-plugin/ + COMPONENT Development) ENDIF() diff --git a/support-files/mariadb-plugin-config.cmake.in b/support-files/mariadb-plugin-config.cmake.in new file mode 100644 index 0000000000000..e9e8226242cfa --- /dev/null +++ b/support-files/mariadb-plugin-config.cmake.in @@ -0,0 +1,33 @@ +# Copyright (c) 2026, MariaDB plc +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA + +MACRO(DTRACE_INSTRUMENT) +ENDMACRO() +MACRO(ADD_VERSION_INFO) +ENDMACRO() +MACRO(MYSQL_INSTALL_TARGETS) + INSTALL(TARGETS ${ARGV}) +ENDMACRO() +ADD_CUSTOM_TARGET(GenError) + +INCLUDE(FeatureSummary) + +GET_FILENAME_COMPONENT(prefix "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) +INCLUDE_DIRECTORIES(${prefix}/@INSTALL_INCLUDEDIR@/server ${prefix}/@INSTALL_INCLUDEDIR@/server/private) + +@install_layout.cmake@ + +@plugin.cmake@ +