support for rc

This commit is contained in:
Nishi 2026-05-15 00:01:17 +09:00
commit 05dff81025
3 changed files with 12 additions and 3 deletions

View file

@ -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 + "\"";
}

View file

@ -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";

View file

@ -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;