| 2133 | } |
| 2134 | |
| 2135 | std::string cmLocalUnixMakefileGenerator3::GetRecursiveMakeCall( |
| 2136 | std::string const& makefile, std::string const& tgt) |
| 2137 | { |
| 2138 | // Call make on the given file. |
| 2139 | std::string cmd = cmStrCat( |
| 2140 | "$(MAKE) $(MAKESILENT) -f ", |
| 2141 | this->ConvertToOutputFormat(makefile, cmOutputConverter::SHELL), ' '); |
| 2142 | |
| 2143 | cmGlobalUnixMakefileGenerator3* gg = |
| 2144 | static_cast<cmGlobalUnixMakefileGenerator3*>(this->GlobalGenerator); |
| 2145 | // Pass down verbosity level. |
| 2146 | if (!gg->MakeSilentFlag.empty()) { |
| 2147 | cmd += gg->MakeSilentFlag; |
| 2148 | cmd += " "; |
| 2149 | } |
| 2150 | |
| 2151 | // Most unix makes will pass the command line flags to make down to |
| 2152 | // sub-invoked makes via an environment variable. However, some |
| 2153 | // makes do not support that, so you have to pass the flags |
| 2154 | // explicitly. |
| 2155 | if (gg->PassMakeflags) { |
| 2156 | cmd += "-$(MAKEFLAGS) "; |
| 2157 | } |
| 2158 | |
| 2159 | // Add the target. |
| 2160 | if (!tgt.empty()) { |
| 2161 | // The make target is always relative to the top of the build tree. |
| 2162 | std::string tgt2 = this->MaybeRelativeToTopBinDir(tgt); |
| 2163 | |
| 2164 | // The target may have been written with windows paths. |
| 2165 | cmSystemTools::ConvertToOutputSlashes(tgt2); |
| 2166 | |
| 2167 | // Escape one extra time if the make tool requires it. |
| 2168 | if (this->MakeCommandEscapeTargetTwice) { |
| 2169 | tgt2 = this->EscapeForShell(tgt2, true, false); |
| 2170 | } |
| 2171 | |
| 2172 | // The target name is now a string that should be passed verbatim |
| 2173 | // on the command line. |
| 2174 | cmd += this->EscapeForShell(tgt2, true, false); |
| 2175 | } |
| 2176 | return cmd; |
| 2177 | } |
| 2178 | |
| 2179 | void cmLocalUnixMakefileGenerator3::WriteDivider(std::ostream& os) |
| 2180 | { |
no test coverage detected