1 /*
2  * This file is part of the MicroPython project, http://micropython.org/
3  *
4  * The MIT License (MIT)
5  *
6  * Copyright (c) 2015 Damien P. George
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining a copy
9  * of this software and associated documentation files (the "Software"), to deal
10  * in the Software without restriction, including without limitation the rights
11  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12  * copies of the Software, and to permit persons to whom the Software is
13  * furnished to do so, subject to the following conditions:
14  *
15  * The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24  * THE SOFTWARE.
25  */
26 
27 // options to control how MicroPython is built
28 
29 // Prevent the rest of the default mpconfigport.h being used.
30 #define MICROPY_UNIX_MINIMAL (1)
31 
32 #define MICROPY_ALLOC_QSTR_CHUNK_INIT (64)
33 #define MICROPY_ALLOC_PARSE_RULE_INIT (8)
34 #define MICROPY_ALLOC_PARSE_RULE_INC  (8)
35 #define MICROPY_ALLOC_PARSE_RESULT_INIT (8)
36 #define MICROPY_ALLOC_PARSE_RESULT_INC (8)
37 #define MICROPY_ALLOC_PARSE_CHUNK_INIT (64)
38 #define MICROPY_ALLOC_PATH_MAX      (PATH_MAX)
39 #define MICROPY_ENABLE_GC           (1)
40 #define MICROPY_GC_ALLOC_THRESHOLD  (0)
41 #define MICROPY_ENABLE_FINALISER    (0)
42 #define MICROPY_STACK_CHECK         (0)
43 #define MICROPY_COMP_CONST          (0)
44 #define MICROPY_MEM_STATS           (0)
45 #define MICROPY_DEBUG_PRINTERS      (0)
46 #define MICROPY_READER_POSIX        (1)
47 #define MICROPY_HELPER_REPL         (1)
48 #define MICROPY_HELPER_LEXER_UNIX   (1)
49 #define MICROPY_ENABLE_SOURCE_LINE  (0)
50 #define MICROPY_ERROR_REPORTING     (MICROPY_ERROR_REPORTING_TERSE)
51 #define MICROPY_WARNINGS            (0)
52 #define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF   (0)
53 #define MICROPY_KBD_EXCEPTION       (1)
54 #define MICROPY_FLOAT_IMPL          (MICROPY_FLOAT_IMPL_NONE)
55 #define MICROPY_LONGINT_IMPL        (MICROPY_LONGINT_IMPL_NONE)
56 #define MICROPY_STREAMS_NON_BLOCK   (0)
57 #define MICROPY_OPT_COMPUTED_GOTO   (0)
58 #define MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE (0)
59 #define MICROPY_CAN_OVERRIDE_BUILTINS (0)
60 #define MICROPY_BUILTIN_METHOD_CHECK_SELF_ARG (0)
61 #define MICROPY_CPYTHON_COMPAT      (0)
62 #define MICROPY_PY_BUILTINS_BYTEARRAY (0)
63 #define MICROPY_PY_BUILTINS_MEMORYVIEW (0)
64 #define MICROPY_PY_BUILTINS_COMPILE (0)
65 #define MICROPY_PY_BUILTINS_ENUMERATE (0)
66 #define MICROPY_PY_BUILTINS_FILTER  (0)
67 #define MICROPY_PY_BUILTINS_FROZENSET (0)
68 #define MICROPY_PY_BUILTINS_REVERSED (0)
69 #define MICROPY_PY_BUILTINS_SET     (0)
70 #define MICROPY_PY_BUILTINS_SLICE   (0)
71 #define MICROPY_PY_BUILTINS_STR_COUNT (0)
72 #define MICROPY_PY_BUILTINS_STR_OP_MODULO (0)
73 #define MICROPY_PY_BUILTINS_STR_UNICODE (0)
74 #define MICROPY_PY_BUILTINS_PROPERTY (0)
75 #define MICROPY_PY_BUILTINS_MIN_MAX (0)
76 #define MICROPY_PY___FILE__         (0)
77 #define MICROPY_PY_MICROPYTHON_MEM_INFO (0)
78 #define MICROPY_PY_GC               (0)
79 #define MICROPY_PY_GC_COLLECT_RETVAL (0)
80 #define MICROPY_PY_ARRAY            (0)
81 #define MICROPY_PY_COLLECTIONS      (0)
82 #define MICROPY_PY_MATH             (0)
83 #define MICROPY_PY_CMATH            (0)
84 #define MICROPY_PY_IO               (0)
85 #define MICROPY_PY_IO_FILEIO        (0)
86 #define MICROPY_PY_STRUCT           (0)
87 #define MICROPY_PY_SYS              (1)
88 #define MICROPY_PY_SYS_EXIT         (0)
89 #define MICROPY_PY_SYS_PLATFORM     "linux"
90 #define MICROPY_PY_SYS_MAXSIZE      (0)
91 #define MICROPY_PY_SYS_STDFILES     (0)
92 #define MICROPY_PY_CMATH            (0)
93 #define MICROPY_PY_UCTYPES          (0)
94 #define MICROPY_PY_UTIME            (0)
95 #define MICROPY_PY_UZLIB            (0)
96 #define MICROPY_PY_UJSON            (0)
97 #define MICROPY_PY_URE              (0)
98 #define MICROPY_PY_UHEAPQ           (0)
99 #define MICROPY_PY_UHASHLIB         (0)
100 #define MICROPY_PY_UBINASCII        (0)
101 
102 extern const struct _mp_obj_module_t mp_module_os;
103 
104 #define MICROPY_PORT_BUILTIN_MODULES \
105     { MP_ROM_QSTR(MP_QSTR_uos), MP_ROM_PTR(&mp_module_os) }, \
106 
107 #define MICROPY_PORT_ROOT_POINTERS \
108 
109 //////////////////////////////////////////
110 // Do not change anything beyond this line
111 //////////////////////////////////////////
112 
113 #if !(defined(MICROPY_GCREGS_SETJMP) || defined(__x86_64__) || defined(__i386__) || defined(__thumb2__) || defined(__thumb__) || defined(__arm__))
114 // Fall back to setjmp() implementation for discovery of GC pointers in registers.
115 #define MICROPY_GCREGS_SETJMP (1)
116 #endif
117 
118 // type definitions for the specific machine
119 
120 #ifdef __LP64__
121 typedef long mp_int_t; // must be pointer size
122 typedef unsigned long mp_uint_t; // must be pointer size
123 #else
124 // These are definitions for machines where sizeof(int) == sizeof(void*),
125 // regardless for actual size.
126 typedef int mp_int_t; // must be pointer size
127 typedef unsigned int mp_uint_t; // must be pointer size
128 #endif
129 
130 // Cannot include <sys/types.h>, as it may lead to symbol name clashes
131 #if _FILE_OFFSET_BITS == 64 && !defined(__LP64__)
132 typedef long long mp_off_t;
133 #else
134 typedef long mp_off_t;
135 #endif
136 
137 // We need to provide a declaration/definition of alloca()
138 #ifdef __FreeBSD__
139 #include <stdlib.h>
140 #else
141 #include <alloca.h>
142 #endif
143