| ################################################################################ |
| # |
| # micropython |
| # |
| ################################################################################ |
| |
| MICROPYTHON_VERSION = 1.22.0 |
| MICROPYTHON_SITE = https://micropython.org/resources/source |
| MICROPYTHON_SOURCE = micropython-$(MICROPYTHON_VERSION).tar.xz |
| # Micropython has a lot of code copied from other projects, and also a number |
| # of submodules for various libs. However, we don't even clone the submodules, |
| # and most of the copied code is not used in the unix build. |
| MICROPYTHON_LICENSE = MIT, BSD-1-Clause, BSD-3-Clause, Zlib |
| MICROPYTHON_LICENSE_FILES = LICENSE |
| MICROPYTHON_DEPENDENCIES = host-python3 |
| MICROPYTHON_CPE_ID_VENDOR = micropython |
| |
| # Use fallback implementation for exception handling on architectures that don't |
| # have explicit support. |
| ifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_arm)$(BR2_armeb),) |
| MICROPYTHON_CFLAGS = -DMICROPY_GCREGS_SETJMP=1 |
| endif |
| |
| # xtensa has problems with nlr_push, use setjmp based implementation instead |
| ifeq ($(BR2_xtensa),y) |
| MICROPYTHON_CFLAGS = -DMICROPY_NLR_SETJMP=1 |
| endif |
| |
| # When building from a tarball we don't have some of the dependencies that are in |
| # the git repository as submodules |
| MICROPYTHON_MAKE_OPTS += \ |
| MICROPY_PY_BTREE=0 \ |
| MICROPY_PY_USSL=0 \ |
| CROSS_COMPILE=$(TARGET_CROSS) \ |
| CFLAGS_EXTRA=$(MICROPYTHON_CFLAGS) \ |
| LDFLAGS_EXTRA="$(TARGET_LDFLAGS)" \ |
| CWARN= |
| |
| ifeq ($(BR2_PACKAGE_LIBFFI),y) |
| MICROPYTHON_DEPENDENCIES += host-pkgconf libffi |
| MICROPYTHON_MAKE_OPTS += MICROPY_PY_FFI=1 |
| else |
| MICROPYTHON_MAKE_OPTS += MICROPY_PY_FFI=0 |
| endif |
| |
| define MICROPYTHON_BUILD_CMDS |
| $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/mpy-cross |
| $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/ports/unix \ |
| $(MICROPYTHON_MAKE_OPTS) |
| endef |
| |
| define MICROPYTHON_INSTALL_TARGET_CMDS |
| $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/ports/unix \ |
| $(MICROPYTHON_MAKE_OPTS) \ |
| DESTDIR=$(TARGET_DIR) \ |
| PREFIX=/usr \ |
| install |
| endef |
| |
| ifeq ($(BR2_PACKAGE_MICROPYTHON_LIB),y) |
| define MICROPYTHON_COLLECT_LIBS |
| $(EXTRA_ENV) PYTHONPATH=$(@D)/tools \ |
| package/micropython/collect_micropython_lib.py \ |
| $(@D) $(@D)/.built_pylib |
| endef |
| |
| define MICROPYTHON_INSTALL_LIBS |
| $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/micropython |
| cp -a $(@D)/.built_pylib/* $(TARGET_DIR)/usr/lib/micropython |
| endef |
| |
| MICROPYTHON_POST_BUILD_HOOKS += MICROPYTHON_COLLECT_LIBS |
| MICROPYTHON_POST_INSTALL_TARGET_HOOKS += MICROPYTHON_INSTALL_LIBS |
| endif |
| |
| $(eval $(generic-package)) |