X-Git-Url: http://nitlanguage.org diff --git a/src/c_tools.nit b/src/c_tools.nit index a44d7e5..07934dd 100644 --- a/src/c_tools.nit +++ b/src/c_tools.nit @@ -104,8 +104,17 @@ class ExternFile # The filename of the file var filename: String + # The name of the target in the Makefile + # Usually the produced .o file fun makefile_rule_name: String is abstract + + # The content of the rule in the make + # Usually the one-line shell command after the tabulation fun makefile_rule_content: String is abstract + + fun compiles_to_o_file: Bool do return false + + fun add_to_jar: Bool do return false end # An extern C file to compile @@ -124,5 +133,19 @@ class ExternCFile redef fun hash do return filename.hash redef fun ==(o) do return o isa ExternCFile and filename == o.filename + + redef fun makefile_rule_name do + var basename = filename.basename(".c") + var res = "{basename}.extern.o" + return res + end + + redef fun makefile_rule_content do + var ff = filename.basename("") + var o = makefile_rule_name + return "$(CC) $(CFLAGS) {self.cflags} -c -o {o} {ff}" + end + + redef fun compiles_to_o_file do return true end