diff options
| author | crueter <crueter@eden-emu.dev> | 2026-01-14 19:29:13 +0100 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-01-14 19:29:13 +0100 |
| commit | 89f72d286a85504ccf997bb8124e32d1f76d6c81 (patch) | |
| tree | e71d20665bb7dd75c855d5caa2ee304d970f3215 /src | |
| parent | ecd01e13fd13b39bff0f2c7c7bc2387c3a2157f4 (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.txt | 24 | ||||
| -rw-r--r-- | src/dynarmic/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | src/dynarmic/externals/CMakeLists.txt | 34 | ||||
| -rw-r--r-- | src/dynarmic/externals/cpmfile.json | 21 | ||||
| -rw-r--r-- | src/dynarmic/src/dynarmic/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | src/video_core/host_shaders/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | src/yuzu/CMakeLists.txt | 22 |
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 |
