diff --git a/angleproject-use-constructors-instead-of-DllMain.patch b/angleproject-use-constructors-instead-of-DllMain.patch new file mode 100644 index 0000000..c88e8b2 --- /dev/null +++ b/angleproject-use-constructors-instead-of-DllMain.patch @@ -0,0 +1,57 @@ +--- angle/src/libGLESv2/main.cpp.orig 2015-12-31 00:23:50.243055837 +0100 ++++ angle/src/libGLESv2/main.cpp 2015-12-31 00:30:27.452336403 +0100 +@@ -75,7 +75,7 @@ + } + + #if defined(ANGLE_PLATFORM_WINDOWS) && !defined(QT_OPENGL_ES_2_ANGLE_STATIC) +-extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) ++static BOOL gles_DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) + { + switch (reason) + { +@@ -117,6 +117,17 @@ + + return TRUE; + } ++ ++static void __attribute__((constructor)) gles_constructor_func (void) ++{ ++ gles_DllMain(NULL, DLL_PROCESS_ATTACH, NULL) && gles_DllMain(NULL, DLL_THREAD_ATTACH, NULL); ++} ++ ++static void __attribute__((destructor)) gles_destructor_func (void) ++{ ++ gles_DllMain(NULL, DLL_PROCESS_DETACH, NULL); ++} ++ + #endif // ANGLE_PLATFORM_WINDOWS && !QT_OPENGL_ES_2_ANGLE_STATIC + + namespace gl +--- angle/src/libEGL/main.cpp.orig 2015-12-31 00:29:02.749423594 +0100 ++++ angle/src/libEGL/main.cpp 2015-12-31 00:30:08.342130461 +0100 +@@ -51,7 +51,7 @@ + + #ifndef QT_OPENGL_ES_2_ANGLE_STATIC + +-extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) ++static BOOL egl_DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) + { + switch (reason) + { +@@ -110,6 +110,16 @@ + return TRUE; + } + ++static void __attribute__((constructor)) egl_constructor_func (void) ++{ ++ egl_DllMain(NULL, DLL_PROCESS_ATTACH, NULL) && egl_DllMain(NULL, DLL_THREAD_ATTACH, NULL); ++} ++ ++static void __attribute__((destructor)) egl_destructor_func (void) ++{ ++ egl_DllMain(NULL, DLL_PROCESS_DETACH, NULL); ++} ++ + #endif // !QT_OPENGL_ES_2_ANGLE_STATIC + + namespace egl diff --git a/mingw-angleproject.spec b/mingw-angleproject.spec index dba804b..fd1ebee 100644 --- a/mingw-angleproject.spec +++ b/mingw-angleproject.spec @@ -7,7 +7,7 @@ Summary: Almost Native Graphics Layer Engine Name: mingw-angleproject Version: 0 -Release: 0.12.git.%{snapshot_rev_short}.%{snapshot_stamp}%{?dist} +Release: 0.13.git.%{snapshot_rev_short}.%{snapshot_stamp}%{?dist} License: BSD Group: System Environment/Libraries URL: http://code.google.com/p/angleproject/ @@ -81,6 +81,9 @@ Patch107: angleproject-include-import-library-and-use-def-file.patch # To allow building WebKit export the required symbols in the libGLESv2 shared library Patch108: angleproject-export-shader-symbols.patch +# Use GCC constructors instead of DllMain to avoid conflicts when using the static library +Patch109: angleproject-use-constructors-instead-of-DllMain.patch + %description ANGLE is a conformant implementation of the OpenGL ES 2.0 specification that @@ -205,6 +208,7 @@ cp %{SOURCE2} src/libEGL/ %patch106 -p1 -R %patch107 -p1 %patch108 -p1 +%patch109 -p1 # Executing .bat scripts on Linux is a no-go so make this a no-op echo "" > src/copy_compiler_dll.bat @@ -337,6 +341,9 @@ cp -Rv include/* $RPM_BUILD_ROOT%{mingw64_includedir} %changelog +* Wed Dec 30 2015 Erik van Pienbroek - 0-0.13.git.30d6c2.20141113 +- Use GCC constructors instead of DllMain to avoid conflicts in the static library (RHBZ #1257630) + * Wed Jun 17 2015 Fedora Release Engineering - 0-0.12.git.30d6c2.20141113 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild