From 244892bc3bd51f16c2e80a924bbae786f5e2acc3 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 27 Apr 2001 14:52:16 -0400 Subject: [PATCH] BUG: Removed output of GCC_XML rules when the command cannot be found. --- Source/cmCablePackageCommand.cxx | 38 ++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/Source/cmCablePackageCommand.cxx b/Source/cmCablePackageCommand.cxx index 81bb6de2d8..9a2e369023 100644 --- a/Source/cmCablePackageCommand.cxx +++ b/Source/cmCablePackageCommand.cxx @@ -73,9 +73,10 @@ bool cmCablePackageCommand::Invoke(std::vector& args) { // We must add a custom rule to cause the cable_config.xml to be re-built // when it is removed. Rebuilding it means re-running CMake. - std::string cMakeLists = m_Makefile->GetStartDirectory(); + std::string cMakeLists = "\""; + cMakeLists += m_Makefile->GetStartDirectory(); cMakeLists += "/"; - cMakeLists += "CMakeLists.txt"; + cMakeLists += "CMakeLists.txt\""; std::string command; #if defined(_WIN32) && !defined(__CYGWIN__) @@ -147,20 +148,25 @@ bool cmCablePackageCommand::Invoke(std::vector& args) { std::string command = "${GCCXML}"; m_Makefile->ExpandVariablesInString(command); - std::vector depends; - depends.push_back(command); - std::string input = "Cxx/"+m_PackageName+"_cxx.cxx"; - std::string output = "Cxx/"+m_PackageName+"_cxx.xml"; - command = "\""+command+"\" ${CXX_FLAGS} -fsyntax-only -fxml=" + output + " -c " + input; - - std::vector outputs; - outputs.push_back("Cxx/"+m_PackageName+"_cxx.xml"); - - // A rule for the package's source files. - m_Makefile->AddCustomCommand(input.c_str(), - command.c_str(), - depends, - outputs, m_TargetName.c_str()); + // Only add the rule if GCC-XML is available. + if((command != "") && (command != "${GCCXML}")) + { + std::vector depends; + depends.push_back(command); + std::string input = m_Makefile->GetStartOutputDirectory(); + input = input + "/Cxx/"+m_PackageName+"_cxx.cxx"; + std::string output = "Cxx/"+m_PackageName+"_cxx.xml"; + command = "\""+command+"\" ${CXX_FLAGS} -fsyntax-only -fxml=" + output + " -c " + input; + + std::vector outputs; + outputs.push_back("Cxx/"+m_PackageName+"_cxx.xml"); + + // A rule for the package's source files. + m_Makefile->AddCustomCommand(input.c_str(), + command.c_str(), + depends, + outputs, m_TargetName.c_str()); + } } // add the source list to the target