[m-users.] Building Mercury on RiscOS, anybody tried ?
Sean Charles (emacstheviking)
objitsu at gmail.com
Tue Jun 15 20:28:47 AEST 2021
Um, yeah. Thanks.
Moving on….
:D
> On 15 Jun 2021, at 11:27, Julien Fischer <jfischer at opturion.com> wrote:
>
>
> Hi Sean,
>
> On Tue, 15 Jun 2021, Sean Charles (emacstheviking) wrote:
>
>> I have RiscOS on a Pi4 with 4GB of RAM… and it occurred to me that,
>> with the rigour and beauty of Mercury, it would make a wonderful
>> development tool, the FFI layer would be the first goal I guess to
>> talk to the native UI libraries etc.
>>
>> I absolutely cannot believe how fast RiscOS runs even compared to
>> 64-bit Ubuntu on the Pi, it feels like the good old days when a 1MHz
>> 6502 was state of the art.
>
> I'm not aware of anyone porting Mercury to RISC OS.
>
>> I wondered what the technical hurdles might be… initially setting up a
>> compiler environment for one thing and then, addressing the ‘unusual’
>> way in which the RiscOS compiler addresses C files through a tree
>> rather than a file extension, as I understand it so far.
>
> A few pointers, when porting Mercury to a new platform you need to
> consider:
>
> * Does the Boehm GC work on the new platform?
>
> * Is thre a usable build toolchain: C compiler, POSIX style shell,
> GNU make, flex and bison available?
>
> * Threads in Mecury currently assume the presence the POSIX threads
> API.
>
> Things may minimally work at that point, but most new ports also
> require at least some of the following:
>
> * Changes to runtime/mercury_conf_param.h to add macros related
> to the new platform.
>
> * Changes to the configure script, e.g. to tell the Mercury compiler
> what flags to pass to the linker, how to build share objects on the
> new platform.
>
> Some tests in the configure script may need to be disabled or have
> their results forced.
>
> * To support the asm_fast and reg grades, various changes may need
> to be made the runtime such as defining global registers (in
> runtime/machdeps) and (maybe) runtime/mercury_goto.h. Also,
> possibly to runtime/mercury_atomic_ops.h if the .par grades
> are to be supported.
>
> * Various places in scripts/mgnuc.in and scripts/ml.in may need
> additions for the new platform. (Those scripts are what mmake
> uses to "drive" the C compiler and linker respectively.)
>
> The Mercury compiler itself may require similar changes in
> compiler/compile_target_code.m so that mmc --make knows how
> drive the C compiler toolchain.
>
> * Platform dependent foreign_procs in the standard library may
> need to be extended or have alternatives for the new platform
> added. The io, dir and time modules are likely candidates for
> requiring such changes.
>
>> It MIGHT be easier to cross compile for ARM7 on my Mac though, if
>> that’s possible with Mercury ?!
>
> ARM7 should be supported, although it's been a while since anyone
> has reported using it with Mercury. (It was being used with Linux,
> last I heard anything about it.)
>
> Recent ROTDs have a script for configuring Mercury as a cross compiler,
> in tools/configure_cross. It currently supports cross compiling to
> i686-*-mingw32, x86_64-*-mingw32 and aarch64-linux-gnu (see README.cross
> for details), but it should be fairly straightforward to extend to other
> platforms.
>
> Julien.
More information about the users
mailing list