1# CMake fragment for MicroPython core py component
2
3set(MICROPY_PY_DIR "${MICROPY_DIR}/py")
4
5list(APPEND MICROPY_INC_CORE "${MICROPY_DIR}")
6
7# All py/ source files
8set(MICROPY_SOURCE_PY
9    ${MICROPY_PY_DIR}/argcheck.c
10    ${MICROPY_PY_DIR}/asmarm.c
11    ${MICROPY_PY_DIR}/asmbase.c
12    ${MICROPY_PY_DIR}/asmthumb.c
13    ${MICROPY_PY_DIR}/asmx64.c
14    ${MICROPY_PY_DIR}/asmx86.c
15    ${MICROPY_PY_DIR}/asmxtensa.c
16    ${MICROPY_PY_DIR}/bc.c
17    ${MICROPY_PY_DIR}/binary.c
18    ${MICROPY_PY_DIR}/builtinevex.c
19    ${MICROPY_PY_DIR}/builtinhelp.c
20    ${MICROPY_PY_DIR}/builtinimport.c
21    ${MICROPY_PY_DIR}/compile.c
22    ${MICROPY_PY_DIR}/emitbc.c
23    ${MICROPY_PY_DIR}/emitcommon.c
24    ${MICROPY_PY_DIR}/emitglue.c
25    ${MICROPY_PY_DIR}/emitinlinethumb.c
26    ${MICROPY_PY_DIR}/emitinlinextensa.c
27    ${MICROPY_PY_DIR}/emitnarm.c
28    ${MICROPY_PY_DIR}/emitnthumb.c
29    ${MICROPY_PY_DIR}/emitnx64.c
30    ${MICROPY_PY_DIR}/emitnx86.c
31    ${MICROPY_PY_DIR}/emitnxtensa.c
32    ${MICROPY_PY_DIR}/emitnxtensawin.c
33    ${MICROPY_PY_DIR}/formatfloat.c
34    ${MICROPY_PY_DIR}/frozenmod.c
35    ${MICROPY_PY_DIR}/gc.c
36    ${MICROPY_PY_DIR}/lexer.c
37    ${MICROPY_PY_DIR}/malloc.c
38    ${MICROPY_PY_DIR}/map.c
39    ${MICROPY_PY_DIR}/modarray.c
40    ${MICROPY_PY_DIR}/modbuiltins.c
41    ${MICROPY_PY_DIR}/modcmath.c
42    ${MICROPY_PY_DIR}/modcollections.c
43    ${MICROPY_PY_DIR}/modgc.c
44    ${MICROPY_PY_DIR}/modio.c
45    ${MICROPY_PY_DIR}/modmath.c
46    ${MICROPY_PY_DIR}/modmicropython.c
47    ${MICROPY_PY_DIR}/modstruct.c
48    ${MICROPY_PY_DIR}/modsys.c
49    ${MICROPY_PY_DIR}/modthread.c
50    ${MICROPY_PY_DIR}/moduerrno.c
51    ${MICROPY_PY_DIR}/mpprint.c
52    ${MICROPY_PY_DIR}/mpstate.c
53    ${MICROPY_PY_DIR}/mpz.c
54    ${MICROPY_PY_DIR}/nativeglue.c
55    ${MICROPY_PY_DIR}/nlr.c
56    ${MICROPY_PY_DIR}/nlrpowerpc.c
57    ${MICROPY_PY_DIR}/nlrsetjmp.c
58    ${MICROPY_PY_DIR}/nlrthumb.c
59    ${MICROPY_PY_DIR}/nlrx64.c
60    ${MICROPY_PY_DIR}/nlrx86.c
61    ${MICROPY_PY_DIR}/nlrxtensa.c
62    ${MICROPY_PY_DIR}/obj.c
63    ${MICROPY_PY_DIR}/objarray.c
64    ${MICROPY_PY_DIR}/objattrtuple.c
65    ${MICROPY_PY_DIR}/objbool.c
66    ${MICROPY_PY_DIR}/objboundmeth.c
67    ${MICROPY_PY_DIR}/objcell.c
68    ${MICROPY_PY_DIR}/objclosure.c
69    ${MICROPY_PY_DIR}/objcomplex.c
70    ${MICROPY_PY_DIR}/objdeque.c
71    ${MICROPY_PY_DIR}/objdict.c
72    ${MICROPY_PY_DIR}/objenumerate.c
73    ${MICROPY_PY_DIR}/objexcept.c
74    ${MICROPY_PY_DIR}/objfilter.c
75    ${MICROPY_PY_DIR}/objfloat.c
76    ${MICROPY_PY_DIR}/objfun.c
77    ${MICROPY_PY_DIR}/objgenerator.c
78    ${MICROPY_PY_DIR}/objgetitemiter.c
79    ${MICROPY_PY_DIR}/objint.c
80    ${MICROPY_PY_DIR}/objint_longlong.c
81    ${MICROPY_PY_DIR}/objint_mpz.c
82    ${MICROPY_PY_DIR}/objlist.c
83    ${MICROPY_PY_DIR}/objmap.c
84    ${MICROPY_PY_DIR}/objmodule.c
85    ${MICROPY_PY_DIR}/objnamedtuple.c
86    ${MICROPY_PY_DIR}/objnone.c
87    ${MICROPY_PY_DIR}/objobject.c
88    ${MICROPY_PY_DIR}/objpolyiter.c
89    ${MICROPY_PY_DIR}/objproperty.c
90    ${MICROPY_PY_DIR}/objrange.c
91    ${MICROPY_PY_DIR}/objreversed.c
92    ${MICROPY_PY_DIR}/objset.c
93    ${MICROPY_PY_DIR}/objsingleton.c
94    ${MICROPY_PY_DIR}/objslice.c
95    ${MICROPY_PY_DIR}/objstr.c
96    ${MICROPY_PY_DIR}/objstringio.c
97    ${MICROPY_PY_DIR}/objstrunicode.c
98    ${MICROPY_PY_DIR}/objtuple.c
99    ${MICROPY_PY_DIR}/objtype.c
100    ${MICROPY_PY_DIR}/objzip.c
101    ${MICROPY_PY_DIR}/opmethods.c
102    ${MICROPY_PY_DIR}/pairheap.c
103    ${MICROPY_PY_DIR}/parse.c
104    ${MICROPY_PY_DIR}/parsenum.c
105    ${MICROPY_PY_DIR}/parsenumbase.c
106    ${MICROPY_PY_DIR}/persistentcode.c
107    ${MICROPY_PY_DIR}/profile.c
108    ${MICROPY_PY_DIR}/pystack.c
109    ${MICROPY_PY_DIR}/qstr.c
110    ${MICROPY_PY_DIR}/reader.c
111    ${MICROPY_PY_DIR}/repl.c
112    ${MICROPY_PY_DIR}/ringbuf.c
113    ${MICROPY_PY_DIR}/runtime.c
114    ${MICROPY_PY_DIR}/runtime_utils.c
115    ${MICROPY_PY_DIR}/scheduler.c
116    ${MICROPY_PY_DIR}/scope.c
117    ${MICROPY_PY_DIR}/sequence.c
118    ${MICROPY_PY_DIR}/showbc.c
119    ${MICROPY_PY_DIR}/smallint.c
120    ${MICROPY_PY_DIR}/stackctrl.c
121    ${MICROPY_PY_DIR}/stream.c
122    ${MICROPY_PY_DIR}/unicode.c
123    ${MICROPY_PY_DIR}/vm.c
124    ${MICROPY_PY_DIR}/vstr.c
125    ${MICROPY_PY_DIR}/warning.c
126)
127
128# Helper macro to collect include directories and compile definitions for qstr processing.
129macro(micropy_gather_target_properties targ)
130    if(TARGET ${targ})
131        get_target_property(type ${targ} TYPE)
132        set(_inc OFF)
133        set(_def OFF)
134        if(${type} STREQUAL STATIC_LIBRARY)
135            get_target_property(_inc ${targ} INCLUDE_DIRECTORIES)
136            get_target_property(_def ${targ} COMPILE_DEFINITIONS)
137        elseif(${type} STREQUAL INTERFACE_LIBRARY)
138            get_target_property(_inc ${targ} INTERFACE_INCLUDE_DIRECTORIES)
139            get_target_property(_def ${targ} INTERFACE_COMPILE_DEFINITIONS)
140        endif()
141        if(_inc)
142            list(APPEND MICROPY_CPP_INC_EXTRA ${_inc})
143        endif()
144        if(_def)
145            list(APPEND MICROPY_CPP_DEF_EXTRA ${_def})
146        endif()
147    endif()
148endmacro()
149