diff options
Diffstat (limited to 'py')
| -rw-r--r-- | py/mkrules.cmake | 10 | ||||
| -rw-r--r-- | py/mkrules.mk | 7 | ||||
| -rw-r--r-- | py/modsys.c | 40 | ||||
| -rw-r--r-- | py/mpconfig.h | 10 |
4 files changed, 56 insertions, 11 deletions
diff --git a/py/mkrules.cmake b/py/mkrules.cmake index 02e3148f2..6415b549a 100644 --- a/py/mkrules.cmake +++ b/py/mkrules.cmake @@ -15,6 +15,10 @@ set(MICROPY_ROOT_POINTERS_SPLIT "${MICROPY_GENHDR_DIR}/root_pointers.split") set(MICROPY_ROOT_POINTERS_COLLECTED "${MICROPY_GENHDR_DIR}/root_pointers.collected") set(MICROPY_ROOT_POINTERS "${MICROPY_GENHDR_DIR}/root_pointers.h") +if(NOT MICROPY_PREVIEW_VERSION_2) + set(MICROPY_PREVIEW_VERSION_2 0) +endif() + # Need to do this before extracting MICROPY_CPP_DEF below. Rest of frozen # manifest handling is at the end of this file. if(MICROPY_FROZEN_MANIFEST) @@ -24,6 +28,12 @@ if(MICROPY_FROZEN_MANIFEST) ) endif() +if(MICROPY_PREVIEW_VERSION_2) + target_compile_definitions(${MICROPY_TARGET} PUBLIC + MICROPY_PREVIEW_VERSION_2=\(1\) + ) +endif() + # Provide defaults for preprocessor flags if not already defined if(NOT MICROPY_CPP_FLAGS) get_target_property(MICROPY_CPP_INC ${MICROPY_TARGET} INCLUDE_DIRECTORIES) diff --git a/py/mkrules.mk b/py/mkrules.mk index 421e638c2..8b21c7974 100644 --- a/py/mkrules.mk +++ b/py/mkrules.mk @@ -4,6 +4,13 @@ THIS_MAKEFILE = $(lastword $(MAKEFILE_LIST)) include $(dir $(THIS_MAKEFILE))mkenv.mk endif +# Enable in-progress/breaking changes that are slated for MicroPython 2.x. +MICROPY_PREVIEW_VERSION_2 ?= 0 + +ifeq ($(MICROPY_PREVIEW_VERSION_2),1) +CFLAGS += -DMICROPY_PREVIEW_VERSION_2=1 +endif + HELP_BUILD_ERROR ?= "See \033[1;31mhttps://github.com/micropython/micropython/wiki/Build-Troubleshooting\033[0m" HELP_MPY_LIB_SUBMODULE ?= "\033[1;31mError: micropython-lib submodule is not initialized.\033[0m Run 'make submodules'" diff --git a/py/modsys.c b/py/modsys.c index e40542467..12fa1101b 100644 --- a/py/modsys.c +++ b/py/modsys.c @@ -79,19 +79,26 @@ STATIC const mp_rom_obj_tuple_t mp_sys_implementation_version_info_obj = { } }; STATIC const MP_DEFINE_STR_OBJ(mp_sys_implementation_machine_obj, MICROPY_BANNER_MACHINE); -#if MICROPY_PERSISTENT_CODE_LOAD -#define SYS_IMPLEMENTATION_ELEMS \ - MP_ROM_QSTR(MP_QSTR_micropython), \ - MP_ROM_PTR(&mp_sys_implementation_version_info_obj), \ - MP_ROM_PTR(&mp_sys_implementation_machine_obj), \ - MP_ROM_INT(MPY_FILE_HEADER_INT) -#else -#define SYS_IMPLEMENTATION_ELEMS \ +#define SYS_IMPLEMENTATION_ELEMS_BASE \ MP_ROM_QSTR(MP_QSTR_micropython), \ MP_ROM_PTR(&mp_sys_implementation_version_info_obj), \ MP_ROM_PTR(&mp_sys_implementation_machine_obj) + +#if MICROPY_PERSISTENT_CODE_LOAD +#define SYS_IMPLEMENTATION_ELEMS__MPY \ + , MP_ROM_INT(MPY_FILE_HEADER_INT) +#else +#define SYS_IMPLEMENTATION_ELEMS__MPY #endif + #if MICROPY_PY_ATTRTUPLE +#if MICROPY_PREVIEW_VERSION_2 +#define SYS_IMPLEMENTATION_ELEMS__V2 \ + , MP_ROM_TRUE +#else +#define SYS_IMPLEMENTATION_ELEMS__V2 +#endif + STATIC const qstr impl_fields[] = { MP_QSTR_name, MP_QSTR_version, @@ -99,19 +106,30 @@ STATIC const qstr impl_fields[] = { #if MICROPY_PERSISTENT_CODE_LOAD MP_QSTR__mpy, #endif + #if MICROPY_PREVIEW_VERSION_2 + MP_QSTR__v2, + #endif }; STATIC MP_DEFINE_ATTRTUPLE( mp_sys_implementation_obj, impl_fields, - 3 + MICROPY_PERSISTENT_CODE_LOAD, - SYS_IMPLEMENTATION_ELEMS + 3 + MICROPY_PERSISTENT_CODE_LOAD + MICROPY_PREVIEW_VERSION_2, + SYS_IMPLEMENTATION_ELEMS_BASE + SYS_IMPLEMENTATION_ELEMS__MPY + SYS_IMPLEMENTATION_ELEMS__V2 ); #else STATIC const mp_rom_obj_tuple_t mp_sys_implementation_obj = { {&mp_type_tuple}, 3 + MICROPY_PERSISTENT_CODE_LOAD, + // Do not include SYS_IMPLEMENTATION_ELEMS__V2 because + // SYS_IMPLEMENTATION_ELEMS__MPY may be empty if + // MICROPY_PERSISTENT_CODE_LOAD is disabled, which means they'll share + // the same index. Cannot query _v2 if MICROPY_PY_ATTRTUPLE is + // disabled. { - SYS_IMPLEMENTATION_ELEMS + SYS_IMPLEMENTATION_ELEMS_BASE + SYS_IMPLEMENTATION_ELEMS__MPY } }; #endif diff --git a/py/mpconfig.h b/py/mpconfig.h index a36f9658f..6995600ab 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -53,6 +53,12 @@ #define MICROPY_VERSION_STRING MICROPY_VERSION_STRING_BASE #endif +// If this is enabled, then in-progress/breaking changes slated for the 2.x +// release will be enabled. +#ifndef MICROPY_PREVIEW_VERSION_2 +#define MICROPY_PREVIEW_VERSION_2 (0) +#endif + // This file contains default configuration settings for MicroPython. // You can override any of the options below using mpconfigport.h file // located in a directory of your port. @@ -1828,8 +1834,12 @@ typedef double mp_float_t; // String used for the banner, and sys.version additional information #ifndef MICROPY_BANNER_NAME_AND_VERSION +#if MICROPY_PREVIEW_VERSION_2 +#define MICROPY_BANNER_NAME_AND_VERSION "MicroPython (with v2.0 preview) " MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE +#else #define MICROPY_BANNER_NAME_AND_VERSION "MicroPython " MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE #endif +#endif // String used for the second part of the banner, and sys.implementation._machine #ifndef MICROPY_BANNER_MACHINE |
