CMake: Remove LINUX_LOCAL_DEV and symlink required files

This commit is contained in:
Joshua Vandaële 2025-12-11 03:29:09 +01:00
parent 30031a0412
commit d8ac710436
No known key found for this signature in database
GPG Key ID: 6BB95AF71EB0F406
3 changed files with 65 additions and 42 deletions

View File

@ -0,0 +1,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()

View File

@ -146,12 +146,6 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
endif()
endif()
if(UNIX)
# Builds a relocatable binary on Linux.
# The Sys folder will need to be copied to the Binaries folder.
option(LINUX_LOCAL_DEV "Enable relocatable binary" OFF)
endif()
list(APPEND CMAKE_MODULE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/CMake
)
@ -391,12 +385,6 @@ if(ENABLE_LTO)
endif()
endif()
if(UNIX)
if(LINUX_LOCAL_DEV)
add_definitions(-DLINUX_LOCAL_DEV)
endif()
endif()
# BSDs put packages in /usr/local instead of /usr, so we need to
# force CMake to look in those directories by default, too.
# All commands and submodule commands also need to see these

View File

@ -495,7 +495,51 @@ if (MSVC)
target_compile_options(dolphin-emu PRIVATE "/GR")
endif()
if(WIN32)
if (NOT APPLE AND NOT ANDROID)
# Symlink Sys
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND}
-Dtarget="${CMAKE_SOURCE_DIR}/Data/Sys"
-Dlink="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Sys"
-P="${CMAKE_SOURCE_DIR}/CMake/DolphinSymlinkOrCopy.cmake"
)
# Symlink COPYING
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND}
-Dtarget="${CMAKE_SOURCE_DIR}/COPYING"
-Dlink="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/COPYING"
-P="${CMAKE_SOURCE_DIR}/CMake/DolphinSymlinkOrCopy.cmake"
)
# Symlink Licenses dir
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND}
-Dtarget="${CMAKE_SOURCE_DIR}/LICENSES"
-Dlink="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Licenses"
-P="${CMAKE_SOURCE_DIR}/CMake/DolphinSymlinkOrCopy.cmake"
)
endif()
if (WIN32)
# Symlink qt.conf
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND}
-Dtarget="${CMAKE_CURRENT_SOURCE_DIR}/qt.conf.win"
-Dlink="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf"
-P="${CMAKE_SOURCE_DIR}/CMake/DolphinSymlinkOrCopy.cmake"
)
if (ENABLE_AUTOUPDATE)
# Symlink build_info.txt
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND}
-Dtarget="${CMAKE_BINARY_DIR}/build_info.txt"
-Dlink="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/build_info.txt"
-P="${CMAKE_SOURCE_DIR}/CMake/DolphinSymlinkOrCopy.cmake"
)
endif()
target_sources(dolphin-emu PRIVATE DolphinQt.manifest DolphinQt.rc)
set_target_properties(dolphin-emu PROPERTIES
@ -503,35 +547,6 @@ if(WIN32)
OUTPUT_NAME Dolphin
WIN32_EXECUTABLE TRUE
)
# Copy Sys dir
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Sys"
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/Data/Sys" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Sys"
)
# Copy COPYING
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/COPYING" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/COPYING"
)
# Copy Licenses dir
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/LICENSES" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Licenses"
)
# Copy qt.conf
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/qt.conf.win" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf"
)
if (ENABLE_AUTOUPDATE)
# Copy build_info.txt
add_custom_command(TARGET dolphin-emu POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_BINARY_DIR}/build_info.txt" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/build_info.txt"
)
endif()
# Delegate to Qt's official deployment binary on Windows to copy over the necessary Qt-specific libraries, etc.
get_target_property(MOC_EXECUTABLE_LOCATION Qt6::moc IMPORTED_LOCATION)
get_filename_component(QT_BINARY_DIRECTORY "${MOC_EXECUTABLE_LOCATION}" DIRECTORY)