mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-14 13:28:56 +02:00
[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
This commit is contained in:
parent
ecd01e13fd
commit
89f72d286a
48 changed files with 618 additions and 929 deletions
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
34
src/dynarmic/externals/CMakeLists.txt
vendored
34
src/dynarmic/externals/CMakeLists.txt
vendored
|
|
@ -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}
|
||||
)
|
||||
21
src/dynarmic/externals/cpmfile.json
vendored
21
src/dynarmic/externals/cpmfile.json
vendored
|
|
@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue