Changeset View
Changeset View
Standalone View
Standalone View
cmake/modules/InstallationHelper.cmake
# This file contains facilities for installing the files. | # This file contains facilities for installing the files. | ||||
include(GNUInstallDirs) | include(GNUInstallDirs) | ||||
include(SanitizeHelper) | include(SanitizeHelper) | ||||
function(_add_install_target COMPONENT) | function(_add_install_target COMPONENT) | ||||
cmake_parse_arguments(ARG | |||||
"EXCLUDE_FROM_ALL" | |||||
"" | |||||
"DEPENDS" | |||||
${ARGN} | |||||
) | |||||
sanitize_target_name("install-" "${COMPONENT}" INSTALL_TARGET) | sanitize_target_name("install-" "${COMPONENT}" INSTALL_TARGET) | ||||
if(NOT TARGET ${INSTALL_TARGET}) | if(NOT TARGET ${INSTALL_TARGET}) | ||||
add_custom_target(${INSTALL_TARGET} | add_custom_target(${INSTALL_TARGET} | ||||
COMMENT "Installing component ${COMPONENT}" | COMMENT "Installing component ${COMPONENT}" | ||||
COMMAND | COMMAND | ||||
"${CMAKE_COMMAND}" | "${CMAKE_COMMAND}" | ||||
-E env CMAKE_INSTALL_ALWAYS=ON | -E env CMAKE_INSTALL_ALWAYS=ON | ||||
"${CMAKE_COMMAND}" | "${CMAKE_COMMAND}" | ||||
-DCOMPONENT="${COMPONENT}" | -DCOMPONENT="${COMPONENT}" | ||||
-DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}" | -DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}" | ||||
-P cmake_install.cmake | -P cmake_install.cmake | ||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" | WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" | ||||
) | ) | ||||
if(TARGET install-all) | if(TARGET install-all) | ||||
add_dependencies(install-all ${INSTALL_TARGET}) | add_dependencies(install-all ${INSTALL_TARGET}) | ||||
endif() | endif() | ||||
endif() | endif() | ||||
# Other arguments are additional dependencies | # Other arguments are additional dependencies | ||||
if(ARGN) | if(ARG_DEPENDS) | ||||
add_dependencies(${INSTALL_TARGET} ${ARGN}) | add_dependencies(${INSTALL_TARGET} ${ARG_DEPENDS}) | ||||
endif() | endif() | ||||
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") | if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") | ||||
if(NOT TARGET "install-${COMPONENT}-debug") | if(NOT TARGET "install-${COMPONENT}-debug") | ||||
add_custom_target("install-${COMPONENT}-debug" | add_custom_target("install-${COMPONENT}-debug" | ||||
COMMENT "Splitting out the debug symbols for component ${COMPONENT}" | COMMENT "Splitting out the debug symbols for component ${COMPONENT}" | ||||
COMMAND | COMMAND | ||||
"${CMAKE_SOURCE_DIR}/cmake/utils/split-installed-component.sh" | "${CMAKE_SOURCE_DIR}/cmake/utils/split-installed-component.sh" | ||||
"${CMAKE_BINARY_DIR}/contrib/devtools/split-debug.sh" | "${CMAKE_BINARY_DIR}/contrib/devtools/split-debug.sh" | ||||
"${CMAKE_BINARY_DIR}/install_manifest_${COMPONENT}.txt" | "${CMAKE_BINARY_DIR}/install_manifest_${COMPONENT}.txt" | ||||
"${CMAKE_INSTALL_BINDIR}" | "${CMAKE_INSTALL_BINDIR}" | ||||
"${CMAKE_INSTALL_LIBDIR}" | "${CMAKE_INSTALL_LIBDIR}" | ||||
DEPENDS | DEPENDS | ||||
"${INSTALL_TARGET}" | "${INSTALL_TARGET}" | ||||
"${CMAKE_BINARY_DIR}/contrib/devtools/split-debug.sh" | "${CMAKE_BINARY_DIR}/contrib/devtools/split-debug.sh" | ||||
) | ) | ||||
endif() | endif() | ||||
if(TARGET install-debug) | if(NOT ARG_EXCLUDE_FROM_ALL AND TARGET install-debug) | ||||
add_dependencies(install-debug "install-${COMPONENT}-debug") | add_dependencies(install-debug "install-${COMPONENT}-debug") | ||||
endif() | endif() | ||||
if(TARGET install-all-debug) | |||||
add_dependencies(install-all-debug "install-${COMPONENT}-debug") | |||||
endif() | |||||
endif() | endif() | ||||
endfunction() | endfunction() | ||||
function(install_target _target) | function(install_target _target) | ||||
cmake_parse_arguments(ARG | cmake_parse_arguments(ARG | ||||
"" | "EXCLUDE_FROM_ALL" | ||||
"COMPONENT" | "COMPONENT" | ||||
"" | "" | ||||
${ARGN} | ${ARGN} | ||||
) | ) | ||||
if(NOT ARG_COMPONENT) | if(NOT ARG_COMPONENT) | ||||
set(ARG_COMPONENT ${PROJECT_NAME}) | set(ARG_COMPONENT ${PROJECT_NAME}) | ||||
endif() | endif() | ||||
if(ARG_EXCLUDE_FROM_ALL) | |||||
set(INSTALL_EXCLUDE_FROM_ALL EXCLUDE_FROM_ALL) | |||||
endif() | |||||
set(COMMON_INSTALL_ARGUMENTS | |||||
COMPONENT ${ARG_COMPONENT} | |||||
${INSTALL_EXCLUDE_FROM_ALL} | |||||
${ARG_UNPARSED_ARGUMENTS} | |||||
) | |||||
install( | install( | ||||
TARGETS ${_target} | TARGETS ${_target} | ||||
RUNTIME | RUNTIME | ||||
DESTINATION "${CMAKE_INSTALL_BINDIR}" | DESTINATION "${CMAKE_INSTALL_BINDIR}" | ||||
COMPONENT ${ARG_COMPONENT} | ${COMMON_INSTALL_ARGUMENTS} | ||||
${ARG_UNPARSED_ARGUMENTS} | |||||
ARCHIVE | ARCHIVE | ||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}" | DESTINATION "${CMAKE_INSTALL_LIBDIR}" | ||||
COMPONENT ${ARG_COMPONENT} | ${COMMON_INSTALL_ARGUMENTS} | ||||
${ARG_UNPARSED_ARGUMENTS} | |||||
LIBRARY | LIBRARY | ||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}" | DESTINATION "${CMAKE_INSTALL_LIBDIR}" | ||||
COMPONENT ${ARG_COMPONENT} | ${COMMON_INSTALL_ARGUMENTS} | ||||
${ARG_UNPARSED_ARGUMENTS} | |||||
PUBLIC_HEADER | PUBLIC_HEADER | ||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" | DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" | ||||
COMPONENT ${ARG_COMPONENT} | ${COMMON_INSTALL_ARGUMENTS} | ||||
${ARG_UNPARSED_ARGUMENTS} | |||||
) | ) | ||||
_add_install_target("${ARG_COMPONENT}" ${_target}) | _add_install_target("${ARG_COMPONENT}" | ||||
${INSTALL_EXCLUDE_FROM_ALL} | |||||
DEPENDS ${_target} | |||||
) | |||||
endfunction() | endfunction() | ||||
function(install_shared_library NAME) | function(install_shared_library NAME) | ||||
cmake_parse_arguments(ARG | cmake_parse_arguments(ARG | ||||
"EXCLUDE_FROM_ALL" | "EXCLUDE_FROM_ALL" | ||||
"" | "" | ||||
"PUBLIC_HEADER" | "PUBLIC_HEADER" | ||||
${ARGN} | ${ARGN} | ||||
▲ Show 20 Lines • Show All 63 Lines • Show Last 20 Lines |