Remove temp app-emulation/wine

This commit is contained in:
Stefan Reimer 2015-01-02 13:12:33 -08:00
parent 919c648c3e
commit f98439cd6b
16 changed files with 0 additions and 2478 deletions

View File

@ -1,21 +0,0 @@
AUX wine-1.1.15-winegcc.patch 1556 SHA256 dbd89db561d7583faf317d795b8c11231575d885e21c6414add39079604dbd0d SHA512 a6a6dbde16c1f850a5cb4d6b6fe1a8129bb267c44c19de63a4eb26933fd69ff98e440d257e467d766a6a6ac326d72dd621cae37fb593c8c62e43f588ccef3f25 WHIRLPOOL 3aea848b17217ab215f860c3526c44a5d9bd9e7adfe35c02bb5c841461bdaf4bd8ac4f8e8b990c0558980381fc1b2441b79edc3ff6dcde7455203fbd1fc3f49c
AUX wine-1.2.3-msxml3-libxml2-headers.patch 14328 SHA256 0a046e532343f9a4508307434a2f39e0a3a50a66c165b69e56dd671488d4ba7d SHA512 837bde9cfefa12b81197c9fa2978c8b17f760594eb9d6b8fe96ab4baf2f34b5d2330db245c0ee180a9d5aa59657f52b8500fd976bb70b111d0f32d4103f71f94 WHIRLPOOL e74ff9ad63b95878337d4eac342e9abbc60c73af2f4017cdd87671c472c49bee953759b9786d5b245669352dc23ac338178b415d2c4f01516c385fee66a167b5
AUX wine-1.4_rc2-multilib-portage.patch 1256 SHA256 9d0acd304d11d1bf73f56699754aaa1bfe1facba90648ee330fdbe08d9ff4938 SHA512 ac0b29e2b4c9b04bb6694a4e4da654446f68efbf90cda6809b45dad51e6679ac5410398763fde7e9505ef959493a037aa588cee58d14906563a4746702d2b0e9 WHIRLPOOL 8ea26266c327bc8313eca9b5d39c9741b226037750ca2d1d33262420093e05c306e7f004656c362c3c50b330d050cf9e5fceaa2b024a82809aae8b3617b0ae18
AUX wine-1.5.11-osmesa-check.patch 1888 SHA256 8aa70a10a215d5a10e70a404701cf70c0efc674ca6e2f093bbd243f70153e3bb SHA512 5c53e19efa4e080e4bc46c955d2f53beaaa55726e3ee528a5d41374452d6a75817f2145df4a2b05e0d168ed78fe81da35bab1322d6fcc736bf59ba6282e7ff9b WHIRLPOOL d35b52ddcace0fcb043894f00b14a90ecef8af87ff16d2ff091e64b34d8629a5d49ff59cae355c0457b7b9213f1ec66ae53747cb096b23c4f0a2ec8b7c8c8431
AUX wine-1.5.17-osmesa-check.patch 1774 SHA256 dc7dde67c416bb067e528b85228cff01833a2a20c802248ef56d74184014e50e SHA512 12325e75db5e63e1d4c4e2463c3e164b1eba0d3d88455cfcd698a8bb790d7c0b3c947a06e7a09e232b1a14202e64ea2dc9331cbc4b503833f78a7c1034410c79 WHIRLPOOL 2d9bb86a5d683301c75ea275302f67616a8e9c6ebfc436b05f8f1b3d5d815c310999ca9518747abcf4d248bd18f34388dcb323c526d633c50e66ffb4bf94e5d6
AUX wine-1.5.23-winebuild-CCAS.patch 6101 SHA256 34143c55618870dd31eea1e260ae973572d99557a20f24a4f217bb0ff1d615eb SHA512 f44580efcf4a406517a2fc65d7509a42b0b0b180a4c63f5980c894e708934d60155d87634e406763426415d00c1ea2f8f3894ac4797a2e2527ca0d9ed23430af WHIRLPOOL d62fb5c27fba3b8297ae2151a432f80d9655c0c2ccee9dee12beea84a2186c0e7965a6902d6bc5638cdb1c853c188a49b790825c8741a9dc4bb1516ff6ca9a53
AUX wine-1.5.26-winegcc.patch 1808 SHA256 91c1012059b93a421b2eae9f2ea46b7b327d6d3d58ba0cb47021c8a57f6d8228 SHA512 fce9daf40a96f4a7502c249a30107c8dfc5d8edd4a171b863d2bf14c3ad46d18e4c29932ab4a6ede7da5d589d777b962d2f577f5360ee4db8019d71362c51d47 WHIRLPOOL 71cbe36c6bac87071472541b7f5cd3ed1b08f05479bc0016262b3f86e75738e467dad197563b4898f2b24fd0ab4e27c40dce04f244a3e7f5ea1582b4db1c5cc2
AUX wine-1.5.30-libwine.patch 1777 SHA256 2f0155c2c1d11fd9a06deab54dd753c1161e32217eae82604f8c1d542e87af4f SHA512 e6d566f75632065def197cf27b5705a3f2f736a7b3bb4ae03df19fea00fd980a5b5d0517981469fef0fa5347c1c3b9651894fb23d937b5dbbd993cd292f67183 WHIRLPOOL 62ed15db6bddda47dcf74d846e15a9904c11abdf63e0321e7e2bc3197f60c819992b3a95a4395f85edeef9181a1866749194b9744be8d42bd94acab37470aad6
AUX wine-1.5.31-gnutls-3.2.0.patch 1616 SHA256 3ce82009b05fe997b0d198ad83533026d6410811ecfc6254c1505d0b9d18caf0 SHA512 09de6ff03da996197cd6833c1f53e9f39b43fc43e02ad3b4e12648a57288c1fa200886a805e6811372e12665f9a5d463603f9a9ba39cb1392b2cf4d11f3f9a65 WHIRLPOOL 590a9206913a51eae81e236057bbed346dae8f895575dcc948ba7168edf5c0605db6278344fad727c2a828a2aeef258f72a57a12b5dca244a3b7b82cfe43452a
AUX wine-1.6-memset-O3.patch 695 SHA256 1f04496713e8a401ba068702c5c3e104b18635bfb54808e5641a3c48a9b9bad4 SHA512 ad7231f8dedf98f9e9b91fcb8bbe72a716d78285127b0c33396de0b1e17a191f91f9a4a377c0e90671bb5f4e57bfb087ef7e80c9537c6c73b3c9bb90b3885968 WHIRLPOOL 91689c31054b896609493e2b0b4fe67e3d752d889f4ccae9c3e15229543341998809fd19a2040457e04fbdbd45505f0f2b49052844004193872713053d7239f8
AUX wine-1.7.12-osmesa-check.patch 1722 SHA256 42648efa15040011ef868f92fd615924a83b5a30dab25505928226d8bc48159d SHA512 faca80f9747f3d7bfd05c3410bcccfaf17b3f397e30dd9ec382eccc326de346d195d6a184ec78e44b26d5e5e4b2af749ce58a0e6bad0b15a4fd1f2ea610d3124 WHIRLPOOL c5314849d15a53dc00af80f44249c10107b17825c4a2ab4510a5799b154bb1cdb516b3b632e1e959802588f673b9eac8ed6de2dfb59bde34acdd5b752115f695
AUX wine-1.7.2-osmesa-check.patch 1740 SHA256 5264ac291435eb64c70cef4bdccbf8d4448472b4f014ab15ede35bcceebb6579 SHA512 4738a381923df7b45ea68092efb7ccb967907976d6d2f8bb0167af4211c377a73e296481b94092ac232f9ae09edf21447da92a134ebfff9b32acdd9e20340b95 WHIRLPOOL 95a90f8ff5a649833b39cb28de997c3b516cd09a53cf71d616c4fd412dfa6e71c47a1255a4d0597d85a62966cd9d6b9fae1c21c88e67d8650d31d414fca8fd42
AUX wine-1.7.28-gstreamer-v4.patch 19689 SHA256 9d621741a9909973bfbd28f07b4e2eb54813d0a5d2ff10d6550f7097aff36590 SHA512 383f588f40d9efaa653c3fa326692c36df02de382729b939d04d085c28f388cc0d8c7fac49671a2045f095bf624e2be6f9de6a064e9d9e606db07b2b61b1329f WHIRLPOOL 9078e8966c1777376a077f5a636c1997b33b26150a4a4efdae472c22e0d97c572c7ce34825a98b1e5240c08dc504fea6442c9e3c193a38ea8b75bccd4c56fc77
AUX wine-1.7.9-hcce.patch 4699 SHA256 93d5dd444f3cd445156d21dad8653ad67d195cd8c373335d43b122e68e76e673 SHA512 084fd9af46acdb035e3ec4bcdeb04cb21a09c4288777905136f8bfe74ee14833a3cee241be891ceca9c70e0a506d936d92d12422c54d1a2e211c0dbe128f98bc WHIRLPOOL ccc3fa16bf5ef0f7e1b227d0c35b4dae986a30b2a99ae2fbccff1416feac6bd6ade389d900882daa86a16e1209e977b212f33e227a5beb355d9cde2a6df1badb
DIST wine-1.7.30.tar.bz2 21835863 SHA256 10f7caf0420970772d868ab2ae24578f89b8a04b93604473e7c41bb295e0086c SHA512 d9b20fa58b353e60ebee930c969da10618e2aca8aba530f1d31ee315e1e3e5d4c495998e59cccbfeb6452811a5c8e360c76b9ec2ae0e16a987a197a559d1f954 WHIRLPOOL 2d5a0c00d356f0960c89e162080e7b67a63ee40439b7b2e8b3774b85ecef9406ffce7cbf9b9941856c9f97f542fa34a5610607307623b07b677991710c7d92e4
DIST wine-gentoo-2013.06.24.tar.bz2 85442 SHA256 bfbf6b25e98f717320de2ede467e3628fbc749d936b8449f8477c9dc6f41e04b SHA512 b6819889314f6a6ea16c1332f4b177c43623116763969c31b23b61754cd304dd085f5d3eafbe847159331eb97dddd9b4c10699430129ea4a71da418c1fe175f0 WHIRLPOOL 227e0ac6569736d4ad5813cef49f775dae956f4fc9255de95753d5d3cba1bf6cf3db31d23d3702bb54d2e60c5a6f779b602f0efb2096e4c827c924565b273d00
DIST wine-mono-4.5.2.msi 52502528 SHA256 d9124edb41ba4418af10eba519dafb25ab4338c567d25ce0eb4ce1e1b4d7eaad SHA512 73c907f63b73836d5afd0753197358aaea43a74a47800f929ef0627112298256f1fa46d1b9ff297b117468d953cdeab21fb5962db13c5debbcb71004462df609 WHIRLPOOL 18d3544c6753c5a01917bfc1b694f31ce45213108527f13317ec0bb8b2d2339ce41800534967e067cd15cd186ef9e186a5d3252275e443dfa1a6ae3641d4d17c
DIST wine-staging-1.7.30.tar.gz 8439935 SHA256 42d761cde615c5d70656078a7c2b23cf1e57f7ba174b3e6c9da6de876bc268d2 SHA512 b0dc44e6ca75f0578a7a76682b3a4acd369a18ed57d0b3bfa95c4416ed31e2630bbdf9f83e98db8b39e2f5b5fc745259af57fcc09de51b37e5e4184cbd71fd0c WHIRLPOOL f4fe5253b5c2579e342f863a0e07df872a2876a67413fa07ab61f66d32b04537e57c952e7017905fd5febad7797173aaf38132b3c067ef5068b87e74acf1ca64
DIST wine_gecko-2.24-x86.msi 22373888 SHA256 6e38acae87ea66e2c1e8f2f0afe88f89eed3e6e0b431cd3da38dea814b71202c SHA512 f158d28ca09bc900a2680892e7ac10770e06050a9251e1ec3a953fee0bf9b1c326e166f92fb88a4648297b6587c91a5ef5af35f267bb2ba5f679da4c8fdb6898 WHIRLPOOL bbe7a2572d89dc5e0347ba11b2014bac79fc4427d7551655313a46b147a79c1607b7f46596877c459ddaa0e202337fb3d217429ddd6a4df49ee33b373a788487
DIST wine_gecko-2.24-x86_64.msi 23608320 SHA256 47557da68bcb2aedaebb93af73275aac96ba23e896bd98f25f2acbfd216d9cc8 SHA512 45ce0dcf42c3e2fe2198092812242e3467b19db4a4946e0b1a2d6327fd48aa936fb85cc1930bace6eaba0c61bff3a6536767ba0a91a0f085f307d1bddd171f0c WHIRLPOOL b6ba7c784d3a79d7afc11f0e12f0372b52b9f194eedfd083abed36a461e7301d2dd936be3be12619364f6ac5aae9cfbfb7fc47141bff92b62826f209365210ec
EBUILD wine-1.7.30.ebuild 15473 SHA256 a65a860f35b89492d535d52fa1951d91034bf0e71ec4bbf740afc98bcf907242 SHA512 cad207131d2631a9236954122655803543a3f44aca3a84aff6a6866ad900417078ac495ba1baff4baaa0b22d704a4007f1003de3753bd863cb613424302daf54 WHIRLPOOL fbdd9275d06cccab7cbb39ce81719346fa679563e715466517c9e231903b7061d3cb53c98925cad74b5d4d19bad39c36c531056d6ed002fe867a4bd863e57453

