regularize how module weak links and alternate names are listed

This commit is contained in:
Dan Halbert 2019-02-18 00:45:43 -05:00
parent 97aeb1953b
commit c1144a288f
2 changed files with 36 additions and 19 deletions

View File

@ -191,19 +191,6 @@ typedef long mp_off_t;
#define MICROPY_PY_URE_MATCH_SPAN_START_END (CIRCUITPY_FULL_BUILD)
#define MICROPY_PY_URE_SUB (CIRCUITPY_FULL_BUILD)
#define MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS \
{ MP_ROM_QSTR(MP_QSTR_os), MP_ROM_PTR(&os_module) }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_time), (mp_obj_t)&time_module }, \
#if MICROPY_MODULE_WEAK_LINKS
#define MICROPY_PORT_BUILTIN_MODULE_WEAK_LINK_ALTERNATES \
{ MP_ROM_QSTR(MP_QSTR__os), MP_ROM_PTR(&os_module) }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR__time), (mp_obj_t)&time_module },
#else
#define MICROPY_PORT_BUILTIN_MODULE_WEAK_LINK_ALTERNATES
#endif
// LONGINT_IMPL_xxx are defined in the Makefile.
//
#ifdef LONGINT_IMPL_NONE
@ -353,8 +340,10 @@ extern const struct _mp_obj_module_t nvm_module;
#if CIRCUITPY_OS
extern const struct _mp_obj_module_t os_module;
#define OS_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_os), (mp_obj_t)&os_module },
#define OS_MODULE_ALT_NAME { MP_OBJ_NEW_QSTR(MP_QSTR__os), (mp_obj_t)&os_module },
#else
#define OS_MODULE
#define OS_MODULE_ALT_NAME
#endif
#if CIRCUITPY_PIXELBUF
@ -430,8 +419,10 @@ extern const struct _mp_obj_module_t supervisor_module;
#if CIRCUITPY_TIME
extern const struct _mp_obj_module_t time_module;
#define TIME_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_time), (mp_obj_t)&time_module },
#define TIME_MODULE_ALT_NAME { MP_OBJ_NEW_QSTR(MP_QSTR__time), (mp_obj_t)&time_module },
#else
#define TIME_MODULE
#define TIME_MODULE_ALT_NAME
#endif
#if CIRCUITPY_TOUCHIO
@ -475,12 +466,25 @@ extern const struct _mp_obj_module_t ustack_module;
#define JSON_MODULE
#endif
// Define certain native modules with weak links so they can be replaced with Python
// implementations. This list may grow over time.
#define MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS \
OS_MODULE \
TIME_MODULE \
// Native modules that are weak links can be accessed directly
// by prepending their name with an underscore. This list should correspond to
// MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS, assuming you want the native modules
// to be accessible when overriden.
#define MICROPY_PORT_BUILTIN_MODULE_ALT_NAMES \
OS_MODULE_ALT_NAME \
TIME_MODULE_ALT_NAME \
// This is an inclusive list that should correspond to the CIRCUITPY_XXX list above,
// including dependendencies such as TERMINALIO depending on DISPLAYIO (shown by indentation).
// including dependencies such as TERMINALIO depending on DISPLAYIO (shown by indentation).
// Some of these definitions will be blank depending on what is turned on and off.
//
#define MICROPY_PORT_BUILTIN_MODULES \
// Some are omitted because they're in MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS above.
#define MICROPY_PORT_BUILTIN_MODULES_STRONG_LINKS \
ANALOGIO_MODULE \
AUDIOBUSIO_MODULE \
AUDIOIO_MODULE \
@ -500,7 +504,6 @@ extern const struct _mp_obj_module_t ustack_module;
NETWORK_MODULE \
SOCKET_MODULE \
WIZNET_MODULE \
OS_MODULE \
PIXELBUF_MODULE \
PULSEIO_MODULE \
RANDOM_MODULE \
@ -510,13 +513,24 @@ extern const struct _mp_obj_module_t ustack_module;
STORAGE_MODULE \
STRUCT_MODULE \
SUPERVISOR_MODULE \
TIME_MODULE \
TOUCHIO_MODULE \
UHEAP_MODULE \
USB_HID_MODULE \
USB_MIDI_MODULE \
USTACK_MODULE \
MICROPY_PORT_BUILTIN_MODULE_WEAK_LINK_ALTERNATES
// If weak links are enabled, just include strong links in the main list of modules,
// and also include the underscore alternate names.
#if MICROPY_MODULE_WEAK_LINKS
#define MICROPY_PORT_BUILTIN_MODULES \
MICROPY_PORT_BUILTIN_MODULES_STRONG_LINKS \
MICROPY_PORT_BUILTIN_MODULE_ALT_NAMES
#else
// If weak links are disabled, included both strong and potentially weak lines
#define MICROPY_PORT_BUILTIN_MODULES \
MICROPY_PORT_BUILTIN_MODULES_STRONG_LINKS \
MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS
#endif
// We need to provide a declaration/definition of alloca()
#include <alloca.h>

View File

@ -148,6 +148,7 @@ STATIC const mp_rom_map_elem_t mp_builtin_module_table[] = {
{ MP_ROM_QSTR(MP_QSTR_array), MP_ROM_PTR(&mp_module_array) },
#endif
#if MICROPY_PY_IO
{ MP_ROM_QSTR(MP_QSTR_io), MP_ROM_PTR(&mp_module_io) },
{ MP_ROM_QSTR(MP_QSTR_uio), MP_ROM_PTR(&mp_module_io) },
#endif
#if MICROPY_PY_COLLECTIONS
@ -178,6 +179,7 @@ STATIC const mp_rom_map_elem_t mp_builtin_module_table[] = {
// extmod modules
#if MICROPY_PY_UERRNO
{ MP_ROM_QSTR(MP_QSTR_errno), MP_ROM_PTR(&mp_module_uerrno) },
{ MP_ROM_QSTR(MP_QSTR_uerrno), MP_ROM_PTR(&mp_module_uerrno) },
#endif
#if MICROPY_PY_UCTYPES
@ -190,6 +192,7 @@ STATIC const mp_rom_map_elem_t mp_builtin_module_table[] = {
{ MP_ROM_QSTR(MP_QSTR_ujson), MP_ROM_PTR(&mp_module_ujson) },
#endif
#if MICROPY_PY_URE
{ MP_ROM_QSTR(MP_QSTR_re), MP_ROM_PTR(&mp_module_ure) },
{ MP_ROM_QSTR(MP_QSTR_ure), MP_ROM_PTR(&mp_module_ure) },
#endif
#if MICROPY_PY_UHEAPQ