micropython/mpy-cross
Alessandro Gatti 8fb848f3aa mpy-cross/mpconfigport: Explicitly disable native code loading.
This commit makes use of the new native code loading changes to provide
a test bed for a target with the native compiler framework available but
without no code loading capabilities.

mpy-cross already fully disables native code loading, however those
changes do not really propagate anywhere outside `py/persistentcode`.
Recent changes in the code loading framework actually touch the core
code in a few more places, but no default CI target is configured to run
with the new native code loading defines switched off.

Given that mpy-cross doesn't really need to load code anyway, it is a
good target for setting up a configuration that goes a bit deeper when
it comes to disabling code loading.  Since mpy-cross is built several
times during the CI process, it can be repurposed as an early warning
system for issues related to these new changes.  Normal operation should
not be affected in any way.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-12-26 11:51:56 +01:00
..
mpy_cross mpy-cross: Add RISC-V RV64IMC support in MPY files. 2025-09-19 11:11:31 +10:00
gccollect.c all: Update to point to files in new shared/ directory. 2021-07-12 17:08:10 +10:00
main.c py/asmrv32: Reserve a flag for the Zcmp RV32 CPU extension. 2025-12-19 17:06:53 +11:00
Makefile extmod: Make extmod.mk self-contained. 2022-10-11 23:31:49 +11:00
mpconfigport.h mpy-cross/mpconfigport: Explicitly disable native code loading. 2025-12-26 11:51:56 +01:00
mphalport.h mpy-cross: Make build independent of extmod directory. 2018-07-10 14:11:28 +10:00
mpy-cross.vcxproj all: Keep msvc build output in build/ directories. 2022-12-13 17:18:53 +11:00
qstrdefsport.h mpy-cross: Add new component, a cross compiler for MicroPython bytecode. 2016-02-25 10:12:21 +00:00
README.md all: Remove MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE. 2021-09-16 16:04:03 +10:00

MicroPython cross compiler

This directory contains the MicroPython cross compiler, which runs under any Unix-like system and compiles .py scripts into .mpy files.

Build it as usual:

$ make

The compiler is called mpy-cross. Invoke it as:

$ ./mpy-cross foo.py

This will create a file foo.mpy which can then be copied to a place accessible by the target MicroPython runtime (eg onto a pyboard's filesystem), and then imported like any other Python module using import foo.

Different target runtimes may require a different format of the compiled bytecode, and such options can be passed to the cross compiler.

If the Python code contains @native or @viper annotations, then you must specify -march to match the target architecture.

Run ./mpy-cross -h to get a full list of options.

The optimisation level is 0 by default. Optimisation levels are detailed in https://docs.micropython.org/en/latest/library/micropython.html#micropython.opt_level