summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVolker Grabsch <vog@notjusthosting.com>2010-05-19 22:16:26 (GMT)
committerVolker Grabsch <vog@notjusthosting.com>2010-05-19 22:16:26 (GMT)
commit6bda72214d94fa58bc72ae92ed4e5ed4a1ebf1ec (patch)
treeafe00f5293c73f663dff97fdf4ac88ec00f8292f /src
parent43ba8ad2f1897b03f1ceadec840029e7a24cdf6c (diff)
downloadmxe-6bda72214d94fa58bc72ae92ed4e5ed4a1ebf1ec.zip
mxe-6bda72214d94fa58bc72ae92ed4e5ed4a1ebf1ec.tar.gz
mxe-6bda72214d94fa58bc72ae92ed4e5ed4a1ebf1ec.tar.bz2
add the autostatic patch to package pthreads
Diffstat (limited to 'src')
-rw-r--r--src/pthreads-1-autostatic.patch150
1 files changed, 150 insertions, 0 deletions
diff --git a/src/pthreads-1-autostatic.patch b/src/pthreads-1-autostatic.patch
new file mode 100644
index 0000000..2f64c2c
--- /dev/null
+++ b/src/pthreads-1-autostatic.patch
@@ -0,0 +1,150 @@
+This file is part of mingw-cross-env.
+See doc/index.html for further information.
+
+This patch has been taken from:
+http://sourceware.org/ml/pthreads-win32/2010/msg00006.html
+
+diff -ur pthreads-win32-20091019.orig/GNUmakefile pthreads-win32-20091019/GNUmakefile
+--- pthreads-win32-20091019.orig/GNUmakefile 2009-10-19 08:07:32.000000000 -0200
++++ pthreads-win32-20091019/GNUmakefile 2010-02-01 14:45:28.471432337 -0200
+@@ -63,7 +63,6 @@
+ XOPT =
+
+ RCFLAGS = --include-dir=.
+-LFLAGS = -lwsock32
+
+ # ----------------------------------------------------------------------
+ # The library can be built with some alternative behaviour to
+diff -ur pthreads-win32-20091019.orig/pthread.c pthreads-win32-20091019/pthread.c
+--- pthreads-win32-20091019.orig/pthread.c 2009-10-19 08:07:32.000000000 -0200
++++ pthreads-win32-20091019/pthread.c 2010-02-01 14:26:48.601487556 -0200
+@@ -49,6 +49,7 @@
+ #include "condvar.c"
+ #include "create.c"
+ #include "dll.c"
++#include "autostatic.c"
+ #include "errno.c"
+ #include "exit.c"
+ #include "fork.c"
+diff -ur pthreads-win32-20091019.orig/pthread_getspecific.c pthreads-win32-20091019/pthread_getspecific.c
+--- pthreads-win32-20091019.orig/pthread_getspecific.c 2009-10-19 08:07:32.000000000 -0200
++++ pthreads-win32-20091019/pthread_getspecific.c 2010-02-01 14:28:36.603981857 -0200
+@@ -72,12 +72,10 @@
+ else
+ {
+ int lasterror = GetLastError ();
+- int lastWSAerror = WSAGetLastError ();
+
+ ptr = TlsGetValue (key->key);
+
+ SetLastError (lasterror);
+- WSASetLastError (lastWSAerror);
+ }
+
+ return ptr;
+diff -ur pthreads-win32-20091019.orig/pthread.h pthreads-win32-20091019/pthread.h
+--- pthreads-win32-20091019.orig/pthread.h 2009-10-19 08:07:32.000000000 -0200
++++ pthreads-win32-20091019/pthread.h 2010-02-02 16:51:05.047931915 -0200
+@@ -533,7 +533,7 @@
+ * do NOT define PTW32_BUILD, and then the variables/functions will
+ * be imported correctly.
+ */
+-#ifndef PTW32_STATIC_LIB
++#if !defined(PTW32_STATIC_LIB) && !defined(__MINGW32__)
+ # ifdef PTW32_BUILD
+ # define PTW32_DLLPORT __declspec (dllexport)
+ # else
+diff -ur pthreads-win32-20091019.orig/sched.h pthreads-win32-20091019/sched.h
+--- pthreads-win32-20091019.orig/sched.h 2009-10-19 08:07:32.000000000 -0200
++++ pthreads-win32-20091019/sched.h 2010-02-02 16:51:00.665887720 -0200
+@@ -76,7 +76,7 @@
+ * do NOT define PTW32_BUILD, and then the variables/functions will
+ * be imported correctly.
+ */
+-#ifndef PTW32_STATIC_LIB
++#if !defined(PTW32_STATIC_LIB) && !defined(__MINGW32__)
+ # ifdef PTW32_BUILD
+ # define PTW32_DLLPORT __declspec (dllexport)
+ # else
+diff -ur pthreads-win32-20091019.orig/semaphore.h pthreads-win32-20091019/semaphore.h
+--- pthreads-win32-20091019.orig/semaphore.h 2009-10-19 08:07:32.000000000 -0200
++++ pthreads-win32-20091019/semaphore.h 2010-02-02 16:50:45.916576916 -0200
+@@ -75,7 +75,7 @@
+ * do NOT define PTW32_BUILD, and then the variables/functions will
+ * be imported correctly.
+ */
+-#ifndef PTW32_STATIC_LIB
++#if !defined(PTW32_STATIC_LIB) && !defined(__MINGW32__)
+ # ifdef PTW32_BUILD
+ # define PTW32_DLLPORT __declspec (dllexport)
+ # else
+--- /dev/null 2010-01-29 12:57:37.677072272 -0200
++++ pthreads-win32-20091019/autostatic.c 2010-02-01 14:26:48.601487556 -0200
+@@ -0,0 +1,67 @@
++/*
++ * autostatic.c
++ *
++ * Description:
++ * This translation unit implements static library initialisation.
++ *
++ * --------------------------------------------------------------------------
++ *
++ * Pthreads-win32 - POSIX Threads Library for Win32
++ * Copyright(C) 1998 John E. Bossom
++ * Copyright(C) 1999,2005 Pthreads-win32 contributors
++ *
++ * Contact Email: rpj@callisto.canberra.edu.au
++ *
++ * The current list of contributors is contained
++ * in the file CONTRIBUTORS included with the source
++ * code distribution. The list can also be seen at the
++ * following World Wide Web location:
++ * http://sources.redhat.com/pthreads-win32/contributors.html
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library in the file COPYING.LIB;
++ * if not, write to the Free Software Foundation, Inc.,
++ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
++ */
++
++#ifdef PTW32_STATIC_LIB
++
++#include "pthread.h"
++#include "implement.h"
++
++static void on_process_init(void)
++{
++ pthread_win32_process_attach_np ();
++}
++
++static void on_process_exit(void)
++{
++ pthread_win32_thread_detach_np ();
++ pthread_win32_process_detach_np ();
++}
++
++#ifdef __MINGW32__
++# define attribute_section(a) __attribute__((section(a)))
++#elif defined(_MSC_VER)
++# define attribute_section(a) __pragma(section(a,long,read)); __declspec(allocate(a))
++#else
++#error compiler not supported!
++#endif
++
++attribute_section(".CRT$XCU") void *msc_ctor = on_process_init;
++attribute_section(".CRT$XPU") void *msc_dtor = on_process_exit;
++
++attribute_section(".ctors" ) void *gcc_ctor = on_process_init;
++attribute_section(".dtors" ) void *gcc_dtor = on_process_exit;
++
++#endif /* PTW32_STATIC_LIB */