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
% 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),

View File

@@ -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 <module>.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 <module>.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