Skip to content

Commit

Permalink
feat: added wine-proton 9.0-2
Browse files Browse the repository at this point in the history
  • Loading branch information
thindil committed Sep 18, 2024
1 parent 649b657 commit a8eb91d
Show file tree
Hide file tree
Showing 21 changed files with 2,247 additions and 2 deletions.
5 changes: 3 additions & 2 deletions build.nims
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright © 2022-2023 Bartek Jasicki <thindil@laeran.pl>
# Copyright © 2022-2024 Bartek Jasicki
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
Expand Down Expand Up @@ -48,7 +48,8 @@ const options = {"6.3-2": ["fb16dfecae4a6efac9f3a78e0b759fb7a3c53de4", "proton"]
"7.0-36": ["", "proton"],
"8.0-5": ["", "proton"],
"8.0-18": ["", "proton"],
"8.0-25": ["", "proton"]}.toTable
"8.0-25": ["", "proton"],
"9.0-2": ["", "proton"]}.toTable

# Set some variables needed to build the selected Wine version.
let
Expand Down
161 changes: 161 additions & 0 deletions new/9.0-2/wine-proton/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
PORTNAME= wine-proton
DISTVERSION= 9.0-2
PORTREVISION= 0
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

ONLY_FOR_ARCHS= amd64 i386

BUILD_DEPENDS= ${LOCALBASE}/bin/flex:textproc/flex \
${LOCALBASE}/include/linux/input.h:devel/evdev-proto

LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
libgnutls.so:security/gnutls \
libvulkan.so:graphics/vulkan-loader

# amd_ags_x64.so
LIB_DEPENDS+= libdrm.so:graphics/libdrm \
libdrm_amdgpu.so:graphics/libdrm

# winewayland.so
LIB_DEPENDS+= libwayland-client.so:graphics/wayland \
libxkbcommon.so:x11/libxkbcommon \
libxkbregistry.so:x11/libxkbcommon

USES= autoreconf bison desktop-file-utils gl gmake gnome gstreamer llvm:${_LLVM_VERSION},build localbase perl5 pkgconfig python:build sdl shebangfix tar:xz xorg
USE_GCC= yes

USE_GITHUB= yes
GH_ACCOUNT= ValveSoftware
GH_PROJECT= wine
GH_TAGNAME= a030525189d082348d0015a71f969a12438b2639

USE_GL= gl
USE_GNOME= glib20
USE_GSTREAMER= gl good mpeg2dec x264 # https://github.com/ValveSoftware/wine/commit/8cdd506d7e68c27cd564c317320bfc8d3a999eda
USE_PERL5= build
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 \
--enable-archs=${ARCH:S|amd64|x86_64|} \
--with-mingw CROSSCC="clang" CROSSCFLAGS="-isystem ${FILESDIR}/clang" \
--libdir=${PREFIX}/${PORTNAME}/lib \
--disable-kerberos \
--disable-tests \
--with-fontconfig \
--with-freetype \
--with-gnutls \
--with-gstreamer \
--with-opengl \
--with-oss \
--with-pthread \
--with-sdl \
--with-vulkan \
--with-wayland \
--with-x \
--with-xinerama \
--with-xinput2 \
--with-xrandr \
--with-xrender \
--without-alsa \
--without-capi \
--without-coreaudio \
--without-cups \
--without-dbus \
--without-gettext \
--without-gettextpo \
--without-gphoto \
--without-gssapi \
--without-inotify \
--without-krb5 \
--without-netapi \
--without-opencl \
--without-osmesa \
--without-pcap \
--without-pcsclite \
--without-sane \
--without-udev \
--without-unwind \
--without-usb \
--without-v4l2

CONFIGURE_ENV= CPPBIN="false" CPPFLAGS="" FLEX="${LOCALBASE}/bin/flex" JXRLIB_CFLAGS="-I${LOCALBASE}/include/jxrlib"

CFLAGS+= -D__NR_futex="-1" -Werror=implicit-function-declaration
CFLAGS_i386+= -mpreferred-stack-boundary=4 -mstackrealign
PIE_UNSAFE= yes

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 <bsd.port.pre.mk>

