Put the fields of foreign_import_modules into our standard order.

compiler/prog_data_foreign.m:
    Our standard order for foreign language is the historical order:
    C, Java, C#, Erlang. Put foreign_import_modules's fields into this order,
    renaming the functor to make the fields' meanings explicit.

compiler/write_deps_file.m:
    Conform to the change above.
This commit is contained in:
Zoltan Somogyi
2019-10-30 11:02:58 +11:00
parent b89b224f6c
commit 793ea4d449
2 changed files with 33 additions and 35 deletions

View File

@@ -60,11 +60,11 @@
% C++ is commented out while lang_cplusplus is commented out % C++ is commented out while lang_cplusplus is commented out
% in the foreign_language type. % in the foreign_language type.
:- type foreign_import_modules :- type foreign_import_modules
---> foreign_import_modules( ---> c_j_cs_e_fims(
fim_c :: set(module_name), fim_c :: set(module_name),
% fim_cplusplus :: set(module_name), % fim_cplusplus :: set(module_name),
fim_csharp :: set(module_name),
fim_java :: set(module_name), fim_java :: set(module_name),
fim_csharp :: set(module_name),
fim_erlang :: set(module_name) fim_erlang :: set(module_name)
). ).
@@ -100,7 +100,7 @@
:- implementation. :- implementation.
init_foreign_import_modules = 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) :- add_foreign_import_module(Lang, ModuleName, !FIM) :-
( (
@@ -142,20 +142,20 @@ add_fim_spec(FIMSpec, !FIM) :-
add_foreign_import_module(Lang, ModuleName, !FIM). add_foreign_import_module(Lang, ModuleName, !FIM).
get_all_fim_specs(FIM) = FIMSpecs :- get_all_fim_specs(FIM) = FIMSpecs :-
FIM = foreign_import_modules(ModuleNamesC, ModuleNamesCSharp, FIM = c_j_cs_e_fims(ModuleNamesC, ModuleNamesJava,
ModuleNamesJava, ModuleNamesErlang), ModuleNamesCSharp, ModuleNamesErlang),
FIMSpecs = set.union_list([ FIMSpecs = set.union_list([
set.map(make_fim_spec(lang_c), ModuleNamesC), 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_java), ModuleNamesJava),
set.map(make_fim_spec(lang_csharp), ModuleNamesCSharp),
set.map(make_fim_spec(lang_erlang), ModuleNamesErlang) set.map(make_fim_spec(lang_erlang), ModuleNamesErlang)
]). ]).
get_all_foreign_import_modules(FIM) = ModuleNames :- get_all_foreign_import_modules(FIM) = ModuleNames :-
FIM = foreign_import_modules(ModuleNamesC, ModuleNamesCSharp, FIM = c_j_cs_e_fims(ModuleNamesC, ModuleNamesJava,
ModuleNamesJava, ModuleNamesErlang), ModuleNamesCSharp, ModuleNamesErlang),
ModuleNames = set.union_list([ModuleNamesC, ModuleNamesCSharp, ModuleNames = set.union_list([ModuleNamesC, ModuleNamesJava,
ModuleNamesJava, ModuleNamesErlang]). ModuleNamesCSharp, ModuleNamesErlang]).
get_lang_fim_specs(FIM, Lang) = ImportInfos :- get_lang_fim_specs(FIM, Lang) = ImportInfos :-
ModuleNames = get_lang_fim_modules(FIM, Lang), ModuleNames = get_lang_fim_modules(FIM, Lang),

View File

