diff options
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/install_macros.cmake | 39 | ||||
-rw-r--r-- | cmake/mysql_add_executable.cmake | 39 | ||||
-rw-r--r-- | cmake/symlinks.cmake | 104 |
3 files changed, 93 insertions, 89 deletions
diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 2318e9d5dea..ac2e952c768 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -1,5 +1,5 @@ # Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. -# +# # 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. @@ -11,7 +11,7 @@ # # 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 +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA INCLUDE(CMakeParseArguments) @@ -23,7 +23,7 @@ FUNCTION (INSTALL_DEBUG_SYMBOLS) "" ${ARGN} ) - + IF(NOT ARG_COMPONENT) SET(ARG_COMPONENT DebugBinaries) ENDIF() @@ -51,7 +51,7 @@ FUNCTION (INSTALL_DEBUG_SYMBOLS) ENDFUNCTION() # Installs manpage for given file (either script or executable) -# +# FUNCTION(INSTALL_MANPAGE file) IF(NOT UNIX) RETURN() @@ -64,7 +64,7 @@ FUNCTION(INSTALL_MANPAGE file) ${CMAKE_BINARY_DIR}/man/*${file}man.8* ) IF(MYSQL_DOC_DIR) - SET(GLOB_EXPR + SET(GLOB_EXPR ${MYSQL_DOC_DIR}/man/*${file}man.1* ${MYSQL_DOC_DIR}/man/*${file}man.8* ${MYSQL_DOC_DIR}/man/*${file}.1* @@ -72,7 +72,7 @@ FUNCTION(INSTALL_MANPAGE file) ${GLOB_EXPR} ) ENDIF() - + FILE(GLOB_RECURSE MANPAGES ${GLOB_EXPR}) IF(MANPAGES) @@ -96,7 +96,7 @@ FUNCTION(INSTALL_SCRIPT) "" ${ARGN} ) - + SET(script ${ARG_UNPARSED_ARGUMENTS}) IF(NOT ARG_DESTINATION) SET(ARG_DESTINATION ${INSTALL_BINDIR}) @@ -109,8 +109,6 @@ FUNCTION(INSTALL_SCRIPT) INSTALL(PROGRAMS ${script} DESTINATION ${ARG_DESTINATION} COMPONENT ${COMP}) get_filename_component(dest "${script}" NAME) - CREATE_MARIADB_SYMLINK(${dest} ${ARG_DESTINATION} ${COMP}) - INSTALL_MANPAGE(${dest}) ENDFUNCTION() @@ -148,7 +146,7 @@ FUNCTION(INSTALL_DOCUMENTATION) ENDFUNCTION() -# Install symbolic link to CMake target. +# Install symbolic link to CMake target. # the link is created in the current build directory # and extension will be the same as for target file. MACRO(INSTALL_SYMLINK linkname target destination component) @@ -157,19 +155,19 @@ IF(UNIX) ADD_CUSTOM_COMMAND( OUTPUT ${output} COMMAND ${CMAKE_COMMAND} ARGS -E remove -f ${linkname} - COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink + COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink $<TARGET_FILE_NAME:${target}> ${linkname} DEPENDS ${target} ) - + ADD_CUSTOM_TARGET(symlink_${linkname} ALL DEPENDS ${output}) SET_TARGET_PROPERTIES(symlink_${linkname} PROPERTIES CLEAN_DIRECT_OUTPUT 1) IF(CMAKE_GENERATOR MATCHES "Xcode") # For Xcode, replace project config with install config - STRING(REPLACE "${CMAKE_CFG_INTDIR}" + STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" output ${output}) ENDIF() INSTALL(FILES ${output} DESTINATION ${destination} COMPONENT ${component}) @@ -180,16 +178,16 @@ IF(WIN32) OPTION(SIGNCODE "Sign executables and dlls with digital certificate" OFF) MARK_AS_ADVANCED(SIGNCODE) IF(SIGNCODE) - SET(SIGNTOOL_PARAMETERS + SET(SIGNTOOL_PARAMETERS /a /t http://timestamp.verisign.com/scripts/timstamp.dll CACHE STRING "parameters for signtool (list)") - FIND_PROGRAM(SIGNTOOL_EXECUTABLE signtool + FIND_PROGRAM(SIGNTOOL_EXECUTABLE signtool PATHS "$ENV{ProgramFiles}/Microsoft SDKs/Windows/v7.0A/bin" "$ENV{ProgramFiles}/Windows Kits/8.0/bin/x86" "$ENV{ProgramFiles}/Windows Kits/8.1/bin/x86" ) IF(NOT SIGNTOOL_EXECUTABLE) - MESSAGE(FATAL_ERROR + MESSAGE(FATAL_ERROR "signtool is not found. Signing executables not possible") ENDIF() MARK_AS_ADVANCED(SIGNTOOL_EXECUTABLE SIGNTOOL_PARAMETERS) @@ -207,7 +205,7 @@ FUNCTION(SIGN_TARGET target) ENDIF() # Mark executable for signing by creating empty *.signme file # The actual signing happens in preinstall step - # (which traverses + # (which traverses ADD_CUSTOM_COMMAND(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E touch "$<TARGET_FILE:${target}>.signme" ) @@ -229,7 +227,7 @@ FUNCTION(MYSQL_INSTALL_TARGETS) ELSE() MESSAGE(FATAL_ERROR "COMPONENT argument required") ENDIF() - + SET(TARGETS ${ARG_UNPARSED_ARGUMENTS}) IF(NOT TARGETS) MESSAGE(FATAL_ERROR "Need target list for MYSQL_INSTALL_TARGETS") @@ -254,13 +252,12 @@ FUNCTION(MYSQL_INSTALL_TARGETS) ENDFUNCTION() -# Optionally install mysqld/client/embedded from debug build run. outside of the current build dir -# (unless multi-config generator is used like Visual Studio or Xcode). +# Optionally install mysqld/client/embedded from debug build run. outside of the current build dir +# (unless multi-config generator is used like Visual Studio or Xcode). # For Makefile generators we default Debug build directory to ${buildroot}/../debug. GET_FILENAME_COMPONENT(BINARY_PARENTDIR ${CMAKE_BINARY_DIR} PATH) SET(DEBUGBUILDDIR "${BINARY_PARENTDIR}/debug" CACHE INTERNAL "Directory of debug build") - FUNCTION(INSTALL_MYSQL_TEST from to) IF(INSTALL_MYSQLTESTDIR) INSTALL( diff --git a/cmake/mysql_add_executable.cmake b/cmake/mysql_add_executable.cmake index eec370d51af..426bdaf1896 100644 --- a/cmake/mysql_add_executable.cmake +++ b/cmake/mysql_add_executable.cmake @@ -1,5 +1,5 @@ # Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. -# +# # 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. @@ -36,7 +36,7 @@ FUNCTION (MYSQL_ADD_EXECUTABLE) ) LIST(GET ARG_UNPARSED_ARGUMENTS 0 target) LIST(REMOVE_AT ARG_UNPARSED_ARGUMENTS 0) - + SET(sources ${ARG_UNPARSED_ARGUMENTS}) ADD_VERSION_INFO(${target} EXECUTABLE sources) @@ -62,6 +62,7 @@ FUNCTION (MYSQL_ADD_EXECUTABLE) ELSE() UNSET(EXCLUDE_FROM_ALL) ENDIF() + ADD_EXECUTABLE(${target} ${WIN32} ${MACOSX_BUNDLE} ${EXCLUDE_FROM_ALL} ${sources}) # tell CPack where to install @@ -79,16 +80,44 @@ FUNCTION (MYSQL_ADD_EXECUTABLE) IF (COMP MATCHES ${SKIP_COMPONENTS}) RETURN() ENDIF() - IF (WITH_STRIPPED_CLIENT AND NOT target STREQUAL mysqld) + + IF (WITH_STRIPPED_CLIENT AND NOT target STREQUAL mariadbd) INSTALL(CODE "SET(CMAKE_INSTALL_DO_STRIP 1)" COMPONENT ${COMP}) SET(reset_strip ON) ENDIF() + MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} COMPONENT ${COMP}) + IF (reset_strip) INSTALL(CODE "SET(CMAKE_INSTALL_DO_STRIP 0)" COMPONENT ${COMP}) ENDIF() ENDIF() - # create mariadb named symlink - CREATE_MARIADB_SYMLINK(${target} ${ARG_DESTINATION} ${COMP}) + # create MySQL named "legacy links" + GET_SYMLINK(${target} link) + IF(link) + IF(UNIX) + ADD_CUSTOM_COMMAND(TARGET ${target} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink + ${target} ${link} + COMMENT "Creating ${link} link" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}) + INSTALL(PROGRAMS + ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${link} + DESTINATION + ${ARG_DESTINATION} + COMPONENT ${COMP}) + ELSE() + # Windows note: + # Here, hardlinks are used, because cmake can't install symlinks. + # In packages, there are won't be links, just copies. + SET(link ${link}.exe) + ADD_CUSTOM_COMMAND(TARGET ${target} POST_BUILD + COMMAND cmake -E remove -f ${link} + COMMAND mklink /H ${link} $<TARGET_FILE_NAME:${target}> + COMMENT "Creating ${link} link" + WORKING_DIRECTORY $<TARGET_FILE_DIR:${target}>) + INSTALL(PROGRAMS $<TARGET_FILE_DIR:${target}>/${link} DESTINATION ${ARG_DESTINATION} COMPONENT ${COMP}) + ENDIF() + ENDIF() ENDFUNCTION() diff --git a/cmake/symlinks.cmake b/cmake/symlinks.cmake index ec638bc82de..e040ff19f77 100644 --- a/cmake/symlinks.cmake +++ b/cmake/symlinks.cmake @@ -9,68 +9,46 @@ macro(REGISTER_SYMLINK from to) endmacro() # MariaDB names for executables -REGISTER_SYMLINK("mysql" "mariadb") -REGISTER_SYMLINK("mysqlaccess" "mariadb-access") -REGISTER_SYMLINK("mysqladmin" "mariadb-admin") -REGISTER_SYMLINK("mariabackup" "mariadb-backup") -REGISTER_SYMLINK("mysqlbinlog" "mariadb-binlog") -REGISTER_SYMLINK("mysqlcheck" "mariadb-check") -REGISTER_SYMLINK("mysql_client_test_embedded" "mariadb-client-test-embedded") -REGISTER_SYMLINK("mysql_client_test" "mariadb-client-test") -REGISTER_SYMLINK("mariadb_config" "mariadb-config") -REGISTER_SYMLINK("mysql_convert_table_format" "mariadb-convert-table-format") -REGISTER_SYMLINK("mysqldump" "mariadb-dump") -REGISTER_SYMLINK("mysqldumpslow" "mariadb-dumpslow") -REGISTER_SYMLINK("mysql_embedded" "mariadb-embedded") -REGISTER_SYMLINK("mysql_find_rows" "mariadb-find-rows") -REGISTER_SYMLINK("mysql_fix_extensions" "mariadb-fix-extensions") -REGISTER_SYMLINK("mysqlhotcopy" "mariadb-hotcopy") -REGISTER_SYMLINK("mysqlimport" "mariadb-import") -REGISTER_SYMLINK("mysql_install_db" "mariadb-install-db") -REGISTER_SYMLINK("mysql_ldb" "mariadb-ldb") -REGISTER_SYMLINK("mysql_plugin" "mariadb-plugin") -REGISTER_SYMLINK("mysql_secure_installation" "mariadb-secure-installation") -REGISTER_SYMLINK("mysql_setpermission" "mariadb-setpermission") -REGISTER_SYMLINK("mysqlshow" "mariadb-show") -REGISTER_SYMLINK("mysqlslap" "mariadb-slap") -REGISTER_SYMLINK("mysqltest" "mariadb-test") -REGISTER_SYMLINK("mysqltest_embedded" "mariadb-test-embedded") -REGISTER_SYMLINK("mysql_tzinfo_to_sql" "mariadb-tzinfo-to-sql") -REGISTER_SYMLINK("mysql_upgrade" "mariadb-upgrade") -REGISTER_SYMLINK("mysql_upgrade_service" "mariadb-upgrade-service") -REGISTER_SYMLINK("mysql_upgrade_wizard" "mariadb-upgrade-wizard") -REGISTER_SYMLINK("mysql_waitpid" "mariadb-waitpid") -REGISTER_SYMLINK("mysqld" "mariadbd") -REGISTER_SYMLINK("mysqld_multi" "mariadbd-multi") -REGISTER_SYMLINK("mysqld_safe" "mariadbd-safe") -REGISTER_SYMLINK("mysqld_safe_helper" "mariadbd-safe-helper") - -# Add MariaDB symlinks -macro(CREATE_MARIADB_SYMLINK src dir comp) - # Find the MariaDB name for executable - list(FIND MARIADB_SYMLINK_FROMS ${src} _index) - +REGISTER_SYMLINK("mariadb" "mysql") +REGISTER_SYMLINK("mariadb-access" "mysqlaccess") +REGISTER_SYMLINK("mariadb-admin" "mysqladmin") +REGISTER_SYMLINK("mariadb-backup" "mariabackup") +REGISTER_SYMLINK("mariadb-binlog" "mysqlbinlog") +REGISTER_SYMLINK("mariadb-check" "mysqlcheck") +REGISTER_SYMLINK("mariadb-client-test-embedded" "mysql_client_test_embedded") +REGISTER_SYMLINK("mariadb-client-test" "mysql_client_test") +REGISTER_SYMLINK("mariadb-config" "mariadb_config") +REGISTER_SYMLINK("mariadb-convert-table-format" "mysql_convert_table_format") +REGISTER_SYMLINK("mariadb-dump" "mysqldump") +REGISTER_SYMLINK("mariadb-dumpslow" "mysqldumpslow") +REGISTER_SYMLINK("mariadb-embedded" "mysql_embedded") +REGISTER_SYMLINK("mariadb-find-rows" "mysql_find_rows") +REGISTER_SYMLINK("mariadb-fix-extensions" "mysql_fix_extensions") +REGISTER_SYMLINK("mariadb-hotcopy" "mysqlhotcopy") +REGISTER_SYMLINK("mariadb-import" "mysqlimport") +REGISTER_SYMLINK("mariadb-install-db" "mysql_install_db") +REGISTER_SYMLINK("mariadb-ldb" "mysql_ldb") +REGISTER_SYMLINK("mariadb-plugin" "mysql_plugin") +REGISTER_SYMLINK("mariadb-secure-installation" "mysql_secure_installation") +REGISTER_SYMLINK("mariadb-setpermission" "mysql_setpermission") +REGISTER_SYMLINK("mariadb-show" "mysqlshow") +REGISTER_SYMLINK("mariadb-slap" "mysqlslap") +REGISTER_SYMLINK("mariadb-test" "mysqltest") +REGISTER_SYMLINK("mariadb-test-embedded" "mysqltest_embedded") +REGISTER_SYMLINK("mariadb-tzinfo-to-sql" "mysql_tzinfo_to_sql") +REGISTER_SYMLINK("mariadb-upgrade" "mysql_upgrade") +REGISTER_SYMLINK("mariadb-upgrade-service" "mysql_upgrade_service") +REGISTER_SYMLINK("mariadb-upgrade-wizard" "mysql_upgrade_wizard") +REGISTER_SYMLINK("mariadb-waitpid" "mysql_waitpid") +REGISTER_SYMLINK("mariadbd" "mysqld") +REGISTER_SYMLINK("mariadbd-multi" "mysqld_multi") +REGISTER_SYMLINK("mariadbd-safe" "mysqld_safe") +REGISTER_SYMLINK("mariadbd-safe-helper" "mysqld_safe_helper") + +MACRO(GET_SYMLINK name out) + set(${out}) + list(FIND MARIADB_SYMLINK_FROMS ${name} _index) if (${_index} GREATER -1) - list(GET MARIADB_SYMLINK_TOS ${_index} mariadbname) - endif() - - if (mariadbname) - CREATE_MARIADB_SYMLINK_IN_DIR(${src} ${mariadbname} ${dir} ${comp}) - endif() -endmacro(CREATE_MARIADB_SYMLINK) - -# Add MariaDB symlinks in directory -macro(CREATE_MARIADB_SYMLINK_IN_DIR src dest dir comp) - if(UNIX) - add_custom_target( - SYM_${dest} ALL - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${dest} - ) - - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${dest} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E create_symlink ${src} ${dest} - COMMENT "mklink ${src} -> ${dest}") - - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${dest} DESTINATION ${dir} COMPONENT ${comp}) + list(GET MARIADB_SYMLINK_TOS ${_index} ${out}) endif() -endmacro(CREATE_MARIADB_SYMLINK_IN_DIR) +ENDMACRO() |