View File

@ -1,55 +0,0 @@
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

@ -1,574 +0,0 @@
From 26603f25f73142a45b5b964bb9bb2e59bc0908d4 Mon Sep 17 00:00:00 2001
From: Alexandre Julliard <julliard@winehq.org>
Date: Thu, 24 Feb 2011 13:11:53 +0100
Subject: [PATCH] msxml3: Include the system libxml headers before the Windows
headers.
[Alexandre Rostovtsev <tetromino@gentoo.org>: backport to wine-1.2.3]
---
dlls/msxml3/attribute.c | 6 ++++++
dlls/msxml3/bsc.c | 6 ++++++
dlls/msxml3/cdata.c | 5 +++++
dlls/msxml3/comment.c | 5 +++++
dlls/msxml3/dispex.c | 5 +++++
dlls/msxml3/docfrag.c | 5 +++++
dlls/msxml3/domdoc.c | 11 +++++++++--
dlls/msxml3/domimpl.c | 5 +++++
dlls/msxml3/element.c | 5 +++++
dlls/msxml3/entityref.c | 5 +++++
dlls/msxml3/factory.c | 5 +++++
dlls/msxml3/httprequest.c | 6 ++++++
dlls/msxml3/main.c | 15 +++++++++++++++
dlls/msxml3/msxml_private.h | 23 -----------------------
dlls/msxml3/node.c | 31 +++++++++++++++++++++++++++----
dlls/msxml3/nodelist.c | 5 +++++
dlls/msxml3/nodemap.c | 5 +++++
dlls/msxml3/parseerror.c | 5 +++++
dlls/msxml3/pi.c | 5 +++++
dlls/msxml3/queryresult.c | 9 +++++++--
dlls/msxml3/regsvr.c | 4 ++++
dlls/msxml3/saxreader.c | 10 +++++++---
dlls/msxml3/schema.c | 12 ++++++++++++
dlls/msxml3/text.c | 5 +++++
dlls/msxml3/xmldoc.c | 5 +++++
dlls/msxml3/xmlelem.c | 5 +++++
26 files changed, 174 insertions(+), 34 deletions(-)
diff --git a/dlls/msxml3/attribute.c b/dlls/msxml3/attribute.c
index d78fa47..3df93d6 100644
--- a/dlls/msxml3/attribute.c
+++ b/dlls/msxml3/attribute.c
@@ -23,6 +23,12 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+# include <libxml/HTMLtree.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/bsc.c b/dlls/msxml3/bsc.c
index b24e04c..01a09a5 100644
--- a/dlls/msxml3/bsc.c
+++ b/dlls/msxml3/bsc.c
@@ -23,6 +23,12 @@
#include <stdarg.h>
#include <assert.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+# include <libxml/HTMLtree.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/cdata.c b/dlls/msxml3/cdata.c
index 3fba66c..caf8cd8 100644
--- a/dlls/msxml3/cdata.c
+++ b/dlls/msxml3/cdata.c
@@ -23,6 +23,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/comment.c b/dlls/msxml3/comment.c
index e74de07..1cabfa3 100644
--- a/dlls/msxml3/comment.c
+++ b/dlls/msxml3/comment.c
@@ -23,6 +23,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/dispex.c b/dlls/msxml3/dispex.c
index 09b71fe..6b01b15 100644
--- a/dlls/msxml3/dispex.c
+++ b/dlls/msxml3/dispex.c
@@ -22,6 +22,11 @@
#include <stdarg.h>
#include <assert.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/docfrag.c b/dlls/msxml3/docfrag.c
index fff3f62..bebd252 100644
--- a/dlls/msxml3/docfrag.c
+++ b/dlls/msxml3/docfrag.c
@@ -23,6 +23,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index 0007503..e6a61e4 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -25,6 +25,15 @@
#include <stdarg.h>
#include <assert.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+# include <libxml/xpathInternals.h>
+# include <libxml/xmlsave.h>
+# include <libxml/SAX2.h>
+# include <libxml/parserInternals.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
@@ -47,8 +56,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml);
#ifdef HAVE_LIBXML2
-#include <libxml/xmlsave.h>
-
/* not defined in older versions */
#define XML_SAVE_FORMAT 1
#define XML_SAVE_NO_DECL 2
diff --git a/dlls/msxml3/domimpl.c b/dlls/msxml3/domimpl.c
index dd518a1..c6794ac 100644
--- a/dlls/msxml3/domimpl.c
+++ b/dlls/msxml3/domimpl.c
@@ -23,6 +23,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index 617c008..1b5c693 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -23,6 +23,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/entityref.c b/dlls/msxml3/entityref.c
index db46193..1baea6e 100644
--- a/dlls/msxml3/entityref.c
+++ b/dlls/msxml3/entityref.c
@@ -23,6 +23,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/factory.c b/dlls/msxml3/factory.c
index 3fd229c..45df9f0 100644
--- a/dlls/msxml3/factory.c
+++ b/dlls/msxml3/factory.c
@@ -24,6 +24,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c
index 4585484..be1a5f7 100644
--- a/dlls/msxml3/httprequest.c
+++ b/dlls/msxml3/httprequest.c
@@ -22,6 +22,12 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+# include <libxml/encoding.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/main.c b/dlls/msxml3/main.c
index 60b0cbd..47a89b1 100644
--- a/dlls/msxml3/main.c
+++ b/dlls/msxml3/main.c
@@ -25,6 +25,21 @@
#define COBJMACROS
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+# ifdef SONAME_LIBXSLT
+# ifdef HAVE_LIBXSLT_PATTERN_H
+# include <libxslt/pattern.h>
+# endif
+# ifdef HAVE_LIBXSLT_TRANSFORM_H
+# include <libxslt/transform.h>
+# endif
+# include <libxslt/xsltutils.h>
+# include <libxslt/xsltInternals.h>
+# endif
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index e0279f1..e1fbb59 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -102,10 +102,6 @@ BOOL dispex_query_interface(DispatchEx*,REFIID,void**);
#ifdef HAVE_LIBXML2
-#ifdef HAVE_LIBXML_PARSER_H
-#include <libxml/parser.h>
-#endif
-
/* constructors */
extern IUnknown *create_domdoc( xmlNodePtr document );
extern IUnknown *create_xmldoc( void );
@@ -184,25 +180,6 @@ static inline BSTR bstr_from_xmlChar(const xmlChar *str)
#endif
-void* libxslt_handle;
-#ifdef SONAME_LIBXSLT
-# ifdef HAVE_LIBXSLT_PATTERN_H
-# include <libxslt/pattern.h>
-# endif
-# ifdef HAVE_LIBXSLT_TRANSFORM_H
-# include <libxslt/transform.h>
-# endif
-# include <libxslt/xsltutils.h>
-# include <libxslt/xsltInternals.h>
-
-# define MAKE_FUNCPTR(f) extern typeof(f) * p##f
-MAKE_FUNCPTR(xsltApplyStylesheet);
-MAKE_FUNCPTR(xsltCleanupGlobals);
-MAKE_FUNCPTR(xsltFreeStylesheet);
-MAKE_FUNCPTR(xsltParseStylesheetDoc);
-# undef MAKE_FUNCPTR
-#endif
-
extern IXMLDOMParseError *create_parseError( LONG code, BSTR url, BSTR reason, BSTR srcText,
LONG line, LONG linepos, LONG filepos );
extern HRESULT DOMDocument_create( IUnknown *pUnkOuter, LPVOID *ppObj );
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index bbdcb5d..2980566 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -24,6 +24,23 @@
#include <stdarg.h>
#include <assert.h>
+
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+# include <libxml/HTMLtree.h>
+# ifdef SONAME_LIBXSLT
+# ifdef HAVE_LIBXSLT_PATTERN_H
+# include <libxslt/pattern.h>
+# endif
+# ifdef HAVE_LIBXSLT_TRANSFORM_H
+# include <libxslt/transform.h>
+# endif
+# include <libxslt/xsltutils.h>
+# include <libxslt/xsltInternals.h>
+# endif
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
@@ -33,16 +50,22 @@
#include "msxml_private.h"
-#ifdef HAVE_LIBXML2
-# include <libxml/HTMLtree.h>
-#endif
-
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(msxml);
#ifdef HAVE_LIBXML2
+#ifdef SONAME_LIBXSLT
+extern void* libxslt_handle;
+# define MAKE_FUNCPTR(f) extern typeof(f) * p##f
+MAKE_FUNCPTR(xsltApplyStylesheet);
+MAKE_FUNCPTR(xsltCleanupGlobals);
+MAKE_FUNCPTR(xsltFreeStylesheet);
+MAKE_FUNCPTR(xsltParseStylesheetDoc);
+# undef MAKE_FUNCPTR
+#endif
+
static const WCHAR szBinBase64[] = {'b','i','n','.','b','a','s','e','6','4',0};
static const WCHAR szString[] = {'s','t','r','i','n','g',0};
static const WCHAR szNumber[] = {'n','u','m','b','e','r',0};
diff --git a/dlls/msxml3/nodelist.c b/dlls/msxml3/nodelist.c
index f643c5e..4b2bba9 100644
--- a/dlls/msxml3/nodelist.c
+++ b/dlls/msxml3/nodelist.c
@@ -23,6 +23,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/nodemap.c b/dlls/msxml3/nodemap.c
index 7d23ec8..d3d9c38 100644
--- a/dlls/msxml3/nodemap.c
+++ b/dlls/msxml3/nodemap.c
@@ -23,6 +23,11 @@
#define COBJMACROS
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/parseerror.c b/dlls/msxml3/parseerror.c
index 4b0dc57..89f14ca 100644
--- a/dlls/msxml3/parseerror.c
+++ b/dlls/msxml3/parseerror.c
@@ -25,6 +25,11 @@
#include <stdarg.h>
#include <assert.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winerror.h"
diff --git a/dlls/msxml3/pi.c b/dlls/msxml3/pi.c
index 0baefe4..3ebc1bf 100644
--- a/dlls/msxml3/pi.c
+++ b/dlls/msxml3/pi.c
@@ -23,6 +23,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/queryresult.c b/dlls/msxml3/queryresult.c
index 2c6f23e..8613b20 100644
--- a/dlls/msxml3/queryresult.c
+++ b/dlls/msxml3/queryresult.c
@@ -24,6 +24,13 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+# include <libxml/xpath.h>
+# include <libxml/xpathInternals.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
@@ -48,8 +55,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml);
#ifdef HAVE_LIBXML2
-#include <libxml/xpath.h>
-
typedef struct _queryresult
{
DispatchEx dispex;
diff --git a/dlls/msxml3/regsvr.c b/dlls/msxml3/regsvr.c
index 415e5af..864d61e 100644
--- a/dlls/msxml3/regsvr.c
+++ b/dlls/msxml3/regsvr.c
@@ -24,6 +24,10 @@
#include <stdarg.h>
#include <string.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
#define COBJMACROS
diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c
index eca9f1d..f2d340e 100644
--- a/dlls/msxml3/saxreader.c
+++ b/dlls/msxml3/saxreader.c
@@ -24,6 +24,13 @@
#include <stdarg.h>
#include <assert.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+# include <libxml/SAX2.h>
+# include <libxml/parserInternals.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
@@ -43,9 +50,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml);
#ifdef HAVE_LIBXML2
-#include <libxml/SAX2.h>
-#include <libxml/parserInternals.h>
-
typedef struct _saxreader
{
const struct IVBSAXXMLReaderVtbl *lpVBSAXXMLReaderVtbl;
diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c
index 72d7854..c1465c0 100644
--- a/dlls/msxml3/schema.c
+++ b/dlls/msxml3/schema.c
@@ -23,6 +23,18 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+# include <libxml/tree.h>
+# include <libxml/xmlschemas.h>
+# include <libxml/schemasInternals.h>
+# include <libxml/hash.h>
+# include <libxml/parser.h>
+# include <libxml/parserInternals.h>
+# include <libxml/xmlIO.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c
index fdcb06b..72b2ffd 100644
--- a/dlls/msxml3/text.c
+++ b/dlls/msxml3/text.c
@@ -24,6 +24,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/xmldoc.c b/dlls/msxml3/xmldoc.c
index d1a010f..0d1006e 100644
--- a/dlls/msxml3/xmldoc.c
+++ b/dlls/msxml3/xmldoc.c
@@ -23,6 +23,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
diff --git a/dlls/msxml3/xmlelem.c b/dlls/msxml3/xmlelem.c
index a71b18b..a818d14 100644
--- a/dlls/msxml3/xmlelem.c
+++ b/dlls/msxml3/xmlelem.c
@@ -23,6 +23,11 @@
#include "config.h"
#include <stdarg.h>
+#ifdef HAVE_LIBXML2
+# include <libxml/parser.h>
+# include <libxml/xmlerror.h>
+#endif
+
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
--
1.7.8.3

View File

@ -1,40 +0,0 @@
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

@ -1,38 +0,0 @@
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

View File

@ -1,38 +0,0 @@
From 1ede664b18bd8a88359a3cebb291ad49833ee033 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 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index cc32c24..275b792 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1128,7 +1128,13 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
if test "x$with_osmesa" != "xno"
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
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.])
fi
--
1.8.0

