summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/install_macros.cmake39
-rw-r--r--cmake/mysql_add_executable.cmake39
-rw-r--r--cmake/symlinks.cmake104
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()