1414# along with this program; if not, write to the Free Software
1515# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
1616
17+ IF (NOT EXTERNAL_PLUGIN)
18+ STRING (CONCAT PARENT_SCOPE PARENT_SCOPE) # cannot use SET here
19+ ENDIF ()
20+
21+ FUNCTION (INSTALL_MYSQL_TEST from to )
22+ IF (INSTALL_MYSQLTESTDIR)
23+ IF (NOT WITH_WSREP)
24+ SET (EXCL_GALERA "(suite/(galera|wsrep|sys_vars/[rt]/(sysvars_)?wsrep).*|std_data/(galera|wsrep).*)" )
25+ ELSE ()
26+ SET (EXCL_GALERA "^DOES_NOT_EXIST$" )
27+ ENDIF ()
28+ INSTALL (
29+ DIRECTORY ${from}
30+ DESTINATION "${INSTALL_MYSQLTESTDIR} /${to} "
31+ USE_SOURCE_PERMISSIONS
32+ COMPONENT Test
33+ PATTERN "var" EXCLUDE
34+ PATTERN "lib/My/SafeProcess" EXCLUDE
35+ PATTERN "lib/t*" EXCLUDE
36+ PATTERN "CPack" EXCLUDE
37+ PATTERN "CMake*" EXCLUDE
38+ PATTERN "cmake_install.cmake" EXCLUDE
39+ PATTERN "mtr.out*" EXCLUDE
40+ PATTERN ".cvsignore" EXCLUDE
41+ PATTERN "*.am" EXCLUDE
42+ PATTERN "*.in" EXCLUDE
43+ PATTERN "Makefile" EXCLUDE
44+ PATTERN "*.vcxproj" EXCLUDE
45+ PATTERN "*.vcxproj.filters" EXCLUDE
46+ PATTERN "*.vcxproj.user" EXCLUDE
47+ PATTERN "CTest*" EXCLUDE
48+ PATTERN "*~" EXCLUDE
49+ REGEX "${EXCL_GALERA} " EXCLUDE
50+ )
51+ ENDIF ()
52+ ENDFUNCTION ()
1753
1854INCLUDE (CMakeParseArguments )
1955
20- # MYSQL_ADD_PLUGIN (plugin_name source1...sourceN
56+ # MARIADB_ADD_PLUGIN (plugin_name source1...sourceN
2157# [STORAGE_ENGINE]
2258# [STATIC_ONLY|MODULE_ONLY]
2359# [MANDATORY|DEFAULT]
@@ -32,10 +68,10 @@ INCLUDE(CMakeParseArguments)
3268# [LINK_LIBRARIES lib1...libN]
3369# [DEPENDS target1...targetN]
3470
35- MACRO (MYSQL_ADD_PLUGIN )
71+ MACRO (MARIADB_ADD_PLUGIN )
3672 CMAKE_PARSE_ARGUMENTS (ARG
3773 "STORAGE_ENGINE;STATIC_ONLY;MODULE_ONLY;MANDATORY;DEFAULT;DISABLED;NOT_EMBEDDED;RECOMPILE_FOR_EMBEDDED;CLIENT"
38- "MODULE_OUTPUT_NAME;STATIC_OUTPUT_NAME;COMPONENT;CONFIG;VERSION"
74+ "MODULE_OUTPUT_NAME;STATIC_OUTPUT_NAME;COMPONENT;CONFIG;VERSION;AUTHOR;DESCRIPTION "
3975 "LINK_LIBRARIES;DEPENDS"
4076 ${ARGN}
4177 )
@@ -108,6 +144,10 @@ MACRO(MYSQL_ADD_PLUGIN)
108144 MESSAGE (FATAL_ERROR "Invalid value for PLUGIN_${plugin} " )
109145 ENDIF ()
110146
147+ IF (EXTERNAL_PLUGIN)
148+ EXTERNAL_PLUGIN_PRE ()
149+ ENDIF ()
150+
111151 # Validate that the requested build mode is compatible with what the
112152 # plugin actually supports. STATIC_ONLY plugins cannot be built as
113153 # dynamic modules, and MODULE_ONLY plugins cannot be linked statically.
@@ -130,10 +170,17 @@ MACRO(MYSQL_ADD_PLUGIN)
130170 SET (ARG_DEPENDS)
131171 ENDIF ()
132172
173+ SET (definitions ";PLUGIN_NAME=\" ${target} \" ;PLUGIN_LICENSE=PLUGIN_LICENSE_GPL" )
133174 IF (ARG_VERSION)
134- SET (version_string ";PLUGIN_${plugin} _VERSION=\" ${ARG_VERSION} \" " )
175+ SET (definitions "${definitions} ;PLUGIN_VERSION=\" ${ARG_VERSION} \" ;PLUGIN_HEX_VERSION=${V_MAJOR} *256+${V_MINOR} " )
176+ ENDIF ()
177+ IF (ARG_AUTHOR)
178+ SET (definitions "${definitions} ;PLUGIN_AUTHOR=\" ${ARG_AUTHOR} \" " )
135179 ENDIF ()
136-
180+ IF (ARG_DESCRIPTION)
181+ SET (definitions "${definitions} ;PLUGIN_DESCRIPTION=\" ${ARG_DESCRIPTION} \" " )
182+ ENDIF ()
183+
137184 IF (NOT ARG_MODULE_OUTPUT_NAME)
138185 IF (ARG_STORAGE_ENGINE)
139186 SET (ARG_MODULE_OUTPUT_NAME "ha_${target} " )
@@ -169,7 +216,7 @@ MACRO(MYSQL_ADD_PLUGIN)
169216 DTRACE_INSTRUMENT (${target} _embedded )
170217 IF (ARG_RECOMPILE_FOR_EMBEDDED)
171218 SET_TARGET_PROPERTIES (${target} _embedded
172- PROPERTIES COMPILE_DEFINITIONS "EMBEDDED_LIBRARY${version_string } " )
219+ PROPERTIES COMPILE_DEFINITIONS "EMBEDDED_LIBRARY${definitions } " )
173220 ENDIF ()
174221 ADD_DEPENDENCIES (${target} _embedded GenError ${ARG_DEPENDS} )
175222 IF (ARG_LINK_LIBRARIES)
@@ -207,11 +254,11 @@ MACRO(MYSQL_ADD_PLUGIN)
207254 IF (ARG_MANDATORY)
208255 SET (mysql_mandatory_plugins
209256 "${mysql_mandatory_plugins}${builtin_entry} \n " )
210- SET (mysql_mandatory_plugins ${mysql_mandatory_plugins} PARENT_SCOPE )
257+ SET (mysql_mandatory_plugins ${mysql_mandatory_plugins} ${ PARENT_SCOPE} )
211258 ELSE ()
212259 SET (mysql_optional_plugins
213260 "${mysql_optional_plugins}${builtin_entry} \n " )
214- SET (mysql_optional_plugins ${mysql_optional_plugins} PARENT_SCOPE )
261+ SET (mysql_optional_plugins ${mysql_optional_plugins} ${ PARENT_SCOPE} )
215262 ENDIF ()
216263 ELSEIF (PLUGIN_${plugin} MATCHES "(DYNAMIC|AUTO|YES)"
217264 AND NOT ARG_STATIC_ONLY AND NOT WITHOUT_DYNAMIC_PLUGINS)
@@ -223,7 +270,7 @@ MACRO(MYSQL_ADD_PLUGIN)
223270 SET_TARGET_PROPERTIES (${target} PROPERTIES PREFIX "" )
224271 IF (NOT ARG_CLIENT)
225272 SET_TARGET_PROPERTIES (${target} PROPERTIES
226- COMPILE_DEFINITIONS "MYSQL_DYNAMIC_PLUGIN${version_string } " )
273+ COMPILE_DEFINITIONS "MYSQL_DYNAMIC_PLUGIN${definitions } " )
227274 ENDIF ()
228275
229276 TARGET_LINK_LIBRARIES (${target} mysqlservices ${ARG_LINK_LIBRARIES} )
@@ -263,34 +310,39 @@ MACRO(MYSQL_ADD_PLUGIN)
263310 IF (CPACK_COMPONENTS_ALL AND
264311 NOT CPACK_COMPONENTS_ALL MATCHES ${ARG_COMPONENT}
265312 AND INSTALL_SYSCONF2DIR)
266- IF (ARG_STORAGE_ENGINE)
267- STRING (REPLACE "-" "_" ver ${SERVER_VERSION} )
268- SET (ver " = ${ver} -%{release}" )
313+ IF (ARG_STORAGE_ENGINE OR ARG_RECOMPILE_FOR_EMBEDDED)
314+ IF (RPM)
315+ STRING (REPLACE "-" "_" ver ${SERVER_VERSION} )
316+ SET (ver " = ${ver} -%{release}" )
317+ ELSE () # DEB
318+ SET (ver " (= ${SERVER_VERSION} )" )
319+ ENDIF ()
269320 ELSE ()
270321 SET (ver "" )
271322 ENDIF ()
272323 STRING (TOUPPER ${ARG_COMPONENT} ARG_COMPONENT_UPPER)
273- SET (CPACK_COMPONENT_${ARG_COMPONENT_UPPER} SYMLINKS_GROUP ${ARG_COMPONENT} PARENT_SCOPE )
274- SET (CPACK_COMPONENT_${ARG_COMPONENT_UPPER} _GROUP ${ARG_COMPONENT} PARENT_SCOPE )
324+ SET (CPACK_COMPONENT_${ARG_COMPONENT_UPPER} SYMLINKS_GROUP ${ARG_COMPONENT} ${ PARENT_SCOPE} )
325+ SET (CPACK_COMPONENT_${ARG_COMPONENT_UPPER} _GROUP ${ARG_COMPONENT} ${ PARENT_SCOPE} )
275326 SET (CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ${ARG_COMPONENT} ${ARG_COMPONENT} Symlinks)
276- SET (CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} PARENT_SCOPE )
327+ SET (CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ${ PARENT_SCOPE} )
277328
278329 IF (NOT ARG_CLIENT)
279- SET (CPACK_RPM_${ARG_COMPONENT} _PACKAGE_REQUIRES "MariaDB-server${ver} " PARENT_SCOPE )
330+ SET (CPACK_RPM_${ARG_COMPONENT} _PACKAGE_REQUIRES "MariaDB-server${ver} " ${PARENT_SCOPE} )
331+ SET (CPACK_DEBIAN_PACKAGE_DEPENDS "mariadb-server${ver} " )
280332 ENDIF ()
281- SET (CPACK_RPM_${ARG_COMPONENT} _USER_FILELIST ${ignored} PARENT_SCOPE )
333+ SET (CPACK_RPM_${ARG_COMPONENT} _USER_FILELIST ${ignored} ${ PARENT_SCOPE} )
282334 IF (ARG_VERSION)
283- SET (CPACK_RPM_${ARG_COMPONENT} _PACKAGE_VERSION ${SERVER_VERSION} _${ARG_VERSION} PARENT_SCOPE )
335+ SET (CPACK_RPM_${ARG_COMPONENT} _PACKAGE_VERSION ${SERVER_VERSION} _${ARG_VERSION} ${ PARENT_SCOPE} )
284336 SET_PLUGIN_DEB_VERSION (${target} ${SERVER_VERSION} -${ARG_VERSION} )
285337 ENDIF ()
286338 IF (NOT ARG_CLIENT AND UNIX )
287339 IF (NOT ARG_CONFIG)
288340 SET (ARG_CONFIG "${CMAKE_CURRENT_BINARY_DIR } /CMakeFiles/${target} .cnf" )
289341 FILE (WRITE ${ARG_CONFIG} "[mariadb]\n plugin-load-add=${ARG_MODULE_OUTPUT_NAME} .so\n " )
290342 ENDIF ()
291- SET (CPACK_RPM_${ARG_COMPONENT} _USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONF2DIR} /*" PARENT_SCOPE )
292- SET (CPACK_RPM_${ARG_COMPONENT} _POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR } /support-files/rpm/plugin-postin.sh PARENT_SCOPE )
293- SET (CPACK_RPM_${ARG_COMPONENT} _POST_TRANS_SCRIPT_FILE ${CMAKE_SOURCE_DIR } /support-files/rpm/server-posttrans.sh PARENT_SCOPE )
343+ SET (CPACK_RPM_${ARG_COMPONENT} _USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONF2DIR} /*" ${ PARENT_SCOPE} )
344+ SET (CPACK_RPM_${ARG_COMPONENT} _POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR } /support-files/rpm/plugin-postin.sh ${ PARENT_SCOPE} )
345+ SET (CPACK_RPM_${ARG_COMPONENT} _POST_TRANS_SCRIPT_FILE ${CMAKE_SOURCE_DIR } /support-files/rpm/server-posttrans.sh ${ PARENT_SCOPE} )
294346 ENDIF ()
295347 ENDIF ()
296348 ELSE ()
@@ -323,23 +375,17 @@ MACRO(MYSQL_ADD_PLUGIN)
323375 ADD_FEATURE_INFO (${plugin} ${have_target} "Server plugin ${plugin_type} " )
324376 ENDIF ()
325377 ENDIF (NOT WITHOUT_SERVER OR ARG_CLIENT )
326- ENDMACRO ()
327-
328-
329- # Add all CMake projects under storage and plugin
330- # subdirectories, configure sql_builtins.cc
331- MACRO (CONFIGURE_PLUGINS )
332- IF (NOT WITHOUT_SERVER)
333- FILE (GLOB dirs_storage ${CMAKE_SOURCE_DIR } /storage/* )
378+ IF (EXTERNAL_PLUGIN)
379+ EXTERNAL_PLUGIN_POST ()
334380 ENDIF ()
381+ ENDMACRO ()
335382
336- FILE (GLOB dirs_plugin ${CMAKE_SOURCE_DIR } /plugin/* )
337- FOREACH (dir ${dirs_storage} ${dirs_plugin} )
338- IF (EXISTS ${dir} /CMakeLists.txt)
339- ADD_SUBDIRECTORY (${dir} )
340- ENDIF ()
341- ENDFOREACH ()
383+ MACRO (MYSQL_ADD_PLUGIN )
384+ MARIADB_ADD_PLUGIN (${ARGV} )
385+ ENDMACRO ()
342386
387+ # verify that all -DPLUGIN_xxx=YES plugins are being built
388+ MACRO (VERIFY_PLUGINS )
343389 GET_CMAKE_PROPERTY (ALL_VARS VARIABLES )
344390 FOREACH (V ${ALL_VARS} )
345391 IF (V MATCHES "^PLUGIN_" )
0 commit comments