View File

@ -1,214 +0,0 @@
From 57c57e9dfae50f045503ae9f3107fa3748512483 Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Sun, 3 Feb 2013 19:19:36 -0500
Subject: [PATCH] winebuild: Use $CCAS to assemble if found
Commit c14bdaf1 made winebuild use Clang to assemble if found.
However, just because a user has some version of Clang installed, it
does not mean that she wants to use Clang to assemble Wine. For example,
a user who has both Clang and GAS installed may want to use GAS to avoid
textrels (see https://bugs.gentoo.org/show_bug.cgi?id=455308).
This patch allows the user to override which assembler gets used by
exporting CCAS at Wine configure time; the name CCAS was chosen for
compatibility with automake's standard AM_PROG_AS macro.
---
configure | 106 ++++++++++++++++++++++++++++++++++++++++++++
configure.ac | 4 ++
tools/winebuild/Makefile.in | 5 ++-
tools/winebuild/utils.c | 12 +++++
4 files changed, 126 insertions(+), 1 deletion(-)
diff --git a/configure b/configure
index e3253ee..d0b7777 100755
--- a/configure
+++ b/configure
@@ -732,6 +732,8 @@ FLEX
TOOLSDIR
WOW64_DISABLE
TARGETFLAGS
+ac_ct_CCAS
+CCAS
CPPBIN
ac_ct_CXX
CXXFLAGS
@@ -861,6 +863,7 @@ CPPFLAGS
CXX
CXXFLAGS
CCC
+CCAS
CPP
XMKMF'
@@ -1549,6 +1552,7 @@ Some influential environment variables:
you have headers in a nonstandard directory <include dir>
CXX C++ compiler command
CXXFLAGS C++ compiler flags
+ CCAS Assembler command
CPP C preprocessor
XMKMF Path to xmkmf, Makefile generator for X Window System
@@ -4075,6 +4079,108 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
+
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in clang gas as
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CCAS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CCAS"; then
+ ac_cv_prog_CCAS="$CCAS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CCAS="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CCAS=$ac_cv_prog_CCAS
+if test -n "$CCAS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCAS" >&5
+$as_echo "$CCAS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CCAS" && break
+ done
+fi
+if test -z "$CCAS"; then
+ ac_ct_CCAS=$CCAS
+ for ac_prog in clang gas as
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CCAS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CCAS"; then
+ ac_cv_prog_ac_ct_CCAS="$ac_ct_CCAS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CCAS="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CCAS=$ac_cv_prog_ac_ct_CCAS
+if test -n "$ac_ct_CCAS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CCAS" >&5
+$as_echo "$ac_ct_CCAS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CCAS" && break
+done
+
+ if test "x$ac_ct_CCAS" = x; then
+ CCAS=""$CC""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CCAS=$ac_ct_CCAS
+ fi
+fi
+
+
case $host in
*-darwin*)
if test "x$enable_win64" = "xyes"
diff --git a/configure.ac b/configure.ac
index c93cd08..760f325 100644
--- a/configure.ac
+++ b/configure.ac
@@ -126,6 +126,10 @@ dnl We can't use AC_PROG_CPP for winegcc, it uses by default $(CC) -E
AC_CHECK_TOOL(CPPBIN,cpp,cpp)
AC_DEFINE_UNQUOTED(EXEEXT,["$ac_exeext"],[Define to the file extension for executables.])
+dnl Analogous to AM_PROG_AS
+AC_ARG_VAR([CCAS],[Assembler command])
+AC_CHECK_TOOLS(CCAS,[clang gas as],["$CC"])
+
case $host in
*-darwin*)
if test "x$enable_win64" = "xyes"
diff --git a/tools/winebuild/Makefile.in b/tools/winebuild/Makefile.in
index 2017129..3fe47a3 100644
--- a/tools/winebuild/Makefile.in
+++ b/tools/winebuild/Makefile.in
@@ -1,4 +1,7 @@
-DEFS = -D__WINESRC__ $(EXTRADEFS)
+DEFS = \
+ -DCCAS="\"@CCAS@\"" \
+ -D__WINESRC__ \
+ $(EXTRADEFS)
PROGRAMS = winebuild$(EXEEXT)
MANPAGE = winebuild.man
diff --git a/tools/winebuild/utils.c b/tools/winebuild/utils.c
index 262ff3a..1c5f918 100644
--- a/tools/winebuild/utils.c
+++ b/tools/winebuild/utils.c
@@ -352,6 +352,18 @@ struct strarray *get_as_command(void)
static int as_is_clang = 0;
struct strarray *args = strarray_init();
+ if (!as_command && strlen( CCAS ))
+ {
+ struct stat st;
+
+ if (!stat( CCAS, &st ))
+ as_command = CCAS;
+ else
+ as_command = find_tool( CCAS, NULL );
+
+ if (as_command && strstr( as_command, "clang" )) as_is_clang = 1;
+ }
+
if (!as_command)
{
as_command = find_tool( "clang", NULL );
--
1.8.1.2

View File

@ -1,59 +0,0 @@
http://bugs.gentoo.org/260726
diff --git a/tools/winebuild/main.c b/tools/winebuild/main.c
index 16b4165..5c77267 100644
--- a/tools/winebuild/main.c
+++ b/tools/winebuild/main.c
@@ -48,10 +48,13 @@ int link_ext_symbols = 0;
int force_pointer_size = 0;
int unwind_tables = 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(__powerpc__)
enum target_cpu target_cpu = CPU_POWERPC;
#elif defined(__arm__)
@@ -611,6 +614,10 @@ int main(int argc, char **argv)
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 );
diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index 06aa200..c44d2e3 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -213,10 +213,13 @@ struct options
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(__powerpc__)
static const enum target_cpu build_cpu = CPU_POWERPC;
#elif defined(__arm__)
@@ -1258,6 +1261,9 @@ int main(int argc, char **argv)
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;

