diff --git a/emulators/wine-devel/Makefile b/emulators/wine-devel/Makefile index 2e546496f9a6..5a4537341928 100644 --- a/emulators/wine-devel/Makefile +++ b/emulators/wine-devel/Makefile @@ -1,195 +1,195 @@ PORTNAME= wine DISTVERSION= 7.22 -PORTREVISION= 1 +PORTREVISION= 2 PORTEPOCH= 1 CATEGORIES= emulators MASTER_SITES= https://dl.winehq.org/wine/source/7.x/ PKGNAMESUFFIX= -devel DISTFILES= ${DISTNAME}${EXTRACT_SUFX} MAINTAINER= damjan.jov@gmail.com COMMENT= Microsoft Windows compatibility environment WWW= https://www.winehq.org LICENSE= LGPL21 LGPL3 LICENSE_COMB= dual LICENSE_FILE= ${WRKSRC}/LICENSE ONLY_FOR_ARCHS= amd64 i386 BUILD_DEPENDS= ${LOCALBASE}/bin/flex:textproc/flex llvm${_LLVM_VERSION}>=0:devel/llvm${_LLVM_VERSION} USES= bison cpe desktop-file-utils gmake localbase \ pkgconfig sdl shebangfix tar:xz USE_GCC= yes USE_SDL= sdl2 CPE_VENDOR= winehq CONFLICTS_INSTALL= wine GNU_CONFIGURE= yes CONFIGURE_ARGS+=--verbose \ --disable-kerberos \ --disable-tests \ --without-capi \ --without-coreaudio \ --without-dbus \ --without-gettext --without-gettextpo \ --without-gphoto \ --without-gssapi \ --without-gstreamer \ --without-inotify \ --without-krb5 \ --with-mingw CROSSCC="clang" CROSSCFLAGS="-isystem ${FILESDIR}/clang" \ --without-netapi \ --without-opencl \ --without-osmesa \ --with-pcap \ --with-pthread \ --without-pulse \ --without-sane \ --with-sdl \ --without-udev \ --without-unwind \ --without-usb CONFIGURE_ENV= CPPBIN="${CPP}" FLEX="${LOCALBASE}/bin/flex" WINELIBDIR= ${PREFIX}/lib .if !defined(USE_LDCONFIG32) USE_LDCONFIG= ${WINELIBDIR} ${WINELIBDIR}/wine .endif SHEBANG_FILES= tools/make_requests tools/winemaker/winemaker \ tools/winedump/function_grep.pl BINARY_ALIAS+= clang=${LOCALBASE}/bin/clang${_LLVM_VERSION} \ lld-link=${LOCALBASE}/bin/lld-link${_LLVM_VERSION} SUB_FILES= pkg-message PORTDATA= wine.inf OPTIONS_DEFINE= CUPS DOCS DOSBOX GNUTLS STAGING V4L WINEMAKER X11 GECKO MONO OPTIONS_DEFAULT=GNUTLS OSS X11 OPTIONS_RADIO= AUDIO OPTIONS_RADIO_AUDIO= ALSA OSS OPTIONS_SUB= yes DOSBOX_DESC= Use DOSBox to run MS-DOS programs STAGING_DESC= Include Wine Staging patchset (experimental&unsupported) WINEMAKER_DESC= Fully support winemaker (requires Perl) GECKO_DESC= Bundle Gecko MSI package for Wine MONO_DESC= Bundle Mono MSI package for Wine ALSA_CONFIGURE_ON= --with-alsa --without-oss ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib CUPS_CONFIGURE_WITH= cups CUPS_LIB_DEPENDS= libcups.so:print/cups DOSBOX_RUN_DEPENDS= dosbox:emulators/dosbox GECKO_RUN_DEPENDS= wine-gecko-devel>0:emulators/wine-gecko-devel GNUTLS_CONFIGURE_WITH= gnutls GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls MONO_RUN_DEPENDS= wine-mono-devel>0:emulators/wine-mono-devel OSS_CONFIGURE_ON= --without-alsa --with-oss STAGING_MASTER_SITES= https://github.com/wine-staging/wine-staging/archive/:staging STAGING_DIST= v${DISTVERSION}.tar.gz STAGING_DISTFILES= ${STAGING_DIST}:staging STAGING_EXTRACT_DEPENDS= bash:shells/bash \ git:devel/git \ autoconf>0:devel/autoconf \ gawk:lang/gawk STAGING_LIB_DEPENDS= libtxc_dxtn.so:graphics/s2tc V4L_CONFIGURE_WITH= v4l2 V4L_BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat V4L_LIB_DEPENDS= libv4l2.so:multimedia/libv4l WINEMAKER_RUN_DEPENDS= p5-XML-LibXML>0:textproc/p5-XML-LibXML X11_CONFIGURE_WITH= x fontconfig freetype opengl xinerama xinput2 xrandr xrender X11_USES= gl xorg X11_USE= GL=glu XORG=x11,xext,xcomposite,xcursor,xi,xinerama,xrandr,xrender X11_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libvulkan.so:graphics/vulkan-loader .include .if ${PORT_OPTIONS:MSTAGING} && ${OSVERSION} < 1300000 BROKEN= build failure .endif .if (${LLVM_DEFAULT} == 10 || ${LLVM_DEFAULT} == 11) _LLVM_VERSION= 12 .else _LLVM_VERSION= ${LLVM_DEFAULT} .endif .if ${ARCH} == amd64 # Wine is composed of three parts: # - wine (aka this port on FreeBSD/i386) is the 32-bit component # and runs 32-bit programs. # - wine64 (aka this part of this port on FreeBSD/amd64) is the # 64-bit component and runs 64-bit programs. # - wow64 (aka this port built on FreeBSD/i386) is a part of the # 64-bit component [wine64] that runs 32-bit programs on FreeBSD/amd64. # --libdir is required since Wine defaults to "${PREFIX}/lib64" on amd64. CONFIGURE_ARGS+= --enable-win64 --libdir=${PREFIX}/lib PLIST_SUB+= WINE32="@comment " WINE64="" WINEARCH="x86_64" # Wine assumes a WoW64 package is available, which is not the case on # FreeBSD yet. post-patch: ${REINPLACE_CMD} '/Exec/s|wine|wine64|g' ${WRKSRC}/loader/wine.desktop .else PLIST_SUB+= WINE32="" WINE64="@comment " WINEARCH="i386" .endif post-extract-STAGING-on: fix-shebang @${LN} -s ${WRKDIR}/${PORTNAME}-staging-${DISTVERSION}/patches ${WRKSRC}/patches post-patch-STAGING-on: cd ${WRKSRC} && ${PATCH} -p0 < ${PATCHDIR}/extra-gitapply cd ${WRKSRC} && bash ./patches/patchinstall.sh --backend=patch DESTDIR=${WRKSRC} --all pre-build: cd ${WRKSRC} && ${MAKE_CMD} depend post-install: .if ${ARCH} == i386 ${MV} ${STAGEDIR}${PREFIX}/bin/wineserver ${STAGEDIR}${PREFIX}/bin/wineserver32 ${MV} ${STAGEDIR}${PREFIX}/bin/wine ${STAGEDIR}${PREFIX}/bin/wine.bin -${ELFCTL} -e +noaslr ${STAGEDIR}${PREFIX}/bin/wine.bin ${INSTALL_SCRIPT} ${FILESDIR}/wine.sh ${STAGEDIR}${PREFIX}/bin/wine .else ${MV} ${STAGEDIR}${PREFIX}/bin/wine64 ${STAGEDIR}${PREFIX}/bin/wine64.bin -${ELFCTL} -e +noaslr ${STAGEDIR}${PREFIX}/bin/wine64.bin ${INSTALL_SCRIPT} ${FILESDIR}/wine.sh ${STAGEDIR}${PREFIX}/bin/wine64 ${INSTALL_SCRIPT} ${FILESDIR}/wine-wow64.sh ${STAGEDIR}${PREFIX}/bin/wine ${INSTALL_SCRIPT} ${FILESDIR}/pkg32.sh ${STAGEDIR}${DATADIR}/pkg32.sh .endif @${MKDIR} ${STAGEDIR}${DOCSDIR} .for i in README ANNOUNCE AUTHORS ${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR} .endfor ${INSTALL_DATA} ${WRKSRC}/programs/winedbg/README ${STAGEDIR}${DOCSDIR}/README.winedbg ${INSTALL_DATA} ${WRKSRC}/tools/winedump/README ${STAGEDIR}${DOCSDIR}/README.winedump check-wine-devel-vs-staging: @${GREP} %%STAGING%% pkg-plist | while read f; do \ f=`echo $$f | ${SED} -e 's:%%STAGING%%::' -e "s:%%DATADIR%%:${DATADIR}:"`; \ if [ -f "$$STAGEDIR/$$PREFIX/$$f" ] || [ -f "$$STAGEDIR/$$f" ]; then \ ${PRINTF} "%s no longer contingent on %%STAGING%%?\n" "$$f"; \ fi \ done .include diff --git a/emulators/wine-devel/files/wine-wow64.sh b/emulators/wine-devel/files/wine-wow64.sh index 796f26787c8c..ca324c2d50a2 100644 --- a/emulators/wine-devel/files/wine-wow64.sh +++ b/emulators/wine-devel/files/wine-wow64.sh @@ -1,56 +1,58 @@ #!/bin/sh -e TARGET="$(realpath "$0")" PREFIX="${TARGET%/*/*}" LOCALBASE="${PREFIX}" I386_ROOT="${WINE_i386_ROOT:-$HOME/.i386-wine-pkg}" if [ ! -f "$I386_ROOT/$PREFIX/bin/wine" ] then printf "%s doesn't exist!\n\n" "$I386_ROOT/$PREFIX/bin/wine" printf "Try installing 32-bit Wine with\n\t%s\n" "$PREFIX/share/wine/pkg32.sh install wine mesa-dri" ABI=$(pkg config ABI | sed s/amd64/i386/) FREEBSD_VERSION_MAJOR=`uname -r | sed "s/\..*//"` cat <<- HERE If using Poudriere, please make sure your repo is setup to use ${ABI} and create symlinks for FreeBSD:$FREEBSD_VERSION_MAJOR:amd64 and FreeBSD:$FREEBSD_VERSION_MAJOR:i386 to the relevant output directories. See pkg.conf(5) for more info. HERE exit 1 fi WINE32_VERSION=$(env -u WINELOADERNOEXEC "$I386_ROOT/$PREFIX/bin/wine" --version) WINE64_VERSION=$(env -u WINELOADERNOEXEC "${TARGET}64" --version) if [ "$WINE32_VERSION" != "$WINE64_VERSION" ] then printf "wine [%s] and wine64 [%s] versions do not match!\n\n" "$WINE32_VERSION" "$WINE64_VERSION" printf "Try updating 32-bit wine with\n\t%s\n" "$PREFIX/share/wine/pkg32.sh upgrade" exit 1 fi -export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH:+$LIBGL_DRIVERS_PATH:}$LOCALBASE/lib/dri:$LOCALBASE/lib32/dri:$I386_ROOT/$LOCALBASE/lib/dri" +export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH:+$LIBGL_DRIVERS_PATH:}$LOCALBASE/lib/dri-devel:$LOCALBASE/lib32/dri-devel:$I386_ROOT/$LOCALBASE/lib/dri-devel:$LOCALBASE/lib/dri:$LOCALBASE/lib32/dri:$I386_ROOT/$LOCALBASE/lib/dri" export LD_32_LIBRARY_PATH="${LD_32_LIBRARY_PATH:+$LD_32_LIBRARY_PATH:}$I386_ROOT/$PREFIX/lib/wine:$LOCALBASE/lib32:$I386_ROOT/$LOCALBASE/lib" for d in "$I386_ROOT/$LOCALBASE"/llvm*/lib do if [ -d "$d" ] then export LD_32_LIBRARY_PATH="$LD_32_LIBRARY_PATH:$d" fi done export LD_32_LIBRARY_PATH_RPATH=y +LD_32_LIBMAP_CONF=$(sed "s,$LOCALBASE,$I386_ROOT&,2" "$I386_ROOT/$LOCALBASE"/etc/libmap.d/*.conf 2>/dev/null || true) export LD_32_LIBMAP=" libgcc_s.so.1 /usr/lib32/libgcc_s.so.1 $LOCALBASE/lib/libvulkan_intel.so $I386_ROOT/$LOCALBASE/lib/libvulkan_intel.so $LOCALBASE/lib/libvulkan_radeon.so $I386_ROOT/$LOCALBASE/lib/libvulkan_radeon.so +$LD_32_LIBMAP_CONF $LD_32_LIBMAP" if [ -z "$WINE_NO_WOW64" ] then export WINESERVER="${TARGET}server" fi exec "$I386_ROOT/$PREFIX/bin/wine" "$@" diff --git a/emulators/wine-proton/Makefile b/emulators/wine-proton/Makefile index 24b84e87797d..8004d3e137fb 100644 --- a/emulators/wine-proton/Makefile +++ b/emulators/wine-proton/Makefile @@ -1,148 +1,148 @@ PORTNAME= wine-proton DISTVERSION= 7.0-5 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= emulators MAINTAINER= iwtcex@gmail.com COMMENT= Wine with a bit of extra spice WWW= https://github.com/ValveSoftware/wine LICENSE= LGPL21 LGPL3 LICENSE_COMB= dual LICENSE_FILE= ${WRKSRC}/LICENSE IGNORE_FreeBSD_12=requires F_ADD_SEALS ONLY_FOR_ARCHS= amd64 i386 BUILD_DEPENDS= ${LOCALBASE}/bin/flex:textproc/flex \ llvm${_LLVM_VERSION}>=0:devel/llvm${_LLVM_VERSION} LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libgnutls.so:security/gnutls \ libvulkan.so:graphics/vulkan-loader USES= autoreconf bison desktop-file-utils gettext-runtime gl gmake gnome gstreamer localbase openal pkgconfig python:build sdl shebangfix tar:xz xorg USE_GCC= yes PIE_UNSAFE= yes USE_GITHUB= yes GH_ACCOUNT= ValveSoftware GH_PROJECT= wine GH_TAGNAME= 492470267af486cb24ad0deaa028168eb94618a4 USE_GL= gl USE_GNOME= glib20 USE_GSTREAMER= gl mpeg2dec x264 # https://github.com/ValveSoftware/wine/commit/8cdd506d7e68c27cd564c317320bfc8d3a999eda USE_SDL= sdl2 USE_XORG= x11 xext xcomposite xcursor xi xinerama xrandr xrender SHEBANG_FILES= tools/make_requests tools/winemaker/winemaker \ tools/winedump/function_grep.pl GNU_CONFIGURE= yes GNU_CONFIGURE_PREFIX= ${PREFIX}/${PORTNAME} CONFIGURE_ARGS= --verbose \ --libdir=${PREFIX}/${PORTNAME}/lib \ --disable-kerberos \ --disable-tests \ --with-fontconfig \ --with-freetype \ --with-gnutls \ --with-gstreamer \ --with-openal \ --with-opengl \ --with-oss \ --with-sdl \ --with-vulkan \ --with-x \ --with-xinerama \ --with-xinput2 \ --with-xrandr \ --with-xrender \ --with-pcap \ --with-pthread \ --with-mingw CROSSCC="clang" CROSSCFLAGS="-isystem ${FILESDIR}/clang" \ --without-alsa \ --without-capi \ --without-coreaudio \ --without-cups \ --without-dbus \ --without-gettext \ --without-gettextpo \ --without-gphoto \ --without-gssapi \ --without-inotify \ --without-krb5 \ --without-ldap \ --without-netapi \ --without-opencl \ --without-osmesa \ --without-sane \ --without-udev \ --without-unwind \ --without-usb \ --without-v4l2 \ --without-vkd3d CONFIGURE_ENV= CPPBIN="${CPP}" FLEX="${LOCALBASE}/bin/flex" JXRLIB_CFLAGS="-I${LOCALBASE}/include/jxrlib" CFLAGS+= -D__NR_futex="-1" BINARY_ALIAS+= clang=${LOCALBASE}/bin/clang${_LLVM_VERSION} \ lld-link=${LOCALBASE}/bin/lld-link${_LLVM_VERSION} OPTIONS_DEFINE= PULSEAUDIO OPTIONS_DEFAULT=PULSEAUDIO OPTIONS_SUB= yes PULSEAUDIO_DESC= Build winepulse.drv PULSEAUDIO_BUILD_DEPENDS= ${LOCALBASE}/include/pulse/pulseaudio.h:audio/pulseaudio PULSEAUDIO_CONFIGURE_ON= --with-pulse PULSEAUDIO_CONFIGURE_OFF= --without-pulse .include .if (${LLVM_DEFAULT} == 10 || ${LLVM_DEFAULT} == 11) _LLVM_VERSION= 12 .else _LLVM_VERSION= ${LLVM_DEFAULT} .endif .if ${ARCH} == amd64 PLIST_SUB+= WINE32="@comment " WINE64="" WINEARCH="x86_64" CONFIGURE_ARGS+=--enable-win64 .else PLIST_SUB+= WINE32="" WINE64="@comment " WINEARCH="i386" .endif pre-configure: cd ${WRKSRC} && ${PYTHON_CMD} dlls/winevulkan/make_vulkan --xml vk.xml pre-build: cd ${WRKSRC} && ${MAKE_CMD} depend cd ${WRKSRC} && tools/make_requests post-install: .if ${ARCH} == i386 ${MV} ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wineserver ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wineserver32 ${MV} ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine.bin -${ELFCTL} -e +noaslr ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine.bin ${INSTALL_SCRIPT} ${FILESDIR}/wine.sh ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine .else ${INSTALL_SCRIPT} ${FILESDIR}/pkg32.sh ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/pkg32.sh ${MV} ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine64 ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine64.bin -${ELFCTL} -e +noaslr ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine64.bin ${INSTALL_SCRIPT} ${FILESDIR}/wine.sh ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine64 ${INSTALL_SCRIPT} ${FILESDIR}/wine-wow64.sh ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine .endif ${RM} -r ${STAGEDIR}${PREFIX}/${PORTNAME}/include ${RM} -r ${STAGEDIR}${MANPREFIX}/man ${MKDIR} ${STAGEDIR}${DOCSDIR} .for i in README ANNOUNCE AUTHORS ${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR} .endfor .include diff --git a/emulators/wine-proton/files/wine-wow64.sh b/emulators/wine-proton/files/wine-wow64.sh index d3fa16776c5f..91bd4a6f0115 100644 --- a/emulators/wine-proton/files/wine-wow64.sh +++ b/emulators/wine-proton/files/wine-wow64.sh @@ -1,57 +1,59 @@ #!/bin/sh -e TARGET="$(realpath "$0")" PREFIX="${TARGET%/*/*}" LOCALBASE="${PREFIX%/*}" I386_ROOT="${WINE_i386_ROOT:-$HOME/.i386-wine-pkg}" if [ ! -f "$I386_ROOT/$PREFIX/bin/wine" ] then printf "%s doesn't exist!\n\n" "$I386_ROOT/$PREFIX/bin/wine" printf "Try installing 32-bit Wine with\n\t%s\n" "$PREFIX/bin/pkg32.sh install wine-proton mesa-dri" ABI=$(pkg config ABI | sed s/amd64/i386/) FREEBSD_VERSION_MAJOR=`uname -r | sed "s/\..*//"` cat <<- HERE If using Poudriere, please make sure your repo is setup to use ${ABI} and create symlinks for FreeBSD:$FREEBSD_VERSION_MAJOR:amd64 and FreeBSD:$FREEBSD_VERSION_MAJOR:i386 to the relevant output directories. See pkg.conf(5) for more info. HERE exit 1 fi WINE32_VERSION=$(env -u WINELOADERNOEXEC "$I386_ROOT/$PREFIX/bin/wine" --version) WINE64_VERSION=$(env -u WINELOADERNOEXEC "${TARGET}64" --version) if [ "$WINE32_VERSION" != "$WINE64_VERSION" ] then printf "wine [%s] and wine64 [%s] versions do not match!\n\n" "$WINE32_VERSION" "$WINE64_VERSION" printf "Try updating 32-bit wine with\n\t%s\n" "$PREFIX/bin/pkg32.sh upgrade" exit 1 fi -export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH:+$LIBGL_DRIVERS_PATH:}$LOCALBASE/lib/dri:$LOCALBASE/lib32/dri:$I386_ROOT/$LOCALBASE/lib/dri" +export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH:+$LIBGL_DRIVERS_PATH:}$LOCALBASE/lib/dri-devel:$LOCALBASE/lib32/dri-devel:$I386_ROOT/$LOCALBASE/lib/dri-devel:$LOCALBASE/lib/dri:$LOCALBASE/lib32/dri:$I386_ROOT/$LOCALBASE/lib/dri" export LD_32_LIBRARY_PATH="${LD_32_LIBRARY_PATH:+$LD_32_LIBRARY_PATH:}$I386_ROOT/$PREFIX/lib/wine:$LOCALBASE/lib32:$I386_ROOT/$LOCALBASE/lib" for d in "$I386_ROOT/$LOCALBASE"/llvm*/lib do if [ -d "$d" ] then export LD_32_LIBRARY_PATH="$LD_32_LIBRARY_PATH:$d" fi done export LD_32_LIBRARY_PATH_RPATH=y +LD_32_LIBMAP_CONF=$(sed "s,$LOCALBASE,$I386_ROOT&,2" "$I386_ROOT/$LOCALBASE"/etc/libmap.d/*.conf 2>/dev/null || true) export LD_32_LIBMAP=" libgcc_s.so.1 /usr/lib32/libgcc_s.so.1 $LOCALBASE/lib/libvulkan_intel.so $I386_ROOT/$LOCALBASE/lib/libvulkan_intel.so $LOCALBASE/lib/libvulkan_radeon.so $I386_ROOT/$LOCALBASE/lib/libvulkan_radeon.so +$LD_32_LIBMAP_CONF $LD_32_LIBMAP" if [ -z "$WINE_NO_WOW64" ] then export PATH="${TARGET%/*}:${PATH}" export WINESERVER="${TARGET}server" fi exec "$I386_ROOT/$PREFIX/bin/wine" "$@" diff --git a/emulators/wine/Makefile b/emulators/wine/Makefile index d3a0b2ce41b2..652a179359a4 100644 --- a/emulators/wine/Makefile +++ b/emulators/wine/Makefile @@ -1,163 +1,163 @@ PORTNAME= wine DISTVERSION= 7.0.2 -PORTREVISION= 1 +PORTREVISION= 2 PORTEPOCH= 1 CATEGORIES= emulators MASTER_SITES= https://dl.winehq.org/wine/source/7.0/ MAINTAINER= gerald@FreeBSD.org COMMENT= Microsoft Windows compatibility environment WWW= https://www.winehq.org LICENSE= LGPL21 LGPL3 LICENSE_COMB= dual LICENSE_FILE= ${WRKSRC}/LICENSE ONLY_FOR_ARCHS= amd64 i386 BUILD_DEPENDS= ${LOCALBASE}/bin/flex:textproc/flex USES= bison cpe desktop-file-utils gmake localbase \ pkgconfig sdl shebangfix tar:xz USE_GCC= yes USE_SDL= sdl2 CPE_VENDOR= winehq CONFLICTS_INSTALL= wine-devel GNU_CONFIGURE= yes CONFIGURE_ARGS+=--verbose \ --disable-kerberos \ --disable-tests \ --without-capi \ --without-coreaudio \ --without-dbus \ --without-gettext --without-gettextpo \ --without-gphoto \ --without-gssapi \ --without-gstreamer \ --without-inotify \ --without-krb5 \ --without-mingw \ --without-netapi \ --without-opencl \ --without-osmesa \ --with-pcap \ --with-pthread \ --without-pulse \ --without-sane \ --with-sdl \ --without-udev \ --without-unwind \ --without-usb CONFIGURE_ENV= CPPBIN="${CPP}" FLEX="${LOCALBASE}/bin/flex" WINELIBDIR= ${PREFIX}/lib .if !defined(USE_LDCONFIG32) USE_LDCONFIG= ${WINELIBDIR} ${WINELIBDIR}/wine .endif SHEBANG_FILES= tools/make_requests tools/winemaker/winemaker \ tools/winedump/function_grep.pl SUB_FILES= pkg-message PORTDATA= wine.inf OPTIONS_DEFINE= CUPS DOCS DOSBOX GNUTLS LDAP OPENAL V4L WINEMAKER X11 GECKO MONO OPTIONS_DEFAULT=GNUTLS OPENAL OSS X11 OPTIONS_RADIO= AUDIO OPTIONS_RADIO_AUDIO= ALSA OSS OPTIONS_SUB= yes DOSBOX_DESC= Use DOSBox to run MS-DOS programs WINEMAKER_DESC= Fully support winemaker (requires Perl) GECKO_DESC= Bundle Gecko MSI package for Wine MONO_DESC= Bundle Mono MSI package for Wine PORTSCOUT= limit:^7\.0 ALSA_CONFIGURE_ON= --with-alsa --without-oss ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib CUPS_CONFIGURE_WITH= cups CUPS_LIB_DEPENDS= libcups.so:print/cups DOSBOX_RUN_DEPENDS= dosbox:emulators/dosbox GECKO_RUN_DEPENDS= wine-gecko>0:emulators/wine-gecko GNUTLS_CONFIGURE_WITH= gnutls GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls LDAP_CONFIGURE_WITH= ldap LDAP_USES= ldap MONO_RUN_DEPENDS= wine-mono>0:emulators/wine-mono OPENAL_CONFIGURE_WITH= openal OPENAL_USES= openal OSS_CONFIGURE_ON= --without-alsa --with-oss V4L_CONFIGURE_WITH= v4l2 V4L_BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat V4L_LIB_DEPENDS= libv4l2.so:multimedia/libv4l WINEMAKER_RUN_DEPENDS= p5-XML-LibXML>0:textproc/p5-XML-LibXML X11_CONFIGURE_WITH= x fontconfig freetype opengl vkd3d xinerama xinput2 xrandr xrender X11_USES= gl xorg X11_USE= GL=glu XORG=x11,xext,xcomposite,xcursor,xi,xinerama,xrandr,xrender X11_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libvulkan.so:graphics/vulkan-loader \ libvkd3d.so:graphics/vkd3d .include .if ${ARCH} == amd64 # Wine is composed of three parts: # - wine (aka this port on FreeBSD/i386) is the 32-bit component # and runs 32-bit programs. # - wine64 (aka this part of this port on FreeBSD/amd64) is the # 64-bit component and runs 64-bit programs. # - wow64 (aka this port built on FreeBSD/i386) is a part of the # 64-bit component [wine64] that runs 32-bit programs on FreeBSD/amd64. # --libdir is required since Wine defaults to "${PREFIX}/lib64" on amd64. CONFIGURE_ARGS+= --enable-win64 --libdir=${PREFIX}/lib PLIST_SUB+= WINE32="@comment " WINE64="" WINEARCH="x86_64" # Wine assumes a WoW64 package is available, which is not the case on # FreeBSD yet. post-patch: ${REINPLACE_CMD} '/Exec/s|wine|wine64|g' ${WRKSRC}/loader/wine.desktop .else PLIST_SUB+= WINE32="" WINE64="@comment " WINEARCH="i386" .endif pre-build: cd ${WRKSRC} && ${MAKE_CMD} depend post-install: .if ${ARCH} == i386 ${MV} ${STAGEDIR}${PREFIX}/bin/wineserver ${STAGEDIR}${PREFIX}/bin/wineserver32 ${MV} ${STAGEDIR}${PREFIX}/bin/wine ${STAGEDIR}${PREFIX}/bin/wine.bin -${ELFCTL} -e +noaslr ${STAGEDIR}${PREFIX}/bin/wine.bin ${INSTALL_SCRIPT} ${FILESDIR}/wine.sh ${STAGEDIR}${PREFIX}/bin/wine .else ${MV} ${STAGEDIR}${PREFIX}/bin/wine64 ${STAGEDIR}${PREFIX}/bin/wine64.bin -${ELFCTL} -e +noaslr ${STAGEDIR}${PREFIX}/bin/wine64.bin ${INSTALL_SCRIPT} ${FILESDIR}/wine.sh ${STAGEDIR}${PREFIX}/bin/wine64 ${INSTALL_SCRIPT} ${FILESDIR}/wine-wow64.sh ${STAGEDIR}${PREFIX}/bin/wine ${INSTALL_SCRIPT} ${FILESDIR}/pkg32.sh ${STAGEDIR}${DATADIR}/pkg32.sh .endif @${MKDIR} ${STAGEDIR}${DOCSDIR} .for i in README ANNOUNCE AUTHORS ${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR} .endfor ${INSTALL_DATA} ${WRKSRC}/programs/winedbg/README ${STAGEDIR}${DOCSDIR}/README.winedbg ${INSTALL_DATA} ${WRKSRC}/tools/winedump/README ${STAGEDIR}${DOCSDIR}/README.winedump .include diff --git a/emulators/wine/files/wine-wow64.sh b/emulators/wine/files/wine-wow64.sh index 796f26787c8c..ca324c2d50a2 100644 --- a/emulators/wine/files/wine-wow64.sh +++ b/emulators/wine/files/wine-wow64.sh @@ -1,56 +1,58 @@ #!/bin/sh -e TARGET="$(realpath "$0")" PREFIX="${TARGET%/*/*}" LOCALBASE="${PREFIX}" I386_ROOT="${WINE_i386_ROOT:-$HOME/.i386-wine-pkg}" if [ ! -f "$I386_ROOT/$PREFIX/bin/wine" ] then printf "%s doesn't exist!\n\n" "$I386_ROOT/$PREFIX/bin/wine" printf "Try installing 32-bit Wine with\n\t%s\n" "$PREFIX/share/wine/pkg32.sh install wine mesa-dri" ABI=$(pkg config ABI | sed s/amd64/i386/) FREEBSD_VERSION_MAJOR=`uname -r | sed "s/\..*//"` cat <<- HERE If using Poudriere, please make sure your repo is setup to use ${ABI} and create symlinks for FreeBSD:$FREEBSD_VERSION_MAJOR:amd64 and FreeBSD:$FREEBSD_VERSION_MAJOR:i386 to the relevant output directories. See pkg.conf(5) for more info. HERE exit 1 fi WINE32_VERSION=$(env -u WINELOADERNOEXEC "$I386_ROOT/$PREFIX/bin/wine" --version) WINE64_VERSION=$(env -u WINELOADERNOEXEC "${TARGET}64" --version) if [ "$WINE32_VERSION" != "$WINE64_VERSION" ] then printf "wine [%s] and wine64 [%s] versions do not match!\n\n" "$WINE32_VERSION" "$WINE64_VERSION" printf "Try updating 32-bit wine with\n\t%s\n" "$PREFIX/share/wine/pkg32.sh upgrade" exit 1 fi -export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH:+$LIBGL_DRIVERS_PATH:}$LOCALBASE/lib/dri:$LOCALBASE/lib32/dri:$I386_ROOT/$LOCALBASE/lib/dri" +export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH:+$LIBGL_DRIVERS_PATH:}$LOCALBASE/lib/dri-devel:$LOCALBASE/lib32/dri-devel:$I386_ROOT/$LOCALBASE/lib/dri-devel:$LOCALBASE/lib/dri:$LOCALBASE/lib32/dri:$I386_ROOT/$LOCALBASE/lib/dri" export LD_32_LIBRARY_PATH="${LD_32_LIBRARY_PATH:+$LD_32_LIBRARY_PATH:}$I386_ROOT/$PREFIX/lib/wine:$LOCALBASE/lib32:$I386_ROOT/$LOCALBASE/lib" for d in "$I386_ROOT/$LOCALBASE"/llvm*/lib do if [ -d "$d" ] then export LD_32_LIBRARY_PATH="$LD_32_LIBRARY_PATH:$d" fi done export LD_32_LIBRARY_PATH_RPATH=y +LD_32_LIBMAP_CONF=$(sed "s,$LOCALBASE,$I386_ROOT&,2" "$I386_ROOT/$LOCALBASE"/etc/libmap.d/*.conf 2>/dev/null || true) export LD_32_LIBMAP=" libgcc_s.so.1 /usr/lib32/libgcc_s.so.1 $LOCALBASE/lib/libvulkan_intel.so $I386_ROOT/$LOCALBASE/lib/libvulkan_intel.so $LOCALBASE/lib/libvulkan_radeon.so $I386_ROOT/$LOCALBASE/lib/libvulkan_radeon.so +$LD_32_LIBMAP_CONF $LD_32_LIBMAP" if [ -z "$WINE_NO_WOW64" ] then export WINESERVER="${TARGET}server" fi exec "$I386_ROOT/$PREFIX/bin/wine" "$@"