2525 */
2626
2727// options to control how Micro Python is built
28+ #define MICROPY_PY_IO_BUFFEREDWRITER (1)
2829
2930#define MICROPY_ALLOC_QSTR_CHUNK_INIT (64)
3031#define MICROPY_ALLOC_PARSE_RULE_INIT (8)
4041#define MICROPY_MEM_STATS (0)
4142#define MICROPY_DEBUG_PRINTERS (0)
4243#define MICROPY_HELPER_REPL (1)
44+ #define MICROPY_REPL_EMACS_KEYS (1)
45+ #define MICROPY_REPL_AUTO_INDENT (1)
4346#define MICROPY_HELPER_LEXER_UNIX (1)
4447#define MICROPY_ENABLE_SOURCE_LINE (0)
4548#define MICROPY_ERROR_REPORTING (MICROPY_ERROR_REPORTING_TERSE)
6467#define MICROPY_PY_BUILTINS_STR_UNICODE (0)
6568#define MICROPY_PY_BUILTINS_PROPERTY (0)
6669#define MICROPY_PY_BUILTINS_MIN_MAX (0)
67- #define MICROPY_PY___FILE__ (0 )
70+ #define MICROPY_PY___FILE__ (1 )
6871#define MICROPY_PY_MICROPYTHON_MEM_INFO (0)
6972#define MICROPY_READER_POSIX (1)
7073#define MICROPY_PY_GC (0)
7174#define MICROPY_PY_GC_COLLECT_RETVAL (0)
7275#define MICROPY_PY_ARRAY (0)
73- #define MICROPY_PY_COLLECTIONS (0 )
76+ #define MICROPY_PY_COLLECTIONS (1 )
7477#define MICROPY_PY_MATH (0)
7578#define MICROPY_PY_CMATH (0)
7679#define MICROPY_PY_IO (1)
7982#define MICROPY_PY_SYS (1)
8083#define MICROPY_PY_SYS_EXIT (1)
8184#define MICROPY_PY_SYS_PLATFORM "frosted"
82- #define MICROPY_PY_SYS_MAXSIZE (0 )
83- #define MICROPY_PY_SYS_STDFILES (0 )
85+ #define MICROPY_PY_SYS_MAXSIZE (1 )
86+ #define MICROPY_PY_SYS_STDFILES (1 )
8487#define MICROPY_PY_CMATH (0)
8588#define MICROPY_PY_UTIME (1)
8689#define MICROPY_PY_UERRNO (1)
9194#define MICROPY_PY_UHEAPQ (0)
9295#define MICROPY_PY_UHASHLIB (0)
9396#define MICROPY_PY_UBINASCII (0)
97+ #define MICROPY_PY_MACHINE (0)
98+ #define MICROPY_PY_MACHINE_PULSE (0)
9499
95100
96101#define MICROPY_PORT_ROOT_POINTERS \
111116#endif
112117
113118extern const struct _mp_obj_module_t mp_module_os ;
119+ extern const struct _mp_obj_module_t mp_module_uos_vfs ;
114120extern const struct _mp_obj_module_t mp_module_uselect ;
115121extern const struct _mp_obj_module_t mp_module_time ;
116122extern const struct _mp_obj_module_t mp_module_termios ;
117123extern const struct _mp_obj_module_t mp_module_socket ;
118124extern const struct _mp_obj_module_t mp_module_ffi ;
119125extern const struct _mp_obj_module_t mp_module_jni ;
120126
127+ #if MICROPY_PY_UOS_VFS
128+ #define MICROPY_PY_UOS_VFS_DEF { MP_ROM_QSTR(MP_QSTR_uos_vfs), MP_ROM_PTR(&mp_module_uos_vfs) },
129+ #else
130+ #define MICROPY_PY_UOS_VFS_DEF
131+ #endif
121132#if MICROPY_PY_FFI
122133#define MICROPY_PY_FFI_DEF { MP_ROM_QSTR(MP_QSTR_ffi), MP_ROM_PTR(&mp_module_ffi) },
123134#else
@@ -155,20 +166,24 @@ extern const struct _mp_obj_module_t mp_module_jni;
155166 MICROPY_PY_UTIME_DEF \
156167 MICROPY_PY_SOCKET_DEF \
157168 { MP_ROM_QSTR(MP_QSTR_uos), MP_ROM_PTR(&mp_module_os) }, \
169+ MICROPY_PY_UOS_VFS_DEF \
158170 MICROPY_PY_USELECT_DEF \
159171 MICROPY_PY_TERMIOS_DEF \
160172
161173// type definitions for the specific machine
162174
175+ // assume that if we already defined the obj repr then we also defined types
176+ #ifndef MICROPY_OBJ_REPR
163177#ifdef __LP64__
164178typedef long mp_int_t ; // must be pointer size
165179typedef unsigned long mp_uint_t ; // must be pointer size
166180#else
167181// These are definitions for machines where sizeof(int) == sizeof(void*),
168- // regardless for actual size.
182+ // regardless of actual size.
169183typedef int mp_int_t ; // must be pointer size
170184typedef unsigned int mp_uint_t ; // must be pointer size
171185#endif
186+ #endif
172187
173188#define BYTES_PER_WORD sizeof(mp_int_t)
174189
@@ -179,6 +194,33 @@ typedef long long mp_off_t;
179194typedef long mp_off_t ;
180195#endif
181196
197+ void mp_unix_alloc_exec (mp_uint_t min_size , void * * ptr , mp_uint_t * size );
198+ void mp_unix_free_exec (void * ptr , mp_uint_t size );
199+ void mp_unix_mark_exec (void );
200+ #define MP_PLAT_ALLOC_EXEC (min_size , ptr , size ) mp_unix_alloc_exec(min_size, ptr, size)
201+ #define MP_PLAT_FREE_EXEC (ptr , size ) mp_unix_free_exec(ptr, size)
202+ #ifndef MICROPY_FORCE_PLAT_ALLOC_EXEC
203+ // Use MP_PLAT_ALLOC_EXEC for any executable memory allocation, including for FFI
204+ // (overriding libffi own implementation)
205+ #define MICROPY_FORCE_PLAT_ALLOC_EXEC (1)
206+ #endif
207+
208+ #if MICROPY_PY_OS_DUPTERM
209+ #define MP_PLAT_PRINT_STRN (str , len ) mp_hal_stdout_tx_strn_cooked(str, len)
210+ #else
211+ #include <unistd.h>
212+ #define MP_PLAT_PRINT_STRN (str , len ) do { ssize_t ret = write(1, str, len); (void)ret; } while (0)
213+ #endif
214+
215+
216+
217+
218+ #define MICROPY_PORT_BUILTINS \
219+ { MP_ROM_QSTR(MP_QSTR_input), MP_ROM_PTR(&mp_builtin_input_obj) }, \
220+ { MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mp_builtin_open_obj) },
221+
222+ #define MP_STATE_PORT MP_STATE_VM
223+
182224// We need to provide a declaration/definition of alloca()
183225#ifdef __FreeBSD__
184226#include <stdlib.h>
0 commit comments