summaryrefslogtreecommitdiff
path: root/cmake/install_macros.cmake
diff options
context:
space:
mode:
authorDaniel Fischer <df@sun.com>2010-04-21 14:58:09 +0200
committerDaniel Fischer <df@sun.com>2010-04-21 14:58:09 +0200
commitb83e1c868622125ff59d405710cb6438c131a7f4 (patch)
tree4fad82e285f056995b626f0a62b5fa0488294c19 /cmake/install_macros.cmake
parent718ee3e595d3c73517c1bc1df8d3bdfc2e22510b (diff)
parent210d37e5c0aaa821783023b3f275c5e7992c515c (diff)
downloadmariadb-git-b83e1c868622125ff59d405710cb6438c131a7f4.tar.gz
Merge
Diffstat (limited to 'cmake/install_macros.cmake')
-rw-r--r--cmake/install_macros.cmake96
1 files changed, 88 insertions, 8 deletions
diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake
index 26e0d9581ac..07aa4500188 100644
--- a/cmake/install_macros.cmake
+++ b/cmake/install_macros.cmake
@@ -112,27 +112,26 @@ ENDFUNCTION()
# 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 component)
+MACRO(INSTALL_SYMLINK linkname target destination component)
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}"
@@ -242,3 +241,84 @@ 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()
+
+ # 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(FILES ${debug_target_location}
+ DESTINATION ${ARG_DESTINATION}
+ ${RENAME_PARAM}
+ ${PERMISSIONS_${target_type}}
+ 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()
+