mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-10-20 16:50:05 +02:00
[externals] UCRT64 support (#4035)
Testing which deps can't cross MSVCRT/UCRT barriers - openssl - Qt FFmpeg and Sirit are fine--likely don't use the C99 APIs that MSVCRT is missing? Closes #4022 Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4035
This commit is contained in:
parent
5ba3ae32dc
commit
3e31831cb0
11 changed files with 34 additions and 108 deletions
|
|
@ -1,89 +0,0 @@
|
||||||
From 509be32bbfa6eb95014860f7c9ea6d45c8ddaa56 Mon Sep 17 00:00:00 2001
|
|
||||||
From: crueter <crueter@eden-emu.dev>
|
|
||||||
Date: Sun, 8 Mar 2026 15:11:12 -0400
|
|
||||||
Subject: [PATCH] [cmake] Simplify zstd find logic, and support pre-existing
|
|
||||||
zstd target
|
|
||||||
|
|
||||||
Some deduplication work on the zstd required/if-available logic. Also
|
|
||||||
adds support for pre-existing `zstd::libzstd` which is useful for
|
|
||||||
projects that bundle their own zstd in a way that doesn't get caught by
|
|
||||||
`CONFIG`
|
|
||||||
|
|
||||||
Signed-off-by: crueter <crueter@eden-emu.dev>
|
|
||||||
---
|
|
||||||
CMakeLists.txt | 46 ++++++++++++++++++++++++++--------------------
|
|
||||||
1 file changed, 26 insertions(+), 20 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index 1874e36be0..8d31198006 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -241,28 +241,34 @@ endif()
|
|
||||||
# NOTE:
|
|
||||||
# zstd < 1.5.6 does not provide the CMake imported target `zstd::libzstd`.
|
|
||||||
# Older versions must be consumed via their pkg-config file.
|
|
||||||
-if(HTTPLIB_REQUIRE_ZSTD)
|
|
||||||
- find_package(zstd 1.5.6 CONFIG)
|
|
||||||
- if(NOT zstd_FOUND)
|
|
||||||
- find_package(PkgConfig REQUIRED)
|
|
||||||
- pkg_check_modules(zstd REQUIRED IMPORTED_TARGET libzstd)
|
|
||||||
- add_library(zstd::libzstd ALIAS PkgConfig::zstd)
|
|
||||||
- endif()
|
|
||||||
- set(HTTPLIB_IS_USING_ZSTD TRUE)
|
|
||||||
-elseif(HTTPLIB_USE_ZSTD_IF_AVAILABLE)
|
|
||||||
- find_package(zstd 1.5.6 CONFIG QUIET)
|
|
||||||
- if(NOT zstd_FOUND)
|
|
||||||
- find_package(PkgConfig QUIET)
|
|
||||||
- if(PKG_CONFIG_FOUND)
|
|
||||||
- pkg_check_modules(zstd QUIET IMPORTED_TARGET libzstd)
|
|
||||||
-
|
|
||||||
- if(TARGET PkgConfig::zstd)
|
|
||||||
+if (HTTPLIB_REQUIRE_ZSTD)
|
|
||||||
+ set(HTTPLIB_ZSTD_REQUESTED ON)
|
|
||||||
+ set(HTTPLIB_ZSTD_REQUIRED REQUIRED)
|
|
||||||
+elseif (HTTPLIB_USE_ZSTD_IF_AVAILABLE)
|
|
||||||
+ set(HTTPLIB_ZSTD_REQUESTED ON)
|
|
||||||
+ set(HTTPLIB_ZSTD_REQUIRED QUIET)
|
|
||||||
+endif()
|
|
||||||
+
|
|
||||||
+if (HTTPLIB_ZSTD_REQUESTED)
|
|
||||||
+ if (TARGET zstd::libzstd)
|
|
||||||
+ set(HTTPLIB_IS_USING_ZSTD TRUE)
|
|
||||||
+ else()
|
|
||||||
+ find_package(zstd 1.5.6 CONFIG QUIET)
|
|
||||||
+
|
|
||||||
+ if (NOT zstd_FOUND)
|
|
||||||
+ find_package(PkgConfig ${HTTPLIB_ZSTD_REQUIRED})
|
|
||||||
+ pkg_check_modules(zstd ${HTTPLIB_ZSTD_REQUIRED} IMPORTED_TARGET libzstd)
|
|
||||||
+
|
|
||||||
+ if (TARGET PkgConfig::zstd)
|
|
||||||
add_library(zstd::libzstd ALIAS PkgConfig::zstd)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
+
|
|
||||||
+ # This will always be true if zstd is required.
|
|
||||||
+ # If zstd *isn't* found when zstd is set to required,
|
|
||||||
+ # CMake will error out earlier in this block.
|
|
||||||
+ set(HTTPLIB_IS_USING_ZSTD ${zstd_FOUND})
|
|
||||||
endif()
|
|
||||||
- # Both find_package and PkgConf set a XXX_FOUND var
|
|
||||||
- set(HTTPLIB_IS_USING_ZSTD ${zstd_FOUND})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Used for default, common dirs that the end-user can change (if needed)
|
|
||||||
@@ -317,13 +323,13 @@ if(HTTPLIB_COMPILE)
|
|
||||||
$<BUILD_INTERFACE:${_httplib_build_includedir}/httplib.h>
|
|
||||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/httplib.h>
|
|
||||||
)
|
|
||||||
-
|
|
||||||
+
|
|
||||||
# Add C++20 module support if requested
|
|
||||||
# Include from separate file to prevent parse errors on older CMake versions
|
|
||||||
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.28")
|
|
||||||
include(cmake/modules.cmake)
|
|
||||||
endif()
|
|
||||||
-
|
|
||||||
+
|
|
||||||
set_target_properties(${PROJECT_NAME}
|
|
||||||
PROPERTIES
|
|
||||||
VERSION ${${PROJECT_NAME}_VERSION}
|
|
||||||
|
|
@ -590,9 +590,9 @@ if (ENABLE_QT)
|
||||||
if (YUZU_USE_BUNDLED_QT)
|
if (YUZU_USE_BUNDLED_QT)
|
||||||
# Qt 6.8+ is broken on macOS (??)
|
# Qt 6.8+ is broken on macOS (??)
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
AddQt(6.7.3)
|
AddQt(Eden-CI/Qt 6.7.3)
|
||||||
else()
|
else()
|
||||||
AddQt(6.9.3)
|
AddQt(Eden-CI/Qt 6.11.1)
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
message(STATUS "Using system Qt")
|
message(STATUS "Using system Qt")
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
set(CPM_SOURCE_CACHE "${PROJECT_SOURCE_DIR}/.cache/cpm" CACHE STRING "" FORCE)
|
set(CPM_SOURCE_CACHE "${PROJECT_SOURCE_DIR}/.cache/cpm" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
if(MSVC OR ANDROID)
|
if(MSVC OR ANDROID OR IOS)
|
||||||
set(BUNDLED_DEFAULT ON)
|
set(BUNDLED_DEFAULT ON)
|
||||||
else()
|
else()
|
||||||
set(BUNDLED_DEFAULT OFF)
|
set(BUNDLED_DEFAULT OFF)
|
||||||
|
|
@ -247,7 +247,9 @@ function(AddJsonPackage)
|
||||||
|
|
||||||
set(multiValueArgs OPTIONS)
|
set(multiValueArgs OPTIONS)
|
||||||
|
|
||||||
cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}"
|
set(options MODULE)
|
||||||
|
|
||||||
|
cmake_parse_arguments(JSON "${options}" "${oneValueArgs}" "${multiValueArgs}"
|
||||||
"${ARGN}")
|
"${ARGN}")
|
||||||
|
|
||||||
list(LENGTH ARGN argnLength)
|
list(LENGTH ARGN argnLength)
|
||||||
|
|
@ -277,6 +279,10 @@ function(AddJsonPackage)
|
||||||
parse_object(${object})
|
parse_object(${object})
|
||||||
|
|
||||||
if(ci)
|
if(ci)
|
||||||
|
if (JSON_MODULE)
|
||||||
|
set(EXTRA_ARGS MODULE)
|
||||||
|
endif()
|
||||||
|
|
||||||
AddCIPackage(
|
AddCIPackage(
|
||||||
VERSION ${version}
|
VERSION ${version}
|
||||||
NAME ${name}
|
NAME ${name}
|
||||||
|
|
@ -284,8 +290,8 @@ function(AddJsonPackage)
|
||||||
PACKAGE ${package}
|
PACKAGE ${package}
|
||||||
EXTENSION ${extension}
|
EXTENSION ${extension}
|
||||||
MIN_VERSION ${min_version}
|
MIN_VERSION ${min_version}
|
||||||
DISABLED_PLATFORMS ${disabled_platforms})
|
DISABLED_PLATFORMS ${disabled_platforms}
|
||||||
|
${EXTRA_ARGS})
|
||||||
else()
|
else()
|
||||||
if (NOT DEFINED JSON_FORCE_BUNDLED_PACKAGE)
|
if (NOT DEFINED JSON_FORCE_BUNDLED_PACKAGE)
|
||||||
set(JSON_FORCE_BUNDLED_PACKAGE OFF)
|
set(JSON_FORCE_BUNDLED_PACKAGE OFF)
|
||||||
|
|
@ -690,8 +696,10 @@ function(AddCIPackage)
|
||||||
set(pkgname linux-amd64)
|
set(pkgname linux-amd64)
|
||||||
elseif(PLATFORM_LINUX AND ARCHITECTURE_arm64)
|
elseif(PLATFORM_LINUX AND ARCHITECTURE_arm64)
|
||||||
set(pkgname linux-aarch64)
|
set(pkgname linux-aarch64)
|
||||||
elseif(APPLE)
|
elseif(APPLE AND NOT IOS)
|
||||||
set(pkgname macos-universal)
|
set(pkgname macos-universal)
|
||||||
|
elseif(IOS AND ARCHITECTURE_arm64)
|
||||||
|
set(pkgname ios-aarch64)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (DEFINED pkgname AND NOT "${pkgname}" IN_LIST DISABLED_PLATFORMS)
|
if (DEFINED pkgname AND NOT "${pkgname}" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
|
@ -724,7 +732,11 @@ function(AddCIPackage)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Utility function for Qt
|
# Utility function for Qt
|
||||||
function(AddQt version)
|
function(AddQt repo version)
|
||||||
|
if (NOT DEFINED repo)
|
||||||
|
message(FATAL_ERROR "[CPMUtil] AddQt: repo is required")
|
||||||
|
endif()
|
||||||
|
|
||||||
if (NOT DEFINED version)
|
if (NOT DEFINED version)
|
||||||
message(FATAL_ERROR "[CPMUtil] AddQt: version is required")
|
message(FATAL_ERROR "[CPMUtil] AddQt: version is required")
|
||||||
endif()
|
endif()
|
||||||
|
|
@ -734,7 +746,7 @@ function(AddQt version)
|
||||||
PACKAGE Qt6
|
PACKAGE Qt6
|
||||||
VERSION ${version}
|
VERSION ${version}
|
||||||
MIN_VERSION 6
|
MIN_VERSION 6
|
||||||
REPO crueter-ci/Qt
|
REPO ${repo}
|
||||||
DISABLED_PLATFORMS
|
DISABLED_PLATFORMS
|
||||||
android-x86_64 android-aarch64
|
android-x86_64 android-aarch64
|
||||||
freebsd-amd64 solaris-amd64 openbsd-amd64
|
freebsd-amd64 solaris-amd64 openbsd-amd64
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
"package": "OpenSSL",
|
"package": "OpenSSL",
|
||||||
"name": "openssl",
|
"name": "openssl",
|
||||||
"repo": "crueter-ci/OpenSSL",
|
"repo": "crueter-ci/OpenSSL",
|
||||||
"version": "3.6.0-1cb0d36b39",
|
"version": "4.0.0-11b7b6ea3b",
|
||||||
"min_version": "3"
|
"min_version": "3"
|
||||||
},
|
},
|
||||||
"openssl-cmake": {
|
"openssl-cmake": {
|
||||||
|
|
|
||||||
|
|
@ -18,3 +18,4 @@
|
||||||
- `linux-amd64`
|
- `linux-amd64`
|
||||||
- `linux-aarch64`
|
- `linux-aarch64`
|
||||||
- `macos-universal`
|
- `macos-universal`
|
||||||
|
- `ios-aarch64`
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,8 @@ In order: OpenSSL CI, Boost (tag + artifact), Opus (options + find_args), discor
|
||||||
"version": "3.6.0",
|
"version": "3.6.0",
|
||||||
"min_version": "1.1.1",
|
"min_version": "1.1.1",
|
||||||
"disabled_platforms": [
|
"disabled_platforms": [
|
||||||
"macos-universal"
|
"macos-universal",
|
||||||
|
"ios-aarch64"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"boost": {
|
"boost": {
|
||||||
|
|
|
||||||
7
externals/cpmfile.json
vendored
7
externals/cpmfile.json
vendored
|
|
@ -28,12 +28,11 @@
|
||||||
"httplib": {
|
"httplib": {
|
||||||
"repo": "yhirose/cpp-httplib",
|
"repo": "yhirose/cpp-httplib",
|
||||||
"tag": "v%VERSION%",
|
"tag": "v%VERSION%",
|
||||||
"hash": "5efa8140aadffe105dcf39935b732476e95755f6c7473ada3d0b64df2bc02c557633ae3948a25b45e1cf67e89a3ff6329fb30362e4ac033b9a1d1e453aa2eded",
|
"hash": "159ed94965018f2a371d45a3bfc1961e5fb1549e501ded70a6b4532d7fe99d0579c18b5195aff6e35f96f399b426cea2650ec9fb75ef80d4c9edeccb51f2e6c9",
|
||||||
"git_version": "0.37.0",
|
"git_version": "0.46.0",
|
||||||
"find_args": "MODULE GLOBAL",
|
"find_args": "MODULE GLOBAL",
|
||||||
"patches": [
|
"patches": [
|
||||||
"0001-mingw.patch",
|
"0001-mingw.patch"
|
||||||
"0002-fix-zstd.patch"
|
|
||||||
],
|
],
|
||||||
"options": [
|
"options": [
|
||||||
"HTTPLIB_REQUIRE_OPENSSL ON",
|
"HTTPLIB_REQUIRE_OPENSSL ON",
|
||||||
|
|
|
||||||
4
externals/ffmpeg/CMakeLists.txt
vendored
4
externals/ffmpeg/CMakeLists.txt
vendored
|
|
@ -59,7 +59,7 @@ endif()
|
||||||
if (PLATFORM_PS4 OR PLATFORM_MANAGARM)
|
if (PLATFORM_PS4 OR PLATFORM_MANAGARM)
|
||||||
# Doesn't support VA-API, don't go thru the embarrassment of trying to enable it
|
# Doesn't support VA-API, don't go thru the embarrassment of trying to enable it
|
||||||
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi)
|
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi)
|
||||||
elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING)
|
elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING AND NOT ANDROID)
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(LIBVA libva)
|
pkg_check_modules(LIBVA libva)
|
||||||
pkg_check_modules(CUDA cuda)
|
pkg_check_modules(CUDA cuda)
|
||||||
|
|
@ -169,7 +169,7 @@ if (PLATFORM_PS4)
|
||||||
)
|
)
|
||||||
elseif (PLATFORM_MANAGARM)
|
elseif (PLATFORM_MANAGARM)
|
||||||
# Required for proper stuff
|
# Required for proper stuff
|
||||||
list(APPEND FFmpeg_CROSS_COMPILE_FLAGS
|
list(APPEND FFmpeg_CROSS_COMPILE_FLAGS
|
||||||
--disable-pthreads
|
--disable-pthreads
|
||||||
--extra-libs="${FFmpeg_CROSS_COMPILE_LIBS}"
|
--extra-libs="${FFmpeg_CROSS_COMPILE_LIBS}"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -33,3 +33,5 @@ if (ENABLE_UPDATE_CHECKER)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} yuzu-android)
|
set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} yuzu-android)
|
||||||
|
|
||||||
|
target_link_options(yuzu-android PRIVATE "-Wl,-Bsymbolic")
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ ci_package() {
|
||||||
android-aarch64 android-x86_64 \
|
android-aarch64 android-x86_64 \
|
||||||
solaris-amd64 freebsd-amd64 openbsd-amd64 \
|
solaris-amd64 freebsd-amd64 openbsd-amd64 \
|
||||||
linux-amd64 linux-aarch64 \
|
linux-amd64 linux-aarch64 \
|
||||||
macos-universal; do
|
macos-universal ios-aarch64; do
|
||||||
echo "-- * platform $platform"
|
echo "-- * platform $platform"
|
||||||
|
|
||||||
case $DISABLED in
|
case $DISABLED in
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ mingw-amd64 mingw-arm64
|
||||||
android-aarch64 android-x86_64
|
android-aarch64 android-x86_64
|
||||||
solaris-amd64 freebsd-amd64 openbsd-amd64
|
solaris-amd64 freebsd-amd64 openbsd-amd64
|
||||||
linux-amd64 linux-aarch64
|
linux-amd64 linux-aarch64
|
||||||
macos-universal"
|
macos-universal ios-aarch64"
|
||||||
|
|
||||||
DISABLED_PLATFORMS="$reply"
|
DISABLED_PLATFORMS="$reply"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue