micropython/mpy-cross
Paul Sokolovsky ab78fe0eb9 mpy-cross/Makefile: Also undefine MICROPY_FORCE_32BIT and CROSS_COMPILE.
mpy-cross is a host, not target binary. It should not be build with the
target compiler, compiler options and other settings. For example,

If someone currently tries to build from pristine checkout the unix port
with the following command:

    make CROSS_COMPILE=arm-linux-gnueabihf-

then mpy-cross will be built with arm-linux-gnueabihf-gcc and of course
won't run on the host, leading to overall build failure.

This situation was worked around for some options in 1d8c3f4cff, so add
MICROPY_FORCE_32BIT and CROSS_COMPILE to that set too.
2018-08-14 17:20:18 +10:00
..
.gitignore mpy-cross: Add new component, a cross compiler for MicroPython bytecode. 2016-02-25 10:12:21 +00:00
Makefile mpy-cross/Makefile: Also undefine MICROPY_FORCE_32BIT and CROSS_COMPILE. 2018-08-14 17:20:18 +10:00
README.md mpy-cross: Add new component, a cross compiler for MicroPython bytecode. 2016-02-25 10:12:21 +00:00
gccollect.c py: Add MP_STATE_THREAD to hold state specific to a given thread. 2016-06-28 11:09:31 +01:00
main.c all: Remove inclusion of internal py header files. 2017-10-04 12:37:50 +11:00
mpconfigport.h mpy-cross, unix, windows, stmhal: Enable return-if-else optimisation. 2017-04-22 15:12:48 +10:00
mphalport.h mpy-cross: Make build independent of extmod directory. 2018-07-10 14:11:28 +10:00
qstrdefsport.h mpy-cross: Add new component, a cross compiler for MicroPython bytecode. 2016-02-25 10:12:21 +00:00

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. For example, the unix port of MicroPython requires the following:

$ ./mpy-cross -mcache-lookup-bc foo.py

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