diff options
Diffstat (limited to 'support-files/CMakeLists.txt')
-rw-r--r-- | support-files/CMakeLists.txt | 253 |
1 files changed, 253 insertions, 0 deletions
diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt new file mode 100644 index 00000000..44ad8d0a --- /dev/null +++ b/support-files/CMakeLists.txt @@ -0,0 +1,253 @@ +# Copyright (c) 2006, 2016, Oracle and/or its affiliates. +# Copyright (c) 2012, 2022, MariaDB +# +# 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 + +IF(WIN32) + SET(localstatedir "C:\\\\mysql\\\\data\\\\") + SET(ini_file_extension "ini") +ELSE() + SET(localstatedir "${MYSQL_DATADIR}") + SET(prefix "${CMAKE_INSTALL_PREFIX}") + SET(libexecdir ${INSTALL_SBINDIRABS}) + SET(bindir ${INSTALL_BINDIRABS}) + SET(sbindir "${libexecdir}") + SET(datadir "${MYSQL_DATADIR}") + SET(CC ${CMAKE_C_COMPILER}) + SET(CXX ${CMAKE_CXX_COMPILER}) + SET(CFLAGS ${CMAKE_C_FLAGS}) + SET(CXXFLAGS ${CMAKE_CXX_FLAGS}) + SET(MYSQLD_USER "mysql") + SET(MYSQLD_GROUP "mysql") + SET(ini_file_extension "cnf") + SET(HOSTNAME "uname -n") + + # Define directly here, as cmake/install_layout.cmake has no LOGDIR to be inherited + SET(su_user "su mysql mysql") + IF(RPM MATCHES "(suse|sles)") + SET(logdir "/var/log/mysql") + ELSEIF(RPM) + SET(logdir "/var/log/mariadb") + ELSE() + SET(logdir "/var/log/mysql") + ENDIF() + IF(DEB) + SET(su_user "#su mysql mysql") + ENDIF() +ENDIF() + +# XXX: shouldn't we just have variables for all this stuff and centralise +# XXX: their configuration in install_layout.cmake? +IF(WIN32) + SET(inst_location ${INSTALL_DOCREADMEDIR}) +ELSE() + SET(inst_location ${INSTALL_SUPPORTFILESDIR}) +ENDIF() + +IF(WITH_WSREP AND NOT WITHOUT_SERVER) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/wsrep.cnf.sh + ${CMAKE_CURRENT_BINARY_DIR}/wsrep.${ini_file_extension} @ONLY) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/wsrep.${ini_file_extension} + DESTINATION ${inst_location} COMPONENT IniFiles) +ENDIF() + +IF(UNIX AND NOT WITHOUT_SERVER) + SET(prefix ${CMAKE_INSTALL_PREFIX}) + SET(SCRIPTS mysqld_multi.server mariadb.logrotate binary-configure mini-benchmark) + IF(WITH_WSREP) + SET(SCRIPTS ${SCRIPTS} wsrep_notify) + ENDIF() + FOREACH(script ${SCRIPTS}) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${script}.sh + ${CMAKE_CURRENT_BINARY_DIR}/${script} @ONLY ) + INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${script} + DESTINATION ${inst_location} COMPONENT Server_Scripts) + ENDFOREACH() + + IF(INSTALL_SUPPORTFILESDIR) + INSTALL(FILES magic DESTINATION ${inst_location} COMPONENT SupportFiles) + INSTALL(DIRECTORY policy DESTINATION ${inst_location} COMPONENT SupportFiles) + FIND_PROGRAM(CHECKMODULE checkmodule) + FIND_PROGRAM(SEMODULE_PACKAGE semodule_package) + MARK_AS_ADVANCED(CHECKMODULE SEMODULE_PACKAGE) + + # Build pp files in policy/selinux + IF(CHECKMODULE AND SEMODULE_PACKAGE) + FOREACH(pol mariadb) + SET(src ${CMAKE_CURRENT_SOURCE_DIR}/policy/selinux/${pol}.te) + SET(tmp ${CMAKE_CURRENT_BINARY_DIR}/${pol}.mod) + SET(out ${CMAKE_CURRENT_BINARY_DIR}/${pol}.pp) + ADD_CUSTOM_COMMAND(OUTPUT ${out} + COMMAND ${CHECKMODULE} -M -m ${src} -o ${tmp} + COMMAND ${SEMODULE_PACKAGE} -m ${tmp} -o ${out} + COMMAND ${CMAKE_COMMAND} -E remove ${tmp} + DEPENDS ${src}) + ADD_CUSTOM_TARGET(${pol}-pp ALL DEPENDS ${out}) + INSTALL(FILES ${out} DESTINATION ${inst_location}/policy/selinux COMPONENT SupportFiles) + ENDFOREACH() + IF(RPM) + EXECUTE_PROCESS(COMMAND rpm -q --qf "%{VERSION}" libsepol."${CMAKE_SYSTEM_PROCESSOR}" + OUTPUT_VARIABLE LIBSEPOL_VERSION RESULT_VARIABLE err) + IF (NOT err) + SET(CPACK_RPM_server_PACKAGE_REQUIRES + "${CPACK_RPM_server_PACKAGE_REQUIRES} libsepol >= ${LIBSEPOL_VERSION}" + PARENT_SCOPE) + ENDIF() + ENDIF() + ENDIF() + ENDIF() + + CONFIGURE_FILE(mariadb.pc.in ${CMAKE_CURRENT_BINARY_DIR}/mariadb.pc @ONLY) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mariadb.pc DESTINATION ${INSTALL_LIBDIR}/pkgconfig COMPONENT Development) + + INSTALL(FILES mysql.m4 DESTINATION ${INSTALL_SHAREDIR}/aclocal COMPONENT Development) + + SET(bindir ${INSTALL_BINDIRABS}) + SET(sbindir ${INSTALL_SBINDIRABS}) + SET(scriptdir ${INSTALL_SCRIPTDIRABS}) + SET(libexecdir ${INSTALL_SBINDIRABS}) + SET(pkgdatadir ${INSTALL_MYSQLSHAREDIRABS}) + IF(INSTALL_SYSCONFDIR) + SET(sysconfdir ${INSTALL_SYSCONFDIR}) + ELSEIF(DEFAULT_SYSCONFDIR) + SET(sysconfdir ${DEFAULT_SYSCONFDIR}) + ELSE() + SET(sysconfdir "/etc") + ENDIF() + IF(INSTALL_SYSCONF2DIR) + SET(sysconf2dir ${INSTALL_SYSCONF2DIR}) + ELSE() + SET(sysconf2dir "${sysconfdir}/mysql") + ENDIF() + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql.server.sh + ${CMAKE_CURRENT_BINARY_DIR}/mysql.server @ONLY) + INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/mysql.server + DESTINATION ${inst_location} COMPONENT SupportFiles) + + IF(HAVE_SYSTEMD) + CONFIGURE_FILE(mariadb.service.in + ${CMAKE_CURRENT_BINARY_DIR}/mariadb.service @ONLY) + CONFIGURE_FILE(mariadb.socket.in + ${CMAKE_CURRENT_BINARY_DIR}/mariadb.socket @ONLY) + CONFIGURE_FILE(mariadb-extra.socket.in + ${CMAKE_CURRENT_BINARY_DIR}/mariadb-extra.socket @ONLY) + EXECUTE_PROCESS( + COMMAND ${CMAKE_COMMAND} -E create_symlink ./mariadb.service mysql.service + COMMAND ${CMAKE_COMMAND} -E create_symlink ./mariadb.service mysqld.service + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + + IF(WITH_WSREP) + INSTALL(FILES use_galera_new_cluster.conf + DESTINATION ${inst_location}/systemd COMPONENT SupportFiles) + ENDIF() + INSTALL(FILES + ${CMAKE_CURRENT_BINARY_DIR}/mariadb.service + ${CMAKE_CURRENT_BINARY_DIR}/mysql.service + ${CMAKE_CURRENT_BINARY_DIR}/mysqld.service + DESTINATION ${inst_location}/systemd COMPONENT SupportFiles) + + # @ in directory name broken between CMake version 2.8.12.2 and 3.3 + # http://public.kitware.com/Bug/view.php?id=14782 + IF(NOT CMAKE_VERSION VERSION_LESS 3.3.0 OR NOT RPM) + CONFIGURE_FILE(mariadb@.service.in + ${CMAKE_CURRENT_BINARY_DIR}/mariadb@.service @ONLY) + CONFIGURE_FILE(mariadb@.socket.in + ${CMAKE_CURRENT_BINARY_DIR}/mariadb@.socket @ONLY) + CONFIGURE_FILE(mariadb-extra@.socket.in + ${CMAKE_CURRENT_BINARY_DIR}/mariadb-extra@.socket @ONLY) + INSTALL(FILES + ${CMAKE_CURRENT_BINARY_DIR}/mariadb@.service + ${CMAKE_CURRENT_BINARY_DIR}/mariadb@.socket + ${CMAKE_CURRENT_BINARY_DIR}/mariadb-extra@.socket + ${CMAKE_CURRENT_BINARY_DIR}/mysql.service + ${CMAKE_CURRENT_BINARY_DIR}/mysqld.service + DESTINATION ${inst_location}/systemd COMPONENT SupportFiles) + ENDIF() + + IF(INSTALL_SYSTEMD_UNITDIR) + INSTALL(FILES + ${CMAKE_CURRENT_BINARY_DIR}/mariadb.service + ${CMAKE_CURRENT_BINARY_DIR}/mariadb.socket + ${CMAKE_CURRENT_BINARY_DIR}/mariadb-extra.socket + ${CMAKE_CURRENT_BINARY_DIR}/mysql.service + ${CMAKE_CURRENT_BINARY_DIR}/mysqld.service + DESTINATION ${INSTALL_SYSTEMD_UNITDIR} COMPONENT Server) + + # http://public.kitware.com/Bug/view.php?id=14782 + IF(NOT CMAKE_VERSION VERSION_LESS 3.3.0 OR NOT RPM) + INSTALL(FILES use_galera_new_cluster.conf + DESTINATION + "${INSTALL_SYSTEMD_UNITDIR}/mariadb@bootstrap.service.d" + COMPONENT Server) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mariadb@.service + ${CMAKE_CURRENT_BINARY_DIR}/mariadb@.socket + ${CMAKE_CURRENT_BINARY_DIR}/mariadb-extra@.socket + DESTINATION ${INSTALL_SYSTEMD_UNITDIR} COMPONENT Server) + ENDIF() + + ENDIF() + ENDIF() + + # Allow installing sysusers and tmpusers without requiring SYSTEMD on the + # system. This is useful for distributions running other init systems to + # parse these files and create appropriate users & tmpfiles. + IF((HAVE_SYSTEMD OR INSTALL_SYSTEMD_SYSUSERS) AND INSTALL_SYSTEMD_SYSUSERSDIR) + CONFIGURE_FILE(sysusers.conf.in + ${CMAKE_CURRENT_BINARY_DIR}/sysusers.conf @ONLY) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/sysusers.conf + DESTINATION ${INSTALL_SYSTEMD_SYSUSERSDIR} + RENAME mariadb.conf COMPONENT Server) + ENDIF() + + IF((HAVE_SYSTEMD OR INSTALL_SYSTEMD_TMPUSERS) AND INSTALL_SYSTEMD_TMPFILESDIR) + get_filename_component(MYSQL_UNIX_DIR ${MYSQL_UNIX_ADDR} DIRECTORY) + CONFIGURE_FILE(tmpfiles.conf.in + ${CMAKE_CURRENT_BINARY_DIR}/tmpfiles.conf @ONLY) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tmpfiles.conf + DESTINATION ${INSTALL_SYSTEMD_TMPFILESDIR} + RENAME mariadb.conf COMPONENT Server) + ENDIF() + + IF (INSTALL_SYSCONFDIR) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mariadb.logrotate + DESTINATION ${INSTALL_SYSCONFDIR}/logrotate.d + RENAME mariadb COMPONENT SupportFiles) + IF(NOT HAVE_SYSTEMD) + INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/mysql.server + DESTINATION ${INSTALL_SYSCONFDIR}/init.d + RENAME mysql COMPONENT SupportFiles) + ENDIF() + + INSTALL(FILES rpm/my.cnf DESTINATION ${INSTALL_SYSCONFDIR} + COMPONENT Common) + + IF (INSTALL_SYSCONF2DIR) + INSTALL(FILES rpm/client.cnf DESTINATION ${INSTALL_SYSCONF2DIR} + COMPONENT SharedLibraries) + INSTALL(FILES rpm/mysql-clients.cnf DESTINATION ${INSTALL_SYSCONF2DIR} + COMPONENT Client) + INSTALL(FILES rpm/server.cnf DESTINATION ${INSTALL_SYSCONF2DIR} + COMPONENT IniFiles) + INSTALL(FILES rpm/enable_encryption.preset DESTINATION ${INSTALL_SYSCONF2DIR} + COMPONENT IniFiles) + ENDIF() + + # This is for SuSE: + INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink + ${INSTALL_SYSCONFDIR}/init.d/mysql + ${INSTALL_SBINDIR}/rcmysql + WORKING_DIRECTORY \$ENV{DESTDIR}${prefix})" + COMPONENT SupportFiles) + ENDIF(INSTALL_SYSCONFDIR) +ENDIF() |