From 6cfcfe380c94f9048e131f2c3498ad140bd8b467 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Tue, 26 Feb 2019 10:17:01 -0500 Subject: [PATCH] FFI: ExternFile::filename should be relative to the nit-compile dir MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- src/c_tools.nit | 3 ++- src/compiler/abstract_compiler.nit | 5 ++--- src/compiler/compiler_ffi/light.nit | 2 +- src/ffi/cpp.nit | 6 +++--- src/ffi/light_ffi.nit | 2 +- src/ffi/objc.nit | 4 ++-- .../dynamic_loading_ffi/on_demand_compiler.nit | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/c_tools.nit b/src/c_tools.nit index 9a03c5a..1783c8e 100644 --- a/src/c_tools.nit +++ b/src/c_tools.nit @@ -105,7 +105,8 @@ end # An extern file to compile class ExternFile - # The filename of the file + + # Filename relative to the nit-compile folder var filename: String # The name of the target in the Makefile diff --git a/src/compiler/abstract_compiler.nit b/src/compiler/abstract_compiler.nit index 32dd807..9753100 100644 --- a/src/compiler/abstract_compiler.nit +++ b/src/compiler/abstract_compiler.nit @@ -528,8 +528,7 @@ endif var java_files = new Array[ExternFile] for f in compiler.extern_bodies do var o = f.makefile_rule_name - var ff = f.filename.basename - makefile.write("{o}: {ff}\n") + makefile.write("{o}: {f.filename}\n") makefile.write("\t{f.makefile_rule_content}\n\n") dep_rules.add(f.makefile_rule_name) @@ -712,7 +711,7 @@ abstract class AbstractCompiler stream.write("const char* get_nit_name(register const char* procname, register unsigned int len);\n") stream.close - extern_bodies.add(new ExternCFile("{compile_dir}/c_functions_hash.c", "")) + extern_bodies.add(new ExternCFile("c_functions_hash.c", "")) end # Compile C headers diff --git a/src/compiler/compiler_ffi/light.nit b/src/compiler/compiler_ffi/light.nit index 1f59771..4adbf05 100644 --- a/src/compiler/compiler_ffi/light.nit +++ b/src/compiler/compiler_ffi/light.nit @@ -53,7 +53,7 @@ extern void nitni_global_ref_decr(void*); 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 diff --git a/src/ffi/cpp.nit b/src/ffi/cpp.nit index 13a6e92..f660114 100644 --- a/src/ffi/cpp.nit +++ b/src/ffi/cpp.nit @@ -171,7 +171,7 @@ class CPPCompilationUnit files.add("{compdir}/{c_file}") - return new ExternCppFile("{compdir}/{c_file}", mmodule) + return new ExternCppFile(c_file, mmodule) end end @@ -180,8 +180,8 @@ class ExternCppFile var mmodule: MModule - redef fun makefile_rule_name do return "{filename.basename}.o" - redef fun makefile_rule_content do return "$(CXX) $(CFLAGS) {mmodule.cppflags[""].join(" ")} -c {filename.basename} -o {filename.basename}.o" + redef fun makefile_rule_name do return "{filename}.o" + redef fun makefile_rule_content do return "$(CXX) $(CFLAGS) {mmodule.cppflags[""].join(" ")} -c {filename} -o {filename}.o" redef fun compiles_to_o_file do return true end diff --git a/src/ffi/light_ffi.nit b/src/ffi/light_ffi.nit index 2245a92..b8d572b 100644 --- a/src/ffi/light_ffi.nit +++ b/src/ffi/light_ffi.nit @@ -57,7 +57,7 @@ redef class MModule ffi_ccu.write_as_impl(self, compdir) for filename in ffi_ccu.files do - var f = new ExternCFile(filename, cflags) + var f = new ExternCFile(filename.basename, cflags) f.pkgconfigs.add_all pkgconfigs ffi_files.add(f) end diff --git a/src/ffi/objc.nit b/src/ffi/objc.nit index 9c0545a..24ce15d 100644 --- a/src/ffi/objc.nit +++ b/src/ffi/objc.nit @@ -156,7 +156,7 @@ private class ObjCCompilationUnit 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 diff --git a/src/interpreter/dynamic_loading_ffi/on_demand_compiler.nit b/src/interpreter/dynamic_loading_ffi/on_demand_compiler.nit index 44f6854..acd783a 100644 --- a/src/interpreter/dynamic_loading_ffi/on_demand_compiler.nit +++ b/src/interpreter/dynamic_loading_ffi/on_demand_compiler.nit @@ -404,7 +404,7 @@ redef class ExternCFile var cflags = mmodule.cflags[""].join(" ") + " " + pkg_cflags var obj = compile_dir / filename.basename(".c") + ".o" - var cmd = "{v.c_compiler} -Wall -c -fPIC -I {compile_dir} -g -o {obj} {filename} {cflags}" + var cmd = "{v.c_compiler} -Wall -c -fPIC -I {compile_dir} -g -o {obj} {compile_dir / filename} {cflags}" if sys.system(cmd) != 0 then v.fatal "FFI Error: Failed to compile C code using `{cmd}`" return false -- 1.7.9.5