diff options
author | Joerg Bornemann <joerg.bornemann@nokia.com> | 2012-08-15 12:18:49 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-16 08:26:24 +0200 |
commit | c9406bcffe63f1ce232ce91b00be294e0135282a (patch) | |
tree | 74aa70ca0ba7911c37c1d7b423db9bfc7c11c524 /mkspecs/features/win32 | |
parent | 15b5b28425f52fcbb2b85c94ec485af841adb4b5 (diff) |
qmake: support incremental linking when embedding manifests
When embedding manifests we modified the EXE/DLL after linking using
the manifest tool. This breaks the incremental linking feature of MSVC.
The MS way to embed a manifest without breaking incremental linking is:
- let the linker create the manifest file,
- create a resource that contains the manifest file,
- invoke the linker again to embed the resource.
The embed_manifest_{exe|dll}.prf files have been removed.
All manifest logic is now in qmake's nmake makefile generator.
With QMAKE_MANIFEST one can specify a custom manifest file that gets
embedded without disturbing incremental linking.
Task-number: QTBUG-22718
Change-Id: Idb9d2644a0577b2002cbdd2d62b695b9171b1bd5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Diffstat (limited to 'mkspecs/features/win32')
-rw-r--r-- | mkspecs/features/win32/embed_manifest_dll.prf | 12 | ||||
-rw-r--r-- | mkspecs/features/win32/embed_manifest_exe.prf | 12 |
2 files changed, 0 insertions, 24 deletions
diff --git a/mkspecs/features/win32/embed_manifest_dll.prf b/mkspecs/features/win32/embed_manifest_dll.prf deleted file mode 100644 index 5d94548d74..0000000000 --- a/mkspecs/features/win32/embed_manifest_dll.prf +++ /dev/null @@ -1,12 +0,0 @@ -!if(plugin:no_plugin_manifest):if(win32-msvc2005*|win32-msvc2008*|win32-msvc2010*|win32-msvc2012*):!static:equals(TEMPLATE, "lib") { - MANIFEST_DIR = $$OBJECTS_DIR - isEmpty(MANIFEST_DIR):MANIFEST_DIR = . - NOPATH_TARGET = $$TARGET - NOPATH_TARGET ~= s,\\\\ , ,q # Remove space escaping (NOPATH_TARGET is quoted) - NOPATH_TARGET ~= s,\\\\,/,g # Change to single type separators - NOPATH_TARGET ~= s,^(.*/)+,, # Remove all paths - QMAKE_LFLAGS += /MANIFEST $$quote(/MANIFESTFILE:\"$${MANIFEST_DIR}\\$${NOPATH_TARGET}.intermediate.manifest\") - !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK - QMAKE_POST_LINK = $$quote(mt.exe -nologo -manifest $$shell_quote($$shell_path($$MANIFEST_DIR/$${NOPATH_TARGET}.intermediate.manifest)) -outputresource:$(DESTDIR_TARGET);2)$$QMAKE_POST_LINK - QMAKE_CLEAN += $$MANIFEST_DIR/$${NOPATH_TARGET}.intermediate.manifest -} diff --git a/mkspecs/features/win32/embed_manifest_exe.prf b/mkspecs/features/win32/embed_manifest_exe.prf deleted file mode 100644 index e53006ef2c..0000000000 --- a/mkspecs/features/win32/embed_manifest_exe.prf +++ /dev/null @@ -1,12 +0,0 @@ -if(win32-msvc2005*|win32-msvc2008*|win32-msvc2010*|win32-msvc2012*):equals(TEMPLATE, "app") { - MANIFEST_DIR = $$OBJECTS_DIR - isEmpty(MANIFEST_DIR):MANIFEST_DIR = . - NOPATH_TARGET = $$TARGET - NOPATH_TARGET ~= s,\\\\ , ,q # Remove space escaping (NOPATH_TARGET is quoted) - NOPATH_TARGET ~= s,\\\\,/,g # Change to single type separators - NOPATH_TARGET ~= s,^(.*/)+,, # Remove all paths - QMAKE_LFLAGS += /MANIFEST $$quote(/MANIFESTFILE:\"$${MANIFEST_DIR}\\$${NOPATH_TARGET}.intermediate.manifest\") - !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK - QMAKE_POST_LINK = $$quote(mt.exe -nologo -manifest $$shell_quote($$shell_path($$MANIFEST_DIR/$${NOPATH_TARGET}.intermediate.manifest)) -outputresource:$(DESTDIR_TARGET);1)$$QMAKE_POST_LINK - QMAKE_CLEAN += $$MANIFEST_DIR/$${NOPATH_TARGET}.intermediate.manifest -} |