From fec3c19bd081dbf2109b0deac3ec565adcdc01df Mon Sep 17 00:00:00 2001 From: NepDisk Date: Tue, 24 Jun 2025 07:51:33 -0400 Subject: [PATCH] Fix Windows Clang compile --- src/CMakeLists.txt | 6 +++++- src/win32/Srb2win.rc | 3 --- toolchain/LinuxCLANG.cmake | 3 +++ toolchain/{windowsCLANG.cmake => WindowsCLANG.cmake} | 3 +++ toolchain/{windowsGCC.cmake => WindowsGCC.cmake} | 0 5 files changed, 11 insertions(+), 4 deletions(-) rename toolchain/{windowsCLANG.cmake => WindowsCLANG.cmake} (93%) rename toolchain/{windowsGCC.cmake => WindowsGCC.cmake} (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index abd6a66b1..348e29ea6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,7 +4,11 @@ if(("${CMAKE_COMPILER_IS_GNUCC}" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND target_link_options(SRB2SDL2 PRIVATE "-Wl,--disable-dynamicbase") if("${SRB2_CONFIG_STATIC_STDLIB}") # On MinGW with internal libraries, link the standard library statically - target_link_options(SRB2SDL2 PRIVATE -Wl,--add-stdcall-alias -static-libgcc -static-libstdc++ -static -lpthread) + if(CMAKE_LINKER_TYPE STREQUAL "LLD") + target_link_options(SRB2SDL2 PRIVATE -Wl, -static-libgcc -static-libstdc++ -static -lpthread) + else() + target_link_options(SRB2SDL2 PRIVATE -Wl,--add-stdcall-alias -static-libgcc -static-libstdc++ -static -lpthread) + endif() set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads REQUIRED) target_link_libraries(SRB2SDL2 PRIVATE Threads::Threads) diff --git a/src/win32/Srb2win.rc b/src/win32/Srb2win.rc index 4ee69b58c..042a7fdf0 100644 --- a/src/win32/Srb2win.rc +++ b/src/win32/Srb2win.rc @@ -1,9 +1,6 @@ -#include - //Microsoft Developer Studio generated resource script. // #include "resource.h" -#include "winver.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// diff --git a/toolchain/LinuxCLANG.cmake b/toolchain/LinuxCLANG.cmake index eaa087ab3..849961d27 100644 --- a/toolchain/LinuxCLANG.cmake +++ b/toolchain/LinuxCLANG.cmake @@ -5,3 +5,6 @@ set(CMAKE_CXX_COMPILER clang++) # Set that this is clang. set(CMAKE_C_COMPILER_ID clang) set(CMAKE_CXX_COMPILER_ID clang) + +# Use LLD to link +set(CMAKE_LINKER_TYPE LLD) diff --git a/toolchain/windowsCLANG.cmake b/toolchain/WindowsCLANG.cmake similarity index 93% rename from toolchain/windowsCLANG.cmake rename to toolchain/WindowsCLANG.cmake index 5ed085f8f..421c9e942 100644 --- a/toolchain/windowsCLANG.cmake +++ b/toolchain/WindowsCLANG.cmake @@ -16,3 +16,6 @@ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # search headers and libraries in the target environment set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +# Use LLD to link +set(CMAKE_LINKER_TYPE LLD) diff --git a/toolchain/windowsGCC.cmake b/toolchain/WindowsGCC.cmake similarity index 100% rename from toolchain/windowsGCC.cmake rename to toolchain/WindowsGCC.cmake