# 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
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