0c36da0b59
mp_module_obj_t can now be put in ROM. Configuration of float type is now similar to longint: can now choose none, float or double as the implementation. math module has basic math functions. For STM port, these are not yet implemented (they are just stub functions).
158 lines
4.6 KiB
C
158 lines
4.6 KiB
C
// This file contains default configuration settings for MicroPython.
|
|
// You can override any of these options using mpconfigport.h file located
|
|
// in a directory of your port.
|
|
|
|
#include <mpconfigport.h>
|
|
|
|
// Any options not explicitly set in mpconfigport.h will get default
|
|
// values below.
|
|
|
|
/*****************************************************************************/
|
|
/* Micro Python emitters */
|
|
|
|
// Whether to emit CPython byte codes (for debugging/testing)
|
|
// Enabling this overrides all other emitters
|
|
#ifndef MICROPY_EMIT_CPYTHON
|
|
#define MICROPY_EMIT_CPYTHON (0)
|
|
#endif
|
|
|
|
// Whether to emit x64 native code
|
|
#ifndef MICROPY_EMIT_X64
|
|
#define MICROPY_EMIT_X64 (0)
|
|
#endif
|
|
|
|
// Whether to emit thumb native code
|
|
#ifndef MICROPY_EMIT_THUMB
|
|
#define MICROPY_EMIT_THUMB (0)
|
|
#endif
|
|
|
|
// Whether to enable the thumb inline assembler
|
|
#ifndef MICROPY_EMIT_INLINE_THUMB
|
|
#define MICROPY_EMIT_INLINE_THUMB (0)
|
|
#endif
|
|
|
|
/*****************************************************************************/
|
|
/* Internal debugging stuff */
|
|
|
|
// Whether to collect memory allocation stats
|
|
#ifndef MICROPY_MEM_STATS
|
|
#define MICROPY_MEM_STATS (0)
|
|
#endif
|
|
|
|
// Whether to build functions that print debugging info:
|
|
// mp_token_show
|
|
// mp_byte_code_print
|
|
// mp_parse_node_print
|
|
#ifndef MICROPY_DEBUG_PRINTERS
|
|
#define MICROPY_DEBUG_PRINTERS (0)
|
|
#endif
|
|
|
|
/*****************************************************************************/
|
|
/* Fine control over Python features */
|
|
|
|
// Whether to include the garbage collector
|
|
#ifndef MICROPY_ENABLE_GC
|
|
#define MICROPY_ENABLE_GC (0)
|
|
#endif
|
|
|
|
// Whether to include REPL helper function
|
|
#ifndef MICROPY_ENABLE_REPL_HELPERS
|
|
#define MICROPY_ENABLE_REPL_HELPERS (0)
|
|
#endif
|
|
|
|
// Whether to include lexer helper function for unix
|
|
#ifndef MICROPY_ENABLE_LEXER_UNIX
|
|
#define MICROPY_ENABLE_LEXER_UNIX (0)
|
|
#endif
|
|
|
|
// Long int implementation
|
|
#define MICROPY_LONGINT_IMPL_NONE (0)
|
|
#define MICROPY_LONGINT_IMPL_LONGLONG (1)
|
|
#define MICROPY_LONGINT_IMPL_MPZ (2)
|
|
|
|
#ifndef MICROPY_LONGINT_IMPL
|
|
#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_NONE)
|
|
#endif
|
|
|
|
#if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_LONGLONG
|
|
typedef long long mp_longint_impl_t;
|
|
#endif
|
|
|
|
// Whether to include information in the byte code to determine source
|
|
// line number (increases RAM usage, but doesn't slow byte code execution)
|
|
#ifndef MICROPY_ENABLE_SOURCE_LINE
|
|
#define MICROPY_ENABLE_SOURCE_LINE (0)
|
|
#endif
|
|
|
|
// Float and complex implementation
|
|
#define MICROPY_FLOAT_IMPL_NONE (0)
|
|
#define MICROPY_FLOAT_IMPL_FLOAT (1)
|
|
#define MICROPY_FLOAT_IMPL_DOUBLE (2)
|
|
|
|
#ifndef MICROPY_FLOAT_IMPL
|
|
#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_NONE)
|
|
#endif
|
|
|
|
#if MICROPY_FLOAT_IMPL == MICROPY_FLOAT_IMPL_FLOAT
|
|
#define MICROPY_ENABLE_FLOAT (1)
|
|
#define MICROPY_FLOAT_C_FUN(fun) fun##f
|
|
typedef float mp_float_t;
|
|
#elif MICROPY_FLOAT_IMPL == MICROPY_FLOAT_IMPL_DOUBLE
|
|
#define MICROPY_ENABLE_FLOAT (1)
|
|
#define MICROPY_FLOAT_C_FUN(fun) fun
|
|
typedef double mp_float_t;
|
|
#else
|
|
#define MICROPY_ENABLE_FLOAT (0)
|
|
#endif
|
|
|
|
// Whether to support slice object and correspondingly
|
|
// slice subscript operators
|
|
#ifndef MICROPY_ENABLE_SLICE
|
|
#define MICROPY_ENABLE_SLICE (1)
|
|
#endif
|
|
|
|
// 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
|
|
#ifndef MICROPY_CPYTHON_COMPAT
|
|
#define MICROPY_CPYTHON_COMPAT (1)
|
|
#endif
|
|
|
|
// Maximum length of a path in the filesystem
|
|
// So we can allocate a buffer on the stack for path manipulation in import
|
|
#ifndef MICROPY_PATH_MAX
|
|
#define MICROPY_PATH_MAX (512)
|
|
#endif
|
|
|
|
// Additional builtin function definitions - see runtime.c:builtin_table for format.
|
|
#ifndef MICROPY_EXTRA_BUILTINS
|
|
#define MICROPY_EXTRA_BUILTINS
|
|
#endif
|
|
/*****************************************************************************/
|
|
/* Miscellaneous settings */
|
|
|
|
// Allow to override static modifier for global objects, e.g. to use with
|
|
// object code analysis tools which don't support static symbols.
|
|
#ifndef STATIC
|
|
#define STATIC static
|
|
#endif
|
|
|
|
#define BITS_PER_BYTE (8)
|
|
#define BITS_PER_WORD (BITS_PER_BYTE * BYTES_PER_WORD)
|
|
// machine_int_t value with most significant bit set
|
|
#define WORD_MSBIT_HIGH (((machine_uint_t)1) << (BYTES_PER_WORD * 8 - 1))
|
|
|
|
// printf format spec to use for machine_int_t and friends
|
|
#ifndef INT_FMT
|
|
#ifdef __LP64__
|
|
// Archs where machine_int_t == long, long != int
|
|
#define UINT_FMT "%lu"
|
|
#define INT_FMT "%ld"
|
|
#else
|
|
// Archs where machine_int_t == int
|
|
#define UINT_FMT "%u"
|
|
#define INT_FMT "%d"
|
|
#endif
|
|
#endif //INT_FMT
|