From c9406bcffe63f1ce232ce91b00be294e0135282a Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Wed, 15 Aug 2012 12:18:49 +0200 Subject: 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 --- mkspecs/features/win32/embed_manifest_dll.prf | 12 ------------ mkspecs/features/win32/embed_manifest_exe.prf | 12 ------------ 2 files changed, 24 deletions(-) delete mode 100644 mkspecs/features/win32/embed_manifest_dll.prf delete mode 100644 mkspecs/features/win32/embed_manifest_exe.prf (limited to 'mkspecs/features') 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 -} -- cgit v1.2.3