circuitpython/mpy-cross
Jeff Epler 7ab5252cdd
Add CIRCUITPY_MESSAGE_COMPRESSION_LEVEL
to trade compile speed & flash size

Initially enable the faster mode on rp2040 and espressif, where there's
usually plenty of flash available (these advanced techniques save hundreds
to thousands of bytes, which is important on a lot of old samd21 boards
but is a drop in the lake of a 4MB flash chip)
2023-10-20 19:18:18 +01:00
..
mpy_cross mpy-cross/mpy_cross: Add docstrings to public methods. 2022-09-28 11:47:11 +10:00
fmode.c run code formatting script 2021-03-15 19:27:36 +05:30
fmode.h Add license to some obvious files. 2020-07-06 19:16:25 +01:00
gccollect.c Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
main.c initial merge from v1.20.0; just satisifying conflicts 2023-09-19 11:10:12 -04:00
Makefile Add CIRCUITPY_MESSAGE_COMPRESSION_LEVEL 2023-10-20 19:18:18 +01:00
Makefile.fuzz Try and fix mpy-cross variants 2023-10-11 10:03:46 -07:00
Makefile.m1 Try and fix mpy-cross variants 2023-10-11 10:03:46 -07:00
Makefile.static Try and fix mpy-cross variants 2023-10-11 10:03:46 -07:00
Makefile.static-aarch64 Try and fix mpy-cross variants 2023-10-11 10:03:46 -07:00
Makefile.static-mingw Try and fix mpy-cross variants 2023-10-11 10:03:46 -07:00
Makefile.static-raspbian Try and fix mpy-cross variants 2023-10-11 10:03:46 -07:00
mpconfigport.h initial merge from v1.20.0; just satisifying conflicts 2023-09-19 11:10:12 -04:00
mphalport.h Merge MicroPython 1.10 into CircuitPython 2021-04-21 15:59:17 -07:00
mpy-cross.vcxproj all: Keep msvc build output in build/ directories. 2022-12-13 17:18:53 +11:00
qstrdefsport.h Add license to some obvious files. 2020-07-06 19:16:25 +01:00
README.md Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
windows-fmode.c Add windows/fmode.c for mpy-cross 2023-10-11 10:04:02 -07: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