aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt15
-rw-r--r--CMakeModules/StaticQtLibs.cmake31
-rw-r--r--cpmfile.json9
-rw-r--r--externals/cpmfile.json7
-rw-r--r--externals/ffmpeg/cpmfile.json9
-rw-r--r--src/frontend_common/CMakeLists.txt2
-rw-r--r--src/qt_common/CMakeLists.txt4
-rw-r--r--src/yuzu/CMakeLists.txt24
-rwxr-xr-xtools/cpm/check-updates.sh6
9 files changed, 57 insertions, 50 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6f099834c3..0d385b9436 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -119,6 +119,8 @@ endif()
option(YUZU_STATIC_BUILD "Use static libraries and executables if available" OFF)
if (YUZU_STATIC_BUILD)
+ include(StaticQtLibs)
+
# lol
set(Boost_USE_STATIC_LIBS ON)
set(BUILD_SHARED_LIBS OFF)
@@ -136,7 +138,8 @@ if (YUZU_STATIC_BUILD)
# simple hook to reject dynamic libs
function(find_library var)
# also skip previously-found libraries cuz... yaknow
- if (${var})
+ # UNLESS they are dll.a :{
+ if (${var} AND NOT ${var} MATCHES "dll\\.a$")
return()
endif()
@@ -155,17 +158,19 @@ if (YUZU_STATIC_BUILD)
set(YUZU_USE_BUNDLED_FFMPEG ON)
set(YUZU_USE_BUNDLED_SDL2 ON)
+ set(YUZU_USE_BUNDLED_OPENSSL ON)
set(HTTPLIB_USE_BROTLI_IF_AVAILABLE OFF)
elseif(APPLE)
# these libs do not properly provide static libs/let you do it with cmake
set(YUZU_USE_CPM ON)
- # IMPORTED_IMPLIB not set for imported target
- # TODO(crueter): wtf
set(YUZU_USE_BUNDLED_FFMPEG ON)
- set(YUZU_USE_EXTERNAL_SDL2 ON)
+ set(YUZU_USE_BUNDLED_SDL2 ON)
+ set(YUZU_USE_BUNDLED_OPENSSL ON)
+ # IMPORTED_IMPLIB not set for imported target
+ # TODO(crueter): wtf
set(fmt_FORCE_BUNDLED ON)
set(SPIRV-Tools_FORCE_BUNDLED ON)
set(SPIRV-Headers_FORCE_BUNDLED ON)
@@ -419,7 +424,7 @@ if (ANDROID OR WIN32 OR APPLE OR PLATFORM_SUN)
set(DEFAULT_ENABLE_OPENSSL OFF)
endif()
-if (ENABLE_WEB_SERVICE)
+if (ENABLE_WEB_SERVICE OR USE_DISCORD_PRESENCE)
set(DEFAULT_ENABLE_OPENSSL ON)
endif()
diff --git a/CMakeModules/StaticQtLibs.cmake b/CMakeModules/StaticQtLibs.cmake
new file mode 100644
index 0000000000..be2f060a25
--- /dev/null
+++ b/CMakeModules/StaticQtLibs.cmake
@@ -0,0 +1,31 @@
+# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+## When linking to a static Qt build on MinGW, certain additional libraries
+## must be statically linked to as well.
+
+function(static_qt_link target)
+ macro(extra_libs)
+ foreach(lib ${ARGN})
+ find_library(${lib}_LIBRARY ${lib} REQUIRED)
+ target_link_libraries(${target} PRIVATE ${${lib}_LIBRARY})
+ endforeach()
+ endmacro()
+
+ # I am constantly impressed at how ridiculously stupid the linker is
+ # NB: yes, we have to put them here twice. I have no idea why
+
+ # libtiff.a
+ extra_libs(tiff jbig bz2 lzma deflate jpeg tiff)
+
+ # libfreetype.a
+ extra_libs(freetype bz2 Lerc brotlidec brotlicommon freetype)
+
+ # libharfbuzz.a
+ extra_libs(harfbuzz graphite2)
+
+ # sijfjkfnjkdfjsbjsbsdfhvbdf
+ if (ENABLE_OPENSSL)
+ target_link_libraries(${target} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
+ endif()
+endfunction()
diff --git a/cpmfile.json b/cpmfile.json
index cb0bfb4487..6cf7ed1a41 100644
--- a/cpmfile.json
+++ b/cpmfile.json
@@ -4,13 +4,8 @@
"package": "OpenSSL",
"name": "openssl",
"repo": "crueter-ci/OpenSSL",
- "version": "3.6.0",
- "min_version": "1.1.1",
- "disabled_platforms": [
- "macos-universal",
- "mingw-amd64",
- "mingw-arm64"
- ]
+ "version": "3.6.0-e3608d80df",
+ "min_version": "1.1.1"
},
"boost": {
"package": "Boost",
diff --git a/externals/cpmfile.json b/externals/cpmfile.json
index a8376db540..ee5ccb451e 100644
--- a/externals/cpmfile.json
+++ b/externals/cpmfile.json
@@ -167,11 +167,8 @@
"package": "SDL2",
"name": "SDL2",
"repo": "crueter-ci/SDL2",
- "version": "2.32.10",
- "min_version": "2.26.4",
- "disabled_platforms": [
- "macos-universal"
- ]
+ "version": "2.32.10-38e0094637",
+ "min_version": "2.26.4"
},
"catch2": {
"package": "Catch2",
diff --git a/externals/ffmpeg/cpmfile.json b/externals/ffmpeg/cpmfile.json
index 9f7f0bea68..0baeeb4713 100644
--- a/externals/ffmpeg/cpmfile.json
+++ b/externals/ffmpeg/cpmfile.json
@@ -10,12 +10,7 @@
"package": "FFmpeg",
"name": "ffmpeg",
"repo": "crueter-ci/FFmpeg",
- "version": "8.0",
- "min_version": "4.1",
- "disabled_platforms": [
- "freebsd-amd64",
- "solaris-amd64",
- "openbsd-amd64"
- ]
+ "version": "8.0-be99d2c0b2",
+ "min_version": "4.1"
}
}
diff --git a/src/frontend_common/CMakeLists.txt b/src/frontend_common/CMakeLists.txt
index 1d15443008..911f3ebdca 100644
--- a/src/frontend_common/CMakeLists.txt
+++ b/src/frontend_common/CMakeLists.txt
@@ -25,7 +25,7 @@ if (ENABLE_UPDATE_CHECKER)
if (ENABLE_OPENSSL)
target_compile_definitions(frontend_common PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
- target_link_libraries(frontend_common PRIVATE OpenSSL::SSL)
+ target_link_libraries(frontend_common PRIVATE OpenSSL::SSL OpenSSL::Crypto)
endif()
endif()
diff --git a/src/qt_common/CMakeLists.txt b/src/qt_common/CMakeLists.txt
index 895320703a..2100760d9c 100644
--- a/src/qt_common/CMakeLists.txt
+++ b/src/qt_common/CMakeLists.txt
@@ -42,10 +42,12 @@ if (USE_DISCORD_PRESENCE)
discord/discord_impl.h
)
target_link_libraries(qt_common PUBLIC DiscordRPC::discord-rpc httplib::httplib)
+
if (YUZU_USE_BUNDLED_OPENSSL)
- target_link_libraries(qt_common PUBLIC OpenSSL::SSL)
+ target_link_libraries(qt_common PUBLIC OpenSSL::SSL OpenSSL::Crypto)
target_compile_definitions(qt_common PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
endif()
+
target_compile_definitions(qt_common PUBLIC USE_DISCORD_PRESENCE)
endif()
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index d0f2121a65..e69dfd52aa 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -459,30 +459,8 @@ if (NOT MSVC AND (APPLE OR NOT YUZU_STATIC_BUILD))
-Wno-missing-field-initializers)
endif()
-## certain libraries need extra static libs to be linked ##
-# I have no fucking clue why it ONLY has to be on yuzu
-# yuzu_cmd works totally fine but not this??????????
if (YUZU_STATIC_BUILD AND MINGW)
- macro(extra_libs)
- foreach(lib ${ARGN})
- find_library(${lib}_LIBRARY ${lib} REQUIRED)
- target_link_libraries(yuzu PRIVATE ${${lib}_LIBRARY})
- endforeach()
- endmacro()
-
- # I am constantly impressed at how ridiculously stupid the linker is
- # NB: yes, we have to put them here twice. I have no idea why
-
- # libtiff.a
- extra_libs(tiff jbig bz2 lzma deflate jpeg tiff)
-
- # libfreetype.a
- extra_libs(freetype bz2 Lerc brotlidec brotlicommon freetype)
-
- # libharfbuzz.a
- extra_libs(harfbuzz graphite2)
-
- extra_libs(wsock32 ws2_32 crypt32 mswsock wlanapi)
+ static_qt_link(yuzu)
endif()
create_target_directory_groups(yuzu)
diff --git a/tools/cpm/check-updates.sh b/tools/cpm/check-updates.sh
index ae38b7294d..5fc7836199 100755
--- a/tools/cpm/check-updates.sh
+++ b/tools/cpm/check-updates.sh
@@ -67,7 +67,11 @@ while true; do
[ "$REPO" = null ] && continue
[ "$GIT_HOST" != "github.com" ] && continue # TODO
- # shellcheck disable=SC2153
+
+ if [ "$CI" = "true" ]; then
+ TAG="v$VERSION"
+ fi
+
[ "$TAG" = null ] && continue
echo "-- Package $PACKAGE"