diff --git a/wine-mono-build-cflags.patch b/wine-mono-build-cflags.patch deleted file mode 100644 index b07940c..0000000 --- a/wine-mono-build-cflags.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- wine-mono-4.5.6/build-winemono.sh.orig 2015-03-02 11:21:51.000000000 -0600 -+++ wine-mono-4.5.6/build-winemono.sh 2015-03-07 23:40:43.725956614 -0600 -@@ -62,7 +62,8 @@ - - cd "$CURDIR/build-cross-$ARCH" - if test 1 != $REBUILD || test ! -e Makefile; then -- CPPFLAGS="-gdwarf-2 -gstrict-dwarf" ../mono/configure --prefix="$CURDIR/build-cross-$ARCH-install" --build=$BUILD --target=$MINGW --host=$MINGW --with-tls=none --disable-mcs-build --enable-win32-dllmain=yes --with-libgc-threads=win32 PKG_CONFIG=false mono_cv_clang=no || exit 1 -+ CFLAGS="-O0 -g -pipe -Wall -Werror=format-security -fexceptions --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic" \ -+ CPPFLAGS="-O0 -gdwarf-2 -gstrict-dwarf" ../mono/configure --prefix="$CURDIR/build-cross-$ARCH-install" --build=$BUILD --target=$MINGW --host=$MINGW --with-tls=none --disable-mcs-build --enable-win32-dllmain=yes --with-libgc-threads=win32 PKG_CONFIG=false mono_cv_clang=no || exit 1 - sed -e 's/-lgcc_s//' -i libtool - fi - WINEPREFIX=/dev/null make $MAKEOPTS || exit 1 -@@ -108,6 +108,7 @@ - - cd "$CURDIR/build-cross-cli" - if test 1 != $REBUILD || test ! -e Makefile; then -+ CFLAGS="-O0 -g -pipe -Wall -Werror=format-security -fexceptions --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic" \ - ../mono/configure --prefix="$CURDIR/build-cross-cli-install" --with-mcs-docs=no --disable-system-aot || exit 1 - fi - if test 1 = $USE_MONOLITE; then ---- wine-mono-4.5.6/mono/libgc/win32_threads.c.orig 2015-03-08 00:50:02.940982196 -0600 -+++ wine-mono-4.5.6/mono/libgc/win32_threads.c 2015-03-08 00:50:18.624128240 -0600 -@@ -165,9 +165,6 @@ - * GC_max_thread_index may temporarily be larger than MAX_THREADS. - * To avoid subscript errors, we check on access. - */ --#ifdef __GNUC__ --__inline__ --#endif - LONG GC_get_max_thread_index() - { - LONG my_max = GC_max_thread_index; diff --git a/wine-mono-build-inline.patch b/wine-mono-build-inline.patch new file mode 100644 index 0000000..06cdc68 --- /dev/null +++ b/wine-mono-build-inline.patch @@ -0,0 +1,12 @@ +--- wine-mono-4.5.6/mono/libgc/win32_threads.c.orig 2015-03-08 00:50:02.940982196 -0600 ++++ wine-mono-4.5.6/mono/libgc/win32_threads.c 2015-03-08 00:50:18.624128240 -0600 +@@ -165,9 +165,6 @@ + * GC_max_thread_index may temporarily be larger than MAX_THREADS. + * To avoid subscript errors, we check on access. + */ +-#ifdef __GNUC__ +-__inline__ +-#endif + LONG GC_get_max_thread_index() + { + LONG my_max = GC_max_thread_index; diff --git a/wine-mono-build-static.patch b/wine-mono-build-static.patch index 927c305..92a526b 100644 --- a/wine-mono-build-static.patch +++ b/wine-mono-build-static.patch @@ -1,16 +1,16 @@ --- wine-mono-4.5.6/build-winemono.sh.orig 2015-04-20 10:34:32.150114394 -0500 +++ wine-mono-4.5.6/build-winemono.sh 2015-04-20 10:33:13.699274928 -0500 -@@ -64,6 +64,7 @@ +@@ -63,6 +63,7 @@ + cd "$CURDIR/build-cross-$ARCH" if test 1 != $REBUILD || test ! -e Makefile; then - CFLAGS="-O0 -g -pipe -Wall -Werror=format-security -fexceptions --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic" \ - CPPFLAGS="-O0 -gdwarf-2 -gstrict-dwarf" ../mono/configure --prefix="$CURDIR/build-cross-$ARCH-install" --build=$BUILD --target=$MINGW --host=$MINGW --with-tls=none --disable-mcs-build --enable-win32-dllmain=yes --with-libgc-threads=win32 PKG_CONFIG=false mono_cv_clang=no || exit 1 + CPPFLAGS="-gdwarf-2 -gstrict-dwarf" ../mono/configure --prefix="$CURDIR/build-cross-$ARCH-install" --build=$BUILD --target=$MINGW --host=$MINGW --with-tls=none --disable-mcs-build --enable-win32-dllmain=yes --with-libgc-threads=win32 PKG_CONFIG=false mono_cv_clang=no || exit 1 + sed -e 's+compiler_flags="-specs=/usr/lib/rpm/redhat/redhat-hardened-ld"+compiler_flags="-static"+' -i libtool sed -e 's/-lgcc_s//' -i libtool fi WINEPREFIX=/dev/null make $MAKEOPTS || exit 1 -@@ -112,6 +112,7 @@ +@@ -109,6 +110,7 @@ + cd "$CURDIR/build-cross-cli" if test 1 != $REBUILD || test ! -e Makefile; then - CFLAGS="-O0 -g -pipe -Wall -Werror=format-security -fexceptions --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic" \ ../mono/configure --prefix="$CURDIR/build-cross-cli-install" --with-mcs-docs=no --disable-system-aot || exit 1 + sed -e 's+compiler_flags="-specs=/usr/lib/rpm/redhat/redhat-hardened-ld"+compiler_flags="-static"+' -i libtool fi diff --git a/wine-mono-tls.patch b/wine-mono-tls.patch new file mode 100644 index 0000000..893afec --- /dev/null +++ b/wine-mono-tls.patch @@ -0,0 +1,22 @@ +--- a/mono/utils/mono-compiler.h 2015-02-27 16:42:27.000000000 -0600 ++++ b/mono/utils/mono-compiler.h 2015-04-23 10:52:44.137887962 -0500 +@@ -13,7 +13,7 @@ + #define MONO_FAST_TLS_SET(x,y) x = y + #define MONO_FAST_TLS_GET(x) x + #define MONO_FAST_TLS_INIT(x) +-#define MONO_FAST_TLS_DECLARE(x) static __thread gpointer x MONO_TLS_FAST; ++#define MONO_FAST_TLS_DECLARE(x) static __thread gpointer __attribute__((used)) x MONO_TLS_FAST; + + #if HAVE_TLS_MODEL_ATTR + +--- a/mono/metadata/sgen-alloc.c 2015-04-23 11:03:09.641290545 -0500 ++++ b/mono/metadata/sgen-alloc.c 2015-04-23 11:02:56.601136395 -0500 +@@ -94,7 +94,7 @@ + static __thread char *tlab_temp_end; + static __thread char *tlab_real_end; + /* Used by the managed allocator/wbarrier */ +-static __thread char **tlab_next_addr; ++static __thread char __attribute__((used)) **tlab_next_addr; + #endif + + #ifdef HAVE_KW_THREAD diff --git a/wine-mono.spec b/wine-mono.spec index 1c42092..cd02a80 100644 --- a/wine-mono.spec +++ b/wine-mono.spec @@ -3,7 +3,7 @@ Name: wine-mono Version: 4.5.6 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Mono library required for Wine License: GPLv2 and LGPLv2 and MIT and BSD and MS-PL and MPLv1.1 @@ -13,8 +13,12 @@ Source0: http://sourceforge.net/projects/wine/files/Wine%20Mono/%{version Patch0: wine-mono-build-msifilename.patch # https://github.com/mono/mono/commit/1445d4821c8091c395264542344dca9df22a2c82 Patch1: wine-mono-valgrind.patch -Patch2: wine-mono-build-cflags.patch -Patch3: wine-mono-build-static.patch +# to statically link in winpthreads +Patch2: wine-mono-build-static.patch +# https://github.com/mono/mono/commit/16ee0252305fbd4f40ea39c3c4421dc7f103f8a0 +Patch3: wine-mono-tls.patch +# this function gets optimized out when inlined +Patch4: wine-mono-build-inline.patch # see git://github.com/madewokherd/wine-mono @@ -57,8 +61,9 @@ Windows Mono library required for Wine. %setup -q %patch0 -p1 -b.msifilename %patch1 -dmono -p1 -b.valgrind -%patch2 -p1 -b.cflags -%patch3 -p1 -b.static +%patch2 -p1 -b.static +%patch3 -dmono -p1 -b.tls +%patch4 -p1 -b.inline %build MAKEOPTS=%{_smp_mflags} MSIFILENAME=wine-mono-%{version}.msi ./build-winemono.sh @@ -95,6 +100,9 @@ cp mono-basic/LICENSE mono-basic-LICENSE %{_datadir}/wine/mono/wine-mono-%{version}.msi %changelog +* Thu Apr 23 2015 Michael Cronenworth - 4.5.6-4 +- enable optimizations, tls patch + * Mon Apr 20 2015 Michael Cronenworth - 4.5.6-3 - statically link DLLs (#1213427)