[app-emulation/wine] kill the osmesa hack for win32 which disables it on amd64. requires FireBurn overlay to work, therefore not keyworded, also osmesa use flag on mesa-32bit is required which is not checked here yet due to lazyness

This commit is contained in:
2012-09-13 02:07:42 +02:00
parent 714c343cd8
commit e8e70061a5
5 changed files with 388 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
http://bugs.gentoo.org/260726
--- wine-1.1.15/tools/winegcc/winegcc.c
+++ wine-1.1.15/tools/winegcc/winegcc.c
@@ -215,10 +215,13 @@
strarray* files;
};
+#undef FORCE_POINTER_SIZE
#ifdef __i386__
static const enum target_cpu build_cpu = CPU_x86;
+#define FORCE_POINTER_SIZE
#elif defined(__x86_64__)
static const enum target_cpu build_cpu = CPU_x86_64;
+#define FORCE_POINTER_SIZE
#elif defined(__sparc__)
static const enum target_cpu build_cpu = CPU_SPARC;
#elif defined(__ALPHA__)
@@ -968,6 +971,9 @@
opts.linker_args = strarray_alloc();
opts.compiler_args = strarray_alloc();
opts.winebuild_args = strarray_alloc();
+#ifdef FORCE_POINTER_SIZE
+ opts.force_pointer_size = sizeof(size_t);
+#endif
/* determine the processor type */
if (strendswith(argv[0], "winecpp")) opts.processor = proc_cpp;
--- wine-1.1.15/tools/winebuild/main.c
+++ wine-1.1.15/tools/winebuild/main.c
@@ -50,10 +50,13 @@
int link_ext_symbols = 0;
int force_pointer_size = 0;
+#undef FORCE_POINTER_SIZE
#ifdef __i386__
enum target_cpu target_cpu = CPU_x86;
+#define FORCE_POINTER_SIZE
#elif defined(__x86_64__)
enum target_cpu target_cpu = CPU_x86_64;
+#define FORCE_POINTER_SIZE
#elif defined(__sparc__)
enum target_cpu target_cpu = CPU_SPARC;
#elif defined(__ALPHA__)
@@ -574,6 +577,10 @@
signal( SIGTERM, exit_on_signal );
signal( SIGINT, exit_on_signal );
+#ifdef FORCE_POINTER_SIZE
+ force_pointer_size = sizeof(size_t);
+#endif
+
output_file = stdout;
argv = parse_options( argc, argv, spec );

View File

@@ -0,0 +1,40 @@
https://bugs.gentoo.org/show_bug.cgi?id=395615
Explicitly add the required -m32/m64 to *FLAGS; this overrides any
arch-specific -m* flags that may have been appended by multilib-portage.
Even though -m32/m64 is now added to *FLAGS, -m32/m64 still has to be
explicitly added to CC and CXX due to wine's build system. For example,
winegcc saves the build-time value of CC and uses it at runtime.
--- a/configure.ac
+++ b/configure.ac
@@ -133,12 +133,18 @@
then
CC="$CC -m64"
CXX="$CXX -m64"
+ CFLAGS="$CFLAGS -m64"
+ LDFLAGS="$LDFLAGS -m64"
+ CXXFLAGS="$CXXFLAGS -m64"
host_cpu="x86_64"
notice_platform="64-bit "
AC_SUBST(TARGETFLAGS,"-m64")
else
CC="$CC -m32"
CXX="$CXX -m32"
+ CFLAGS="$CFLAGS -m32"
+ LDFLAGS="$LDFLAGS -m32"
+ CXXFLAGS="$CXXFLAGS -m32"
host_cpu="i386"
notice_platform="32-bit "
AC_SUBST(TARGETFLAGS,"-m32")
@@ -150,6 +156,9 @@
then
CC="$CC -m32"
CXX="$CXX -m32"
+ CFLAGS="$CFLAGS -m32"
+ LDFLAGS="$LDFLAGS -m32"
+ CXXFLAGS="$CXXFLAGS -m32"
AC_MSG_CHECKING([whether $CC works])
AC_LINK_IFELSE([AC_LANG_PROGRAM()],AC_MSG_RESULT([yes]),
[AC_MSG_RESULT([no])

View File

@@ -0,0 +1,38 @@
From 22fcf835dfe713ad93f649a901973208e0f7b62d Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Tue, 7 Aug 2012 01:29:01 -0400
Subject: [PATCH] Do not check for libGL symbols when checking libOSMesa
If mesa had been built with shared glapi, glAccum is not available in
libOSMesa without explicitly linking to libGL. In addition, in
mesa-8.0.x and earlier, libOSMesa needs to be explicitly linked to
libglapi if mesa was built with shared glapi, see
https://bugs.gentoo.org/show_bug.cgi?id=399813
And in mesa-8.1.x, libOSMesa in addition needs libdl, libpthread, and
libstdc++, see https://bugs.gentoo.org/show_bug.cgi?id=431832
---
configure.ac | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/configure.ac b/configure.ac
index 15ada86..6eab75e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1133,7 +1133,13 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
if test "$ac_cv_header_GL_osmesa_h" = "yes"
then
- WINE_CHECK_SONAME(OSMesa,glAccum,,,[$X_LIBS $X_PRE_LIBS $XLIB -lm $X_EXTRA_LIBS])
+ WINE_CHECK_SONAME(OSMesa,OSMesaCreateContext,,,[$X_LIBS $X_PRE_LIBS $XLIB -lm $X_EXTRA_LIBS])
+ if test "x$ac_cv_lib_soname_OSMesa" = "x"; then
+ osmesa_save_CC=$CC
+ CC=$CXX
+ WINE_CHECK_SONAME(OSMesa,OSMesaCreateContext,,,[-lglapi -lpthread -ldl $X_LIBS $X_PRE_LIBS $XLIB -lm $X_EXTRA_LIBS])
+ CC=$osmesa_save_CC
+ fi
fi
WINE_NOTICE_WITH(osmesa,[test "x$ac_cv_lib_soname_OSMesa" = "x"],
[libOSMesa ${notice_platform}development files not found (or too old), OpenGL rendering in bitmaps won't be supported.])
--
1.7.8.6