summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2015-02-12 12:26:37 +0100
committerSergei Golubchik <serg@mariadb.org>2015-02-15 22:14:33 +0100
commitdb227616d2ac4529041f37dbc4b6cd5e0338c4a1 (patch)
treeb65c2a8f49fe57f5bd61264544bb1aeba46bc011
parent985ef1d42a7b71c72aa3b26d96f0876ac597522f (diff)
downloadmariadb-git-db227616d2ac4529041f37dbc4b6cd5e0338c4a1.tar.gz
followup for "MDEV-6248 GUI-friendly cmake options to enable/disable plugins"
Remove ONLY_IF clause in MYSQL_ADD_PLUGIN and the requirement that every plugin's CMakeLists.txt *must* do MYSQL_ADD_PLUGIN for PLUGIN_XXX=YES to work. This was very fragile and cannot be relied on. Use a different implementation of =YES check - iterate all PLUGIN_* variables and see which one doesn't have a matching target. Revert all ONLY_IF changes in CMakeLists.txt files.
-rw-r--r--cmake/plugin.cmake19
-rw-r--r--plugin/auth_pam/CMakeLists.txt12
-rw-r--r--plugin/auth_socket/CMakeLists.txt5
-rw-r--r--plugin/cracklib_password_check/CMakeLists.txt7
-rw-r--r--plugin/example_key_management_plugin/CMakeLists.txt6
-rw-r--r--plugin/file_key_management_plugin/CMakeLists.txt6
-rw-r--r--storage/cassandra/CMakeLists.txt7
-rw-r--r--storage/oqgraph/CMakeLists.txt15
-rw-r--r--storage/tokudb/CMakeLists.txt1
-rw-r--r--storage/xtradb/CMakeLists.txt12
10 files changed, 44 insertions, 46 deletions
diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake
index ccd744cee6b..9d24dacc7e1 100644
--- a/cmake/plugin.cmake
+++ b/cmake/plugin.cmake
@@ -29,7 +29,7 @@ INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/cmake_parse_arguments.cmake)
MACRO(MYSQL_ADD_PLUGIN)
MYSQL_PARSE_ARGUMENTS(ARG
- "LINK_LIBRARIES;DEPENDENCIES;MODULE_OUTPUT_NAME;STATIC_OUTPUT_NAME;COMPONENT;CONFIG;ONLY_IF"
+ "LINK_LIBRARIES;DEPENDENCIES;MODULE_OUTPUT_NAME;STATIC_OUTPUT_NAME;COMPONENT;CONFIG"
"STORAGE_ENGINE;STATIC_ONLY;MODULE_ONLY;MANDATORY;DEFAULT;DISABLED;RECOMPILE_FOR_EMBEDDED"
${ARGN}
)
@@ -118,10 +118,6 @@ MACRO(MYSQL_ADD_PLUGIN)
ENDIF()
ENDIF()
- IF(ARG_ONLY_IF AND NOT ${ARG_ONLY_IF})
- SET(ARG_DISABLED 1)
- ENDIF()
-
# Build either static library or module
IF (PLUGIN_${plugin} MATCHES "(STATIC|AUTO|YES)" AND NOT ARG_MODULE_ONLY
AND NOT ARG_DISABLED)
@@ -229,8 +225,6 @@ 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})
- ELSEIF(PLUGIN_${plugin} MATCHES "YES")
- MESSAGE(FATAL_ERROR "Plugin ${plugin} cannot be built")
ENDIF()
GET_FILENAME_COMPONENT(subpath ${CMAKE_CURRENT_SOURCE_DIR} NAME)
@@ -251,4 +245,15 @@ MACRO(CONFIGURE_PLUGINS)
ADD_SUBDIRECTORY(${dir})
ENDIF()
ENDFOREACH()
+
+ GET_CMAKE_PROPERTY(ALL_VARS VARIABLES)
+ FOREACH (V ${ALL_VARS})
+ IF (V MATCHES "^PLUGIN_" AND ${V} MATCHES "YES")
+ STRING(SUBSTRING ${V} 7 -1 plugin)
+ STRING(TOLOWER ${plugin} target)
+ IF (NOT TARGET ${target})
+ MESSAGE(FATAL_ERROR "Plugin ${plugin} cannot be built")
+ ENDIF()
+ ENDIF()
+ ENDFOREACH()
ENDMACRO()
diff --git a/plugin/auth_pam/CMakeLists.txt b/plugin/auth_pam/CMakeLists.txt
index 055e188c45b..51317527c77 100644
--- a/plugin/auth_pam/CMakeLists.txt
+++ b/plugin/auth_pam/CMakeLists.txt
@@ -4,10 +4,10 @@ INCLUDE (CheckFunctionExists)
CHECK_INCLUDE_FILES (security/pam_appl.h HAVE_PAM_APPL_H)
CHECK_FUNCTION_EXISTS (strndup HAVE_STRNDUP)
-IF(HAVE_STRNDUP)
- ADD_DEFINITIONS(-DHAVE_STRNDUP)
-ENDIF(HAVE_STRNDUP)
-
-MYSQL_ADD_PLUGIN(auth_pam auth_pam.c ONLY_IF HAVE_PAM_APPL_H
- LINK_LIBRARIES pam MODULE_ONLY)
+IF(HAVE_PAM_APPL_H)
+ IF(HAVE_STRNDUP)
+ ADD_DEFINITIONS(-DHAVE_STRNDUP)
+ ENDIF(HAVE_STRNDUP)
+ MYSQL_ADD_PLUGIN(auth_pam auth_pam.c LINK_LIBRARIES pam MODULE_ONLY)
+ENDIF(HAVE_PAM_APPL_H)
diff --git a/plugin/auth_socket/CMakeLists.txt b/plugin/auth_socket/CMakeLists.txt
index 5630cac33ce..547b1b8e3bf 100644
--- a/plugin/auth_socket/CMakeLists.txt
+++ b/plugin/auth_socket/CMakeLists.txt
@@ -64,5 +64,6 @@ ENDIF()
ENDIF()
ENDIF()
-MYSQL_ADD_PLUGIN(auth_socket auth_socket.c ONLY_IF ok MODULE_ONLY)
-
+IF(ok)
+ MYSQL_ADD_PLUGIN(auth_socket auth_socket.c MODULE_ONLY)
+ENDIF()
diff --git a/plugin/cracklib_password_check/CMakeLists.txt b/plugin/cracklib_password_check/CMakeLists.txt
index 21c5b7682c9..a57ad240d64 100644
--- a/plugin/cracklib_password_check/CMakeLists.txt
+++ b/plugin/cracklib_password_check/CMakeLists.txt
@@ -3,9 +3,8 @@ INCLUDE (CheckLibraryExists)
CHECK_INCLUDE_FILES (crack.h HAVE_CRACK_H)
CHECK_LIBRARY_EXISTS(crack FascistCheckUser "" HAVE_LIBCRACK)
+
IF (HAVE_ALLOCA_H AND HAVE_CRACK_H AND HAVE_LIBCRACK AND HAVE_MEMCPY)
- SET(ok 1)
+ MYSQL_ADD_PLUGIN(cracklib_password_check cracklib_password_check.c
+ LINK_LIBRARIES crack MODULE_ONLY)
ENDIF()
-
-MYSQL_ADD_PLUGIN(cracklib_password_check cracklib_password_check.c
- LINK_LIBRARIES crack ONLY_IF ok MODULE_ONLY)
diff --git a/plugin/example_key_management_plugin/CMakeLists.txt b/plugin/example_key_management_plugin/CMakeLists.txt
index dbceb0fed8b..250f77856c0 100644
--- a/plugin/example_key_management_plugin/CMakeLists.txt
+++ b/plugin/example_key_management_plugin/CMakeLists.txt
@@ -1,2 +1,4 @@
-MYSQL_ADD_PLUGIN(EXAMPLE_KEY_MANAGEMENT_PLUGIN example_key_management_plugin.cc
- MODULE_ONLY ONLY_IF HAVE_EncryptAes128Ctr)
+IF(HAVE_EncryptAes128Ctr)
+ MYSQL_ADD_PLUGIN(EXAMPLE_KEY_MANAGEMENT_PLUGIN example_key_management_plugin.cc
+ MODULE_ONLY)
+ENDIF()
diff --git a/plugin/file_key_management_plugin/CMakeLists.txt b/plugin/file_key_management_plugin/CMakeLists.txt
index 91f11aeef45..8a0429e979e 100644
--- a/plugin/file_key_management_plugin/CMakeLists.txt
+++ b/plugin/file_key_management_plugin/CMakeLists.txt
@@ -1,8 +1,6 @@
SET(FILE_KEY_MANAGEMENT_PLUGIN_SOURCES file_key_management_plugin.cc EncKeys.cc KeySingleton.cc)
IF(NOT SSL_SOURCES)
- SET(USING_OPENSSL ON)
+ MYSQL_ADD_PLUGIN(FILE_KEY_MANAGEMENT_PLUGIN ${FILE_KEY_MANAGEMENT_PLUGIN_SOURCES}
+ LINK_LIBRARIES pcre)
ENDIF()
-
-MYSQL_ADD_PLUGIN(FILE_KEY_MANAGEMENT_PLUGIN ${FILE_KEY_MANAGEMENT_PLUGIN_SOURCES}
- LINK_LIBRARIES pcre ONLY_IF USING_OPENSSL)
diff --git a/storage/cassandra/CMakeLists.txt b/storage/cassandra/CMakeLists.txt
index 43b33f712cc..df097c90a47 100644
--- a/storage/cassandra/CMakeLists.txt
+++ b/storage/cassandra/CMakeLists.txt
@@ -51,9 +51,6 @@ LINK_DIRECTORIES(${LINK_DIR})
IF(CASSANDRASE_OK)
SET(CASSANDRA_DEB_FILES "usr/lib/mysql/plugin/ha_cassandra.so" PARENT_SCOPE)
+ MYSQL_ADD_PLUGIN(cassandra ${cassandra_sources} STORAGE_ENGINE
+ MODULE_ONLY LINK_LIBRARIES thrift COMPONENT cassandra-engine)
ENDIF(CASSANDRASE_OK)
-
-MYSQL_ADD_PLUGIN(cassandra ${cassandra_sources} STORAGE_ENGINE
- ONLY_IF CASSANDRASE_OK
- MODULE_ONLY LINK_LIBRARIES thrift COMPONENT cassandra-engine)
-
diff --git a/storage/oqgraph/CMakeLists.txt b/storage/oqgraph/CMakeLists.txt
index 266ec31234e..2c09a27a581 100644
--- a/storage/oqgraph/CMakeLists.txt
+++ b/storage/oqgraph/CMakeLists.txt
@@ -50,17 +50,16 @@ IF(BOOST_OK)
ADD_DEFINITIONS(-DBOOST_NO_RTTI=1 -DBOOST_NO_TYPEID=1 -DBOOST_DISABLE_ASSERTS=1)
MESSAGE(STATUS "OQGraph OK")
+ MYSQL_ADD_PLUGIN(oqgraph ha_oqgraph.cc graphcore.cc graphcore-graph.cc
+ oqgraph_shim.cc oqgraph_thunk.cc oqgraph_judy.cc
+ STORAGE_ENGINE
+ MODULE_ONLY
+ RECOMPILE_FOR_EMBEDDED
+ COMPONENT oqgraph-engine
+ LINK_LIBRARIES ${Judy_LIBRARIES})
ELSE(BOOST_OK)
MESSAGE(STATUS "Requisites for OQGraph not met. OQGraph will not be compiled")
ENDIF(BOOST_OK)
ENDFUNCTION()
CHECK_OQGRAPH()
-MYSQL_ADD_PLUGIN(oqgraph ha_oqgraph.cc graphcore.cc graphcore-graph.cc
- oqgraph_shim.cc oqgraph_thunk.cc oqgraph_judy.cc
- STORAGE_ENGINE
- ONLY_IF BOOST_OK
- MODULE_ONLY
- RECOMPILE_FOR_EMBEDDED
- COMPONENT oqgraph-engine
- LINK_LIBRARIES ${Judy_LIBRARIES})
diff --git a/storage/tokudb/CMakeLists.txt b/storage/tokudb/CMakeLists.txt
index b703278f3eb..24d4ffc12de 100644
--- a/storage/tokudb/CMakeLists.txt
+++ b/storage/tokudb/CMakeLists.txt
@@ -10,7 +10,6 @@ int main() { return 0; }
ENDIF()
IF(NOT TOKUDB_OK OR PLUGIN_TOKUDB STREQUAL "NO")
- MYSQL_ADD_PLUGIN(tokudb DISABLED)
RETURN()
ENDIF()
diff --git a/storage/xtradb/CMakeLists.txt b/storage/xtradb/CMakeLists.txt
index f32bf5db360..4ba7a73e527 100644
--- a/storage/xtradb/CMakeLists.txt
+++ b/storage/xtradb/CMakeLists.txt
@@ -458,12 +458,10 @@ SET(INNOBASE_SOURCES
ut/ut0wqueue.cc
ut/ut0timer.cc)
-IF(NOT XTRADB_OK)
+IF(XTRADB_OK)
+ MYSQL_ADD_PLUGIN(xtradb ${INNOBASE_SOURCES} STORAGE_ENGINE
+ DEFAULT RECOMPILE_FOR_EMBEDDED
+ LINK_LIBRARIES ${ZLIB_LIBRARY} ${LINKER_SCRIPT})
+ELSE()
MESSAGE(FATAL_ERROR "Percona XtraDB is not supported on this platform")
ENDIF()
-
-MYSQL_ADD_PLUGIN(xtradb ${INNOBASE_SOURCES} STORAGE_ENGINE
- DEFAULT ONLY_IF XTRADB_OK
- RECOMPILE_FOR_EMBEDDED
- LINK_LIBRARIES ${ZLIB_LIBRARY} ${LINKER_SCRIPT})
-