aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2025-09-08 00:49:46 +0200
committercrueter <crueter@eden-emu.dev>2025-09-08 00:49:46 +0200
commit10dd003d0fe69d8ce015113a30327d96f164b9fa (patch)
tree1d437f37386c2916f87ef0a66b4a8fd209ae6d95
parent37e0b80766f03ae3eb052f2eaa95506b34419bbe (diff)
[dynarmic, cmake] allow LTO build for dynarmic (#252)
Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/252 Reviewed-by: crueter <crueter@eden-emu.dev> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
-rwxr-xr-x.ci/linux/build.sh1
-rw-r--r--.ci/windows/build.sh1
-rw-r--r--src/android/app/build.gradle.kts3
-rw-r--r--src/dynarmic/CMakeLists.txt1
-rw-r--r--src/dynarmic/src/dynarmic/CMakeLists.txt4
5 files changed, 9 insertions, 1 deletions
diff --git a/.ci/linux/build.sh b/.ci/linux/build.sh
index 7c8bed1279..8e3a452809 100755
--- a/.ci/linux/build.sh
+++ b/.ci/linux/build.sh
@@ -104,6 +104,7 @@ cmake .. -G Ninja \
-DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \
-DYUZU_USE_FASTER_LD=ON \
-DYUZU_ENABLE_LTO=ON \
+ -DDYNARMIC_ENABLE_LTO=ON \
"${EXTRA_CMAKE_FLAGS[@]}"
ninja -j${NPROC}
diff --git a/.ci/windows/build.sh b/.ci/windows/build.sh
index 7504630a57..681f327793 100644
--- a/.ci/windows/build.sh
+++ b/.ci/windows/build.sh
@@ -52,6 +52,7 @@ cmake .. -G Ninja \
-DYUZU_USE_QT_MULTIMEDIA=$MULTIMEDIA \
-DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \
-DYUZU_ENABLE_LTO=ON \
+ -DDYNARMIC_ENABLE_LTO=ON \
"${EXTRA_CMAKE_FLAGS[@]}"
ninja
diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts
index 3f1a7c102b..c76b5e7162 100644
--- a/src/android/app/build.gradle.kts
+++ b/src/android/app/build.gradle.kts
@@ -179,7 +179,8 @@ android {
"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON",
"-DBUILD_TESTING=OFF",
"-DYUZU_TESTS=OFF",
- "-DDYNARMIC_TESTS=OFF"
+ "-DDYNARMIC_TESTS=OFF",
+ "-DDYNARMIC_ENABLE_LTO=ON"
)
abiFilters("arm64-v8a")
diff --git a/src/dynarmic/CMakeLists.txt b/src/dynarmic/CMakeLists.txt
index 5c28435f72..d505d16553 100644
--- a/src/dynarmic/CMakeLists.txt
+++ b/src/dynarmic/CMakeLists.txt
@@ -23,6 +23,7 @@ option(DYNARMIC_USE_PRECOMPILED_HEADERS "Use precompiled headers" ON)
option(DYNARMIC_INSTALL "Install dynarmic headers and CMake files" OFF)
option(DYNARMIC_USE_BUNDLED_EXTERNALS "Use all bundled externals (useful when e.g. cross-compiling)" OFF)
option(DYNARMIC_WARNINGS_AS_ERRORS "Warnings as errors" ${MASTER_PROJECT})
+option(DYNARMIC_ENABLE_LTO "Enable LTO" OFF)
if (NOT DEFINED DYNARMIC_FRONTENDS)
set(DYNARMIC_FRONTENDS "A32;A64" CACHE STRING "Selects which frontends to enable")
endif()
diff --git a/src/dynarmic/src/dynarmic/CMakeLists.txt b/src/dynarmic/src/dynarmic/CMakeLists.txt
index e060989f82..7ec92206f9 100644
--- a/src/dynarmic/src/dynarmic/CMakeLists.txt
+++ b/src/dynarmic/src/dynarmic/CMakeLists.txt
@@ -440,6 +440,10 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
endif()
target_compile_definitions(dynarmic PRIVATE FMT_USE_USER_DEFINED_LITERALS=1)
+if (DYNARMIC_ENABLE_LTO)
+ set_property(TARGET dynarmic PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
+endif()
+
if (DYNARMIC_USE_PRECOMPILED_HEADERS)
set(PRECOMPILED_HEADERS "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/ir/ir_emitter.h>")
if ("x86_64" IN_LIST ARCHITECTURE)