diff --git a/CMakeLists.txt b/CMakeLists.txt
index f5d7126f92..e48263063f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -210,7 +210,7 @@ endif()
option(YUZU_DOWNLOAD_TIME_ZONE_DATA "Always download time zone binaries" ON)
-CMAKE_DEPENDENT_OPTION(YUZU_USE_FASTER_LD "Check if a faster linker is available" ON "NOT WIN32" OFF)
+CMAKE_DEPENDENT_OPTION(YUZU_USE_FASTER_LD "Check if a faster linker is available" ON "LINUX" OFF)
CMAKE_DEPENDENT_OPTION(USE_SYSTEM_MOLTENVK "Use the system MoltenVK lib (instead of the bundled one)" OFF "APPLE" OFF)
@@ -894,24 +894,47 @@ if (MSVC AND CXX_CLANG)
link_libraries(llvm-mingw-runtime)
endif()
+#[[
+ search order:
+ - gold (GCC only) - the best, generally, but unfortunately not packaged anymore
+ - mold (GCC only) - generally does well on GCC
+ - ldd - preferred on clang
+ - bfd - the final fallback
+ - If none are found (macOS uses ld.prime, etc) just use the default linker
+]]
if (YUZU_USE_FASTER_LD)
- # fallback if everything fails (bfd)
- set(LINKER bfd)
- # clang should always use lld
- find_program(LLD lld)
- if (LLD)
+ find_program(LINKER_BFD bfd)
+ if (LINKER_BFD)
+ set(LINKER bfd)
+ endif()
+
+ find_program(LINKER_LLD lld)
+ if (LINKER_LLD)
set(LINKER lld)
endif()
- # GNU appears to work better with mold
- # TODO: mold has been slow lately, see if better options exist (search for gold?)
+
if (CXX_GCC)
- find_program(MOLD mold)
- if (MOLD AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.1")
+ find_program(LINKER_MOLD mold)
+ if (LINKER_MOLD AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.1")
set(LINKER mold)
endif()
+
+ find_program(LINKER_GOLD gold)
+ if (LINKER_GOLD)
+ set(LINKER gold)
+ endif()
+ endif()
+
+ if (LINKER)
+ message(NOTICE "Selecting ${LINKER} as linker")
+ add_link_options("-fuse-ld=${LINKER}")
+ else()
+ message(WARNING "No faster linker found--using default")
+ endif()
+
+ if (LINKER STREQUAL "lld" AND CXX_GCC)
+ message(WARNING "Using lld on GCC may cause issues with certain LTO settings. If the program fails to compile, disable YUZU_USE_FASTER_LD, or install mold or GNU gold.")
endif()
- message(NOTICE "Selecting ${LINKER} as linker")
- add_link_options("-fuse-ld=${LINKER}")
endif()
# Set runtime library to MD/MDd for all configurations
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index fd9e1b3f77..2a5cc48bb1 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -889,7 +889,7 @@
Save/Load Error
Fatal Error
A fatal error occurred. Check the log for details.\nContinuing emulation may result in crashes.
- Turning off this setting will significantly degrade performance. It's recommended that you leave this setting enabled.
+ Turning off this setting will significantly degrade performance. It"s recommended that you leave this setting enabled.
Device RAM: %1$s\nRecommended: %2$s
%1$s %2$s
No bootable game present!