View File

@ -1,45 +0,0 @@
commit ce4b6451aabbe83809c7483c748cfa009cc090d6
Author: Alexandre Julliard <julliard@winehq.org>
Date: Fri May 10 22:01:44 2013 +0200
configure: Add explicit install targets in libs/wine for make_makefiles.
diff --git a/configure b/configure
index d4c1f8e..ef38bfd 100755
--- a/configure
+++ b/configure
@@ -16379,7 +16379,7 @@ wine_fn_config_makefile documentation enable_documentation
wine_fn_config_makefile fonts enable_fonts install-lib
wine_fn_config_makefile include enable_include install-dev
wine_fn_config_makefile libs/port enable_libs_port
-wine_fn_config_makefile libs/wine enable_libs_wine
+wine_fn_config_makefile libs/wine enable_libs_wine install-dev,install-lib
wine_fn_config_makefile libs/wpp enable_libs_wpp
wine_fn_config_makefile loader enable_loader install-lib,manpage
wine_fn_config_program aspnet_regiis enable_aspnet_regiis install
diff --git a/configure.ac b/configure.ac
index 6dd2348..b44673e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3173,7 +3173,7 @@ WINE_CONFIG_MAKEFILE([documentation])
WINE_CONFIG_MAKEFILE([fonts],,[install-lib])
WINE_CONFIG_MAKEFILE([include],,[install-dev])
WINE_CONFIG_MAKEFILE([libs/port])
-WINE_CONFIG_MAKEFILE([libs/wine])
+WINE_CONFIG_MAKEFILE([libs/wine],,[install-dev,install-lib])
WINE_CONFIG_MAKEFILE([libs/wpp])
WINE_CONFIG_MAKEFILE([loader],,[install-lib,manpage])
WINE_CONFIG_PROGRAM(aspnet_regiis,,[install])
diff --git a/libs/wine/Makefile.in b/libs/wine/Makefile.in
index b8dc385..7de7799 100644
--- a/libs/wine/Makefile.in
+++ b/libs/wine/Makefile.in
@@ -111,4 +111,8 @@ version.c: dummy
$(RELPATH):
@cd $(TOOLSDIR)/tools && $(MAKE) relpath$(TOOLSEXT)
+# Make sure that make_makefiles sees the install rules
+install install-lib::
+install install-dev::
+
@LIBWINE_RULES@

View File

@ -1,44 +0,0 @@
From 9fb3de8e9268e8e81128fc77328495567140e082 Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Sat, 25 May 2013 23:57:04 -0400
Subject: [PATCH] configure, secur32: In gnutls-3.2, gnutls_mac_get_key_size()
moved to crypto.h
Based on a patch by Ben Kohler <bkohler@gmail.com>
https://bugs.gentoo.org/show_bug.cgi?id=471077
http://bugs.winehq.org/show_bug.cgi?id=33649
---
configure.ac | 3 ++-
dlls/secur32/schannel_gnutls.c | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 1941be1..2c10734 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1344,7 +1344,8 @@ then
ac_save_CPPFLAGS="$CPPFLAGS"
WINE_PACKAGE_FLAGS(GNUTLS,[gnutls])
AC_CHECK_HEADER(gnutls/gnutls.h,
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <gnutls/gnutls.h>]], [[static typeof(gnutls_mac_get_key_size) *func; if (func) return 0;]])],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <gnutls/gnutls.h>
+#include <gnutls/crypto.h>]], [[static typeof(gnutls_mac_get_key_size) *func; if (func) return 0;]])],
[WINE_CHECK_SONAME(gnutls,gnutls_global_init,,[GNUTLS_CFLAGS=""],[$GNUTLS_LIBS])])],
[GNUTLS_CFLAGS=""])
CPPFLAGS="$ac_save_CPPFLAGS"
diff --git a/dlls/secur32/schannel_gnutls.c b/dlls/secur32/schannel_gnutls.c
index 70b8276..cbe64e8 100644
--- a/dlls/secur32/schannel_gnutls.c
+++ b/dlls/secur32/schannel_gnutls.c
@@ -25,6 +25,7 @@
#include <stdarg.h>
#ifdef SONAME_LIBGNUTLS
#include <gnutls/gnutls.h>
+#include <gnutls/crypto.h>
#endif
#include "windef.h"
--
1.8.2.1

View File

@ -1,21 +0,0 @@
Avoid "undefined reference to `memset'" error when building with
USE=custom-cflags and -O3 in CFLAGS with gcc-4.8.
See:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56888
http://bugs.winehq.org/show_bug.cgi?id=33521
https://bugs.gentoo.org/show_bug.cgi?id=480508
diff --git a/configure.ac b/configure.ac
index d8033cf..fe7cc7d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1767,6 +1767,7 @@ then
dnl Check for some compiler flags
WINE_TRY_CFLAGS([-fno-builtin],[AC_SUBST(BUILTINFLAG,"-fno-builtin")])
+ WINE_TRY_CFLAGS([-fno-tree-loop-distribute-patterns])
WINE_TRY_CFLAGS([-fno-strict-aliasing])
dnl clang needs to be told to fail on unknown options
saved_CFLAGS=$CFLAGS

View File

@ -1,38 +0,0 @@
From 6932b9a17c4f64c13f7060895d46334bc7022430 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 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index de807d2..a2e8684 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1233,7 +1233,13 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
if test "x$with_osmesa" != "xno"
then
- WINE_CHECK_SONAME(OSMesa,glAccum,,,[$X_LIBS -lm $X_EXTRA_LIBS])
+ WINE_CHECK_SONAME(OSMesa,OSMesaCreateContext,,,[$X_LIBS -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 -lm $X_EXTRA_LIBS])
+ CC=$osmesa_save_CC
+ 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.])
fi
--
1.8.5.3

View File

@ -1,38 +0,0 @@
From b7eb1ff48dd1210aa3e1002afc503d5df75d50b9 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 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 66b4dd6..0303d87 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1213,7 +1213,13 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
if test "x$with_osmesa" != "xno"
then
- WINE_CHECK_SONAME(OSMesa,glAccum,,,[$X_LIBS $XLIB -lm $X_EXTRA_LIBS])
+ WINE_CHECK_SONAME(OSMesa,OSMesaCreateContext,,,[$X_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 $XLIB -lm $X_EXTRA_LIBS])
+ CC=$osmesa_save_CC
+ 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.])
fi
--
1.8.3.2

View File

