Merge: Some more small improvements on gitlab-ci
[nit.git] / src / compiler / compiler_ffi / light.nit
index c7e3b0e..ce0f71b 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# FFI support for the compilers
+# Light FFI support for the compiler
 module light
 
 intrude import abstract_compiler
 intrude import ffi::light_ffi
 
 redef class MModule
+       # `CCompilationUnit` used for nitni signatures and code specific to the compiler
        var nitni_ccu: nullable CCompilationUnit = null
 
        private fun nmodule(v: AbstractCompilerVisitor): nullable AModule
@@ -28,7 +29,7 @@ redef class MModule
                return v.compiler.modelbuilder.mmodule2node(self)
        end
 
-       redef fun finalize_ffi(compiler: AbstractCompiler)
+       redef fun finalize_ffi(compiler)
        do
                if not uses_ffi then return
 
@@ -36,22 +37,23 @@ redef class MModule
                var n = nmodule(v)
                if n == null then return
                n.ensure_compile_ffi_wrapper
-               finalize_ffi_wrapper(v.compiler.modelbuilder.compile_dir, v.compiler.mainmodule)
+               finalize_ffi_wrapper(v.compiler.toolchain.compile_dir, v.compiler.mainmodule)
                for file in ffi_files do v.compiler.extern_bodies.add(file)
 
                ensure_compile_nitni_base(v)
 
                nitni_ccu.header_c_types.add("#include \"{c_name}._ffi.h\"\n")
+               nitni_ccu.header_c_types.add("#include <stdint.h>\n")
                nitni_ccu.header_c_types.add """
 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)
+               nitni_ccu.write_as_nitni(self, v.compiler.toolchain.compile_dir)
 
                for file in nitni_ccu.files do
-                       var f = new ExternCFile(file, cflags)
+                       var f = new ExternCFile(file.basename, cflags)
                        f.pkgconfigs.add_all pkgconfigs
                        v.compiler.extern_bodies.add(f)
                end
@@ -82,7 +84,6 @@ redef class AMethPropdef
        private fun compile_ffi_support_to_c(v: AbstractCompilerVisitor)
        do
                var mmodule = mpropdef.mclassdef.mmodule
-               var mainmodule = v.compiler.mainmodule
                var amodule = v.compiler.modelbuilder.mmodule2node(mmodule)
                var mclass_type = mpropdef.mclassdef.bound_mtype
 
@@ -220,6 +221,7 @@ redef class AMethPropdef
 end
 
 redef class CCompilationUnit
+       # Compile a `_nitni` files, used to implement nitni features for the compiler
        fun write_as_nitni(mmodule: MModule, compdir: String)
        do
                var base_name = "{mmodule.c_name}._nitni"