Merge: Contract implementation
[nit.git] / src / ffi / objc.nit
index 7e309bc..24ce15d 100644 (file)
@@ -154,9 +154,9 @@ private class ObjCCompilationUnit
 
                files.add compdir/c_file
 
-               mmodule.ldflags = "{mmodule.ldflags} -lobjc"
+               mmodule.ldflags.add_one("", "-lobjc")
 
-               return new ExternObjCFile(compdir/c_file, mmodule)
+               return new ExternObjCFile(c_file, mmodule)
        end
 end
 
@@ -169,7 +169,7 @@ class ExternObjCFile
 
        redef fun makefile_rule_name do return "{filename.basename(".m")}_m.o"
        redef fun makefile_rule_content do
-               return "clang $(CFLAGS) -c {filename.basename("")} -o {makefile_rule_name}"
+               return "clang $(CFLAGS) -c {filename} -o {makefile_rule_name}"
        end
        redef fun compiles_to_o_file do return true
 end
@@ -250,7 +250,7 @@ private class FromObjCCallContext
        redef fun cast_from(mtype, name)
        do
                if mtype isa MClassType and mtype.mclass.ftype isa ForeignObjCType then
-                       return "({name_mtype(mtype)})({name})"
+                       return "(__bridge {name_mtype(mtype)})({name})"
                else return name
        end
 end