@ -1,629 +0,0 @@
From 9e081cd4a04e3326d4927aa082695f15432590e2 Mon Sep 17 00:00:00 2001
From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date: Thu, 14 Aug 2014 11:49:20 +0200
Subject: [PATCH] TESTING -- override pthreads to fix gstreamer v4
I believe the code is ready and will work properly now in all cases.
but please test before cherry picking this patch, and report
success or failure to me please.
Changes since v1:
- Call pthread_yield to make sure that we link against libpthread.
This fixes the build on saucy.
Changes since v2:
- Set thread_data->detached before creating the thread to prevent
a race condition.
Changes since v3:
- Set thread_data->detached CORRECTLY. Fix a small race between
thread creation and pthread_detach.
---
dlls/ntdll/ntdll_misc.h | 3 +
dlls/ntdll/thread.c | 307 +++++++++++++++++++++++++++++++++++++--
dlls/winegstreamer/glibthread.c | 13 ++
libs/wine/loader.c | 7 +
libs/wine/wine.map | 6 +
loader/Makefile.in | 2 +-
loader/main.c | 41 +++++
7 files changed, 362 insertions(+), 17 deletions(-)
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 4370084..1af819b 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -28,6 +28,7 @@
#include "winnt.h"
#include "winternl.h"
#include "wine/server.h"
+#include "wine/list.h"
#define MAX_NT_PATH_LENGTH 277
@@ -235,6 +236,8 @@ struct ntdll_thread_data
WINE_VM86_TEB_INFO vm86; /* 1fc vm86 private data */
void *exit_frame; /* 204 exit frame pointer */
#endif
+ struct list entry;
+ BOOL detached;
};
static inline struct ntdll_thread_data *ntdll_get_thread_data(void)
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index c8461b0..8d5470e 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -33,6 +33,7 @@
#ifdef HAVE_SYS_SYSCALL_H
#include <sys/syscall.h>
#endif
+#include <errno.h>
#define NONAMELESSUNION
#include "ntstatus.h"
@@ -58,6 +59,7 @@ struct startup_info
TEB *teb;
PRTL_THREAD_START_ROUTINE entry_point;
void *entry_arg;
+ BOOL native_thread;
};
static PEB *peb;
@@ -202,6 +204,78 @@ static ULONG get_dyld_image_info_addr(void)
}
#endif /* __APPLE__ */
+#ifdef __linux__
+extern typeof(pthread_create) *__glob_pthread_create, *call_pthread_create;
+extern typeof(pthread_join) *__glob_pthread_join, *call_pthread_join;
+extern typeof(pthread_detach) *__glob_pthread_detach, *call_pthread_detach;
+
+static typeof(pthread_create) __hook_pthread_create;
+static typeof(pthread_join) __hook_pthread_join;
+static typeof(pthread_detach) __hook_pthread_detach;
+
+static pthread_mutex_t thread_lock;
+
+static void thread_wrap_init(void)
+{
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST);
+ pthread_mutex_init(&thread_lock, &attr);
+ pthread_mutexattr_destroy(&attr);
+
+ call_pthread_create = __hook_pthread_create;
+ call_pthread_join = __hook_pthread_join;
+ call_pthread_detach = __hook_pthread_detach;
+}
+
+static TEB *dead_teb;
+static struct list active_list = LIST_INIT(active_list);
+
+static void take_thread_lock(void)
+{
+ int ret = pthread_mutex_lock(&thread_lock);
+ if (ret == EOWNERDEAD)
+ pthread_mutex_consistent(&thread_lock);
+}
+
+static void detach_thread_unlock(TEB *own_teb)
+{
+ struct ntdll_thread_data *thread_data;
+ TEB *teb = dead_teb;
+
+ dead_teb = own_teb;
+
+ pthread_mutex_unlock(&thread_lock);
+ if (!teb)
+ return;
+
+ thread_data = (struct ntdll_thread_data *)teb->SpareBytes1;
+ __glob_pthread_join(thread_data->pthread_id, NULL);
+ signal_free_thread(teb);
+}
+
+static void reap_thread(TEB *teb)
+{
+ struct ntdll_thread_data *thread_data = (struct ntdll_thread_data *)teb->SpareBytes1;
+ take_thread_lock();
+ if (thread_data->detached)
+ detach_thread_unlock(teb);
+ else {
+ /*
+ * Do not unlock, wait until the thread is thoroughly dead.
+ * This prevents a race condition where detach is called
+ * after the thread has not finished dying yet.
+ */
+ }
+}
+
+#else
+#define __glob_pthread_create pthread_create
+#define __glob_pthread_join pthread_join
+#define __glob_pthread_detach pthread_detach
+#define thread_wrap_init()
+#endif
+
/***********************************************************************
* thread_init
*
@@ -220,6 +294,7 @@ HANDLE thread_init(void)
struct ntdll_thread_data *thread_data;
static struct debug_info debug_info; /* debug info for initial thread */
+ thread_wrap_init();
virtual_init();
/* reserve space for shared user data */
@@ -349,14 +424,12 @@ void terminate_thread( int status )
pthread_exit( UIntToPtr(status) );
}
-
-/***********************************************************************
- * exit_thread
- */
-void exit_thread( int status )
+static void exit_thread_common( int status )
{
+#ifndef __linux__
static void *prev_teb;
TEB *teb;
+#endif
if (status) /* send the exit code to the server (0 is already the default) */
{
@@ -380,24 +453,177 @@ void exit_thread( int status )
pthread_sigmask( SIG_BLOCK, &server_block_set, NULL );
+#ifndef __linux__
if ((teb = interlocked_xchg_ptr( &prev_teb, NtCurrentTeb() )))
{
struct ntdll_thread_data *thread_data = (struct ntdll_thread_data *)teb->SpareBytes1;
if (thread_data->pthread_id)
{
- pthread_join( thread_data->pthread_id, NULL );
+ __glob_pthread_join( thread_data->pthread_id, NULL );
signal_free_thread( teb );
}
}
+#else
+ reap_thread(NtCurrentTeb());
+#endif
close( ntdll_get_thread_data()->wait_fd[0] );
close( ntdll_get_thread_data()->wait_fd[1] );
close( ntdll_get_thread_data()->reply_fd );
close( ntdll_get_thread_data()->request_fd );
+}
+
+void exit_thread( int status )
+{
+ exit_thread_common(status);
pthread_exit( UIntToPtr(status) );
}
+#ifdef __linux__
+
+struct unix_arg {
+ void *(*start)(void *);
+ void *arg;
+};
+
+/* dummy used for comparison */
+static DWORD native_unix_start;
+
+static void call_native_cleanup(void *arg)
+{
+ exit_thread_common(0);
+}
+
+static int
+__hook_pthread_create(pthread_t *thread, const pthread_attr_t *attr,
+ void *(*start_routine) (void *), void *parm)
+{
+ NTSTATUS ret;
+ pthread_t tid;
+ size_t stack = 8 * 1024 * 1024;
+ struct unix_arg arg;
+ arg.start = start_routine;
+ arg.arg = parm;
+
+ if (!thread)
+ thread = &tid;
+
+ TRACE("Overriding thread creation!\n");
+ if (attr) {
+ static int once;
+ if (!once++)
+ FIXME("most thread attributes ignored!\n");
+ else
+ WARN("most thread attributes ignored!\n");
+
+ pthread_attr_getstacksize(attr, &stack);
+ }
+
+ ret = RtlCreateUserThread( NtCurrentProcess(), NULL, FALSE, NULL, stack, 0, (void*)&native_unix_start, &arg, NULL, (void*)thread );
+ if (ret != STATUS_SUCCESS)
+ FIXME("ret: %08x\n", ret);
+ switch (ret) {
+ case STATUS_SUCCESS:
+ TRACE("created thread %lx for %p/%p\n", *thread, start_routine, parm);
+ return 0;
+ case STATUS_NO_MEMORY:
+ return ENOMEM;
+ case STATUS_TOO_MANY_OPENED_FILES:
+ return EMFILE;
+ default:
+ ERR("Unhandled ntstatus %08x\n", ret);
+ return ENOMEM;
+ }
+}
+
+static int __hook_pthread_detach(pthread_t thread)
+{
+ struct ntdll_thread_data *thread_data;
+ TEB *teb = NULL;
+
+ if (pthread_equal(thread, pthread_self())) {
+ TRACE("Detached self: %lx\n", pthread_self());
+ ntdll_get_thread_data()->detached = 1;
+ return 0;
+ }
+
+ take_thread_lock();
+ LIST_FOR_EACH_ENTRY(thread_data, &active_list, typeof(*thread_data), entry) {
+ if (pthread_equal(thread_data->pthread_id, thread)) {
+ teb = CONTAINING_RECORD(thread_data, typeof(*teb), SpareBytes1);
+
+ list_remove(&thread_data->entry);
+ if (!pthread_tryjoin_np(thread, NULL)) {
+ detach_thread_unlock(NULL);
+ TRACE("Thread %lx was dead, cleaning up\n", thread);
+ signal_free_thread(teb);
+ return 0;
+ }
+ thread_data->detached = 1;
+ break;
+ }
+ }
+ detach_thread_unlock(NULL);
+ if (!teb)
+ TRACE("Could not find thread %lx to detach\n", thread);
+ else
+ TRACE("Changed thread %lx to detached\n", thread);
+ return teb ? 0 : ESRCH;
+}
+
+static int __hook_pthread_join(pthread_t thread, void **retval)
+{
+ struct ntdll_thread_data *thread_data, *t2;
+ int ret = ESRCH;
+
+ if (pthread_equal(thread, pthread_self()))
+ return EDEADLK;
+
+ take_thread_lock();
+ LIST_FOR_EACH_ENTRY(thread_data, &active_list, typeof(*thread_data), entry) {
+ TEB *teb = CONTAINING_RECORD(thread_data, typeof(*teb), SpareBytes1);
+
+ if (pthread_equal(thread, thread_data->pthread_id)) {
+
+ ret = pthread_tryjoin_np(thread, retval);
+ if (!ret) {
+ TRACE("Thread %lx was dead fastpath, cleaning up\n", thread);
+ goto free;
+ }
+ detach_thread_unlock(NULL);
+
+ ret = __glob_pthread_join(thread, retval);
+ if (ret) {
+ TRACE("Thread %lx join failed with %i, ignoring\n", thread, ret);
+ return ret;
+ }
+
+ take_thread_lock();
+ /* Check if someone else freed the thread yet */
+ LIST_FOR_EACH_ENTRY(t2, &active_list, typeof(*thread_data), entry)
+ if (t2 == thread_data) {
+ TRACE("Cleaning up after successful join\n");
+ goto free;
+ }
+ TRACE("No clean up after successful join, multiple pthread_join's?\n");
+ break;
+
+free:
+ list_remove(&thread_data->entry);
+ detach_thread_unlock(NULL);
+ signal_free_thread(teb);
+ return 0;
+ }
+ }
+
+ detach_thread_unlock(NULL);
+ if (ret)
+ TRACE("failed with %i\n", ret);
+ return ret;
+}
+
+#endif
/***********************************************************************
* start_thread
@@ -426,9 +652,19 @@ static void start_thread( struct startup_info *info )
if (TRACE_ON(relay))
DPRINTF( "%04x:Starting thread proc %p (arg=%p)\n", GetCurrentThreadId(), func, arg );
- call_thread_entry_point( (LPTHREAD_START_ROUTINE)func, arg );
-}
+#ifdef __linux__
+ if (info->native_thread) {
+ void *(*start)(void*) = (void*)func;
+ FIXME("Started native thread %08x\n", GetCurrentThreadId());
+ pthread_cleanup_push(call_native_cleanup, NULL);
+ pthread_exit(start(arg));
+ pthread_cleanup_pop(1);
+ return;
+ }
+#endif
+ call_thread_entry_point( (LPTHREAD_START_ROUTINE)func, arg );
+}
/***********************************************************************
* RtlCreateUserThread (NTDLL.@)
@@ -440,14 +676,13 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *
HANDLE *handle_ptr, CLIENT_ID *id )
{
sigset_t sigset;
- pthread_t pthread_id;
pthread_attr_t attr;
struct ntdll_thread_data *thread_data;
struct startup_info *info = NULL;
HANDLE handle = 0, actctx = 0;
TEB *teb = NULL;
DWORD tid = 0;
- int request_pipe[2];
+ int request_pipe[2], ret;
NTSTATUS status;
if (process != NtCurrentProcess())
@@ -472,10 +707,14 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *
if (handle_ptr) *handle_ptr = wine_server_ptr_handle( result.create_thread.handle );
else NtClose( wine_server_ptr_handle( result.create_thread.handle ));
}
+ TRACE("CreateThread for other process returns %08x\n", result.create_thread.status);
return result.create_thread.status;
}
- if (server_pipe( request_pipe ) == -1) return STATUS_TOO_MANY_OPENED_FILES;
+ if (server_pipe( request_pipe ) == -1) {
+ TRACE("CreateThread cannot create request pipe: %m\n");
+ return STATUS_TOO_MANY_OPENED_FILES;
+ }
wine_server_send_fd( request_pipe[0] );
SERVER_START_REQ( new_thread )
@@ -496,12 +735,16 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *
if (status)
{
close( request_pipe[1] );
+ TRACE("CreateThread server request failed with %08x\n", status);
return status;
}
pthread_sigmask( SIG_BLOCK, &server_block_set, &sigset );
- if ((status = signal_alloc_thread( &teb ))) goto error;
+ if ((status = signal_alloc_thread( &teb ))) {
+ TRACE("CreateThread signal thread allocation failed with %08x\n", status);
+ goto error;
+ }
teb->Peb = NtCurrentTeb()->Peb;
teb->ClientId.UniqueProcess = ULongToHandle(GetCurrentProcessId());
@@ -524,32 +767,64 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *
info = (struct startup_info *)(teb + 1);
info->teb = teb;
- info->entry_point = start;
- info->entry_arg = param;
+#ifdef __linux__
+ info->native_thread = (void*)start == (void*)&native_unix_start;
+ if (info->native_thread) {
+ struct unix_arg *arg = param;
+ info->entry_point = (void*)arg->start;
+ info->entry_arg = arg->arg;
+ } else
+#endif
+ {
+ info->entry_point = start;
+ info->entry_arg = param;
+ }
thread_data = (struct ntdll_thread_data *)teb->SpareBytes1;
+#ifdef __linux__
+ thread_data->detached = !info->native_thread;
+#endif
thread_data->request_fd = request_pipe[1];
thread_data->reply_fd = -1;
thread_data->wait_fd[0] = -1;
thread_data->wait_fd[1] = -1;
+ thread_data->entry.next = NULL;
- if ((status = virtual_alloc_thread_stack( teb, stack_reserve, stack_commit ))) goto error;
+ if ((status = virtual_alloc_thread_stack( teb, stack_reserve ?: (8 << 20), stack_commit ?: (1 << 20) ))) {
+ TRACE("Allocating virtual stack for %p (%li/%li) failed with %08x\n", start, stack_reserve, stack_commit, status);
+ goto error;
+ }
pthread_attr_init( &attr );
pthread_attr_setstack( &attr, teb->DeallocationStack,
(char *)teb->Tib.StackBase - (char *)teb->DeallocationStack );
pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM ); /* force creating a kernel thread */
interlocked_xchg_add( &nb_threads, 1 );
- if (pthread_create( &pthread_id, &attr, (void * (*)(void *))start_thread, info ))
+
+ take_thread_lock();
+ ret = __glob_pthread_create( &thread_data->pthread_id, &attr, (void * (*)(void *))start_thread, info );
+ if (ret)
{
+ TRACE("pthread create failed with %i/%m\n", ret);
interlocked_xchg_add( &nb_threads, -1 );
pthread_attr_destroy( &attr );
status = STATUS_NO_MEMORY;
goto error;
}
+ if (!thread_data->detached)
+ list_add_tail(&active_list, &thread_data->entry);
+ detach_thread_unlock(NULL);
+
pthread_attr_destroy( &attr );
pthread_sigmask( SIG_SETMASK, &sigset, NULL );
+ TRACE("Created thread succesfully, win handle: %04x, pthread: %lx\n", tid, thread_data->pthread_id);
+
+#ifdef __linux__
+ if ((void*)start == (void*)&native_unix_start && id)
+ *(pthread_t*)id = thread_data->pthread_id;
+ else
+#endif
if (id) id->UniqueThread = ULongToHandle(tid);
if (handle_ptr) *handle_ptr = handle;
else NtClose( handle );
diff --git a/dlls/winegstreamer/glibthread.c b/dlls/winegstreamer/glibthread.c
index 0d829a0..46e22f4 100644
--- a/dlls/winegstreamer/glibthread.c
+++ b/dlls/winegstreamer/glibthread.c
@@ -43,6 +43,7 @@
#include <stdlib.h>
#include <stdio.h>
+#if 0
#include "windef.h"
#include "winbase.h"
#include "winnls.h"
@@ -388,3 +389,15 @@ void g_thread_impl_init (void)
g_thread_self_tls = TlsAlloc ();
g_thread_init(&g_thread_functions_for_glib_use_default);
}
+
+#else
+
+void g_thread_impl_init (void)
+{
+ static gboolean beenhere = FALSE;
+
+ if (!beenhere++)
+ g_thread_init(NULL);
+}
+
+#endif
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
index 7261522..a8c31b9 100644
--- a/libs/wine/loader.c
+++ b/libs/wine/loader.c
@@ -73,6 +73,13 @@ char **__wine_main_argv = NULL;
WCHAR **__wine_main_wargv = NULL;
char **__wine_main_environ = NULL;
+#ifdef __linux__
+#include <pthread.h>
+typeof(pthread_create) *call_pthread_create, *__glob_pthread_create;
+typeof(pthread_join) *call_pthread_join, *__glob_pthread_join;
+typeof(pthread_detach) *call_pthread_detach, *__glob_pthread_detach;
+#endif
+
struct dll_path_context
{
unsigned int index; /* current index in the dll path list */
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 2159fac..fb3b951 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -117,6 +117,12 @@ WINE_1.0
wine_utf8_mbstowcs;
wine_utf8_wcstombs;
wine_wctype_table;
+ __glob_pthread_create;
+ call_pthread_create;
+ __glob_pthread_join;
+ call_pthread_join;
+ __glob_pthread_detach;
+ call_pthread_detach;
local: *;
};
diff --git a/loader/Makefile.in b/loader/Makefile.in
index 95e4798..a18dd02 100644
--- a/loader/Makefile.in
+++ b/loader/Makefile.in
@@ -1,4 +1,4 @@
-EXTRALIBS = $(PTHREAD_LIBS)
+EXTRALIBS = $(PTHREAD_LIBS) $(DL_LIBS)
C_SRCS = \
main.c \
diff --git a/loader/main.c b/loader/main.c
index ac67290..76609e1 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -202,6 +202,45 @@ static int pre_exec(void)
#endif
+#ifdef __linux__
+
+extern typeof(pthread_create) *call_pthread_create, *__glob_pthread_create;
+extern typeof(pthread_detach) *call_pthread_detach, *__glob_pthread_detach;
+extern typeof(pthread_join) *call_pthread_join, *__glob_pthread_join;
+
+int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
+ void *(*start_routine) (void *), void *arg)
+{
+ return call_pthread_create(thread, attr, start_routine, arg);
+}
+
+int pthread_detach(pthread_t thread)
+{
+ return call_pthread_detach(thread);
+}
+
+int pthread_join(pthread_t thread, void **retval)
+{
+ return call_pthread_join(thread, retval);
+}
+
+static void init_thread_hook(void) {
+ call_pthread_create = __glob_pthread_create = dlvsym(RTLD_NEXT, "pthread_create", "GLIBC_2.2.5");
+ if (!__glob_pthread_create)
+ call_pthread_create = __glob_pthread_create = dlvsym(RTLD_NEXT, "pthread_create", "GLIBC_2.1");
+
+ call_pthread_detach = __glob_pthread_detach = dlsym(RTLD_NEXT, "pthread_detach");
+ call_pthread_join = __glob_pthread_join = dlsym(RTLD_NEXT, "pthread_join");
+
+ /* Call a function from libpthread to ensure being linked against it */
+ pthread_yield();
+}
+
+#else
+
+#define init_thread_hook()
+
+#endif
/**********************************************************************
* main
@@ -211,6 +250,8 @@ int main( int argc, char *argv[] )
char error[1024];
int i;
+ init_thread_hook();
+
if (!getenv( "WINELOADERNOEXEC" )) /* first time around */
{
static char noexec[] = "WINELOADERNOEXEC=1";
--
1.7.6.6.GIT

View File

@ -1,128 +0,0 @@
From 8a8957b4e6c9fe153524a7b1051f3aa1b6b4b402 Mon Sep 17 00:00:00 2001
From: Ryan Davis <iconoclasmandheresy@gmail.com>
Date: Sat, 16 Nov 2013 00:45:53 -0800
Subject: [PATCH 1/2] Apply hcce patch and massager for new wording
---
dlls/crypt32/chain.c | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c
index 1a83dee..31d1c53 100644
--- a/dlls/crypt32/chain.c
+++ b/dlls/crypt32/chain.c
@@ -33,7 +33,10 @@ WINE_DECLARE_DEBUG_CHANNEL(chain);
#define DEFAULT_CYCLE_MODULUS 7
-static HCERTCHAINENGINE CRYPT_defaultChainEngine;
+/* There are two default chain engines which correspond to HCCE_CURRENT_USER and
+ * HCCE_LOCAL_MACHINE.
+*/
+static HCERTCHAINENGINE CRYPT_defaultChainEngine[2] = { NULL, NULL };
/* This represents a subset of a certificate chain engine: it doesn't include
* the "hOther" store described by MSDN, because I'm not sure how that's used.
@@ -212,7 +215,7 @@ VOID WINAPI CertFreeCertificateChainEngine(HCERTCHAINENGINE hChainEngine)
TRACE("(%p)\n", hChainEngine);
- if (engine && InterlockedDecrement(&engine->ref) == 0)
+ if (engine > HCCE_LOCAL_MACHINE && InterlockedDecrement(&engine->ref) == 0)
{
CertCloseStore(engine->hWorld, 0);
CertCloseStore(engine->hRoot, 0);
@@ -220,26 +223,28 @@ VOID WINAPI CertFreeCertificateChainEngine(HCERTCHAINENGINE hChainEngine)
}
}
-static HCERTCHAINENGINE CRYPT_GetDefaultChainEngine(void)
+static HCERTCHAINENGINE CRYPT_GetDefaultChainEngine(HCERTCHAINENGINE h)
{
- if (!CRYPT_defaultChainEngine)
+ if (!CRYPT_defaultChainEngine[(int)h])
{
CERT_CHAIN_ENGINE_CONFIG config = { 0 };
HCERTCHAINENGINE engine;
config.cbSize = sizeof(config);
+ if (h == HCCE_LOCAL_MACHINE)
+ config.dwFlags = CERT_CHAIN_USE_LOCAL_MACHINE_STORE;
CertCreateCertificateChainEngine(&config, &engine);
- InterlockedCompareExchangePointer(&CRYPT_defaultChainEngine, engine,
+ InterlockedCompareExchangePointer(&CRYPT_defaultChainEngine[(int)h], engine,
NULL);
- if (CRYPT_defaultChainEngine != engine)
+ if (CRYPT_defaultChainEngine[(int)h] != engine)
CertFreeCertificateChainEngine(engine);
}
- return CRYPT_defaultChainEngine;
+ return CRYPT_defaultChainEngine[(int)h];
}
-void default_chain_engine_free(void)
+void default_chain_engine_free(HCERTCHAINENGINE h)
{
- CertFreeCertificateChainEngine(CRYPT_defaultChainEngine);
+ CertFreeCertificateChainEngine(CRYPT_defaultChainEngine[(int)h]);
}
typedef struct _CertificateChain
@@ -2886,11 +2891,10 @@ BOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE hChainEngine,
return FALSE;
}
- if (!engine)
- engine = CRYPT_GetDefaultChainEngine();
+ if (engine <= HCCE_LOCAL_MACHINE)
+ engine = CRYPT_GetDefaultChainEngine(engine);
if (TRACE_ON(chain))
dump_chain_para(pChainPara);
- /* FIXME: what about HCCE_LOCAL_MACHINE? */
ret = CRYPT_BuildCandidateChainFromCert(engine, pCertContext, pTime,
hAdditionalStore, dwFlags, &chain);
if (ret)
--
1.8.4.3
From df10036a07e90f2c75c4d54d8ec462e24e314bae Mon Sep 17 00:00:00 2001
From: Ryan Davis <iconoclasmandheresy@gmail.com>
Date: Sat, 16 Nov 2013 23:53:49 -0800
Subject: [PATCH 2/2] HCCE patch kinda.
---
dlls/crypt32/crypt32_private.h | 2 +-
dlls/crypt32/main.c | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/crypt32/crypt32_private.h b/dlls/crypt32/crypt32_private.h
index 53e0834..6a4d819 100644
--- a/dlls/crypt32/crypt32_private.h
+++ b/dlls/crypt32/crypt32_private.h
@@ -157,7 +157,7 @@ void crypt_oid_init(void) DECLSPEC_HIDDEN;
void crypt_oid_free(void) DECLSPEC_HIDDEN;
void crypt_sip_free(void) DECLSPEC_HIDDEN;
void root_store_free(void) DECLSPEC_HIDDEN;
-void default_chain_engine_free(void) DECLSPEC_HIDDEN;
+void default_chain_engine_free(HCERTCHAINENGINE) DECLSPEC_HIDDEN;
/* (Internal) certificate store types and functions */
struct WINE_CRYPTCERTSTORE;
diff --git a/dlls/crypt32/main.c b/dlls/crypt32/main.c
index c4f6c78..2afb702 100644
--- a/dlls/crypt32/main.c
+++ b/dlls/crypt32/main.c
@@ -50,7 +50,8 @@ BOOL WINAPI DllMain(HINSTANCE hInst, DWORD fdwReason, PVOID pvReserved)
crypt_oid_free();
crypt_sip_free();
root_store_free();
- default_chain_engine_free();
+ default_chain_engine_free(HCCE_CURRENT_USER);
+ default_chain_engine_free(HCCE_LOCAL_MACHINE);
if (hDefProv) CryptReleaseContext(hDefProv, 0);
break;
}
--
1.8.4.3

