From ed7c62653a74cdb77a82d8ad066ba6998de80c62 Mon Sep 17 00:00:00 2001
From: Brian Smith <brian@briansmith.org>
Date: Wed, 28 Jan 2015 04:21:56 -0800
Subject: [PATCH] Fix dependency generation for ASM_NASM + Ninja.

This attempts to fix http://www.cmake.org/Bug/view.php?id=15253.
---
 Modules/CMakeASM_NASMInformation.cmake |  1 +
 Source/cmNinjaTargetGenerator.cxx      | 18 +++++++++++-------
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/Modules/CMakeASM_NASMInformation.cmake b/Modules/CMakeASM_NASMInformation.cmake
index 7058fc7..bfcac71 100644
--- a/Modules/CMakeASM_NASMInformation.cmake
+++ b/Modules/CMakeASM_NASMInformation.cmake
@@ -35,12 +35,13 @@ if(NOT CMAKE_ASM_NASM_OBJECT_FORMAT)
     else()
       set(CMAKE_ASM_NASM_OBJECT_FORMAT elf)
     endif()
   endif()
 endif()
 
 set(CMAKE_ASM_NASM_COMPILE_OBJECT "<CMAKE_ASM_NASM_COMPILER> <FLAGS> -f ${CMAKE_ASM_NASM_OBJECT_FORMAT} -o <OBJECT> <SOURCE>")
+set(CMAKE_DEPFILE_FLAGS_ASM_NASM "-MD <DEPFILE>")
 
 # Load the generic ASMInformation file:
 set(ASM_DIALECT "_NASM")
 include(CMakeASMInformation)
 set(ASM_DIALECT)
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index 67824c6..ff331c8 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -387,27 +387,31 @@ cmNinjaTargetGenerator
   vars.TargetPDB = "$TARGET_PDB";
   vars.TargetCompilePDB = "$TARGET_COMPILE_PDB";
   vars.ObjectDir = "$OBJECT_DIR";
   vars.ObjectFileDir = "$OBJECT_FILE_DIR";
 
   cmMakefile* mf = this->GetMakefile();
 
-  const std::string cId = mf->GetDefinition("CMAKE_C_COMPILER_ID")
-                          ? mf->GetSafeDefinition("CMAKE_C_COMPILER_ID")
-                          : mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID");
-  const std::string sId = mf->GetDefinition("CMAKE_C_SIMULATE_ID")
-                          ? mf->GetSafeDefinition("CMAKE_C_SIMULATE_ID")
-                          : mf->GetSafeDefinition("CMAKE_CXX_SIMULATE_ID");
-  const bool usingMSVC = (cId == "MSVC" || sId == "MSVC");
+  bool usingMSVC = false;
+  if (lang == "C" || lang == "CXX" || lang == "RC") {
+    const std::string cId = mf->GetDefinition("CMAKE_C_COMPILER_ID")
+                            ? mf->GetSafeDefinition("CMAKE_C_COMPILER_ID")
+                            : mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID");
+    const std::string sId = mf->GetDefinition("CMAKE_C_SIMULATE_ID")
+                            ? mf->GetSafeDefinition("CMAKE_C_SIMULATE_ID")
+                            : mf->GetSafeDefinition("CMAKE_CXX_SIMULATE_ID");
+    usingMSVC = cId == "MSVC" || sId == "MSVC";
+  }
 
   // Tell ninja dependency format so all deps can be loaded into a database
   std::string deptype;
   std::string depfile;
   std::string cldeps;
   std::string flags = "$FLAGS";
+  
   if (usingMSVC)
     {
     if (!mf->GetIsSourceFileTryCompile() && lang == "RC")
       {
       deptype = "gcc";
       depfile = "$DEP_FILE";
       const std::string cl = mf->GetDefinition("CMAKE_C_COMPILER") ?
-- 
1.9.5.github.0

