[m-dev.] Mercury, Emscripten, and WebAssembly
Julien Fischer
jfischer at opturion.com
Wed Jan 29 10:13:47 AEDT 2020
Hi Patrick,
On Tue, 28 Jan 2020, Patrick Henning wrote:
> I am writing to request help with compiling Mercury code to
> WebAssembly via Emscripten. I believe this would involve using the
> Mercury compiler to compile the gc, runtime, standard library, etc, to
> c; and then using Emscripten to compile the c to WebAssembly code.
> From there it should be possibly to compile arbitrary Mercury code to
> c and then use Emscripten to compile that, linking in the previously
> prepared runtime and standard library and whatnot.
>
> Does anyone know if and how it would be possbile to carry out the
> first step of compiling all the Mercury preliminaries to c (similar to
> the functionality that the '-C' flag for mmc provides)?
It's certainly possible to compile it all to C; that's how we build the
source distribution.
Take a look at the 'tar' target in the top-level Mmakefile -- this is
the target used to build the source distribution. In particular, this
bit:
cd util && mmake
+cd runtime && $(SUBDIR_MMAKE) cs $(RT_LIB_NAME).init
+cd library && $(SUBDIR_MMAKE) depend
+cd library && $(SUBDIR_MMAKE) all-ints cs $(STD_LIB_NAME).init tags
+cd mdbcomp && $(SUBDIR_MMAKE) depend
+cd mdbcomp && $(SUBDIR_MMAKE) all-ints cs \
$(MDBCOMP_LIB_NAME).init tags
+cd browser && $(SUBDIR_MMAKE) depend
+cd browser && $(SUBDIR_MMAKE) all-ints cs \
$(BROWSER_LIB_NAME).init tags
+cd ssdb && $(SUBDIR_MMAKE) depend
+cd ssdb && $(SUBDIR_MMAKE) all-ints cs \
$(SSDB_LIB_NAME).init tags
+cd trace && $(SUBDIR_MMAKE) cs
+cd compiler && $(SUBDIR_MMAKE) depend
+cd compiler && $(SUBDIR_MMAKE) cs tags
+cd slice && $(SUBDIR_MMAKE) depend
+cd slice && $(SUBDIR_MMAKE) cs tags
+cd profiler && $(SUBDIR_MMAKE) depend
+cd profiler && $(SUBDIR_MMAKE) cs tags
+cd deep_profiler && $(SUBDIR_MMAKE) depend
+cd deep_profiler && $(SUBDIR_MMAKE) cs tags
+cd mfilterjavac && $(SUBDIR_MMAKE) depend
+cd mfilterjavac && $(SUBDIR_MMAKE) cs tags
The 'cs' target builds all of the .c files in a directory
(i.e. without proceeding to compiling them to object code, linking etc.)
Julien.
More information about the developers
mailing list