f31a358eb2
If `-march` isn't set then it means the user hasn't thought about it, or in the case of freezing, MPY_CROSS_FLAGS isn't set. It's almost certainly going to lead to problems, as there's no reason why the host architecture is likely to be the right choice. Compiling regular Python code is unaffected, but if `@native`/`@viper` is used, the compiler will raise `SyntaxError: invalid arch`. For situations where you explicitly want to use the host architecture (e.g. for running tests on the unix port), added -march=host that keeps the old behavior. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com> |
||
---|---|---|
.. | ||
mpy_cross | ||
Makefile | ||
README.md | ||
gccollect.c | ||
main.c | ||
mpconfigport.h | ||
mphalport.h | ||
mpy-cross.vcxproj | ||
qstrdefsport.h |
README.md
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