Workaround broken `get_filename_component(... REALPATH)` on Windows

See https://gitlab.kitware.com/cmake/cmake/-/issues/17206
This commit is contained in:
Martchus 2023-03-16 00:50:50 +01:00
parent dd3ae7b32b
commit c2bd68824c
1 changed files with 10 additions and 1 deletions

View File

@ -594,7 +594,16 @@ if (REQUIRED_ICONS)
string(REGEX REPLACE "(^[^/\\]+)" "${NEW_ICON_THEME_NAME}" NEW_ICON_THEME_FILE_RELATIVE_PATH
"${ICON_THEME_FILE_RELATIVE_PATH}")
set(ICON_THEME_FILE_ALIAS " alias=\"${NEW_ICON_THEME_FILE_RELATIVE_PATH}\"")
get_filename_component(ICON_THEME_FILE "${ICON_THEME_FILE}" REALPATH)
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
find_program(REALPATH_BIN "realpath")
if (NOT REALPATH_BIN)
message(FATAL_ERROR "Set REALPATH_BIN to the location of realpath.exe to workaround https://gitlab.kitware.com/cmake/cmake/-/issues/17206")
endif ()
execute_process(COMMAND "${REALPATH_PATH}" "${ICON_THEME_FILE}" OUTPUT_VARIABLE ICON_THEME_FILE OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ERROR_IS_FATAL ANY)
string(REGEX REPLACE "\n$" "" ICON_THEME_FILE "${ICON_THEME_FILE}")
else ()
get_filename_component(ICON_THEME_FILE "${ICON_THEME_FILE}" REALPATH)
endif ()
else ()
unset(ICON_THEME_FILE_ALIAS)
endif ()