From 2b7b44c3e4e8b6c1d1bf695c789259f26ee298ed Mon Sep 17 00:00:00 2001 From: crueter Date: Fri, 30 Jan 2026 20:11:03 +0100 Subject: [PATCH] [externals] Use patches for spirv-tools, cpp-jwt, and opus instead of forks (#3430) oops Signed-off-by: crueter Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3430 Reviewed-by: Lizzie Reviewed-by: MaranBr --- .patch/cpp-jwt/0001-fix-missing-decl.patch | 25 +++ .../0001-disable-clang-runtime-neon.patch | 28 ++++ .patch/opus/0002-no-install.patch | 153 ++++++++++++++++++ cpmfile.json | 10 +- externals/cpmfile.json | 11 +- 5 files changed, 220 insertions(+), 7 deletions(-) create mode 100644 .patch/cpp-jwt/0001-fix-missing-decl.patch create mode 100644 .patch/opus/0001-disable-clang-runtime-neon.patch create mode 100644 .patch/opus/0002-no-install.patch diff --git a/.patch/cpp-jwt/0001-fix-missing-decl.patch b/.patch/cpp-jwt/0001-fix-missing-decl.patch new file mode 100644 index 0000000000..a22476f013 --- /dev/null +++ b/.patch/cpp-jwt/0001-fix-missing-decl.patch @@ -0,0 +1,25 @@ +From ce992811fe8eb5ea7ad37e5b255bfecb0c313928 Mon Sep 17 00:00:00 2001 +From: crueter +Date: Sun, 7 Sep 2025 23:43:57 -0400 +Subject: [PATCH] [algorithm] fix missing declaration error + +Projects with restrictive error options won't compile without this + +Signed-off-by: crueter +--- + include/jwt/algorithm.hpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/include/jwt/algorithm.hpp b/include/jwt/algorithm.hpp +index 0e3b843..35347fe 100644 +--- a/include/jwt/algorithm.hpp ++++ b/include/jwt/algorithm.hpp +@@ -63,6 +63,8 @@ using sign_func_t = sign_result_t (*) (const jwt::string_view key, + using verify_func_t = verify_result_t (*) (const jwt::string_view key, + const jwt::string_view head, + const jwt::string_view jwt_sign); ++ ++verify_result_t is_secret_a_public_key(const jwt::string_view secret); + + namespace algo { + diff --git a/.patch/opus/0001-disable-clang-runtime-neon.patch b/.patch/opus/0001-disable-clang-runtime-neon.patch new file mode 100644 index 0000000000..27a905c366 --- /dev/null +++ b/.patch/opus/0001-disable-clang-runtime-neon.patch @@ -0,0 +1,28 @@ +From cc15da16e533b2a801934eab2dfeaf3c3949a1dc Mon Sep 17 00:00:00 2001 +From: crueter +Date: Mon, 8 Sep 2025 12:28:55 -0400 +Subject: [PATCH] [cmake] disable NEON runtime check on clang-cl + +When enabling runtime NEON checking for clang-cl, the linker would error out with `undefined symbol: __emit`, since clang doesn't actually implement this instruction. Therefore it makes sense to disable the runtime check by default on this platform, until either this is fixed or a clang-cl compatible intrinsic check is added (I don't have enough knowledge of MSVC to do this) +--- + cmake/OpusConfig.cmake | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/cmake/OpusConfig.cmake b/cmake/OpusConfig.cmake +index e9319fbad..d0f459e88 100644 +--- a/cmake/OpusConfig.cmake ++++ b/cmake/OpusConfig.cmake +@@ -71,7 +71,12 @@ elseif(OPUS_CPU_ARM AND NOT OPUS_DISABLE_INTRINSICS) + opus_detect_neon(COMPILER_SUPPORT_NEON) + if(COMPILER_SUPPORT_NEON) + option(OPUS_USE_NEON "Option to enable NEON" ON) +- option(OPUS_MAY_HAVE_NEON "Does runtime check for neon support" ON) ++ if (MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") ++ set(NEON_RUNTIME_CHECK_DEFAULT OFF) ++ else() ++ set(NEON_RUNTIME_CHECK_DEFAULT ON) ++ endif() ++ option(OPUS_MAY_HAVE_NEON "Does runtime check for neon support" ${NEON_RUNTIME_CHECK_DEFAULT}) + option(OPUS_PRESUME_NEON "Assume target CPU has NEON support" OFF) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") + set(OPUS_PRESUME_NEON ON) diff --git a/.patch/opus/0002-no-install.patch b/.patch/opus/0002-no-install.patch new file mode 100644 index 0000000000..833a3e4178 --- /dev/null +++ b/.patch/opus/0002-no-install.patch @@ -0,0 +1,153 @@ +From bf455b67b4eaa446ffae5d25410b141b7b1b1082 Mon Sep 17 00:00:00 2001 +From: crueter +Date: Mon, 8 Sep 2025 12:08:20 -0400 +Subject: [PATCH] [cmake] `OPUS_INSTALL` option; only default install if root + project + +Signed-off-by: crueter +--- + CMakeLists.txt | 112 ++++++++++++++++++++++++++++--------------------- + 1 file changed, 64 insertions(+), 48 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fcf034b19..08b5e16f8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -4,6 +4,13 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + include(OpusPackageVersion) + get_package_version(PACKAGE_VERSION PROJECT_VERSION) + ++# root project detection ++if(DEFINED PROJECT_NAME) ++ set(root_project OFF) ++else() ++ set(root_project ON) ++endif() ++ + project(Opus LANGUAGES C VERSION ${PROJECT_VERSION}) + + include(OpusFunctions) +@@ -83,12 +90,16 @@ set(OPUS_DNN_FLOAT_DEBUG_HELP_STR "Run DNN computations as float for debugging p + option(OPUS_DNN_FLOAT_DEBUG ${OPUS_DNN_FLOAT_DEBUG_HELP_STR} OFF) + add_feature_info(OPUS_DNN_FLOAT_DEBUG OPUS_DNN_FLOAT_DEBUG ${OPUS_DNN_FLOAT_DEBUG_HELP_STR}) + ++set(OPUS_INSTALL_HELP_STR "Install Opus targets") ++option(OPUS_INSTALL ${OPUS_INSTALL_HELP_STR} ${root_project}) ++add_feature_info(OPUS_INSTALL OPUS_INSTALL ${OPUS_INSTALL_HELP_STR}) ++ + set(OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR "install pkg-config module.") +-option(OPUS_INSTALL_PKG_CONFIG_MODULE ${OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR} ON) ++option(OPUS_INSTALL_PKG_CONFIG_MODULE ${OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR} ${OPUS_INSTALL}) + add_feature_info(OPUS_INSTALL_PKG_CONFIG_MODULE OPUS_INSTALL_PKG_CONFIG_MODULE ${OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR}) + + set(OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR "install CMake package config module.") +-option(OPUS_INSTALL_CMAKE_CONFIG_MODULE ${OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR} ON) ++option(OPUS_INSTALL_CMAKE_CONFIG_MODULE ${OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR} ${OPUS_INSTALL}) + add_feature_info(OPUS_INSTALL_CMAKE_CONFIG_MODULE OPUS_INSTALL_CMAKE_CONFIG_MODULE ${OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR}) + + set(OPUS_DRED_HELP_STR "enable DRED.") +@@ -613,53 +624,58 @@ if(OPUS_BUILD_FRAMEWORK) + OUTPUT_NAME Opus) + endif() + +-install(TARGETS opus +- EXPORT OpusTargets +- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +- FRAMEWORK DESTINATION ${CMAKE_INSTALL_PREFIX} +- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/opus) +- +-if(OPUS_INSTALL_PKG_CONFIG_MODULE) +- set(prefix ${CMAKE_INSTALL_PREFIX}) +- set(exec_prefix ${CMAKE_INSTALL_PREFIX}) +- set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) +- set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) +- set(VERSION ${PACKAGE_VERSION}) +- if(HAVE_LIBM) +- set(LIBM "-lm") ++if (OPUS_INSTALL) ++ install(TARGETS opus ++ EXPORT OpusTargets ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ++ FRAMEWORK DESTINATION ${CMAKE_INSTALL_PREFIX} ++ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/opus) ++ ++ if(OPUS_INSTALL_PKG_CONFIG_MODULE) ++ set(prefix ${CMAKE_INSTALL_PREFIX}) ++ set(exec_prefix ${CMAKE_INSTALL_PREFIX}) ++ set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) ++ set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) ++ set(VERSION ${PACKAGE_VERSION}) ++ if(HAVE_LIBM) ++ set(LIBM "-lm") ++ endif() ++ configure_file(opus.pc.in opus.pc) ++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/opus.pc ++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) ++ endif() ++ ++ if(OPUS_INSTALL_CMAKE_CONFIG_MODULE) ++ set(CPACK_GENERATOR TGZ) ++ include(CPack) ++ set(CMAKE_INSTALL_PACKAGEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) ++ install(EXPORT OpusTargets ++ NAMESPACE Opus:: ++ DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) ++ ++ include(CMakePackageConfigHelpers) ++ ++ set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) ++ configure_package_config_file( ++ ${PROJECT_SOURCE_DIR}/cmake/OpusConfig.cmake.in ++ OpusConfig.cmake ++ INSTALL_DESTINATION ++ ${CMAKE_INSTALL_PACKAGEDIR} ++ PATH_VARS ++ INCLUDE_INSTALL_DIR ++ INSTALL_PREFIX ++ ${CMAKE_INSTALL_PREFIX}) ++ ++ write_basic_package_version_file(OpusConfigVersion.cmake ++ VERSION ${PROJECT_VERSION} ++ COMPATIBILITY SameMajorVersion) ++ ++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/OpusConfig.cmake ++ ${CMAKE_CURRENT_BINARY_DIR}/OpusConfigVersion.cmake ++ DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) + endif() +- configure_file(opus.pc.in opus.pc) +- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/opus.pc +- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +-endif() +- +-if(OPUS_INSTALL_CMAKE_CONFIG_MODULE) +- set(CPACK_GENERATOR TGZ) +- include(CPack) +- set(CMAKE_INSTALL_PACKAGEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) +- install(EXPORT OpusTargets +- NAMESPACE Opus:: +- DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) +- +- include(CMakePackageConfigHelpers) +- +- set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) +- configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/OpusConfig.cmake.in +- OpusConfig.cmake +- INSTALL_DESTINATION +- ${CMAKE_INSTALL_PACKAGEDIR} +- PATH_VARS +- INCLUDE_INSTALL_DIR +- INSTALL_PREFIX +- ${CMAKE_INSTALL_PREFIX}) +- write_basic_package_version_file(OpusConfigVersion.cmake +- VERSION ${PROJECT_VERSION} +- COMPATIBILITY SameMajorVersion) +- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/OpusConfig.cmake +- ${CMAKE_CURRENT_BINARY_DIR}/OpusConfigVersion.cmake +- DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) + endif() + + if(OPUS_BUILD_PROGRAMS) diff --git a/cpmfile.json b/cpmfile.json index b2ea69c36e..ff78a16b7f 100644 --- a/cpmfile.json +++ b/cpmfile.json @@ -69,13 +69,17 @@ }, "opus": { "package": "Opus", - "repo": "crueter/opus", - "sha": "ab19c44fad", - "hash": "d632e8f83c5d3245db404bcb637113f9860bf16331498ba2c8e77979d1febee6b52d8b1da448e7d54eeac373e912cd55e3e300fc6c242244923323280dc43fbe", + "repo": "xiph/opus", + "sha": "a3f0ec02b3", + "hash": "9506147b0de35befda8633ff272981cc2575c860874791bd455b752f797fd7dbd1079f0ba42ccdd7bb1fe6773fa5e84b3d75667c2883dd1fb2d0e4a5fa4f8387", "version": "1.3", "find_args": "MODULE", "options": [ "OPUS_PRESUME_NEON ON" + ], + "patches": [ + "0001-disable-clang-runtime-neon.patch", + "0002-no-install.patch" ] }, "boost_headers": { diff --git a/externals/cpmfile.json b/externals/cpmfile.json index 174b17776b..f5e4e02345 100644 --- a/externals/cpmfile.json +++ b/externals/cpmfile.json @@ -37,12 +37,15 @@ }, "cpp-jwt": { "version": "1.4", - "repo": "crueter/cpp-jwt", - "sha": "9eaea6328f", - "hash": "35b0b2bfb143585c7b2bd6dc6ca7df5ae5c6e2681000b2ebca077b0ac4bc1e6b6afbe1ce8e47f6d2edad12fcc6404f677acc2ad205661d819b8821ce6f4823fd", + "repo": "arun11299/cpp-jwt", + "sha": "7f24eb4c32", + "hash": "d11cbd5ddb3197b4c5ca15679bcd76a49963e7b530b7dd132db91e042925efa20dfb2c24ccfbe7ef82a7012af80deff0f72ee25851312ae80381a462df8534b8", "find_args": "CONFIG", "options": [ "CPP_JWT_USE_VENDORED_NLOHMANN_JSON OFF" + ], + "patches": [ + "0001-fix-missing-decl.patch" ] }, "xbyak_sun": { @@ -126,7 +129,7 @@ }, "spirv-tools": { "package": "SPIRV-Tools", - "repo": "crueter/SPIRV-Tools", + "repo": "KhronosGroup/SPIRV-Tools", "sha": "0a7e28689a", "hash": "eadfcceb82f4b414528d99962335e4f806101168474028f3cf7691ac40c37f323decf2a42c525e2d5bfa6f14ff132d6c5cf9b87c151490efad01f5e13ade1520", "git_version": "2025.4",