qt5base-lts/mkspecs/common
Jan Arve Saether 780105f906 Merge ANGLE's libEGL and libGLESv2 into QtANGLE
This is needed in order to be able to specify a custom location of
the ANGLE libs, and enables us to perform a LoadLibrary of ANGLE libs
by just having the absolute path to QtANGLE.dll as the argument to
LoadLibrary().

Previously, we had two ANGLE libraries: libEGL and libGLESv2. libEGL hard
linked against libGLESv2.  If we wanted to load libEGL from a custom
location, we couldn't load libEGL by calling LoadLibrary with the absolute
path to libEGL, because libEGL had problems finding libGLESv2.  One
solution to that could have been to call SetDllDirectory() with the path
to the ANGLE libs before calling LoadLibrary("libEGL.dll"). Since the DLL
directory would point to both ANGLE libs, this would ensure that the libGLESv2
was also found.  Unfortunately, this approach is not thread safe
(SetDllDirectory will affect all subsequent LoadLibrary(Ex) from the same
process). Therefore, we chose to merge the two libraries into one to
circumvent the whole problem.

At the same time, this patch also enables loading of two different ANGLE
libraries into the same process at once without renaming them: This was
not possible before because libEGL hard linked to libGLESv2.dll.  When
libGLESv2.dll was already loaded, the second instance of libEGL would
simply link against the already loaded version of libGLESv2.dll.

This behavior is documented in the LoadLibraryEx documentation on MSDN:
"If the string specifies a module name without a path and more than one
loaded module has the same base name and extension, the function returns a
handle to the module that was loaded first."

Change-Id: Ic1d886ba802be72ddcf01235bafaedcef662762e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
2016-10-28 11:02:43 +00:00
..
aix Updated license headers 2016-01-15 12:25:24 +00:00
android Updated license headers 2016-01-15 12:25:24 +00:00
bsd Common BSD: Add --gc-sections ld flags 2016-06-15 19:17:35 +00:00
c89 Updated license headers 2016-01-15 12:25:24 +00:00
integrity Build SQLite including the platform header for INTEGRITY. 2016-03-23 15:38:27 +00:00
mac Updated license headers 2016-01-15 12:25:24 +00:00
nacl Updated license headers 2016-01-15 12:25:24 +00:00
posix Updated license headers 2016-01-15 12:25:24 +00:00
qnx Updated license headers 2016-01-15 12:25:24 +00:00
uikit Merge remote-tracking branch 'origin/5.8' into dev 2016-10-13 09:49:38 +02:00
winrt_winphone Merge ANGLE's libEGL and libGLESv2 into QtANGLE 2016-10-28 11:02:43 +00:00
android-base-head.conf Android: Use -gcc-toolchain for clang linker command 2016-08-15 13:30:58 +00:00
android-base-tail.conf Android: Use -gcc-toolchain for clang linker command 2016-08-15 13:30:58 +00:00
clang-mac.conf Darwin: Fix clang LTO builds 2016-08-18 13:48:52 +00:00
clang.conf Fix the naming of an LLVM tool in common/clang.conf 2016-07-02 16:35:01 +00:00
g++-base.conf Update mkspecs to use "c++11" instead of "c++0x" 2015-10-18 04:46:45 +00:00
g++-macx.conf Remove the -load_all option from the linker enabling static builds 2015-01-07 09:57:07 +01:00
g++-unix.conf Fix '=' alignment and replace tabs in *.conf (whitespace only change) 2013-03-27 17:16:37 +01:00
g++.conf Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
gcc-base-mac.conf Fix warning about headerpad_max_install_names ignored when using bitcode 2016-08-31 22:42:04 +00:00
gcc-base-unix.conf Add a linker version script to Qt libraries 2015-09-13 18:54:17 +00:00
gcc-base.conf configure: Add support for detecting AVX512 instructions 2015-09-25 20:29:22 +00:00
ghs-base.conf Enable thread_local support for GHS toolchain. 2016-04-13 08:14:48 +00:00
ghs-integrity-armv7.conf Add support for building for INTEGRITY using GHS toolchain. 2016-03-21 16:49:54 +00:00
ghs-integrity-x86.conf Add support for building for INTEGRITY using GHS toolchain. 2016-03-21 16:49:54 +00:00
ios.conf Add support for Apple tvOS 2016-05-17 16:11:23 +00:00
linux-android.conf Convert the old feature system 2016-09-15 08:24:10 +00:00
linux.conf Make sure flags from library detections go to the right places 2016-10-10 16:59:10 +00:00
llvm.conf Refer to Apple products by their actual names. 2013-07-10 17:32:48 +02:00
mac.conf Merge remote-tracking branch 'origin/5.7' into 5.8 2016-10-06 20:12:27 +02:00
macx.conf Share the multi-arch infrastructure between UIKit and macOS 2016-09-29 21:51:18 +00:00
msvc-base.conf Merge remote-tracking branch 'origin/5.7' into dev 2016-08-16 07:58:32 +02:00
msvc-desktop.conf Merge ANGLE's libEGL and libGLESv2 into QtANGLE 2016-10-28 11:02:43 +00:00
qcc-base-qnx-aarch64le.conf Add some 64-bit QNX platforms 2016-06-22 14:59:26 +00:00
qcc-base-qnx-armle-v7.conf move inclusions of unix.conf (and related files) near the top 2015-10-01 16:19:27 +00:00
qcc-base-qnx-x86-64.conf Add some 64-bit QNX platforms 2016-06-22 14:59:26 +00:00
qcc-base-qnx-x86.conf move inclusions of unix.conf (and related files) near the top 2015-10-01 16:19:27 +00:00
qcc-base-qnx.conf Clean up QT_QPA_DEFAULT_PLATFORM handling 2016-10-05 19:07:30 +00:00
qcc-base.conf Merge remote-tracking branch 'origin/5.4' into merge5.5 2015-05-08 13:26:44 +02:00
sanitize.conf Add support for gcc/clang's sanitize features 2014-10-02 19:45:00 +02:00
shell-unix.conf centralize setup of shell-related variables in spec_post.prf 2015-03-06 19:08:40 +00:00
shell-win32.conf centralize setup of shell-related variables in spec_post.prf 2015-03-06 19:08:40 +00:00
tvos.conf qmake: enable bitcode also for iOS 2016-08-19 21:06:05 +00:00
uikit.conf Merge remote-tracking branch 'origin/5.8' into dev 2016-09-15 19:47:57 +02:00
unix.conf unify handling of library prefixes and extensions 2015-10-01 16:19:30 +00:00
watchos.conf qmake: enable bitcode also for iOS 2016-08-19 21:06:05 +00:00
windows-gles.conf Merge ANGLE's libEGL and libGLESv2 into QtANGLE 2016-10-28 11:02:43 +00:00