fun add_local_function( efc : CFunction )
do
- body_decl.add( "{efc.signature};\n" )
- body_impl.add( "\n" )
- body_impl.add( efc.to_writer )
+ body_decl.add "static {efc.signature};\n"
+ body_impl.add "\n"
+ body_impl.add efc.to_writer
end
fun add_exported_function( efc : CFunction )
# 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
+
+ # Additional libraries needed for the compilation
+ # Will be used with pkg-config
+ var pkgconfigs = new Array[String]
end
# An extern C file to compile
class ExternCFile
super ExternFile
- init (filename, cflags: String)
- do
- super filename
-
- self.cflags = cflags
- end
-
- # Additionnal specific CC compiler -c flags
+ # Additional specific CC compiler -c flags
var cflags: String
redef fun hash do return filename.hash
redef fun makefile_rule_content do
var ff = filename.basename("")
var o = makefile_rule_name
- return "$(CC) $(CFLAGS) {self.cflags} -c -o {o} {ff}"
+ var pkg = ""
+ if not pkgconfigs.is_empty then
+ pkg = "`pkg-config --cflags {pkgconfigs.join(" ")}`"
+ end
+ return "$(CC) $(CFLAGS) {self.cflags} {pkg} -c -o {o} {ff}"
end
+
+ redef fun compiles_to_o_file do return true
end