diff options
Diffstat (limited to 'Source/cmcldeps.cxx')
-rw-r--r-- | Source/cmcldeps.cxx | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/Source/cmcldeps.cxx b/Source/cmcldeps.cxx index ce64132..69df88d 100644 --- a/Source/cmcldeps.cxx +++ b/Source/cmcldeps.cxx @@ -206,7 +206,7 @@ static int process( const std::string& srcfilename, includes.push_back(inc); } else { if (!isFirstLine || !startsWith(line, srcfilename)) { - if (!quiet) { + if (!quiet || exit_code != 0) { fprintf(stdout, "%s\n", line.c_str()); } } else { @@ -254,7 +254,10 @@ int main() { // rc: /fo x.dir\x.rc.res -> cl: /out:x.dir\x.rc.res.dep.obj clrest = replace(clrest, "/fo", "/out:"); clrest = replace(clrest, objfile, objfile + ".dep.obj "); + // rc: src\x\x.rc -> cl: /Tc src\x\x.rc + if (srcfile.find(" ") != std::string::npos) + srcfile = "\"" + srcfile + "\""; clrest = replace(clrest, srcfile, "/Tc " + srcfile); cl = "\"" + cl + "\" /P /DRC_INVOKED "; @@ -267,8 +270,11 @@ int main() { } // extract dependencies with cl.exe - process(srcfilename, dfile, objfile, - prefix, cl + nol + show + clrest, objdir, true); + int exit_code = process(srcfilename, dfile, objfile, + prefix, cl + nol + show + clrest, objdir, true); + + if (exit_code != 0) + return exit_code; // compile rc file with rc.exe return process(srcfilename, "" , objfile, prefix, binpath + " " + rest); |