summaryrefslogtreecommitdiff
path: root/CMake/DolphinSymlinkOrCopy.cmake
blob: dd712cb2668bbd2625b21909a75cb6c1583f8708 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(NOT DEFINED target OR NOT DEFINED link)
    message(FATAL_ERROR "`target` and `link` must be defined")
endif()

file(CREATE_LINK "${target}" "${link}" RESULT result SYMBOLIC)
if(result EQUAL 0)
  return()
endif()

if(WIN32)
  set(hint "On Windows, enable Developer Mode to allow symlinks (https://learn.microsoft.com/windows/advanced-settings/developer-mode).")
endif()
message(WARNING "Symlink failed (${result}). Falling back to copying. ${hint}")

file(REMOVE_RECURSE "${link}")
if(IS_DIRECTORY "${target}")
    file(COPY "${target}/." DESTINATION "${link}")
else()
    file(COPY_FILE "${target}" "${link}" ONLY_IF_DIFFERENT)
endif()