[m-rev.] for review: add foreign code support to mmake for the IL backend
Peter Ross
peter.ross at miscrit.be
Wed Jul 18 01:38:55 AEST 2001
On Wed, Jul 18, 2001 at 01:24:37AM +1000, Tyson Dowd wrote:
> On 17-Jul-2001, Peter Ross <peter.ross at miscrit.be> wrote:
> > Hi,
> >
> >
> > ===================================================================
> >
> >
> > Estimated hours taken: 5
> > Branches: main
> >
> > Add mmake support for building modules which contain foreign code on the
> > IL backend.
> > Note that currently we don't install mercury_il.dll and mercury_mcpp.dll
> > somewhere where the C compiler can find them, so this change doesn't
> > work out of the box.
> >
> > compiler/mlds_to_ilasm.m:
> > Change the output file name for cpp files to <modulename>__cpp_code.cpp
>
> While making this change, it would be a good idea to move to
> __mcpp_code.cpp instead of cpp_code.cpp.
>
> You should use simple_foreign_language_string and update it to use mcpp.
>
I will do this change as a seperate change, as it will require changing the
extensions on all the build rules in the Makefiles.
> >
> > compiler/mlds_to_mcpp.m:
> > No longer output a reference to <modulename>.dll, as the cpp code
> > doesn't refer to any of the entities defined in this dll.
>
> This is required for --high-level-data, but it doens't
> matter too much because in fact you have to #include *ALL* the DLLs that
> you might possibly see types from, so your change will only break it a
> little bit more than it is already.
>
I will add an XXX.
> >
> > compiler/modules.m:
> > If a module contains some foreign code and we are on the IL backend
> > generate a dependency which causes the foreign code dll to be built.
> > Generate the make variable .foreign, .foreign_cs, .foreign_os and
> > .foreign_dlls which refer to all the foreign modules.
> > Generate rules to clean the foreign modules up.
> >
> > scripts/Mmake.rules:
> > Turn some unix paths into windows paths.
> >
> > library/Mmakefile:
> > Use the new .foreign variables to build the library instead of the
> > previous hacks.
> >
>
> I'd like some more comments about what .foreign, .foreign_dlls,
> .foreign_objs, and .foreign_cs are supposed to play (e.g. what kind of
> files they can contain). For the case of C++ it's not so hard to guess
> but if the system handles other files too it would be good to know
> whether we can reuse these variables for other purposes.
>
Done.
> > Index: compiler/modules.m
> > ===================================================================
> > RCS file: /home/mercury1/repository/mercury/compiler/modules.m,v
> > retrieving revision 1.172
> > diff -u -r1.172 modules.m
> > --- compiler/modules.m 17 Jul 2001 08:56:30 -0000 1.172
> > +++ compiler/modules.m 17 Jul 2001 13:41:10 -0000
> > @@ -1776,7 +1776,7 @@
> > write_dependency_file(Module, AllDepsSet, MaybeTransOptDeps) -->
> > { Module = module_imports(SourceFileName, ModuleName, ParentDeps,
> > IntDeps, ImplDeps, IndirectDeps, _InclDeps, FactDeps0,
> > - _ContainsForeignCode, _Items, _Error, _Timestamps) },
> > + ContainsForeignCode, Items, _Error, _Timestamps) },
> > globals__io_lookup_bool_option(verbose, Verbose),
> > { module_name_to_make_var_name(ModuleName, MakeVarName) },
> > module_name_to_file_name(ModuleName, ".d", yes, DependencyFileName),
> > @@ -2030,9 +2030,46 @@
> > SourceFileName, "\n",
> > "\trm -rf ", DirFileName, "\n",
> > "\t$(MCS) $(ALL_GRADEFLAGS) $(ALL_MCSFLAGS) ",
> > - SourceFileName, "\n"
> > + SourceFileName, "\n\n"
> > ]),
> >
> > + % If we are on the IL backend and the current module
> > + % contains some foreign code, generate a dependency
> > + % between the dll containing the mercury code and the
> > + % dll containing the foreign code.
>
> This comment is not complete, the code it describes does quite a bit
> more than that.
>
Done.
--------------------------------------------------------------------------
mercury-reviews mailing list
post: mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the reviews
mailing list