@ -29,11 +29,11 @@ INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/cmake_parse_arguments.cmake)
MACRO ( MYSQL_ADD_PLUGIN )
MYSQL_PARSE_ARGUMENTS ( ARG
" L I N K _ L I B R A R I E S ; D E P E N D E N C I E S ; M O D U L E _ O U T P U T _ N A M E ; S T A T I C _ O U T P U T _ N A M E ; C O M P O N E N T ; C O N F I G "
" L I N K _ L I B R A R I E S ; D E P E N D E N C I E S ; M O D U L E _ O U T P U T _ N A M E ; S T A T I C _ O U T P U T _ N A M E ; C O M P O N E N T ; C O N F I G ; O N L Y _ I F "
" S T O R A G E _ E N G I N E ; S T A T I C _ O N L Y ; M O D U L E _ O N L Y ; M A N D A T O R Y ; D E F A U L T ; D I S A B L E D ; R E C O M P I L E _ F O R _ E M B E D D E D "
$ { A R G N }
)
# A d d c o m m o n i n c l u d e d i r e c t o r i e s
INCLUDE_DIRECTORIES ( ${ CMAKE_SOURCE_DIR } /include
$ { C M A K E _ S O U R C E _ D I R } / s q l
@ -47,45 +47,58 @@ MACRO(MYSQL_ADD_PLUGIN)
STRING ( TOUPPER ${ plugin } plugin )
STRING ( TOLOWER ${ plugin } target )
# F i g u r e o u t w h e t h e r t o b u i l d p l u g i n
IF ( WITH_PLUGIN_ ${ plugin } )
SET ( WITH_ ${ plugin } 1 )
ENDIF ( )
IF ( WITH_MAX_NO_NDB )
SET ( WITH_MAX 1 )
SET ( WITHOUT_NDBCLUSTER 1 )
ENDIF ( )
IF ( ARG_MANDATORY )
UNSET ( PLUGIN_ ${ plugin } CACHE )
SET ( PLUGIN_ ${ plugin } "YES" )
ELSE ( )
SET ( compat "." )
# F i g u r e o u t w h e t h e r t o b u i l d p l u g i n .
# r e c o g n i z e a n d s u p p o r t t h e m a z e o f o l d W I T H / W I T H O U T c o m b i n a t i o n s
IF ( WITHOUT_ ${ plugin } _STORAGE_ENGINE
O R W I T H O U T _ $ { p l u g i n }
O R W I T H O U T _ P L U G I N _ $ { p l u g i n }
O R W I T H _ N O N E )
SET ( compat "${compat}without" )
ENDIF ( )
IF ( WITH_ ${ plugin } _STORAGE_ENGINE
O R W I T H _ $ { p l u g i n }
O R W I T H _ P L U G I N _ $ { p l u g i n }
O R W I T H _ A L L
O R W I T H _ M A X
O R W I T H _ M A X _ N O _ N D B
O R A R G _ D E F A U L T )
SET ( compat "with${compat}" )
ENDIF ( )
IF ( ARG_DEFAULT )
IF ( NOT DEFINED WITH_ ${ plugin } AND
N O T D E F I N E D W I T H _ $ { p l u g i n } _ S T O R A G E _ E N G I N E )
SET ( WITH_ ${ plugin } 1 )
IF ( compat STREQUAL "." )
SET ( howtobuild DYNAMIC )
ELSEIF ( compat STREQUAL "with." )
IF ( NOT ARG_MODULE_ONLY )
SET ( howtobuild STATIC )
ELSE ( )
SET ( howtobuild DYNAMIC )
ENDIF ( )
ELSEIF ( compat STREQUAL ".without" )
SET ( howtobuild NO )
ELSEIF ( compat STREQUAL "with.without" )
SET ( howtobuild STATIC )
ENDIF ( )
# N O - n o t a t a l l
# Y E S - s t a t i c i f p o s s i b l e , o t h e r w i s e d y n a m i c i f p o s s i b l e , o t h e r w i s e a b o r t
# A U T O - s t a t i c i f p o s s i b l e , o t h e r w i s e d y n a m i c , i f p o s s i b l e
# S T A T I C - s t a t i c i f p o s s i b l e , o t h e r w i s e n o t a t a l l
# D Y N A M I C - d y n a m i c i f p o s s i b l e , o t h e r w i s e n o t a t a l l
SET ( PLUGIN_ ${ plugin } ${ howtobuild }
C A C H E S T R I N G " H o w t o b u i l d p l u g i n $ { p l u g i n } . O p t i o n s a r e : N O S T A T I C D Y N A M I C Y E S A U T O . " )
ENDIF ( )
IF ( WITH_ ${ plugin } _STORAGE_ENGINE
O R W I T H _ { $ p l u g i n }
O R W I T H _ A L L
O R W I T H _ M A X
A N D N O T W I T H O U T _ $ { p l u g i n } _ S T O R A G E _ E N G I N E
A N D N O T W I T H O U T _ $ { p l u g i n }
A N D N O T A R G _ M O D U L E _ O N L Y )
SET ( WITH_ ${ plugin } 1 )
ELSEIF ( WITHOUT_ ${ plugin } OR WITHOUT_ ${ plugin } _STORAGE_ENGINE OR
W I T H _ N O N E O R $ { p l u g i n } _ D I S A B L E D )
SET ( WITHOUT_ ${ plugin } 1 )
SET ( WITH_ ${ plugin } _STORAGE_ENGINE 0 )
SET ( WITH_ ${ plugin } 0 )
ENDIF ( )
IF ( ARG_MANDATORY )
SET ( WITH_ ${ plugin } 1 )
IF ( NOT PLUGIN_ ${ plugin } MATCHES "^(NO|YES|AUTO|STATIC|DYNAMIC)$" )
MESSAGE ( FATAL_ERROR "Invalid value for PLUGIN_${plugin}" )
ENDIF ( )
IF ( ARG_STORAGE_ENGINE )
SET ( with_var "WITH_${plugin}_STORAGE_ENGINE" )
ELSE ( )
@ -95,7 +108,6 @@ MACRO(MYSQL_ADD_PLUGIN)
IF ( NOT ARG_DEPENDENCIES )
SET ( ARG_DEPENDENCIES )
ENDIF ( )
SET ( BUILD_PLUGIN 1 )
IF ( NOT ARG_MODULE_OUTPUT_NAME )
IF ( ARG_STORAGE_ENGINE )
@ -105,8 +117,13 @@ MACRO(MYSQL_ADD_PLUGIN)
ENDIF ( )
ENDIF ( )
IF ( ARG_ONLY_IF AND NOT ${ ARG_ONLY_IF } )
SET ( ARG_DISABLED 1 )
ENDIF ( )
# B u i l d e i t h e r s t a t i c l i b r a r y o r m o d u l e
IF ( WITH_ ${ plugin } AND NOT ARG_MODULE_ONLY )
IF ( PLUGIN_ ${ plugin } MATCHES "(STATIC|AUTO|YES)" AND NOT ARG_MODULE_ONLY
A N D N O T A R G _ D I S A B L E D )
IF ( CMAKE_GENERATOR MATCHES "Makefiles|Ninja" )
# I f t h e r e i s a s h a r e d l i b r a r y f r o m p r e v i o u s s h a r e d b u i l d ,
@ -142,17 +159,15 @@ MACRO(MYSQL_ADD_PLUGIN)
O U T P U T _ N A M E $ { A R G _ S T A T I C _ O U T P U T _ N A M E } )
ENDIF ( )
IF ( ARG_LINK_LIBRARIES )
TARGET_LINK_LIBRARIES ( ${ target } ${ ARG_LINK_LIBRARIES } )
ENDIF ( )
# U p d a t e m y s q l d d e p e n d e n c i e s
SET ( MYSQLD_STATIC_PLUGIN_LIBS ${ MYSQLD_STATIC_PLUGIN_LIBS }
$ { t a r g e t } $ { A R G _ L I N K _ L I B R A R I E S } C A C H E I N T E R N A L " " F O R C E )
IF ( ARG_MANDATORY )
SET ( ${ with_var } ON CACHE INTERNAL "Link ${plugin} statically to the server"
F O R C E )
ELSE ( )
SET ( ${ with_var } ON CACHE BOOL "Link ${plugin} statically to the server"
F O R C E )
ENDIF ( )
SET ( ${ with_var } ON CACHE INTERNAL "Link ${plugin} statically to the server" FORCE )
IF ( ARG_MANDATORY )
SET ( mysql_mandatory_plugins
@ -163,14 +178,16 @@ MACRO(MYSQL_ADD_PLUGIN)
" $ { m y s q l _ o p t i o n a l _ p l u g i n s } b u i l t i n _ m a r i a _ $ { t a r g e t } _ p l u g i n , " )
SET ( mysql_optional_plugins ${ mysql_optional_plugins } PARENT_SCOPE )
ENDIF ( )
ELSEIF ( NOT WITHOUT_ ${ plugin } AND NOT ARG_STATIC_ONLY AND NOT WITHOUT_DYNAMIC_PLUGINS )
ELSEIF ( PLUGIN_ ${ plugin } MATCHES "(DYNAMIC|AUTO|YES)"
A N D N O T A R G _ S T A T I C _ O N L Y A N D N O T W I T H O U T _ D Y N A M I C _ P L U G I N S
A N D N O T A R G _ D I S A B L E D )
ADD_VERSION_INFO ( ${ target } MODULE SOURCES )
ADD_LIBRARY ( ${ target } MODULE ${ SOURCES } )
DTRACE_INSTRUMENT ( ${ target } )
SET_TARGET_PROPERTIES ( ${ target } PROPERTIES PREFIX ""
C O M P I L E _ D E F I N I T I O N S " M Y S Q L _ D Y N A M I C _ P L U G I N " )
TARGET_LINK_LIBRARIES ( ${ target } mysqlservices )
TARGET_LINK_LIBRARIES ( ${ target } mysqlservices ${ ARG_LINK_LIBRARIES } )
# P l u g i n u s e s s y m b o l s d e f i n e d i n m y s q l d e x e c u t a b l e .
# S o m e o p e r a t i n g s y s t e m s l i k e W i n d o w s a n d O S X a n d a r e p r e t t y s t r i c t a b o u t
@ -180,15 +197,12 @@ MACRO(MYSQL_ADD_PLUGIN)
# T h u s w e s k i p T A R G E T _ L I N K _ L I B R A R I E S o n L i n u x , a s i t w o u l d o n l y g e n e r a t e
# a n a d d i t i o n a l d e p e n d e n c y .
IF ( NOT CMAKE_SYSTEM_NAME STREQUAL "Linux" )
TARGET_LINK_LIBRARIES ( ${ target } mysqld ${ ARG_LINK_LIBRARIES } )
TARGET_LINK_LIBRARIES ( ${ target } mysqld )
ENDIF ( )
ADD_DEPENDENCIES ( ${ target } GenError ${ ARG_DEPENDENCIES } )
IF ( NOT ARG_MODULE_ONLY )
# s e t c a c h e d v a r i a b l e , e . g w i t h c h e c k b o x i n G U I
SET ( ${ with_var } OFF CACHE BOOL "Link ${plugin} statically to the server"
F O R C E )
ENDIF ( )
UNSET ( ${ with_var } CACHE )
SET_TARGET_PROPERTIES ( ${ target } PROPERTIES
O U T P U T _ N A M E " $ { A R G _ M O D U L E _ O U T P U T _ N A M E } " )
# I n s t a l l d y n a m i c l i b r a r y
@ -213,18 +227,8 @@ MACRO(MYSQL_ADD_PLUGIN)
ENDIF ( )
MYSQL_INSTALL_TARGETS ( ${ target } DESTINATION ${ INSTALL_PLUGINDIR } COMPONENT ${ ARG_COMPONENT } )
# INSTALL_DEBUG_TARGET ( ${ target } DESTINATION ${ INSTALL_PLUGINDIR } /debug COMPONENT ${ ARG_COMPONENT } )
ELSE ( )
IF ( WITHOUT_ ${ plugin } )
# U p d a t e c a c h e v a r i a b l e
STRING ( REPLACE "WITH_" "WITHOUT_" without_var ${ with_var } )
SET ( ${ without_var } ON CACHE BOOL "Don't build ${plugin}"
F O R C E )
ENDIF ( )
SET ( BUILD_PLUGIN 0 )
ENDIF ( )
IF ( BUILD_PLUGIN AND ARG_LINK_LIBRARIES )
TARGET_LINK_LIBRARIES ( ${ target } ${ ARG_LINK_LIBRARIES } )
ELSEIF ( PLUGIN_ ${ plugin } MATCHES "YES" )
MESSAGE ( FATAL_ERROR "Plugin ${plugin} cannot be built" )
ENDIF ( )
GET_FILENAME_COMPONENT ( subpath ${ CMAKE_CURRENT_SOURCE_DIR } NAME )