Avoid relying on external tool for working around CMake's broken `REALPATH`

This commit is contained in:
Martchus 2023-03-23 21:42:59 +01:00
parent c2bd68824c
commit 0e151b3cc6
1 changed files with 11 additions and 7 deletions

View File

@ -595,15 +595,19 @@ if (REQUIRED_ICONS)
"${ICON_THEME_FILE_RELATIVE_PATH}")
set(ICON_THEME_FILE_ALIAS " alias=\"${NEW_ICON_THEME_FILE_RELATIVE_PATH}\"")
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")
if (CMAKE_VERSION VERSION_LESS "3.14")
message(FATAL_ERROR "Need at least CMake 3.14 on Windows to read symlinks of"
"icon theme to be bundled.")
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)
while (IS_SYMLINK "${ICON_THEME_FILE}")
get_filename_component(ICON_THEME_FILE_DIR "${ICON_THEME_FILE}" DIRECTORY)
file(READ_SYMLINK "${ICON_THEME_FILE}" ICON_THEME_FILE)
if(NOT IS_ABSOLUTE "${ICON_THEME_FILE}")
set(ICON_THEME_FILE "${ICON_THEME_FILE_DIR}/${ICON_THEME_FILE}")
endif()
endwhile ()
endif ()
get_filename_component(ICON_THEME_FILE "${ICON_THEME_FILE}" REALPATH)
else ()
unset(ICON_THEME_FILE_ALIAS)
endif ()