diff --git a/archlinuxcn/eden-git/0001-fix-package-version.patch b/archlinuxcn/eden-git/0001-fix-package-version.patch new file mode 100644 index 000000000000..35892c9ecae4 --- /dev/null +++ b/archlinuxcn/eden-git/0001-fix-package-version.patch @@ -0,0 +1,34 @@ +From 9a84bad31cbd3c6fdb37536c62ea5b437218cbdb Mon Sep 17 00:00:00 2001 +From: sukanka +Date: Wed, 4 Jun 2025 20:17:28 +0800 +Subject: [PATCH 1/4] fix package version + +no need to pin versions of these packages + +2 2 CMakeLists.txt + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5144dc028a..edc56a16d5 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -310,7 +310,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) + # Enforce the search mode of non-required packages for better and shorter failure messages + find_package(enet 1.3 MODULE) + find_package(fmt 8 REQUIRED) +-find_package(LLVM 17.0.2 MODULE COMPONENTS Demangle) ++find_package(LLVM MODULE COMPONENTS Demangle) + find_package(lz4 REQUIRED) + find_package(nlohmann_json 3.8 REQUIRED) + find_package(Opus 1.3 MODULE) +@@ -358,7 +358,7 @@ if (ENABLE_WEB_SERVICE) + endif() + + if (ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER) +- find_package(httplib 0.12 MODULE COMPONENTS OpenSSL) ++ find_package(httplib MODULE COMPONENTS OpenSSL) + endif() + + if (YUZU_TESTS) +-- +2.49.0 + diff --git a/archlinuxcn/eden-git/0002-fix-function-definition.patch b/archlinuxcn/eden-git/0002-fix-function-definition.patch new file mode 100644 index 000000000000..554daf46b3e0 --- /dev/null +++ b/archlinuxcn/eden-git/0002-fix-function-definition.patch @@ -0,0 +1,32 @@ +From d9162376eb8cdbb5aa77d82d32f217caffa73c36 Mon Sep 17 00:00:00 2001 +From: sukanka +Date: Wed, 4 Jun 2025 20:17:43 +0800 +Subject: [PATCH 2/4] fix function definition + +we need a function `create_target_directory_groups` which is defined in `src/` + +1 1 CMakeLists.txt + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index edc56a16d5..b328c3f41e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -409,7 +409,6 @@ set(FFmpeg_COMPONENTS + avutil + swscale) + +-add_subdirectory(externals) + + if (ENABLE_QT) + if (YUZU_USE_BUNDLED_QT) +@@ -637,6 +636,7 @@ if(MSVC) + endif() + + add_subdirectory(src) ++add_subdirectory(externals) + + # Set yuzu project or yuzu-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not + if(ENABLE_QT) +-- +2.49.0 + diff --git a/archlinuxcn/eden-git/0003-use-system-boost-headers.patch b/archlinuxcn/eden-git/0003-use-system-boost-headers.patch new file mode 100644 index 000000000000..32c9054f2dac --- /dev/null +++ b/archlinuxcn/eden-git/0003-use-system-boost-headers.patch @@ -0,0 +1,40 @@ +From 57d74097a6a09d16809b3e26a19f0e36eafd4a7b Mon Sep 17 00:00:00 2001 +From: sukanka +Date: Wed, 4 Jun 2025 20:18:22 +0800 +Subject: [PATCH 3/4] use system boost headers + +add option to allow system-wide boost headers. + +1 0 CMakeLists.txt +3 1 externals/CMakeLists.txt + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b328c3f41e..957ef7b907 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -308,6 +308,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) + # ======================================================================= + + # Enforce the search mode of non-required packages for better and shorter failure messages ++find_package(Boost REQUIRED context) + find_package(enet 1.3 MODULE) + find_package(fmt 8 REQUIRED) + find_package(LLVM MODULE COMPONENTS Demangle) +diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt +index fd3f54ae4f..754800ed16 100644 +--- a/externals/CMakeLists.txt ++++ b/externals/CMakeLists.txt +@@ -161,7 +161,9 @@ if (YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES) + endif() + + # Boost headers +-add_subdirectory(boost-headers) ++if (YUZU_USE_EXTERNAL_BOOST_HEADERS) ++ add_subdirectory(boost-headers) ++endif() + + # TZDB (Time Zone Database) + add_subdirectory(nx_tzdb) +-- +2.49.0 + diff --git a/archlinuxcn/eden-git/0004-system-mbedtls.patch b/archlinuxcn/eden-git/0004-system-mbedtls.patch new file mode 100644 index 000000000000..85c67accecb8 --- /dev/null +++ b/archlinuxcn/eden-git/0004-system-mbedtls.patch @@ -0,0 +1,74 @@ +From bf8cbea392ba73b09476d8f4fac27802eef37846 Mon Sep 17 00:00:00 2001 +From: sukanka +Date: Wed, 4 Jun 2025 20:19:19 +0800 +Subject: [PATCH 4/4] system mbedtls + +we use system mbedtls here, it works. + +4 0 CMakeLists.txt +0 7 externals/CMakeLists.txt +1 1 src/yuzu/CMakeLists.txt +1 1 src/yuzu_cmd/CMakeLists.txt + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 957ef7b907..669965695b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -321,6 +321,10 @@ find_package(stb MODULE) + find_package(VulkanMemoryAllocator CONFIG) + find_package(ZLIB 1.2 REQUIRED) + find_package(zstd 1.5 REQUIRED) ++set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/lib/mbedtls2/pkgconfig") ++pkg_check_modules(MbedTLS REQUIRED IMPORTED_TARGET GLOBAL mbedtls mbedcrypto) ++include_directories(${MbedTLS_INCLUDE_DIRS}) ++link_directories(${MbedTLS_LIBRARY_DIRS}) + + if (NOT YUZU_USE_EXTERNAL_VULKAN_HEADERS) + find_package(VulkanHeaders 1.3.274 REQUIRED) +diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt +index 754800ed16..bdc1e8e163 100644 +--- a/externals/CMakeLists.txt ++++ b/externals/CMakeLists.txt +@@ -40,13 +40,6 @@ endif() + add_subdirectory(glad) + + # mbedtls +-add_subdirectory(mbedtls) +-target_include_directories(mbedtls PUBLIC ./mbedtls/include) +-if (NOT MSVC) +- target_compile_options(mbedcrypto PRIVATE +- -Wno-unused-but-set-variable +- -Wno-string-concatenation) +-endif() + + # MicroProfile + add_library(microprofile INTERFACE) +diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt +index 440ef3c46d..0562c9a818 100644 +--- a/src/yuzu/CMakeLists.txt ++++ b/src/yuzu/CMakeLists.txt +@@ -397,7 +397,7 @@ endif() + target_link_libraries(yuzu PRIVATE common core input_common frontend_common network video_core) + target_link_libraries(yuzu PRIVATE Boost::headers glad Qt6::Widgets) + target_link_libraries(yuzu PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads) +- ++target_link_libraries(yuzu PRIVATE mbedtls mbedcrypto) + target_link_libraries(yuzu PRIVATE Vulkan::Headers) + if (NOT WIN32) + target_include_directories(yuzu PRIVATE ${Qt6Gui_PRIVATE_INCLUDE_DIRS}) +diff --git a/src/yuzu_cmd/CMakeLists.txt b/src/yuzu_cmd/CMakeLists.txt +index ebd8fd7387..20c2c285d9 100644 +--- a/src/yuzu_cmd/CMakeLists.txt ++++ b/src/yuzu_cmd/CMakeLists.txt +@@ -29,7 +29,7 @@ add_executable(yuzu-cmd + ) + + target_link_libraries(yuzu-cmd PRIVATE common core input_common frontend_common) +-target_link_libraries(yuzu-cmd PRIVATE glad) ++target_link_libraries(yuzu-cmd PRIVATE glad mbedtls mbedcrypto) + if (MSVC) + target_link_libraries(yuzu-cmd PRIVATE getopt) + endif() +-- +2.49.0 + diff --git a/archlinuxcn/eden-git/PKGBUILD b/archlinuxcn/eden-git/PKGBUILD new file mode 100644 index 000000000000..e08ca0872363 --- /dev/null +++ b/archlinuxcn/eden-git/PKGBUILD @@ -0,0 +1,121 @@ +# Maintainer: sukanka +_pkgname=eden +pkgname=${_pkgname,,}-git +_cmd=yuzu +pkgver=0.0.2.pre.alpha.r48 +pkgrel=1 +pkgdesc="Nintendo Switch emulator forked from yuzu" +arch=(x86_64) +url=https://git.eden-emu.dev/eden-emu/eden +license=(GPL-3.0-or-later) +provides=('eden') +depends=('boost-libs' 'hicolor-icon-theme' 'sdl2' 'qt6-base' 'qt6-webengine' 'fmt' 'opus' 'lz4' + 'openssl' 'zstd' 'cubeb' 'enet' 'discord-rpc' 'cpp-httplib' 'dynarmic' 'mbedtls2' 'ffmpeg' +) +makedepends=('llvm' 'git' 'glslang' 'cmake' 'ninja' 'perl' 'clang' 'patch' + 'qt6-tools' 'qt6-multimedia' 'libxkbcommon-x11' 'libzip' 'libfdk-aac' 'libinih' + 'vulkan-memory-allocator' 'vulkan-utility-libraries' 'vulkan-headers' 'spirv-headers' + 'boost' 'nlohmann-json' 'robin-map' 'cpp-jwt' 'gamemode' 'python' 'renderdoc' + + 'xbyak' + + # for documentation + # 'doxygen' 'python-jinja' 'python-jsonschema' 'graphviz' + + # for testing + # 'catch2' +) +optdepends=('qt6-wayland: for Wayland support') +source=( + eden::git+${url}.git + git+https://github.com/yuzu-mirror/sirit.git#commit=ab75463 + git+https://github.com/brofield/simpleini.git#commit=6048871ea9 + "https://github.com/lat9nq/tzdb_to_nx/releases/download/221202/221202.zip" + 0001-fix-package-version.patch + 0002-fix-function-definition.patch + 0003-use-system-boost-headers.patch + 0004-system-mbedtls.patch +) +noextract=('221202.zip') +b2sums=('SKIP' + '91e4cd03d67c930b6d751ca19cf6fbaaba86084412bd13b172186387ea27b461457a3e19bc0af315c807839e64f91c865298678af748e2d6e07df2abc85430ed' + 'fae42bb13f180ab991f6bfc8a45ea3df08ced1d77db77f54cf5a222f93ea468bd6fc0d36d65f9f3739e9813d77dbae31931948dc9afa28e884c53b8128c13c94' + '7bd0ff5ca80cf560344ae7edbfeb7c9466c096dc499a7348276cff5d30aa07464f7e2ea391ca9cedac0e21ba6f563169a8b38f2df729a230a0acfb1125ea1b66' + '734d64131c2e65e78477da569ffcc3a85a5adad437df2d4071d875f9795e97c9b334d51b6528fecf4adbd18f51f2e2d3d3b3ac7fe7e22024fdcc674268c3f2dc' + 'ce00d4eb2746f65582ebdf942c449343f5ac2cd28bf063e0de0c29762c7251db2e569841d02e71cbb0cc016bc383fc4e18762c4a9c7168baa357210600dc01de' + 'da6e2a0e03f94e83e2143be2d19a3a2842e02a3294d8ad1004810ca2e9b538d909c03aa34f965b0c51140b96b1c05c3264288cfb448e8ca14efffb0be3d93512' + '19bf117b20387be3a92f90dec03979aa38315f9bd04ea6df4726b19c541c8d9d48e9edf22e27c449d66884e6f54eedfe9aabe4ff842bc18a91841e7abc6a3854') +pkgver() { + cd "$srcdir/$_pkgname" + git describe --long --abbrev=7 --tags | sed 's/\([^-]*\)-g.*/r\1/;s/-/./g;s/^v//g' +} + +_apply_patch() { + cd $srcdir/$_pkgname + for p in $srcdir/*.patch; do + patch -Np1 <${p} + done + # download tzdata from our zip file + sed -i externals/nx_tzdb/CMakeLists.txt \ + -e "s|https://github.com/lat9nq/tzdb_to_nx/releases/download/\${NX_TZDB_VERSION}|file://${srcdir}|g" + +} +prepare() { + local submods=( + sirit + simpleini + ) + + for pro in ${submods[@]}; do + cp -rf ${srcdir}/${pro}/* $srcdir/$_pkgname/externals/${pro} + done + + ( + _apply_patch + ) + +} + +build() { + export CC=clang + export CXX=clang++ + export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/lib/mbedtls2/pkgconfig + + local cmake_args=( + -GNinja + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON + -DTITLE_BAR_FORMAT_IDLE="$_pkgname $pkgver" + -DTITLE_BAR_FORMAT_RUNNING="$_pkgname $pkgver | {3}" + -DCMAKE_INSTALL_PREFIX=/usr + -DCMAKE_BUILD_TYPE=Release + -DYUZU_ENABLE_COMPATIBILITY_REPORTING=OFF + -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF + -DYUZU_USE_QT_WEB_ENGINE=ON + -DUSE_DISCORD_PRESENCE=ON + -DENABLE_QT_TRANSLATION=ON + -DYUZU_USE_BUNDLED_FFMPEG=OFF + -DYUZU_USE_BUNDLED_QT=OFF + -DYUZU_USE_EXTERNAL_SDL2=OFF + -DYUZU_CHECK_SUBMODULES=OFF + -DYUZU_USE_EXTERNAL_VULKAN_HEADERS=OFF + -DYUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES=OFF + -DYUZU_USE_FASTER_LD=OFF + -DYUZU_USE_PRECOMPILED_HEADERS=OFF + -DYUZU_USE_QT_MULTIMEDIA=ON + # download timezone data from our zip file. + -DYUZU_DOWNLOAD_TIME_ZONE_DATA=ON + -DYUZU_TESTS=OFF + -DSIRIT_USE_SYSTEM_SPIRV_HEADERS=ON + -DUSE_SYSTEM_QT=ON + -DCMAKE_POLICY_VERSION_MINIMUM=3.5 + ) + install -d build + cmake -S ${_pkgname} -B build "${cmake_args[@]}" + ninja -C build + +} + +package() { + install -Dm644 $srcdir/${_pkgname}/dist/72-${_cmd}-input.rules -t ${pkgdir}/usr/lib/udev/rules.d/ + DESTDIR="$pkgdir/" ninja -C $srcdir/build install +} diff --git a/archlinuxcn/eden-git/lilac.yaml b/archlinuxcn/eden-git/lilac.yaml new file mode 100644 index 000000000000..7c8a688b49a4 --- /dev/null +++ b/archlinuxcn/eden-git/lilac.yaml @@ -0,0 +1,26 @@ +maintainers: + - github: sukanka + email: su975853527@gmail.com + +build_prefix: extra-x86_64 + +pre_build: vcs_update +post_build: git_pkgbuild_commit + +repo_depends: + - discord-rpc-git + - cubeb-git + - cpp-httplib + - cpp-jwt + - vulkan-memory-allocator-git + - xbyak + - dynarmic + +update_on: + - source: alpm + alpm: fmt + repo: extra + - source: alpm + alpm: openssl + - alias: boost + - source: vcs