aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2026-01-14 19:29:13 +0100
committercrueter <crueter@eden-emu.dev>2026-01-14 19:29:13 +0100
commit89f72d286a85504ccf997bb8124e32d1f76d6c81 (patch)
treee71d20665bb7dd75c855d5caa2ee304d970f3215 /src
parentecd01e13fd13b39bff0f2c7c7bc2387c3a2157f4 (diff)
[cmake, tools] update CPMUtil and add support for CPMUtil bundled Qt, module updates, cleanups (#3289)
Support for bundled Qt, not through aqtinstall but rather my CI. Multimedia is implemented too, works on both Windows and Linux, though we don't actually use it so it doesn't really matter. Contains Declarative and all that so the Quick frontend will work once it becomes a thing. Some options have changed, notably w.r.t LTO and faster linker, which are now handled directly in the modules. CPMUtil also has support for custom dirs (`PackageName_CUSTOM_DIR`) now. Probably most useful for adding external fragment shaders and whatnot. Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3289
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt24
-rw-r--r--src/dynarmic/CMakeLists.txt5
-rw-r--r--src/dynarmic/externals/CMakeLists.txt34
-rw-r--r--src/dynarmic/externals/cpmfile.json21
-rw-r--r--src/dynarmic/src/dynarmic/CMakeLists.txt4
-rw-r--r--src/video_core/host_shaders/CMakeLists.txt3
-rw-r--r--src/yuzu/CMakeLists.txt22
7 files changed, 22 insertions, 91 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c06ed56255..d8d9e10c9f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -16,6 +16,10 @@ endif()
set_property(DIRECTORY APPEND PROPERTY
COMPILE_DEFINITIONS $<$<CONFIG:Debug>:_DEBUG> $<$<NOT:$<CONFIG:Debug>>:NDEBUG>)
+if (YUZU_STATIC_BUILD)
+ add_compile_definitions(QT_STATICPLUGIN)
+endif()
+
# Set compilation flags
if (MSVC AND NOT CXX_CLANG)
set(CMAKE_CONFIGURATION_TYPES Debug Release CACHE STRING "" FORCE)
@@ -169,25 +173,19 @@ else()
add_compile_definitions(_FILE_OFFSET_BITS=64)
endif()
- if (YUZU_STATIC_BUILD)
- add_compile_definitions(QT_STATICPLUGIN)
-
- # macos doesn't even let you make static executables... wtf?
- if (NOT APPLE)
- add_compile_options(-static)
- if (YUZU_STATIC_BUILD)
- # yuzu-cmd requires us to explicitly link libpthread, libgcc, and libstdc++ as static
- # At a guess, it's probably because Qt handles the Qt executable for us, whereas this does not
- add_link_options(-static -lpthread)
- add_link_options(-static-libgcc -static-libstdc++)
- endif()
+ if (YUZU_STATIC_BUILD AND NOT APPLE)
+ add_compile_options(-static)
+ if (YUZU_STATIC_BUILD)
+ # yuzu-cmd requires us to explicitly link libpthread, libgcc, and libstdc++ as static
+ add_link_options(-static -lpthread)
+ add_link_options(-static-libgcc -static-libstdc++)
endif()
endif()
if (MINGW)
add_compile_definitions(MINGW_HAS_SECURE_API)
- # Only windows has this requirement, thanks windows
+ # Only windows has this requirement
if (WIN32 AND ARCHITECTURE_x86_64)
add_compile_options("-msse4.1")
endif()
diff --git a/src/dynarmic/CMakeLists.txt b/src/dynarmic/CMakeLists.txt
index e05757b6ca..1558d76b35 100644
--- a/src/dynarmic/CMakeLists.txt
+++ b/src/dynarmic/CMakeLists.txt
@@ -38,7 +38,6 @@ CMAKE_DEPENDENT_OPTION(DYNARMIC_USE_LLVM "Support disassembly of jitted x86_64 c
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_ENABLE_LTO "Enable LTO" OFF)
# Set hard requirements for C++
set(CMAKE_CXX_STANDARD 20)
@@ -115,10 +114,6 @@ endif()
find_package(Boost 1.57 REQUIRED)
find_package(fmt 8 CONFIG)
-
-# Pull in externals CMakeLists for libs where available
-add_subdirectory(externals)
-
find_package(mcl 0.1.12 REQUIRED)
if ("arm64" IN_LIST ARCHITECTURE OR DYNARMIC_TESTS)
diff --git a/src/dynarmic/externals/CMakeLists.txt b/src/dynarmic/externals/CMakeLists.txt
deleted file mode 100644
index 1956499464..0000000000
--- a/src/dynarmic/externals/CMakeLists.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-include(CPMUtil)
-
-# Always build externals as static libraries, even when dynarmic is built as shared
-set(BUILD_SHARED_LIBS OFF)
-set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-set_property(DIRECTORY PROPERTY EXCLUDE_FROM_ALL ON)
-
-# Allow options shadowing with normal variables when subproject use old cmake policy
-set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
-
-# Disable tests in all externals supporting the standard option name
-set(BUILD_TESTING OFF)
-
-# For libraries that already come with a CMakeLists file,
-# simply add the directory to that file as a subdirectory
-# to have CMake automatically recognize them.
-
-# biscuit
-
-if ("riscv" IN_LIST ARCHITECTURE)
- AddJsonPackage(
- NAME biscuit
- BUNDLED_PACKAGE ${DYNARMIC_USE_BUNDLED_EXTERNALS}
- )
-endif()
-
-# mcl
-AddJsonPackage(
- NAME mcl
- BUNDLED_PACKAGE ${DYNARMIC_USE_BUNDLED_EXTERNALS}
-)
diff --git a/src/dynarmic/externals/cpmfile.json b/src/dynarmic/externals/cpmfile.json
deleted file mode 100644
index 584e1f9115..0000000000
--- a/src/dynarmic/externals/cpmfile.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "biscuit": {
- "repo": "lioncash/biscuit",
- "tag": "v%VERSION%",
- "hash": "1229f345b014f7ca544dedb4edb3311e41ba736f9aa9a67f88b5f26f3c983288c6bb6cdedcfb0b8a02c63088a37e6a0d7ba97d9c2a4d721b213916327cffe28a",
- "version": "0.9.1",
- "git_version": "0.19.0"
- },
- "mcl": {
- "version": "0.1.12",
- "repo": "azahar-emu/mcl",
- "sha": "7b08d83418",
- "hash": "9c6ba624cb22ef622f78046a82abb99bf5026284ba17dfacaf46ac842cbd3b0f515f5ba45a1598c7671318a78a2e648db72ce8d10e7537f34e39800bdcb57694",
- "options": [
- "MCL_INSTALL OFF"
- ],
- "patches": [
- "0001-assert-macro.patch"
- ]
- }
-}
diff --git a/src/dynarmic/src/dynarmic/CMakeLists.txt b/src/dynarmic/src/dynarmic/CMakeLists.txt
index 9575eaab6f..f2ea9de455 100644
--- a/src/dynarmic/src/dynarmic/CMakeLists.txt
+++ b/src/dynarmic/src/dynarmic/CMakeLists.txt
@@ -395,7 +395,3 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
target_compile_definitions(dynarmic PRIVATE FMT_USE_WINDOWS_H=0)
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()
diff --git a/src/video_core/host_shaders/CMakeLists.txt b/src/video_core/host_shaders/CMakeLists.txt
index 2a1bdca3ea..9ce2ac44bf 100644
--- a/src/video_core/host_shaders/CMakeLists.txt
+++ b/src/video_core/host_shaders/CMakeLists.txt
@@ -88,8 +88,7 @@ set(SHADER_FILES
)
if (PLATFORM_HAIKU)
- # glslangValidator WILL crash, glslang will not - why? Who the fuck knows
- #/boot/home/glslang/build/StandAlone/glslangValidator
+ # glslangValidator WILL crash, glslang will not
set(GLSLANGVALIDATOR "glslang")
else()
# Normal sane platform who doesn't have a CRASHING glslangValidator
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index f3f0939705..87d4652b07 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -242,8 +242,7 @@ set_target_properties(yuzu PROPERTIES OUTPUT_NAME "eden")
if (YUZU_CRASH_DUMPS)
target_sources(yuzu PRIVATE
breakpad.cpp
- breakpad.h
- )
+ breakpad.h)
target_link_libraries(yuzu PRIVATE libbreakpad_client)
target_compile_definitions(yuzu PRIVATE YUZU_CRASH_DUMPS)
@@ -251,8 +250,7 @@ endif()
if (CXX_CLANG)
target_compile_definitions(yuzu PRIVATE
- $<$<VERSION_LESS:$<CXX_COMPILER_VERSION>,15>:CANNOT_EXPLICITLY_INSTANTIATE>
- )
+ $<$<VERSION_LESS:$<CXX_COMPILER_VERSION>,15>:CANNOT_EXPLICITLY_INSTANTIATE>)
endif()
file(GLOB COMPAT_LIST
@@ -288,8 +286,7 @@ if (ENABLE_QT_TRANSLATION)
${SRCS}
${UIS}
WORKING_DIRECTORY
- ${CMAKE_CURRENT_SOURCE_DIR}
- )
+ ${CMAKE_CURRENT_SOURCE_DIR})
else()
qt_create_translation(QM_FILES
${SRCS}
@@ -297,8 +294,7 @@ if (ENABLE_QT_TRANSLATION)
${YUZU_QT_LANGUAGES}/en.ts
OPTIONS
-source-language en_US
- -target-language en_US
- )
+ -target-language en_US)
endif()
# Generate plurals into dist/english_plurals/generated_en.ts so it can be used to revise dist/english_plurals/en.ts
@@ -316,8 +312,7 @@ if (ENABLE_QT_TRANSLATION)
${SRCS}
${UIS}
WORKING_DIRECTORY
- ${CMAKE_CURRENT_SOURCE_DIR}
- )
+ ${CMAKE_CURRENT_SOURCE_DIR})
else()
qt_create_translation(QM_FILES ${SRCS} ${UIS} ${GENERATED_PLURALS_FILE} OPTIONS -pluralonly -source-language en_US -target-language en_US)
endif()
@@ -355,8 +350,11 @@ target_sources(yuzu
${COMPAT_LIST}
${ICONS}
${LANGUAGES}
- ${THEMES}
-)
+ ${THEMES})
+
+if (ENABLE_OPENSSL)
+ target_link_libraries(yuzu PRIVATE OpenSSL::SSL OpenSSL::Crypto)
+endif()
if (APPLE)
# Normal icns