Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

120 lines
3.5 KiB

include(Join)
include(TribitsFilepathHelpers)
include(AppendStringVarWithSep)
function(tribits_raise_install_perms_mods_not_supported_on_windows_error)
set(INSTALL_PERMS_SET "")
tribits_append_install_perms_var_not_supported(
${PROJECT_NAME}_MAKE_INSTALL_GROUP_WRITABLE)
tribits_append_install_perms_var_not_supported(
${PROJECT_NAME}_MAKE_INSTALL_GROUP_READABLE)
tribits_append_install_perms_var_not_supported(
${PROJECT_NAME}_MAKE_INSTALL_WORLD_READABLE)
tribits_append_install_perms_var_not_supported(
${PROJECT_NAME}_MAKE_INSTALL_GROUP)
message(FATAL_ERROR
"ERROR: The options:\n"
"${INSTALL_PERMS_SET}"
"are not supported on Windows!\n"
"Please remove these options and configure from scratch!"
)
endfunction()
# Reads and writes var INSTALL_PERMS_SET in above function
macro(tribits_append_install_perms_var_not_supported VAR_NAME)
if (NOT "${${VAR_NAME}}" STREQUAL "")
set(INSTALL_PERMS_SET "${INSTALL_PERMS_SET} ${VAR_NAME}='${${VAR_NAME}}'\n")
endif()
endmacro()
function(tribits_determine_if_setup_for_group_and_perms_modifications
SETUP_FOR_GROUP_AND_PERMS_MODIFICATIONS_OUT
)
if(
${PROJECT_NAME}_MAKE_INSTALL_GROUP_WRITABLE OR
${PROJECT_NAME}_MAKE_INSTALL_GROUP_READABLE OR
${PROJECT_NAME}_MAKE_INSTALL_WORLD_READABLE OR
(NOT "${${PROJECT_NAME}_MAKE_INSTALL_GROUP}" STREQUAL "")
)
set(setupForGroupAndPermsModifications TRUE)
else()
set(setupForGroupAndPermsModifications FALSE)
endif()
if (setupForGroupAndPermsModifications AND
${PROJECT_NAME}_HOSTTYPE STREQUAL "Windows"
)
tribits_raise_install_perms_mods_not_supported_on_windows_error()
endif()
set(${SETUP_FOR_GROUP_AND_PERMS_MODIFICATIONS_OUT}
${setupForGroupAndPermsModifications} PARENT_SCOPE)
endfunction()
function(tribits_configure_set_installed_group_and_perms_file TARGET_FILE)
set(PROJECT_SET_GROUP_AND_PERMISSIONS_ON_INSTALL_BASE_DIR
"${${PROJECT_NAME}_SET_GROUP_AND_PERMISSIONS_ON_INSTALL_BASE_DIR}")
tribits_get_dir_array_below_base_dir(
"${${PROJECT_NAME}_SET_GROUP_AND_PERMISSIONS_ON_INSTALL_BASE_DIR}"
"${CMAKE_INSTALL_PREFIX}"
PROJECT_SUBDIR_PATHS_ARRAY
)
set(PROJECT_MAKE_INSTALL_GROUP "${${PROJECT_NAME}_MAKE_INSTALL_GROUP}")
set(group_perms "")
if (${PROJECT_NAME}_MAKE_INSTALL_GROUP_WRITABLE)
set(group_perms "g+rwX")
elseif (${PROJECT_NAME}_MAKE_INSTALL_GROUP_READABLE
OR ${PROJECT_NAME}_MAKE_INSTALL_WORLD_READABLE
)
set(group_perms "g+rX")
endif()
set(other_perms "")
if (${PROJECT_NAME}_MAKE_INSTALL_WORLD_READABLE)
set(other_perms "o+rX")
endif()
join(PROJECT_MAKE_INSTALL_PERMS_CHANGE "," FALSE
${group_perms} ${other_perms} )
set(tribits_install_src
"${${PROJECT_NAME}_TRIBITS_DIR}/${TRIBITS_CMAKE_INSTALLATION_FILES_DIR}")
configure_file(
"${tribits_install_src}/set_installed_group_and_permissions.cmake.in"
"${TARGET_FILE}" @ONLY )
endfunction()
function(tribits_add_install_group_and_perms_fixups)
tribits_determine_if_setup_for_group_and_perms_modifications(
setupForGroupAndPermsModifications)
if (setupForGroupAndPermsModifications)
set(set_installed_group_and_permissions_file
"${PROJECT_BINARY_DIR}/set_installed_group_and_permissions.cmake")
tribits_configure_set_installed_group_and_perms_file(
"${set_installed_group_and_permissions_file}" )
# Fix up install for default 'install' command
install(SCRIPT "${set_installed_group_and_permissions_file}")
endif()
endfunction()