perlindgren / syncrim

Apache License 2.0
18 stars 5 forks source link

Cross compilation for target models. #57

Closed perlindgren closed 1 year ago

perlindgren commented 1 year ago

Problem

We will have "users" writing code in assembly for various targets that we model (MIPS, RISCV, ARM-Cortex M etc.). Embedded programming is in general a mess, with different toolchains used for compiling/linking etc. While LLVM is by design a cross compiler, installation on different hosts looks different and may be a source of error/confusion.

Solution

Rust to our rescue, the rustup/cargo ecosystem was design to be portable.

A POC for cross compilation of RISCV assembly on both Linux and Windows (OSX should work as well but not tested).

https://github.com/perlindgren/riscv_asm

Pawel has prepared a PR integrating this approach to the RISCV backend model. A similar approach can be taken for the MIPS backend model.

perlindgren commented 1 year ago

Pawel's PR https://github.com/perlindgren/syncrim/pull/56, developed under Linux. I will test it under Windows. If someone with OSX access could test it as well it would be great. I think we can merge even without OSX testing (that can be done later as well).

perlindgren commented 1 year ago

I think we can close this. For now the workflow for RISC-V will do. We can think about further improvements later, either by re-opening this issue, or creating a new issue.