mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-13 21:04:00 +00:00
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:
@@ -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),
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user