diff --git a/python/port/mpconfigport.h b/python/port/mpconfigport.h index 9976b2b85..9d3124ede 100644 --- a/python/port/mpconfigport.h +++ b/python/port/mpconfigport.h @@ -1,75 +1,112 @@ #include +#include #include "helpers.h" -// options to control how Micro Python is built +/* MicroPython configuration options + * We're not listing the default options as defined in mpconfig.h */ -// You can disable the built-in MicroPython compiler by setting the following -// config option to 0. If you do this then you won't get a REPL prompt, but you -// will still be able to execute pre-compiled scripts, compiled with mpy-cross. -#define MICROPY_ENABLE_COMPILER (1) +// Maximum length of a path in the filesystem +#define MICROPY_ALLOC_PATH_MAX (32) -#define MICROPY_QSTR_BYTES_IN_HASH (1) -//#define MICROPY_QSTR_EXTRA_POOL mp_qstr_frozen_const_pool -#define MICROPY_ALLOC_PATH_MAX (256) -#define MICROPY_ALLOC_PARSE_CHUNK_INIT (16) -#define MICROPY_EMIT_X64 (0) -#define MICROPY_EMIT_THUMB (0) -#define MICROPY_EMIT_INLINE_THUMB (0) -#define MICROPY_COMP_MODULE_CONST (0) -#define MICROPY_COMP_CONST (0) -#define MICROPY_COMP_DOUBLE_TUPLE_ASSIGN (0) -#define MICROPY_COMP_TRIPLE_TUPLE_ASSIGN (0) -#define MICROPY_MEM_STATS (0) -#define MICROPY_DEBUG_PRINTERS (0) -#define MICROPY_ENABLE_GC (1) -#define MICROPY_GC_ALLOC_THRESHOLD (0) -#define MICROPY_STACK_CHECK (1) -#define MICROPY_REPL_EVENT_DRIVEN (0) -#define MICROPY_HELPER_REPL (1) -#define MICROPY_HELPER_LEXER_UNIX (0) -#define MICROPY_ENABLE_SOURCE_LINE (1) -#define MICROPY_ENABLE_DOC_STRING (0) -#define MICROPY_ERROR_REPORTING (MICROPY_ERROR_REPORTING_DETAILED) -#define MICROPY_BUILTIN_METHOD_CHECK_SELF_ARG (0) -#define MICROPY_PY_ASYNC_AWAIT (0) +// Number of bytes used to store qstr hash +#define MICROPY_QSTR_BYTES_IN_HASH (1) + +// Whether to include the garbage collector +#define MICROPY_ENABLE_GC (1) + +// Whether to check C stack usage +#define MICROPY_STACK_CHECK (1) + +// Whether to provide the mp_kbd_exception object, and micropython.kbd_intr function +#define MICROPY_KBD_EXCEPTION (1) + +// Whether to include REPL helper function +#define MICROPY_HELPER_REPL (1) + +// Long int implementation +#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ) + +// Whether to include information in the byte code to determine source +#define MICROPY_ENABLE_SOURCE_LINE (1) + +// Exception messages provide full info, e.g. object names +#define MICROPY_ERROR_REPORTING (MICROPY_ERROR_REPORTING_DETAILED) + +// Float and complex implementation +#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE) + +// Enable features which improve CPython compatibility +// but may lead to more code size/memory usage. +// TODO: Originally intended as generic category to not +// add bunch of once-off options. May need refactoring later +#define MICROPY_CPYTHON_COMPAT (0) + +// Support for async/await/async for/async with +#define MICROPY_PY_ASYNC_AWAIT (0) + +// Whether to support bytearray object #define MICROPY_PY_BUILTINS_BYTEARRAY (0) -#define MICROPY_PY_BUILTINS_MEMORYVIEW (0) -#define MICROPY_PY_BUILTINS_ENUMERATE (0) -#define MICROPY_PY_BUILTINS_FILTER (0) -#define MICROPY_PY_BUILTINS_FROZENSET (0) -#define MICROPY_PY_BUILTINS_REVERSED (0) -#define MICROPY_PY_BUILTINS_SET (0) + +// Whether to support set object +#define MICROPY_PY_BUILTINS_SET (0) + +// Whether to support property object #define MICROPY_PY_BUILTINS_PROPERTY (0) -#define MICROPY_PY___FILE__ (0) -#define MICROPY_PY_GC (0) -#define MICROPY_PY_ARRAY (0) -#define MICROPY_PY_ATTRTUPLE (0) -#define MICROPY_PY_COLLECTIONS (0) -#define MICROPY_PY_MATH (1) + +// Whether to support enumerate function(type) +#define MICROPY_PY_BUILTINS_ENUMERATE (0) + +// Whether to support filter function(type) +#define MICROPY_PY_BUILTINS_FILTER (0) + +// Whether to support reversed function(type) +#define MICROPY_PY_BUILTINS_REVERSED (0) + +// Whether to set __file__ for imported modules +#define MICROPY_PY___FILE__ (0) + +// Whether to provide "array" module. Note that large chunk of the +// underlying code is shared with "bytearray" builtin type, so to +// get real savings, it should be disabled too. +#define MICROPY_PY_ARRAY (0) + +// Whether to support attrtuple type (MicroPython extension) +// It provides space-efficient tuples with attribute access +#define MICROPY_PY_ATTRTUPLE (0) + +// Whether to provide "collections" module +#define MICROPY_PY_COLLECTIONS (0) + +// Whether to provide special math functions: math.{erf,erfc,gamma,lgamma} #define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (1) -#define MICROPY_PY_CMATH (1) -#define MICROPY_PY_IO (0) -#define MICROPY_PY_STRUCT (0) -#define MICROPY_PY_SYS (0) -#define MICROPY_MODULE_FROZEN_MPY (0) -#define MICROPY_CPYTHON_COMPAT (0) -#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ) -#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE) -#define MICROPY_PY_URANDOM (1) + +// Whether to provide "cmath" module +#define MICROPY_PY_CMATH (1) + +// Whether to provide "gc" module +#define MICROPY_PY_GC (0) + +// Whether to provide "io" module +#define MICROPY_PY_IO (0) + +// Whether to provide "struct" module +#define MICROPY_PY_STRUCT (0) + +// Whether to provide "sys" module +#define MICROPY_PY_SYS (0) + +// Wether to provide the "urandom" module +#define MICROPY_PY_URANDOM (1) + +// Whether to include: randrange, randint, choice, random, uniform #define MICROPY_PY_URANDOM_EXTRA_FUNCS (1) +// Make a pointer to RAM callable (eg set lower bit for Thumb code) +// (This scheme won't work if we want to mix Thumb and normal ARM code.) +#define MICROPY_MAKE_POINTER_CALLABLE(p) (p) + #define MICROPY_VM_HOOK_LOOP micropython_port_should_interrupt(); -// type definitions for the specific machine - -#define MICROPY_MAKE_POINTER_CALLABLE(p) ((void*)((mp_uint_t)(p) | 1)) - -// This port is intended to be 32-bit, but unfortunately, int32_t for -// different targets may be defined in different ways - either as int -// or as long. This requires different printf formatting specifiers -// to print such value. So, we avoid int32_t and use int directly. -#define UINT_FMT "%u" -#define INT_FMT "%d" typedef intptr_t mp_int_t; // must be pointer size typedef uintptr_t mp_uint_t; // must be pointer size @@ -77,37 +114,14 @@ typedef long mp_off_t; #define SEEK_CUR 1 -#define MP_PLAT_PRINT_STRN(str, len) mp_hal_stdout_tx_strn_cooked(str, len) - // extra built in names to add to the global namespace #define MICROPY_PORT_BUILTINS \ { MP_OBJ_NEW_QSTR(MP_QSTR_open), (mp_obj_t)&mp_builtin_open_obj }, \ { MP_OBJ_NEW_QSTR(MP_QSTR_input), (mp_obj_t)&mp_builtin_input_obj }, -// We need to provide a declaration/definition of alloca() -#include - -#define MICROPY_HW_BOARD_NAME "minimal" -#define MICROPY_HW_MCU_NAME "unknown-cpu" - -#ifdef __linux__ -#define MICROPY_MIN_USE_STDOUT (1) -#endif - -#ifdef __thumb__ -#define MICROPY_MIN_USE_CORTEX_CPU (1) -#define MICROPY_MIN_USE_STM32_MCU (1) -#endif - #define MP_STATE_PORT MP_STATE_VM -#define MICROPY_PORT_ROOT_POINTERS \ - const char *readline_hist[8]; - - extern const struct _mp_obj_module_t kandinsky_module; #define MICROPY_PORT_BUILTIN_MODULES \ { MP_ROM_QSTR(MP_QSTR_kandinsky), MP_ROM_PTR(&kandinsky_module) } - -#define MICROPY_KBD_EXCEPTION (1) diff --git a/python/port/port.h b/python/port/port.h index 1cd120ddc..1b9be9878 100644 --- a/python/port/port.h +++ b/python/port/port.h @@ -34,10 +34,4 @@ void registerScriptProvider(ScriptProvider * s); }; -// Will implement : -// mp_lexer_new_from_file -> Ask the context about a file -// mp_import_stat -// mp_hal_stdout_tx_strn_cooked -> Tell the context Python printed text -// mp_hal_input - #endif diff --git a/python/port/portmodules.h b/python/port/portmodules.h deleted file mode 100644 index 014d2ddfa..000000000 --- a/python/port/portmodules.h +++ /dev/null @@ -1,2 +0,0 @@ -//#extern const mp_obj_module_t kandinsky_module; - diff --git a/python/port/qstrdefsport.h b/python/port/qstrdefsport.h deleted file mode 100644 index 3ba897069..000000000 --- a/python/port/qstrdefsport.h +++ /dev/null @@ -1 +0,0 @@ -// qstrs specific to this port