.if ${LLVM_DEFAULT} == 11
_LLVM_VERSION= 15
.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

post-patch:
${REINPLACE_CMD} 's/CFLAGS="$$llvm_extra_cflags $$llvm_cflags"/CFLAGS="$$CROSSCFLAGS $$llvm_extra_cflags $$llvm_cflags"/g' ${WRKSRC}/configure.ac

pre-configure:
cd ${WRKSRC} && ${PYTHON_CMD} dlls/winevulkan/make_vulkan --xml vk.xml
cd ${WRKSRC} && ${PERL5} tools/make_specfiles

pre-build:
cd ${WRKSRC} && ${MAKE_CMD} depend
cd ${WRKSRC} && ${PERL5} 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
${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}${PREFIX}/share/man
${MKDIR} ${STAGEDIR}${DOCSDIR}
.for i in README.md ANNOUNCE.md AUTHORS
${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR}
.endfor

.include <bsd.port.post.mk>
3 changes: 3 additions & 0 deletions new/9.0-2/wine-proton/distinfo
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
TIMESTAMP = 1726639041
SHA256 (ValveSoftware-wine-9.0-2-a030525189d082348d0015a71f969a12438b2639_GH0.tar.gz) = 72c1932ed86e22ea0cbcfb3dbcba435958807ba5d0b529874895ae33746af6a8
SIZE (ValveSoftware-wine-9.0-2-a030525189d082348d0015a71f969a12438b2639_GH0.tar.gz) = 49166503
51 changes: 51 additions & 0 deletions new/9.0-2/wine-proton/files/clang/stdarg.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*===---- stdarg.h - Variable argument handling ----------------------------===
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
*===-----------------------------------------------------------------------===
*/

#ifndef __STDARG_H

#ifndef __GNUC_VA_LIST
#define __GNUC_VA_LIST
typedef __builtin_va_list __gnuc_va_list;
#endif

#ifdef __need___va_list
#undef __need___va_list
#else
#define __STDARG_H
#ifndef _VA_LIST
typedef __builtin_va_list va_list;
#define _VA_LIST
#endif

/* FIXME: This is using the placeholder dates Clang produces for these macros
in C2x mode; switch to the correct values once they've been published. */
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L
/* C2x does not require the second parameter for va_start. */
#define va_start(ap, ...) __builtin_va_start(ap, 0)
#else
/* Versions before C2x do require the second parameter. */
#define va_start(ap, param) __builtin_va_start(ap, param)
#endif
#define va_end(ap) __builtin_va_end(ap)
#define va_arg(ap, type) __builtin_va_arg(ap, type)

/* GCC always defines __va_copy, but does not define va_copy unless in c99 mode
* or -ansi is not specified, since it was not part of C90.
*/
#define __va_copy(d,s) __builtin_va_copy(d,s)

#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
(defined(__cplusplus) && __cplusplus >= 201103L) || \
!defined(__STRICT_ANSI__)
#define va_copy(dest, src) __builtin_va_copy(dest, src)
#endif

#endif /* __STDARG_H */

#endif /* not __STDARG_H */
34 changes: 34 additions & 0 deletions new/9.0-2/wine-proton/files/clang/stdbool.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*===---- stdbool.h - Standard header for booleans -------------------------===
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
*===-----------------------------------------------------------------------===
*/

#ifndef __STDBOOL_H
#define __STDBOOL_H

#define __bool_true_false_are_defined 1

#if defined(__STDC_VERSION__) && __STDC_VERSION__ > 201710L
/* FIXME: We should be issuing a deprecation warning here, but cannot yet due
* to system headers which include this header file unconditionally.
*/
#elif !defined(__cplusplus)
#define bool _Bool
#define true 1
#define false 0
#elif defined(__GNUC__) && !defined(__STRICT_ANSI__)
/* Define _Bool as a GNU extension. */
#define _Bool bool
#if defined(__cplusplus) && __cplusplus < 201103L
/* For C++98, define bool, false, true as a GNU extension. */
#define bool bool
#define false false
#define true true
#endif
#endif

