11# This makefile fragment adds the source code files for the core extmod modules
22# and provides rules to build 3rd-party components for extmod modules.
33
4- PY_EXTMOD_O_BASENAME = \
5- extmod/moduasyncio.o \
6- extmod/moductypes.o \
7- extmod/modujson.o \
8- extmod/moduos.o \
9- extmod/modure.o \
10- extmod/moduzlib.o \
11- extmod/moduheapq.o \
12- extmod/modutimeq.o \
13- extmod/moduhashlib.o \
14- extmod/moducryptolib.o \
15- extmod/modubinascii.o \
16- extmod/virtpin.o \
17- extmod/machine_bitstream.o \
18- extmod/machine_mem.o \
19- extmod/machine_pinbase.o \
20- extmod/machine_signal.o \
21- extmod/machine_pulse.o \
22- extmod/machine_pwm.o \
23- extmod/machine_i2c.o \
24- extmod/machine_spi.o \
25- extmod/modbluetooth.o \
26- extmod/modlwip.o \
27- extmod/modussl_axtls.o \
28- extmod/modussl_mbedtls.o \
29- extmod/moduplatform.o\
30- extmod/modurandom.o \
31- extmod/moduselect.o \
32- extmod/moduwebsocket.o \
33- extmod/modwebrepl.o \
34- extmod/modframebuf.o \
35- extmod/vfs.o \
36- extmod/vfs_blockdev.o \
37- extmod/vfs_reader.o \
38- extmod/vfs_posix.o \
39- extmod/vfs_posix_file.o \
40- extmod/vfs_fat.o \
41- extmod/vfs_fat_diskio.o \
42- extmod/vfs_fat_file.o \
43- extmod/vfs_lfs.o \
44- extmod/utime_mphal.o \
45- extmod/uos_dupterm.o \
46- shared/libc/abort_.o \
47- shared/libc/printf.o \
4+ SRC_EXTMOD_C += \
5+ extmod/machine_bitstream.c \
6+ extmod/machine_i2c.c \
7+ extmod/machine_mem.c \
8+ extmod/machine_pinbase.c \
9+ extmod/machine_pulse.c \
10+ extmod/machine_pwm.c \
11+ extmod/machine_signal.c \
12+ extmod/machine_spi.c \
13+ extmod/modbluetooth.c \
14+ extmod/modbtree.c \
15+ extmod/modframebuf.c \
16+ extmod/modlwip.c \
17+ extmod/modnetwork.c \
18+ extmod/modonewire.c \
19+ extmod/moduasyncio.c \
20+ extmod/modubinascii.c \
21+ extmod/moducryptolib.c \
22+ extmod/moductypes.c \
23+ extmod/moduhashlib.c \
24+ extmod/moduheapq.c \
25+ extmod/modujson.c \
26+ extmod/moduos.c \
27+ extmod/moduplatform.c\
28+ extmod/modurandom.c \
29+ extmod/modure.c \
30+ extmod/moduselect.c \
31+ extmod/modusocket.c \
32+ extmod/modussl_axtls.c \
33+ extmod/modussl_mbedtls.c \
34+ extmod/modutimeq.c \
35+ extmod/moduwebsocket.c \
36+ extmod/moduzlib.c \
37+ extmod/modwebrepl.c \
38+ extmod/network_cyw43.c \
39+ extmod/network_ninaw10.c \
40+ extmod/network_wiznet5k.c \
41+ extmod/uos_dupterm.c \
42+ extmod/utime_mphal.c \
43+ extmod/vfs.c \
44+ extmod/vfs_blockdev.c \
45+ extmod/vfs_fat.c \
46+ extmod/vfs_fat_diskio.c \
47+ extmod/vfs_fat_file.c \
48+ extmod/vfs_lfs.c \
49+ extmod/vfs_posix.c \
50+ extmod/vfs_posix_file.c \
51+ extmod/vfs_reader.c \
52+ extmod/virtpin.c \
53+ shared/libc/abort_.c \
54+ shared/libc/printf.c \
4855
49- PY_EXTMOD_O = $( addprefix $( BUILD ) /, $( PY_EXTMOD_O_BASENAME ) )
56+ SRC_THIRDPARTY_C += \
5057
51- PY_O += $(PY_EXTMOD_O )
52- SRC_QSTR += $(PY_EXTMOD_O_BASENAME:.o=.c )
58+ PY_O += $(addprefix $(BUILD ) /, $(SRC_EXTMOD_C:.c=.o ) )
59+ PY_O += $(addprefix $(BUILD ) /, $(SRC_THIRDPARTY_C:.c=.o ) )
60+ SRC_QSTR += $(SRC_EXTMOD_C )
61+
62+ CFLAGS += $(CFLAGS_EXTMOD ) $(CFLAGS_THIRDPARTY )
63+ LDFLAGS += $(LDFLAGS_EXTMOD ) $(LDFLAGS_THIRDPARTY )
5364
5465# ###############################################################################
5566# VFS FAT FS
5667
5768OOFATFS_DIR = lib/oofatfs
5869
5970# this sets the config file for FatFs
60- CFLAGS_MOD += -DFFCONF_H=\"$(OOFATFS_DIR ) /ffconf.h\"
71+ CFLAGS_THIRDPARTY += -DFFCONF_H=\"$(OOFATFS_DIR ) /ffconf.h\"
6172
6273ifeq ($(MICROPY_VFS_FAT ) ,1)
63- CFLAGS_MOD += -DMICROPY_VFS_FAT=1
64- SRC_MOD += $(addprefix $(OOFATFS_DIR ) /,\
74+ CFLAGS_EXTMOD += -DMICROPY_VFS_FAT=1
75+ SRC_THIRDPARTY_C += $(addprefix $(OOFATFS_DIR ) /,\
6576ff.c \
6677ffunicode.c \
6778)
@@ -73,18 +84,18 @@ endif
7384LITTLEFS_DIR = lib/littlefs
7485
7586ifeq ($(MICROPY_VFS_LFS1 ) ,1)
76- CFLAGS_MOD += -DMICROPY_VFS_LFS1=1
77- CFLAGS_MOD += -DLFS1_NO_MALLOC -DLFS1_NO_DEBUG -DLFS1_NO_WARN -DLFS1_NO_ERROR -DLFS1_NO_ASSERT
78- SRC_MOD += $(addprefix $(LITTLEFS_DIR ) /,\
87+ CFLAGS_EXTMOD += -DMICROPY_VFS_LFS1=1
88+ CFLAGS_THIRDPARTY += -DLFS1_NO_MALLOC -DLFS1_NO_DEBUG -DLFS1_NO_WARN -DLFS1_NO_ERROR -DLFS1_NO_ASSERT
89+ SRC_THIRDPARTY_C += $(addprefix $(LITTLEFS_DIR ) /,\
7990lfs1.c \
8091lfs1_util.c \
8192)
8293endif
8394
8495ifeq ($(MICROPY_VFS_LFS2 ) ,1)
85- CFLAGS_MOD += -DMICROPY_VFS_LFS2=1
86- CFLAGS_MOD += -DLFS2_NO_MALLOC -DLFS2_NO_DEBUG -DLFS2_NO_WARN -DLFS2_NO_ERROR -DLFS2_NO_ASSERT
87- SRC_MOD += $(addprefix $(LITTLEFS_DIR ) /,\
96+ CFLAGS_EXTMOD += -DMICROPY_VFS_LFS2=1
97+ CFLAGS_THIRDPARTY += -DLFS2_NO_MALLOC -DLFS2_NO_DEBUG -DLFS2_NO_WARN -DLFS2_NO_ERROR -DLFS2_NO_ASSERT
98+ SRC_THIRDPARTY_C += $(addprefix $(LITTLEFS_DIR ) /,\
8899lfs2.c \
89100lfs2_util.c \
90101)
@@ -96,13 +107,13 @@ endif
96107# ussl
97108
98109ifeq ($(MICROPY_PY_USSL ) ,1)
99- CFLAGS_MOD += -DMICROPY_PY_USSL=1
110+ CFLAGS_EXTMOD += -DMICROPY_PY_USSL=1
100111ifeq ($(MICROPY_SSL_AXTLS ) ,1)
101- CFLAGS_MOD += -DMICROPY_SSL_AXTLS=1 -I$(TOP ) /lib/axtls/ssl -I$(TOP ) /lib/axtls/crypto -I$(TOP ) /extmod/axtls-include
102112AXTLS_DIR = lib/axtls
103113GIT_SUBMODULES += $(AXTLS_DIR )
114+ CFLAGS_EXTMOD += -DMICROPY_SSL_AXTLS=1 -I$(TOP ) /lib/axtls/ssl -I$(TOP ) /lib/axtls/crypto -I$(TOP ) /extmod/axtls-include
104115$(BUILD ) /$(AXTLS_DIR ) /% .o : CFLAGS += -Wno-all -Wno-unused-parameter -Wno-uninitialized -Wno-sign-compare -Wno-old-style-definition -Dmp_stream_errno=errno $(AXTLS_DEFS_EXTRA )
105- SRC_MOD += $(addprefix $(AXTLS_DIR ) /,\
116+ SRC_THIRDPARTY_C += $(addprefix $(AXTLS_DIR ) /,\
106117ssl/asn1.c \
107118ssl/loader.c \
108119ssl/tls1.c \
@@ -120,8 +131,9 @@ SRC_MOD += $(addprefix $(AXTLS_DIR)/,\
120131else ifeq ($(MICROPY_SSL_MBEDTLS),1)
121132MBEDTLS_DIR = lib/mbedtls
122133GIT_SUBMODULES += $(MBEDTLS_DIR )
123- SRC_MOD += lib/mbedtls_errors/mp_mbedtls_errors.c
124- SRC_MOD += $(addprefix $(MBEDTLS_DIR ) /library/,\
134+ CFLAGS_EXTMOD += -DMICROPY_SSL_MBEDTLS=1 -I$(TOP ) /$(MBEDTLS_DIR ) /include
135+ SRC_THIRDPARTY_C += lib/mbedtls_errors/mp_mbedtls_errors.c
136+ SRC_THIRDPARTY_C += $(addprefix $(MBEDTLS_DIR ) /library/,\
125137aes.c \
126138aesni.c \
127139arc4.c \
@@ -204,10 +216,10 @@ GIT_SUBMODULES += lib/lwip
204216# A port should add an include path where lwipopts.h can be found (eg extmod/lwip-include)
205217LWIP_DIR = lib/lwip/src
206218INC += -I$(TOP ) /$(LWIP_DIR ) /include
207- CFLAGS_MOD += -DMICROPY_PY_LWIP=1
208- $(BUILD ) /$(LWIP_DIR ) /core/ipv4/dhcp.o : CFLAGS_MOD += -Wno-address
209- SRC_MOD += shared/netutils/netutils.c
210- SRC_MOD += $(addprefix $(LWIP_DIR ) /,\
219+ CFLAGS_EXTMOD += -DMICROPY_PY_LWIP=1
220+ $(BUILD ) /$(LWIP_DIR ) /core/ipv4/dhcp.o : CFLAGS += -Wno-address
221+ SRC_THIRDPARTY_C += shared/netutils/netutils.c
222+ SRC_THIRDPARTY_C += $(addprefix $(LWIP_DIR ) /,\
211223apps/mdns/mdns.c \
212224core/def.c \
213225core/dns.c \
@@ -246,8 +258,8 @@ SRC_MOD += $(addprefix $(LWIP_DIR)/,\
246258netif/ethernet.c \
247259)
248260ifeq ($(MICROPY_PY_LWIP_SLIP ) ,1)
249- CFLAGS_MOD += -DMICROPY_PY_LWIP_SLIP=1
250- SRC_MOD += $(LWIP_DIR ) /netif/slipif.c
261+ CFLAGS_EXTMOD += -DMICROPY_PY_LWIP_SLIP=1
262+ SRC_THIRDPARTY_C += $(LWIP_DIR ) /netif/slipif.c
251263endif
252264endif
253265
@@ -258,8 +270,7 @@ ifeq ($(MICROPY_PY_BTREE),1)
258270BTREE_DIR = lib/berkeley-db-1.xx
259271BTREE_DEFS = -D__DBINTERFACE_PRIVATE=1 -Dmpool_error=printf -Dabort=abort_ "-Dvirt_fd_t=void*" $(BTREE_DEFS_EXTRA )
260272INC += -I$(TOP ) /$(BTREE_DIR ) /PORT/include
261- SRC_MOD += extmod/modbtree.c
262- SRC_MOD += $(addprefix $(BTREE_DIR ) /,\
273+ SRC_THIRDPARTY_C += $(addprefix $(BTREE_DIR ) /,\
263274btree/bt_close.c \
264275btree/bt_conv.c \
265276btree/bt_debug.c \
@@ -275,10 +286,67 @@ SRC_MOD += $(addprefix $(BTREE_DIR)/,\
275286btree/bt_utils.c \
276287mpool/mpool.c \
277288)
278- CFLAGS_MOD += -DMICROPY_PY_BTREE=1
289+ CFLAGS_EXTMOD += -DMICROPY_PY_BTREE=1
279290# we need to suppress certain warnings to get berkeley-db to compile cleanly
280291# and we have separate BTREE_DEFS so the definitions don't interfere with other source code
281292$(BUILD ) /$(BTREE_DIR ) /% .o : CFLAGS += -Wno-old-style-definition -Wno-sign-compare -Wno-unused-parameter $(BTREE_DEFS )
282293$(BUILD ) /extmod/modbtree.o : CFLAGS += $(BTREE_DEFS )
283294endif
284295
296+ # ###############################################################################
297+ # networking
298+
299+ ifeq ($(MICROPY_PY_NETWORK_CYW43 ) ,1)
300+ CFLAGS_EXTMOD += -DMICROPY_PY_NETWORK_CYW43=1
301+ DRIVERS_SRC_C += drivers/cyw43/cyw43_ctrl.c drivers/cyw43/cyw43_lwip.c
302+ LIBS += $(TOP ) /drivers/cyw43/libcyw43.a
303+ endif
304+
305+ ifneq ($(MICROPY_PY_NETWORK_WIZNET5K ) ,)
306+ ifneq ($(MICROPY_PY_NETWORK_WIZNET5K ) ,0)
307+ WIZNET5K_DIR =lib/wiznet5k
308+ GIT_SUBMODULES += lib/wiznet5k
309+ INC += -I$(TOP ) /$(WIZNET5K_DIR ) -I$(TOP ) /$(WIZNET5K_DIR ) /Ethernet
310+ CFLAGS += -DMICROPY_PY_NETWORK_WIZNET5K=$(MICROPY_PY_NETWORK_WIZNET5K ) -D_WIZCHIP_=$(MICROPY_PY_NETWORK_WIZNET5K )
311+ CFLAGS_THIRDPARTY += -DWIZCHIP_PREFIXED_EXPORTS=1
312+ ifeq ($(MICROPY_PY_LWIP ) ,1)
313+ # When using MACRAW mode (with lwIP), maximum buffer space must be used for the raw socket
314+ CFLAGS_THIRDPARTY += -DWIZCHIP_USE_MAX_BUFFER
315+ endif
316+ SRC_THIRDPARTY_C += $(addprefix $(WIZNET5K_DIR ) /,\
317+ Ethernet/W$(MICROPY_PY_NETWORK_WIZNET5K ) /w$(MICROPY_PY_NETWORK_WIZNET5K ) .c \
318+ Ethernet/wizchip_conf.c \
319+ Ethernet/socket.c \
320+ Internet/DNS/dns.c \
321+ Internet/DHCP/dhcp.c \
322+ )
323+ endif
324+ endif
325+
326+ # ###############################################################################
327+ # bluetooth
328+
329+ ifeq ($(MICROPY_PY_BLUETOOTH ) ,1)
330+ CFLAGS_EXTMOD += -DMICROPY_PY_BLUETOOTH=1
331+
332+ ifeq ($(MICROPY_BLUETOOTH_NIMBLE ) ,1)
333+ ifeq ($(MICROPY_BLUETOOTH_BTSTACK ) ,1)
334+ $(error Cannot enable both NimBLE and BTstack at the same time)
335+ endif
336+ endif
337+
338+ ifneq ($(MICROPY_BLUETOOTH_NIMBLE ) ,1)
339+ ifneq ($(MICROPY_BLUETOOTH_BTSTACK ) ,1)
340+ $(error Must enable one of MICROPY_BLUETOOTH_NIMBLE or MICROPY_BLUETOOTH_BTSTACK)
341+ endif
342+ endif
343+
344+ ifeq ($(MICROPY_BLUETOOTH_NIMBLE ) ,1)
345+ include $(TOP ) /extmod/nimble/nimble.mk
346+ endif
347+
348+ ifeq ($(MICROPY_BLUETOOTH_BTSTACK ) ,1)
349+ include $(TOP ) /extmod/btstack/btstack.mk
350+ endif
351+
352+ endif
0 commit comments