From 18e16ad3a62bd214e9af4254edee5ced0e3034be Mon Sep 17 00:00:00 2001 From: iFoundSilentHouse Date: Sun, 21 Apr 2024 01:45:17 +0600 Subject: [PATCH] wine: add aarch64 packaging --- srcpkgs/wine/template | 66 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 52 insertions(+), 14 deletions(-) diff --git a/srcpkgs/wine/template b/srcpkgs/wine/template index 0e2b07d222c1e0..48d4e456bb7b8b 100644 --- a/srcpkgs/wine/template +++ b/srcpkgs/wine/template @@ -1,12 +1,12 @@ # Template file for 'wine' pkgname=wine version=9.6 -revision=1 +revision=2 _pkgver=${version/r/-r} create_wrksrc=yes build_wrksrc=wine-${_pkgver} build_style=gnu-configure -configure_args="--bindir=/usr/libexec/wine $(vopt_with xshm)" +configure_args="--bindir=/usr/libexec/wine $(vopt_with xshm) --with-wayland" short_desc="Run Microsoft Windows applications" maintainer="Helmut Pozimski " license="LGPL-2.1-or-later" @@ -18,15 +18,19 @@ checksum="0e0960ed82b6017e882eda3338bad1270a1177b6cf05f03ac1fab155abe82048 # NOTE: wine depends on specific versions of wine-mono and wine-gecko, # check for updates to these packages when updating wine - build_options="mingw staging xshm" -build_options_default="mingw xshm" +build_options_default="xshm" +case "$XBPS_TARGET_MACHINE" in + aarch64*) ;; + *) build_options_default+=" mingw" ;; +esac + desc_option_mingw="Use the MinGW cross compiler to build WinPE DLLs" desc_option_staging="Apply the wine-staging patchset" desc_option_xshm="Enable support for the X Shared Memory Extension" lib32mode=full -archs="i686* x86_64*" +archs="i686* x86_64* aarch64*" patch_args="-Np1 --directory=${build_wrksrc}" @@ -49,7 +53,7 @@ makedepends="gettext-devel ncurses-devel glu-devel libSM-devel freetype-devel pulseaudio-devel giflib-devel v4l-utils-devel fontconfig-devel gnutls-devel dbus-devel sane-devel libpcap-devel cups-devel ocl-icd-devel vulkan-loader gst-plugins-base1-devel - SDL2-devel" + SDL2-devel wayland-devel" depends="libXi libXinerama libXcomposite libXcursor libOSMesa desktop-file-utils hicolor-icon-theme liberation-fonts-ttf gnutls SDL2 wine-common>=${version}_${revision}" @@ -61,8 +65,19 @@ replaces="libwine>=0" # This testsuite might hang indefinitely make_check=extended +subpackages="wine-devel wine-common" +if [ -z "$CROSS_BUILD" ] || [ "$build_option_mingw" ]; then + subpackages+=" wine-tools" +fi + +case "$XBPS_MACHINE" in + aarch64*) no_cross=yes # TODO: testing +esac + + if [ "$XBPS_TARGET_WORDSIZE" != 32 ]; then - configure_args+=" --enable-win64 --libdir=/usr/lib" + _64bit_configure_args=" --enable-win64 --libdir=/usr/lib" + configure_args+=$_64bit_configure_args} _wine_suffix="64" _wineserver_suffix=${_wine_suffix} else @@ -70,11 +85,25 @@ else CFLAGS=" -D_LARGE_FILE_SOURCE=1 -D_FILE_OFFSET_BITS=64" fi +if [ "$CROSS_BUILD" ] && [ -z "$build_option_mingw" ]; then + hostmakedepends+=" ${makedepends} lld17 clang17 llvm17" + pre_configure() { + # native compilation for wine-tools + vsrcextract -C ../wine-tools-for-cross wine-${_pkgver}.tar.xz + cd ../wine-tools-for-cross + env CC=cc LD=ld CXX=g++ \ + CFLAGS="" CXXFLAGS="" LDFLAGS="" \ + ./configure $_64bit_configure_args # not set if 32bit + make ${makejobs} + configure_args+=" --with-wine-tools=../wine-tools-for-cross" + } +fi + if [ "$XBPS_LIBC" = "glibc" ]; then hostmakedepends+=" prelink" fi -if [ "$XBPS_TARGET_LIBC" = "musl" ]; then +if [ "$XBPS_TARGET_LIBC" = "musl" ] && [ "$XBPS_TARGET_MACHINE" != aarch64-musl ]; then configure_args+=" --enable-archs=i386,x86_64" makedepends+=" cross-i686-w64-mingw32" fi @@ -113,12 +142,21 @@ post_install() { mv ${DESTDIR}${_wine_libexec}/wineserver ${DESTDIR}${_wine_libexec}/wineserver${_wineserver_suffix} vbin ${FILESDIR}/wine vbin ${FILESDIR}/wineserver - for file in msiexec regedit regsvr32 wineboot winecfg winepath winemine winefile \ - winedbg wineconsole notepad msidb widl winebuild winecpp winedump wineg++ \ - winegcc winemaker wmc wrc function_grep.pl - do - mv ${DESTDIR}/usr/libexec/wine/${file} ${DESTDIR}/usr/bin/ - done + if [ "$CROSS_BUILD" ] && [ -z "$build_option_mingw" ]; then + # do not install wine-tools for target - they were not compiled + for file in msiexec regedit regsvr32 wineboot winecfg winepath winemine winefile \ + winedbg wineconsole notepad msidb + do + mv ${DESTDIR}/usr/libexec/wine/${file} ${DESTDIR}/usr/bin/ + done + else + for file in msiexec regedit regsvr32 wineboot winecfg winepath winemine winefile \ + winedbg wineconsole notepad msidb widl winebuild winecpp winedump wineg++ \ + winegcc winemaker wmc wrc function_grep.pl + do + mv ${DESTDIR}/usr/libexec/wine/${file} ${DESTDIR}/usr/bin/ + done + fi case $XBPS_TARGET_MACHINE in x86_64*) ln -s ${_wine_libexec}/wine64 ${DESTDIR}/usr/bin/wine64