From 740c7cf4fa29ccfce60f6c30dc8a14bd302cfed2 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Sat, 20 Feb 2010 20:40:03 +0100 Subject: Install static client and embedded debug libraries --- cmake/install_macros.cmake | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'cmake/install_macros.cmake') diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 8a201cbb026..1dcf8b5ca21 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -161,3 +161,53 @@ FUNCTION(MYSQL_INSTALL_TARGETS) SET(INSTALL_LOCATION) 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). +# 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_DEBUG_TARGET target) + CMAKE_PARSE_ARGUMENTS(ARG + "DESTINATION;RENAME" + "" + ${ARGN} + ) + GET_TARGET_PROPERTY(target_type ${target} TYPE) + IF(ARG_RENAME) + SET(RENAME_PARAM RENAME ${ARG_RENAME}${CMAKE_${target_type}_SUFFIX}) + ELSE() + SET(RENAME_PARAM) + ENDIF() + IF(NOT ARG_DESTINATION) + MESSAGE(FATAL_ERROR "Need DESTINATION parameter for INSTALL_DEBUG_TARGET") + ENDIF() + GET_TARGET_PROPERTY(target_location ${target} LOCATION) + IF(CMAKE_GENERATOR MATCHES "Makefiles") + STRING(REPLACE "${CMAKE_BINARY_DIR}" "${DEBUGBUILDDIR}" debug_target_location "${target_location}") + ELSE() + STRING(REPLACE "${CMAKE_CFG_INTDIR}" "Debug" debug_target_location "${target_location}" ) + ENDIF() + + INSTALL(FILES ${debug_target_location} + DESTINATION ${ARG_DESTINATION} + ${RENAME_PARAM} + CONFIGURATIONS Release RelWithDebInfo + OPTIONAL) + + IF(MSVC) + GET_FILENAME_COMPONENT(ext ${debug_target_location} EXT) + STRING(REPLACE "${ext}" ".pdb" debug_pdb_target_location "${debug_target_location}" ) + IF(RENAME_PARAM) + STRING(REPLACE "${ext}" ".pdb" "${ARG_RENAME}" pdb_rename) + SET(PDB_RENAME_PARAM RENAME ${pdb_rename}) + ENDIF() + INSTALL(FILES ${debug_pdb_target_location} + DESTINATION ${ARG_DESTINATION} + ${RPDB_RENAME_PARAM} + CONFIGURATIONS Release RelWithDebInfo + OPTIONAL) + ENDIF() +ENDFUNCTION() + -- cgit v1.2.1 From 736f2eae74c1d316f089d09b4b8a38b37c337bb9 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 30 Mar 2010 12:32:38 +0200 Subject: Try to fix the debug permissions stuff. --- cmake/install_macros.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'cmake/install_macros.cmake') diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 1dcf8b5ca21..a070c316bf2 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -174,7 +174,8 @@ FUNCTION(INSTALL_DEBUG_TARGET target) "" ${ARGN} ) - GET_TARGET_PROPERTY(target_type ${target} TYPE) + GET_TARGET_PROPERTY(target_type ${target} TYPE) + GET_TARGET_PROPERTY(target_permissions ${target} PERMISSIONS) IF(ARG_RENAME) SET(RENAME_PARAM RENAME ${ARG_RENAME}${CMAKE_${target_type}_SUFFIX}) ELSE() @@ -193,6 +194,7 @@ FUNCTION(INSTALL_DEBUG_TARGET target) INSTALL(FILES ${debug_target_location} DESTINATION ${ARG_DESTINATION} ${RENAME_PARAM} + PERMISSIONS ${target_permissions} CONFIGURATIONS Release RelWithDebInfo OPTIONAL) -- cgit v1.2.1 From 08ec0a2a87232ecd3440506c77d839ad5c5e837d Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 30 Mar 2010 13:37:17 +0200 Subject: Try again.. --- cmake/install_macros.cmake | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'cmake/install_macros.cmake') diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index a070c316bf2..da935b71a18 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -175,7 +175,6 @@ FUNCTION(INSTALL_DEBUG_TARGET target) ${ARGN} ) GET_TARGET_PROPERTY(target_type ${target} TYPE) - GET_TARGET_PROPERTY(target_permissions ${target} PERMISSIONS) IF(ARG_RENAME) SET(RENAME_PARAM RENAME ${ARG_RENAME}${CMAKE_${target_type}_SUFFIX}) ELSE() @@ -184,6 +183,11 @@ FUNCTION(INSTALL_DEBUG_TARGET target) IF(NOT ARG_DESTINATION) MESSAGE(FATAL_ERROR "Need DESTINATION parameter for INSTALL_DEBUG_TARGET") ENDIF() + IF(target_type MATCHES "EXECUTABLE") + SET(INSTALL_TYPE TARGETS) + ELSE() + SET(INSTALL_TYPE FILES) + ENDIF() GET_TARGET_PROPERTY(target_location ${target} LOCATION) IF(CMAKE_GENERATOR MATCHES "Makefiles") STRING(REPLACE "${CMAKE_BINARY_DIR}" "${DEBUGBUILDDIR}" debug_target_location "${target_location}") @@ -191,10 +195,9 @@ FUNCTION(INSTALL_DEBUG_TARGET target) STRING(REPLACE "${CMAKE_CFG_INTDIR}" "Debug" debug_target_location "${target_location}" ) ENDIF() - INSTALL(FILES ${debug_target_location} + INSTALL(${INSTALL_TYPE} ${debug_target_location} DESTINATION ${ARG_DESTINATION} ${RENAME_PARAM} - PERMISSIONS ${target_permissions} CONFIGURATIONS Release RelWithDebInfo OPTIONAL) -- cgit v1.2.1 From bde4d7d3ee11b17050b5ef818eea019dae31b5d8 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 30 Mar 2010 17:13:07 +0200 Subject: Fix from wlad. --- cmake/install_macros.cmake | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'cmake/install_macros.cmake') diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index da935b71a18..3350373a2b6 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -195,9 +195,40 @@ FUNCTION(INSTALL_DEBUG_TARGET target) STRING(REPLACE "${CMAKE_CFG_INTDIR}" "Debug" debug_target_location "${target_location}" ) ENDIF() + # Define permissions + # For executable files + SET(PERMISSIONS_EXECUTABLE + PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + + # Permissions for shared library (honors CMAKE_INSTALL_NO_EXE which is + # typically set on Debian) + IF(CMAKE_INSTALL_SO_NO_EXE) + SET(PERMISSIONS_SHARED_LIBRARY + PERMISSIONS + OWNER_READ OWNER_WRITE + GROUP_READ + WORLD_READ) + ELSE() + SET(PERMISSIONS_SHARED_LIBRARY ${PERMISSIONS_EXECUTABLE}) + ENDIF() + + # Shared modules get the same permissions as shared libraries + SET(PERMISSIONS_MODULE_LIBRARY ${PERMISSIONS_SHARED_LIBRARY}) + + # Define permissions for static library + SET(PERMISSIONS_STATIC_LIBRARY + PERMISSIONS + OWNER_READ OWNER_WRITE + GROUP_READ + WORLD_READ) + INSTALL(${INSTALL_TYPE} ${debug_target_location} DESTINATION ${ARG_DESTINATION} ${RENAME_PARAM} + ${PERMISSIONS_${target_type}} CONFIGURATIONS Release RelWithDebInfo OPTIONAL) -- cgit v1.2.1 From 089ff3dfa94fce7f41378180e494811cf8c9fc13 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 30 Mar 2010 17:24:44 +0200 Subject: Back out remains of previous attempt. --- cmake/install_macros.cmake | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'cmake/install_macros.cmake') diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 3350373a2b6..5be9149b92f 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -183,11 +183,6 @@ FUNCTION(INSTALL_DEBUG_TARGET target) IF(NOT ARG_DESTINATION) MESSAGE(FATAL_ERROR "Need DESTINATION parameter for INSTALL_DEBUG_TARGET") ENDIF() - IF(target_type MATCHES "EXECUTABLE") - SET(INSTALL_TYPE TARGETS) - ELSE() - SET(INSTALL_TYPE FILES) - ENDIF() GET_TARGET_PROPERTY(target_location ${target} LOCATION) IF(CMAKE_GENERATOR MATCHES "Makefiles") STRING(REPLACE "${CMAKE_BINARY_DIR}" "${DEBUGBUILDDIR}" debug_target_location "${target_location}") @@ -225,7 +220,7 @@ FUNCTION(INSTALL_DEBUG_TARGET target) GROUP_READ WORLD_READ) - INSTALL(${INSTALL_TYPE} ${debug_target_location} + INSTALL(FILES ${debug_target_location} DESTINATION ${ARG_DESTINATION} ${RENAME_PARAM} ${PERMISSIONS_${target_type}} -- cgit v1.2.1 From 7ef2f9fa51b0f6979c4c06e5ce89bf544deefb6f Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Wed, 31 Mar 2010 11:40:02 +0200 Subject: Apply wlad fixes from mysql-next-mr-bugfixing --- cmake/install_macros.cmake | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'cmake/install_macros.cmake') diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 5be9149b92f..f049776b8f4 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -43,27 +43,26 @@ ENDMACRO() # Install symbolic link to CMake target. # the link is created in the same directory as target # and extension will be the same as for target file. -MACRO(INSTALL_SYMLINK linkbasename target destination) +MACRO(INSTALL_SYMLINK linkname target destination) IF(UNIX) GET_TARGET_PROPERTY(location ${target} LOCATION) GET_FILENAME_COMPONENT(path ${location} PATH) - GET_FILENAME_COMPONENT(name_we ${location} NAME_WE) - GET_FILENAME_COMPONENT(ext ${location} EXT) - SET(output ${path}/${linkbasename}${ext}) + GET_FILENAME_COMPONENT(name ${location} NAME) + SET(output ${path}/${linkname}) ADD_CUSTOM_COMMAND( OUTPUT ${output} COMMAND ${CMAKE_COMMAND} ARGS -E remove -f ${output} COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink - ${name_we}${ext} - ${linkbasename}${ext} + ${name} + ${linkname} WORKING_DIRECTORY ${path} DEPENDS ${target} ) - ADD_CUSTOM_TARGET(symlink_${linkbasename}${ext} + ADD_CUSTOM_TARGET(symlink_${linkname} ALL DEPENDS ${output}) - SET_TARGET_PROPERTIES(symlink_${linkbasename}${ext} PROPERTIES CLEAN_DIRECT_OUTPUT 1) + 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}" -- cgit v1.2.1