diff options
author | Sergei Golubchik <serg@mariadb.org> | 2015-02-12 12:26:37 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2015-02-15 22:14:33 +0100 |
commit | db227616d2ac4529041f37dbc4b6cd5e0338c4a1 (patch) | |
tree | b65c2a8f49fe57f5bd61264544bb1aeba46bc011 | |
parent | 985ef1d42a7b71c72aa3b26d96f0876ac597522f (diff) | |
download | mariadb-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.cmake | 19 | ||||
-rw-r--r-- | plugin/auth_pam/CMakeLists.txt | 12 | ||||
-rw-r--r-- | plugin/auth_socket/CMakeLists.txt | 5 | ||||
-rw-r--r-- | plugin/cracklib_password_check/CMakeLists.txt | 7 | ||||
-rw-r--r-- | plugin/example_key_management_plugin/CMakeLists.txt | 6 | ||||
-rw-r--r-- | plugin/file_key_management_plugin/CMakeLists.txt | 6 | ||||
-rw-r--r-- | storage/cassandra/CMakeLists.txt | 7 | ||||
-rw-r--r-- | storage/oqgraph/CMakeLists.txt | 15 | ||||
-rw-r--r-- | storage/tokudb/CMakeLists.txt | 1 | ||||
-rw-r--r-- | storage/xtradb/CMakeLists.txt | 12 |
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}) - |