@@ -661,30 +661,28 @@ generate_d_file(Globals, ModuleAndImports, AllDeps, MaybeTransOptDeps,
% modules. XXX ITEM_LIST What is the correctness argument that supports % modules. XXX ITEM_LIST What is the correctness argument that supports
% the above assertion? % the above assertion?
( if ( if
ForeignImportModules0 = foreign_import_modules( ForeignImportModules0 = c_j_cs_e_fims(C0, Java0, CSharp0, Erlang0),
C0, CSharp0, Java0, Erlang0),
set.is_empty(C0), set.is_empty(C0),
set.is_empty(CSharp0),
set.is_empty(Java0), set.is_empty(Java0),
set.is_empty(CSharp0),
set.is_empty(Erlang0) set.is_empty(Erlang0)
then then
SrcForeignImportModules = foreign_import_modules( SrcForeignImportModules = c_j_cs_e_fims(
SrcC, SrcCSharp, SrcJava, SrcErlang), SrcC, SrcJava, SrcCSharp, SrcErlang),
IntForeignImportModules = foreign_import_modules( IntForeignImportModules = c_j_cs_e_fims(
IntC, IntCSharp, IntJava, IntErlang), IntC, IntJava, IntCSharp, IntErlang),
OptForeignImportModules = foreign_import_modules( OptForeignImportModules = c_j_cs_e_fims(
OptC, OptCSharp, OptJava, OptErlang), OptC, OptJava, OptCSharp, OptErlang),
IntForOptForeignImportModules = foreign_import_modules( IntForOptForeignImportModules = c_j_cs_e_fims(
IntForOptC, IntForOptCSharp, IntForOptJava, IntForOptC, IntForOptJava, IntForOptCSharp,
IntForOptErlang), IntForOptErlang),
C = set.union_list([SrcC, IntC, OptC, IntForOptC]), C = set.union_list([SrcC, IntC, OptC, IntForOptC]),
Java= set.union_list([SrcJava, IntJava, OptJava, IntForOptJava]),
CSharp = set.union_list([ CSharp = set.union_list([
SrcCSharp, IntCSharp, OptCSharp, IntForOptCSharp]), SrcCSharp, IntCSharp, OptCSharp, IntForOptCSharp]),
Java= set.union_list([SrcJava, IntJava, OptJava, IntForOptJava]),
Erlang = set.union_list([ Erlang = set.union_list([
SrcErlang, IntErlang, OptErlang, IntForOptErlang]), SrcErlang, IntErlang, OptErlang, IntForOptErlang]),
ForeignImportModules = foreign_import_modules( ForeignImportModules = c_j_cs_e_fims(C, Java, CSharp, Erlang)
C, CSharp, Java, Erlang)
else else
ForeignImportModules = ForeignImportModules0 ForeignImportModules = ForeignImportModules0
) )
@@ -709,29 +707,29 @@ generate_d_file(Globals, ModuleAndImports, AllDeps, MaybeTransOptDeps,
else else
globals.get_target(Globals, Target), globals.get_target(Globals, Target),
( (
Target = target_csharp, Target = target_c,
% XXX don't know enough about C# yet % NOTE: for C the possible targets might be a .o file _or_ a
ForeignImportTargets = [], % .pic_o file. We need to include dependencies for the latter
ForeignImportExt = ".cs" % otherwise invoking mmake with a <module>.pic_o target will break.
ForeignImportTargets = [ObjFileName, PicObjFileName],
ForeignImportExt = ".mh"
; ;
Target = target_java, Target = target_java,
module_name_to_file_name(Globals, do_not_create_dirs, ".class", module_name_to_file_name(Globals, do_not_create_dirs, ".class",
ModuleName, ClassFileName, !IO), ModuleName, ClassFileName, !IO),
ForeignImportTargets = [ClassFileName], ForeignImportTargets = [ClassFileName],
ForeignImportExt = ".java" ForeignImportExt = ".java"
;
Target = target_csharp,
% XXX don't know enough about C# yet
ForeignImportTargets = [],
ForeignImportExt = ".cs"
; ;
Target = target_erlang, Target = target_erlang,
module_name_to_file_name(Globals, do_not_create_dirs, ".beam", module_name_to_file_name(Globals, do_not_create_dirs, ".beam",
ModuleName, BeamFileName, !IO), ModuleName, BeamFileName, !IO),
ForeignImportTargets = [BeamFileName], ForeignImportTargets = [BeamFileName],
ForeignImportExt = ".hrl" 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 <module>.pic_o target will break.
ForeignImportTargets = [ObjFileName, PicObjFileName],
ForeignImportExt = ".mh"
), ),
% XXX Instead of generating a separate rule for each target in % XXX Instead of generating a separate rule for each target in
% ForeignImportTargets, generate one rule with all those targets % ForeignImportTargets, generate one rule with all those targets