diff --git a/src/compiler/watcom.js b/src/compiler/watcom.js index 4a62dc4..1c2a109 100644 --- a/src/compiler/watcom.js +++ b/src/compiler/watcom.js @@ -20,7 +20,9 @@ Watcom.compile = function(target, obj, src) { const includes = pmake.includes(target).map(add_i).join(" "); const flags = "-bt=nt -fr= -q " + includes + " -fo=" + obj + " " + src; - if(src.endsWith(".c")) { + if(src.endsWith(".rc")){ + return "wrc -bt=nt -r -fo=" + obj + " " + src; + }else if(src.endsWith(".c")) { return "wcc386 " + flags; } else { return "wpp386 " + flags; @@ -33,6 +35,7 @@ Watcom.link = function(target, files) { return "wlib -q -b -n -fo " + this.output(target) + " " + files.join(" "); } else if(target instanceof pmake.ExecutableProject) { function add_file(x) { + if(x.endsWith(".res")) return "option resource=" + x; return "file \"" + x + "\""; } diff --git a/src/js/cmdline.js b/src/js/cmdline.js index 0461183..4481810 100644 --- a/src/js/cmdline.js +++ b/src/js/cmdline.js @@ -164,7 +164,9 @@ function make(output) { for(var i = 0; i < objs.length; i++) { var usage = ""; - if(pmake.isCxx(self.sources[i])) { + if(self.sources[i].endswith(".rc")){ + usage = "RC"; + }else if(pmake.isCxx(self.sources[i])) { usage = "CXX"; } else { usage = "CC"; diff --git a/src/js/core.js b/src/js/core.js index ed5269e..a6b3fef 100644 --- a/src/js/core.js +++ b/src/js/core.js @@ -190,6 +190,7 @@ Compiler.prototype.init = function() { Compiler.prototype.output = function(target) { if((typeof target) == "string") { if(target.endsWith(".c")) return target.replace(/\.c$/, ".o"); + if(target.endsWith(".rc")) return target.replace(/\.rc$/, ".res"); } else if(target instanceof pmake.LibraryProject) { return "lib" + target.output + ".a"; } else if(target instanceof pmake.ExecutableProject) { @@ -207,6 +208,7 @@ const POSIXCompiler = pmake.inherit(Compiler, function(target) { this.ar = "ar"; this.cc = "cc"; this.cxx = "c++"; + this.rc = "windres"; }); POSIXCompiler.prototype.compile = function(target, obj, src) { @@ -217,7 +219,9 @@ POSIXCompiler.prototype.compile = function(target, obj, src) { const includes = pmake.includes(target).map(add_i).join(" "); const flags = includes + " -c -o " + obj + " " + src; - if(src.endsWith(".c")) { + if(src.endsWith(".rc")){ + return this.prefix + this.rc + " -O coff " + src + " " + obj; + }else if(src.endsWith(".c")) { return this.prefix + this.cc + " " + flags; } else if(is_cxx(src)) { return this.prefix + this.cxx + " " + flags;