#endif /* __STDBOOL_H */
128 changes: 128 additions & 0 deletions new/9.0-2/wine-proton/files/clang/stddef.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
/*===---- stddef.h - Basic type definitions --------------------------------===
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
*===-----------------------------------------------------------------------===
*/

#if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \
defined(__need_size_t) || defined(__need_wchar_t) || \
defined(__need_NULL) || defined(__need_wint_t)

#if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \
!defined(__need_wchar_t) && !defined(__need_NULL) && \
!defined(__need_wint_t)
/* Always define miscellaneous pieces when modules are available. */
#if !__has_feature(modules)
#define __STDDEF_H
#endif
#define __need_ptrdiff_t
#define __need_size_t
#define __need_wchar_t
#define __need_NULL
#define __need_STDDEF_H_misc
/* __need_wint_t is intentionally not defined here. */
#endif

#if defined(__need_ptrdiff_t)
#if !defined(_PTRDIFF_T) || __has_feature(modules)
/* Always define ptrdiff_t when modules are available. */
#if !__has_feature(modules)
#define _PTRDIFF_T
#endif
typedef __PTRDIFF_TYPE__ ptrdiff_t;
#endif
#undef __need_ptrdiff_t
#endif /* defined(__need_ptrdiff_t) */

#if defined(__need_size_t)
#if !defined(_SIZE_T) || __has_feature(modules)
/* Always define size_t when modules are available. */
#if !__has_feature(modules)
#define _SIZE_T
#endif
typedef __SIZE_TYPE__ size_t;
#endif
#undef __need_size_t
#endif /*defined(__need_size_t) */

#if defined(__need_STDDEF_H_misc)
/* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is
* enabled. */
#if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \
!defined(_RSIZE_T)) || __has_feature(modules)
/* Always define rsize_t when modules are available. */
#if !__has_feature(modules)
#define _RSIZE_T
#endif
typedef __SIZE_TYPE__ rsize_t;
#endif
#endif /* defined(__need_STDDEF_H_misc) */

#if defined(__need_wchar_t)
#if !defined(__cplusplus) || (defined(_MSC_VER) && !_NATIVE_WCHAR_T_DEFINED)
/* Always define wchar_t when modules are available. */
#if !defined(_WCHAR_T) || __has_feature(modules)
#if !__has_feature(modules)
#define _WCHAR_T
#if defined(_MSC_EXTENSIONS)
#define _WCHAR_T_DEFINED
#endif
#endif
typedef __WCHAR_TYPE__ wchar_t;
#endif
#endif
#undef __need_wchar_t
#endif /* defined(__need_wchar_t) */

#if defined(__need_NULL)
#undef NULL
#ifdef __cplusplus
# if !defined(__MINGW32__) && !defined(_MSC_VER)
# define NULL __null
# else
# define NULL 0
# endif
#else
# define NULL ((void*)0)
#endif
#ifdef __cplusplus
#if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED)
namespace std { typedef decltype(nullptr) nullptr_t; }
using ::std::nullptr_t;
#endif
#endif
#undef __need_NULL
#endif /* defined(__need_NULL) */

/* FIXME: This is using the placeholder dates Clang produces for these macros
in C2x mode; switch to the correct values once they've been published. */
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L
typedef typeof(nullptr) nullptr_t;
#endif /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L */

#if defined(__need_STDDEF_H_misc)
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
(defined(__cplusplus) && __cplusplus >= 201103L)
#include "__stddef_max_align_t.h"
#endif
#define offsetof(t, d) __builtin_offsetof(t, d)
#undef __need_STDDEF_H_misc
#endif /* defined(__need_STDDEF_H_misc) */

/* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use
__WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */
#if defined(__need_wint_t)
/* Always define wint_t when modules are available. */
#if !defined(_WINT_T) || __has_feature(modules)
#if !__has_feature(modules)
#define _WINT_T
#endif
typedef __WINT_TYPE__ wint_t;
#endif
#undef __need_wint_t
#endif /* __need_wint_t */

#endif
Loading

0 comments on commit a8eb91d

Please sign in to comment.