From ca263d1d71d953630e31daa7771dde3c6835b9a2 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Wed, 18 Nov 2015 09:10:51 -0500
Subject: MSVC: Fix linking with /MANIFEST:NO option

Refactoring in commit v3.4.0-rc1~74^2~1 (MSVC: Rewrite manifest file
handling with Makefile and Ninja, 2015-09-15) broke handling of this
option.  Fix it and add a test case.
---
 Source/cmcmd.cxx                       | 4 +++-
 Tests/MSManifest/Subdir/CMakeLists.txt | 2 ++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index f44c77d..a074444 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -1550,7 +1550,6 @@ bool cmVSLink::Parse(std::vector<std::string>::const_iterator argBeg,
     // pass it to the link command.
     this->ManifestFileRC = intDir + "/manifest.rc";
     this->ManifestFileRes = intDir + "/manifest.res";
-    this->LinkCommand.push_back(this->ManifestFileRes);
     }
   else if (this->UserManifests.empty())
     {
@@ -1658,6 +1657,9 @@ int cmVSLink::LinkIncremental()
     return -1;
     }
 
+  // Tell the linker to use our manifest compiled into a resource.
+  this->LinkCommand.push_back(this->ManifestFileRes);
+
   // Run the link command (possibly generates intermediate manifest).
   if (!RunCommand("LINK Pass 1", this->LinkCommand, this->Verbose))
     {
diff --git a/Tests/MSManifest/Subdir/CMakeLists.txt b/Tests/MSManifest/Subdir/CMakeLists.txt
index a47cf00..11272bb 100644
--- a/Tests/MSManifest/Subdir/CMakeLists.txt
+++ b/Tests/MSManifest/Subdir/CMakeLists.txt
@@ -6,4 +6,6 @@ if(MSVC AND NOT MSVC_VERSION LESS 1400)
     COMMAND ${CMAKE_COMMAND} -Dexe=$<TARGET_FILE:MSManifest>
             -P ${CMAKE_CURRENT_SOURCE_DIR}/check.cmake
     )
+  add_executable(MSManifestNone main.c)
+  set_property(TARGET MSManifestNone PROPERTY LINK_FLAGS "/MANIFEST:NO")
 endif()
-- 
cgit v0.12