nitc: fix calling extern constructors from extern code in separate compiler
[nit.git] / src / compiler / compiler_ffi.nit
index 8466af1..42423f9 100644 (file)
@@ -49,10 +49,11 @@ extern void nitni_global_ref_incr(void*);
 extern void nitni_global_ref_decr(void*);
 """
 
+               var cflags = self.cflags[""].join(" ")
                nitni_ccu.write_as_nitni(self, v.compiler.modelbuilder.compile_dir)
 
                for file in nitni_ccu.files do
-                       var f = new ExternCFile(file, c_compiler_options)
+                       var f = new ExternCFile(file, cflags)
                        f.pkgconfigs.add_all pkgconfigs
                        v.compiler.extern_bodies.add(f)
                end
@@ -76,11 +77,8 @@ extern void nitni_global_ref_decr(void*);
 
        redef fun collect_linker_libs
        do
-               var s = c_linker_options
-               if s.is_empty then return null
-               var res = new ArraySet[String]
-               res.add s
-               return res
+               if not self.ldflags.keys.has("") then return null
+               return self.ldflags[""]
        end
 
        private var compiled_callbacks = new Array[NitniCallback]
@@ -390,7 +388,7 @@ redef class MExplicitCall
                var recv_var = null
                if mproperty.is_init then
                        var recv_mtype = recv_mtype
-                       recv_var = nitni_visitor.init_instance(recv_mtype)
+                       recv_var = nitni_visitor.init_instance_or_extern(recv_mtype)
                        nitni_visitor.add("{mtype.ctype} recv /* var self: {mtype} */;")
                        nitni_visitor.add("recv = {recv_var};")
                else