View File

@ -1,496 +0,0 @@
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.7.29.ebuild,v 1.1 2014/10/25 20:37:44 ryao Exp $
EAPI="5"
AUTOTOOLS_AUTORECONF=1
PLOCALES="ar bg ca cs da de el en en_US eo es fa fi fr he hi hr hu it ja ko lt ml nb_NO nl or pa pl pt_BR pt_PT rm ro ru sk sl sr_RS@cyrillic sr_RS@latin sv te th tr uk wa zh_CN zh_TW"
PLOCALE_BACKUP="en"
inherit autotools-utils eutils fdo-mime flag-o-matic gnome2-utils l10n multilib multilib-minimal pax-utils toolchain-funcs virtualx
if [[ ${PV} == "9999" ]] ; then
EGIT_REPO_URI="git://source.winehq.org/git/wine.git"
inherit git-2
SRC_URI=""
#KEYWORDS=""
else
MY_P="${PN}-${PV/_/-}"
SRC_URI="mirror://sourceforge/${PN}/Source/${MY_P}.tar.bz2"
KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd"
S=${WORKDIR}/${MY_P}
fi
GV="2.24"
MV="4.5.2"
COMPHOLIO_P="wine-staging-${PV}"
WINE_GENTOO="wine-gentoo-2013.06.24"
DESCRIPTION="Free implementation of Windows(tm) on Unix"
HOMEPAGE="http://www.winehq.org/"
SRC_URI="${SRC_URI}
gecko? (
abi_x86_32? ( mirror://sourceforge/${PN}/Wine%20Gecko/${GV}/wine_gecko-${GV}-x86.msi )
abi_x86_64? ( mirror://sourceforge/${PN}/Wine%20Gecko/${GV}/wine_gecko-${GV}-x86_64.msi )
)
mono? ( mirror://sourceforge/${PN}/Wine%20Mono/${MV}/wine-mono-${MV}.msi )
pipelight? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${COMPHOLIO_P}.tar.gz )
pulseaudio? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${COMPHOLIO_P}.tar.gz )
http://dev.gentoo.org/~tetromino/distfiles/${PN}/${WINE_GENTOO}.tar.bz2"
LICENSE="LGPL-2.1"
SLOT="0"
IUSE="+abi_x86_32 +abi_x86_64 +alsa capi cups custom-cflags dos elibc_glibc +fontconfig +gecko gphoto2 gsm gstreamer +jpeg lcms ldap +mono mp3 ncurses netapi nls odbc openal opencl +opengl osmesa oss +perl pipelight +png +prelink pulseaudio +realtime +run-exes samba scanner selinux +ssl test +threads +truetype +udisks v4l +X xcomposite xinerama +xml"
REQUIRED_USE="|| ( abi_x86_32 abi_x86_64 )
test? ( abi_x86_32 )
elibc_glibc? ( threads )
mono? ( abi_x86_32 )
osmesa? ( opengl )" #286560
# FIXME: the test suite is unsuitable for us; many tests require net access
# or fail due to Xvfb's opengl limitations.
RESTRICT="test"
NATIVE_DEPEND="
truetype? ( >=media-libs/freetype-2.0.0 )
capi? ( net-dialup/capi4k-utils )
ncurses? ( >=sys-libs/ncurses-5.2:= )
udisks? ( sys-apps/dbus )
fontconfig? ( media-libs/fontconfig:= )
gphoto2? ( media-libs/libgphoto2:= )
openal? ( media-libs/openal:= )
gstreamer? ( media-libs/gstreamer:0.10 media-libs/gst-plugins-base:0.10 )
X? (
x11-libs/libXcursor
x11-libs/libXext
x11-libs/libXrandr
x11-libs/libXi
x11-libs/libXxf86vm
)
xinerama? ( x11-libs/libXinerama )
alsa? ( media-libs/alsa-lib )
cups? ( net-print/cups:= )
opencl? ( virtual/opencl )
opengl? (
virtual/glu
virtual/opengl
)
gsm? ( media-sound/gsm:= )
jpeg? ( virtual/jpeg:0= )
ldap? ( net-nds/openldap:= )
lcms? ( media-libs/lcms:2= )
mp3? ( >=media-sound/mpg123-1.5.0 )
netapi? ( net-fs/samba[netapi(+)] )
nls? ( sys-devel/gettext )
odbc? ( dev-db/unixODBC:= )
osmesa? ( media-libs/mesa[osmesa] )
pipelight? ( sys-apps/attr )
pulseaudio? ( media-sound/pulseaudio )
xml? ( dev-libs/libxml2 dev-libs/libxslt )
scanner? ( media-gfx/sane-backends:= )
ssl? ( net-libs/gnutls:= )
png? ( media-libs/libpng:0= )
v4l? ( media-libs/libv4l )
xcomposite? ( x11-libs/libXcomposite )"
COMMON_DEPEND="
!amd64? ( ${NATIVE_DEPEND} )
amd64? (
abi_x86_64? ( ${NATIVE_DEPEND} )
abi_x86_32? (
truetype? ( || (
>=app-emulation/emul-linux-x86-xlibs-2.1[development,-abi_x86_32(-)]
>=media-libs/freetype-2.5.0.1[abi_x86_32(-)]
) )
ncurses? ( || (
app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
>=sys-libs/ncurses-5.9-r3[abi_x86_32(-)]
) )
udisks? ( || (
>=app-emulation/emul-linux-x86-baselibs-20130224[development,-abi_x86_32(-)]
>=sys-apps/dbus-1.6.18-r1[abi_x86_32(-)]
) )
fontconfig? ( || (
app-emulation/emul-linux-x86-xlibs[development,-abi_x86_32(-)]
>=media-libs/fontconfig-2.10.92[abi_x86_32(-)]
) )
gphoto2? ( || (
app-emulation/emul-linux-x86-medialibs[development,-abi_x86_32(-)]
>=media-libs/libgphoto2-2.5.3.1[abi_x86_32(-)]
) )
openal? ( || (
app-emulation/emul-linux-x86-sdl[development,-abi_x86_32(-)]
>=media-libs/openal-1.15.1[abi_x86_32(-)]
) )
gstreamer? ( || (
app-emulation/emul-linux-x86-medialibs[development,-abi_x86_32(-)]
(
>=media-libs/gstreamer-0.10.36-r2:0.10[abi_x86_32(-)]
>=media-libs/gst-plugins-base-0.10.36:0.10[abi_x86_32(-)]
)
) )
X? ( || (
app-emulation/emul-linux-x86-xlibs[development,-abi_x86_32(-)]
(
>=x11-libs/libXcursor-1.1.14[abi_x86_32(-)]
>=x11-libs/libXext-1.3.2[abi_x86_32(-)]
>=x11-libs/libXrandr-1.4.2[abi_x86_32(-)]
>=x11-libs/libXi-1.7.2[abi_x86_32(-)]
>=x11-libs/libXxf86vm-1.1.3[abi_x86_32(-)]
)
) )
xinerama? ( || (
app-emulation/emul-linux-x86-xlibs[development,-abi_x86_32(-)]
>=x11-libs/libXinerama-1.1.3[abi_x86_32(-)]
) )
alsa? ( || (
app-emulation/emul-linux-x86-soundlibs[alsa,development,-abi_x86_32(-)]
>=media-libs/alsa-lib-1.0.27.2[abi_x86_32(-)]
) )
cups? ( || (
app-emulation/emul-linux-x86-baselibs
>=net-print/cups-1.7.1-r1[abi_x86_32(-)]
) )
opencl? ( >=virtual/opencl-0-r3[abi_x86_32(-)] )
opengl? ( || (
app-emulation/emul-linux-x86-opengl[development,-abi_x86_32(-)]
(
>=virtual/glu-9.0-r1[abi_x86_32(-)]
>=virtual/opengl-7.0-r1[abi_x86_32(-)]
)
) )
gsm? ( || (
app-emulation/emul-linux-x86-soundlibs[development,-abi_x86_32(-)]
>=media-sound/gsm-1.0.13-r1[abi_x86_32(-)]
) )
jpeg? ( || (
app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
>=virtual/jpeg-0-r2:0[abi_x86_32(-)]
) )
ldap? ( || (
app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
>=net-nds/openldap-2.4.38-r1:=[abi_x86_32(-)]
) )
lcms? ( || (
app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
>=media-libs/lcms-2.5:2[abi_x86_32(-)]
) )
mp3? ( || (
app-emulation/emul-linux-x86-soundlibs[development,-abi_x86_32(-)]
>=media-sound/mpg123-1.15.4[abi_x86_32(-)]
) )
netapi? ( >=net-fs/samba-3.6.23-r1[netapi(+),abi_x86_32(-)] )
nls? ( || (
app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
>=sys-devel/gettext-0.18.3.2[abi_x86_32(-)]
) )
odbc? ( || (
app-emulation/emul-linux-x86-db[development,-abi_x86_32(-)]
>=dev-db/unixODBC-2.3.2:=[abi_x86_32(-)]
) )
osmesa? ( || (
>=app-emulation/emul-linux-x86-opengl-20121028[development,-abi_x86_32(-)]
>=media-libs/mesa-9.1.6[osmesa,abi_x86_32(-)]
) )
pipelight? ( || (
app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
>=sys-apps/attr-2.4.47-r1[abi_x86_32(-)]
) )
pulseaudio? ( || (
app-emulation/emul-linux-x86-soundlibs[development,-abi_x86_32(-)]
>=media-sound/pulseaudio-5.0[abi_x86_32(-)]
) )
xml? ( || (
>=app-emulation/emul-linux-x86-baselibs-20131008[development,-abi_x86_32(-)]
(
>=dev-libs/libxml2-2.9.1-r4[abi_x86_32(-)]
>=dev-libs/libxslt-1.1.28-r1[abi_x86_32(-)]
)
) )
scanner? ( || (
app-emulation/emul-linux-x86-medialibs[development,-abi_x86_32(-)]
>=media-gfx/sane-backends-1.0.23:=[abi_x86_32(-)]
) )
ssl? ( || (
app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
>=net-libs/gnutls-2.12.23-r6:=[abi_x86_32(-)]
) )
png? ( || (
app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
>=media-libs/libpng-1.6.10:0[abi_x86_32(-)]
) )
v4l? ( || (
app-emulation/emul-linux-x86-medialibs[development,-abi_x86_32(-)]
>=media-libs/libv4l-0.9.5[abi_x86_32(-)]
) )
xcomposite? ( || (
app-emulation/emul-linux-x86-xlibs[development,-abi_x86_32(-)]
>=x11-libs/libXcomposite-0.4.4-r1[abi_x86_32(-)]
) )
)
)"
RDEPEND="${COMMON_DEPEND}
dos? ( games-emulation/dosbox )
perl? ( dev-lang/perl dev-perl/XML-Simple )
samba? ( >=net-fs/samba-3.0.25 )
selinux? ( sec-policy/selinux-wine )
udisks? ( sys-fs/udisks:2 )
pulseaudio? ( realtime? ( sys-auth/rtkit ) )"
DEPEND="${COMMON_DEPEND}
amd64? ( abi_x86_32? ( !abi_x86_64? ( ${NATIVE_DEPEND} ) ) )
X? (
x11-proto/inputproto
x11-proto/xextproto
x11-proto/xf86vidmodeproto
)
xinerama? ( x11-proto/xineramaproto )
prelink? ( sys-devel/prelink )
>=sys-kernel/linux-headers-2.6
virtual/pkgconfig
virtual/yacc
sys-devel/flex"
# These use a non-standard "Wine" category, which is provided by
# /etc/xdg/applications-merged/wine.menu
QA_DESKTOP_FILE="usr/share/applications/wine-browsedrive.desktop
usr/share/applications/wine-notepad.desktop
usr/share/applications/wine-uninstaller.desktop
usr/share/applications/wine-winecfg.desktop"
wine_build_environment_check() {
[[ ${MERGE_TYPE} = "binary" ]] && return 0
if use abi_x86_64 && [[ $(( $(gcc-major-version) * 100 + $(gcc-minor-version) )) -lt 404 ]]; then
eerror "You need gcc-4.4+ to build 64-bit wine"
eerror
return 1
fi
if use abi_x86_32 && use opencl && [[ x$(eselect opencl show 2> /dev/null) = "xintel" ]]; then
eerror "You cannot build wine with USE=opencl because intel-ocl-sdk is 64-bit only."
eerror "See https://bugs.gentoo.org/487864 for more details."
eerror
return 1
fi
}
pkg_pretend() {
wine_build_environment_check || die
}
pkg_setup() {
wine_build_environment_check || die
}
src_unpack() {
if [[ ${PV} == "9999" ]] ; then
git-2_src_unpack
else
unpack ${MY_P}.tar.bz2
fi
use pipelight || use pulseaudio && unpack "${COMPHOLIO_P}.tar.gz"
unpack "${WINE_GENTOO}.tar.bz2"
l10n_find_plocales_changes "${S}/po" "" ".po"
}
src_prepare() {
local md5="$(md5sum server/protocol.def)"
local f
local PATCHES=(
"${FILESDIR}"/${PN}-1.5.26-winegcc.patch #260726
"${FILESDIR}"/${PN}-1.4_rc2-multilib-portage.patch #395615
"${FILESDIR}"/${PN}-1.7.12-osmesa-check.patch #429386
"${FILESDIR}"/${PN}-1.6-memset-O3.patch #480508
)
local COMPHOLIO_MAKE_ARGS="-W fonts-Missing_Fonts.ok"
use pulseaudio || COMPHOLIO_MAKE_ARGS="${COMPHOLIO_MAKE_ARGS} -W winepulse-PulseAudio_Support.ok"
if use gstreamer; then
# See http://bugs.winehq.org/show_bug.cgi?id=30557
ewarn "Applying experimental patch to fix GStreamer support. Note that"
ewarn "this patch has been reported to cause crashes in certain games."
PATCHES+=( "${FILESDIR}/${PN}-1.7.28-gstreamer-v4.patch" )
fi
if use pipelight; then
ewarn "Applying the unofficial Compholio patchset for Pipelight support,"
ewarn "which is unsupported by Wine developers. Please don't report bugs"
ewarn "to Wine bugzilla unless you can reproduce them with USE=-pipelight"
# epatch doesn't support binary patches and we ship our own pulse patches
emake -C "${WORKDIR}/${COMPHOLIO_P}/patches" \
$(echo ${COMPHOLIO_MAKE_ARGS}) \
series
PATCHES+=( $(sed -e "s:^:${WORKDIR}/${COMPHOLIO_P}/patches/:" \
"${WORKDIR}/${COMPHOLIO_P}/patches/series") )
# epatch doesn't support binary patches
ebegin "Applying Compholio font patches"
for f in "${WORKDIR}/${COMPHOLIO_P}/patches/fonts-Missing_Fonts"/*.patch; do
"../${COMPHOLIO_P}/debian/tools/gitapply.sh" < "${f}" \
|| die "Failed to apply ${f}"
done
eend
elif use pulseaudio; then
PATCHES+=( "../${COMPHOLIO_P}/patches/winepulse-PulseAudio_Support"/*.patch )
fi
autotools-utils_src_prepare
if [[ "$(md5sum server/protocol.def)" != "${md5}" ]]; then
einfo "server/protocol.def was patched; running tools/make_requests"
tools/make_requests || die #432348
fi
sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in || die
if ! use run-exes; then
sed -i '/^MimeType/d' tools/wine.desktop || die #117785
fi
# hi-res default icon, #472990, http://bugs.winehq.org/show_bug.cgi?id=24652
cp "${WORKDIR}"/${WINE_GENTOO}/icons/oic_winlogo.ico dlls/user32/resources/ || die
l10n_get_locales > po/LINGUAS # otherwise wine doesn't respect LINGUAS
}
src_configure() {
export LDCONFIG=/bin/true
use custom-cflags || strip-flags
multilib-minimal_src_configure
}
multilib_src_configure() {
local myconf=(
--sysconfdir=/etc/wine
$(use_with alsa)
$(use_with capi)
$(use_with lcms cms)
$(use_with cups)
$(use_with ncurses curses)
$(use_with udisks dbus)
$(use_with fontconfig)
$(use_with ssl gnutls)
$(use_with gphoto2 gphoto)
$(use_with gsm)
$(use_with gstreamer)
--without-hal
$(use_with jpeg)
$(use_with ldap)
$(use_with mp3 mpg123)
$(use_with netapi)
$(use_with nls gettext)
$(use_with openal)
$(use_with opencl)
$(use_with opengl)
$(use_with osmesa)
$(use_with oss)
--without-pcap
$(use_with png)
$(use_with threads pthread)
$(use_with scanner sane)
$(use_enable test tests)
$(use_with truetype freetype)
$(use_with v4l)
$(use_with X x)
$(use_with xcomposite)
$(use_with xinerama)
$(use_with xml)
$(use_with xml xslt)
)
use pulseaudio && myconf+=( --with-pulse )
use pipelight && myconf+=( --with-xattr )
local PKG_CONFIG AR RANLIB
# Avoid crossdev's i686-pc-linux-gnu-pkg-config if building wine32 on amd64; #472038
# set AR and RANLIB to make QA scripts happy; #483342
tc-export PKG_CONFIG AR RANLIB
if use amd64; then
if [[ ${ABI} == amd64 ]]; then
myconf+=( --enable-win64 )
else
myconf+=( --disable-win64 )
fi
# Note: using --with-wine64 results in problems with multilib.eclass
# CC/LD hackery. We're using separate tools instead.
fi
ECONF_SOURCE=${S} \
econf "${myconf[@]}"
emake depend
}
multilib_src_test() {
# FIXME: win32-only; wine64 tests fail with "could not find the Wine loader"
if [[ ${ABI} == x86 ]]; then
if [[ $(id -u) == 0 ]]; then
ewarn "Skipping tests since they cannot be run under the root user."
ewarn "To run the test ${PN} suite, add userpriv to FEATURES in make.conf"
return
fi
WINEPREFIX="${T}/.wine-${ABI}" \
Xemake test
fi
}
multilib_src_install_all() {
local DOCS=( ANNOUNCE AUTHORS README )
local l
add_locale_docs() {
local locale_doc="documentation/README.$1"
[[ ! -e ${locale_doc} ]] || DOCS+=( ${locale_doc} )
}
l10n_for_each_locale_do add_locale_docs
einstalldocs
prune_libtool_files --all
emake -C "../${WINE_GENTOO}" install DESTDIR="${D}" EPREFIX="${EPREFIX}"
if use gecko ; then
insinto /usr/share/wine/gecko
use abi_x86_32 && doins "${DISTDIR}"/wine_gecko-${GV}-x86.msi
use abi_x86_64 && doins "${DISTDIR}"/wine_gecko-${GV}-x86_64.msi
fi
if use mono ; then
insinto /usr/share/wine/mono
doins "${DISTDIR}"/wine-mono-${MV}.msi
fi
if ! use perl ; then
rm "${D}"usr/bin/{wine{dump,maker},function_grep.pl} "${D}"usr/share/man/man1/wine{dump,maker}.1 || die
fi
use abi_x86_32 && pax-mark psmr "${D}"usr/bin/wine{,-preloader} #255055
use abi_x86_64 && pax-mark psmr "${D}"usr/bin/wine64{,-preloader}
if use abi_x86_64 && ! use abi_x86_32; then
dosym /usr/bin/wine{64,} # 404331
dosym /usr/bin/wine{64,}-preloader
fi
# respect LINGUAS when installing man pages, #469418
for l in de fr pl; do
use linguas_${l} || rm -r "${D}"usr/share/man/${l}*
done
}
pkg_preinst() {
gnome2_icon_savelist
}
pkg_postinst() {
gnome2_icon_cache_update
fdo-mime_desktop_database_update
}
pkg_postrm() {
gnome2_icon_cache_update
fdo-mime_desktop_database_update
}