diff --git a/compiler/prog_data_foreign.m b/compiler/prog_data_foreign.m index c000c05da..f3c359ef4 100644 --- a/compiler/prog_data_foreign.m +++ b/compiler/prog_data_foreign.m @@ -60,11 +60,11 @@ % C++ is commented out while lang_cplusplus is commented out % in the foreign_language type. :- type foreign_import_modules - ---> foreign_import_modules( + ---> c_j_cs_e_fims( fim_c :: set(module_name), % fim_cplusplus :: set(module_name), - fim_csharp :: set(module_name), fim_java :: set(module_name), + fim_csharp :: set(module_name), fim_erlang :: set(module_name) ). @@ -100,7 +100,7 @@ :- implementation. init_foreign_import_modules = - foreign_import_modules(set.init, set.init, set.init, set.init). + c_j_cs_e_fims(set.init, set.init, set.init, set.init). add_foreign_import_module(Lang, ModuleName, !FIM) :- ( @@ -142,20 +142,20 @@ add_fim_spec(FIMSpec, !FIM) :- add_foreign_import_module(Lang, ModuleName, !FIM). get_all_fim_specs(FIM) = FIMSpecs :- - FIM = foreign_import_modules(ModuleNamesC, ModuleNamesCSharp, - ModuleNamesJava, ModuleNamesErlang), + FIM = c_j_cs_e_fims(ModuleNamesC, ModuleNamesJava, + ModuleNamesCSharp, ModuleNamesErlang), FIMSpecs = set.union_list([ set.map(make_fim_spec(lang_c), ModuleNamesC), - set.map(make_fim_spec(lang_csharp), ModuleNamesCSharp), set.map(make_fim_spec(lang_java), ModuleNamesJava), + set.map(make_fim_spec(lang_csharp), ModuleNamesCSharp), set.map(make_fim_spec(lang_erlang), ModuleNamesErlang) ]). get_all_foreign_import_modules(FIM) = ModuleNames :- - FIM = foreign_import_modules(ModuleNamesC, ModuleNamesCSharp, - ModuleNamesJava, ModuleNamesErlang), - ModuleNames = set.union_list([ModuleNamesC, ModuleNamesCSharp, - ModuleNamesJava, ModuleNamesErlang]). + FIM = c_j_cs_e_fims(ModuleNamesC, ModuleNamesJava, + ModuleNamesCSharp, ModuleNamesErlang), + ModuleNames = set.union_list([ModuleNamesC, ModuleNamesJava, + ModuleNamesCSharp, ModuleNamesErlang]). get_lang_fim_specs(FIM, Lang) = ImportInfos :- ModuleNames = get_lang_fim_modules(FIM, Lang), diff --git a/compiler/write_deps_file.m b/compiler/write_deps_file.m index 8f5bb4b1c..0511f2d45 100644 --- a/compiler/write_deps_file.m +++ b/compiler/write_deps_file.m @@ -661,30 +661,28 @@ generate_d_file(Globals, ModuleAndImports, AllDeps, MaybeTransOptDeps, % modules. XXX ITEM_LIST What is the correctness argument that supports % the above assertion? ( if - ForeignImportModules0 = foreign_import_modules( - C0, CSharp0, Java0, Erlang0), + ForeignImportModules0 = c_j_cs_e_fims(C0, Java0, CSharp0, Erlang0), set.is_empty(C0), - set.is_empty(CSharp0), set.is_empty(Java0), + set.is_empty(CSharp0), set.is_empty(Erlang0) then - SrcForeignImportModules = foreign_import_modules( - SrcC, SrcCSharp, SrcJava, SrcErlang), - IntForeignImportModules = foreign_import_modules( - IntC, IntCSharp, IntJava, IntErlang), - OptForeignImportModules = foreign_import_modules( - OptC, OptCSharp, OptJava, OptErlang), - IntForOptForeignImportModules = foreign_import_modules( - IntForOptC, IntForOptCSharp, IntForOptJava, + SrcForeignImportModules = c_j_cs_e_fims( + SrcC, SrcJava, SrcCSharp, SrcErlang), + IntForeignImportModules = c_j_cs_e_fims( + IntC, IntJava, IntCSharp, IntErlang), + OptForeignImportModules = c_j_cs_e_fims( + OptC, OptJava, OptCSharp, OptErlang), + IntForOptForeignImportModules = c_j_cs_e_fims( + IntForOptC, IntForOptJava, IntForOptCSharp, IntForOptErlang), C = set.union_list([SrcC, IntC, OptC, IntForOptC]), + Java= set.union_list([SrcJava, IntJava, OptJava, IntForOptJava]), CSharp = set.union_list([ SrcCSharp, IntCSharp, OptCSharp, IntForOptCSharp]), - Java= set.union_list([SrcJava, IntJava, OptJava, IntForOptJava]), Erlang = set.union_list([ SrcErlang, IntErlang, OptErlang, IntForOptErlang]), - ForeignImportModules = foreign_import_modules( - C, CSharp, Java, Erlang) + ForeignImportModules = c_j_cs_e_fims(C, Java, CSharp, Erlang) else ForeignImportModules = ForeignImportModules0 ) @@ -709,29 +707,29 @@ generate_d_file(Globals, ModuleAndImports, AllDeps, MaybeTransOptDeps, else globals.get_target(Globals, Target), ( - Target = target_csharp, - % XXX don't know enough about C# yet - ForeignImportTargets = [], - ForeignImportExt = ".cs" + Target = target_c, + % NOTE: for C the possible targets might be a .o file _or_ a + % .pic_o file. We need to include dependencies for the latter + % otherwise invoking mmake with a .pic_o target will break. + ForeignImportTargets = [ObjFileName, PicObjFileName], + ForeignImportExt = ".mh" ; Target = target_java, module_name_to_file_name(Globals, do_not_create_dirs, ".class", ModuleName, ClassFileName, !IO), ForeignImportTargets = [ClassFileName], ForeignImportExt = ".java" + ; + Target = target_csharp, + % XXX don't know enough about C# yet + ForeignImportTargets = [], + ForeignImportExt = ".cs" ; Target = target_erlang, module_name_to_file_name(Globals, do_not_create_dirs, ".beam", ModuleName, BeamFileName, !IO), ForeignImportTargets = [BeamFileName], ForeignImportExt = ".hrl" - ; - Target = target_c, - % NOTE: for C the possible targets might be a .o file _or_ a - % .pic_o file. We need to include dependencies for the latter - % otherwise invoking mmake with a .pic_o target will break. - ForeignImportTargets = [ObjFileName, PicObjFileName], - ForeignImportExt = ".mh" ), % XXX Instead of generating a separate rule for each target in % ForeignImportTargets, generate one rule with all those targets