Skip to content

Commit d6d8722

Browse files
jimmodpgeorge
authored andcommitted
extmod: Make extmod.mk self-contained.
This makes it so that all a port needs to do is set the relevant variables and "include extmod.mk" and doesn't need to worry about adding anything to OBJ, CFLAGS, SRC_QSTR, etc. Make all extmod variables (src, flags, etc) private to extmod.mk. Also move common/shared, extmod-related fragments (e.g. wiznet, cyw43, bluetooth) into extmod.mk. Now that SRC_MOD, CFLAGS_MOD, CXXFLAGS_MOD are unused by both extmod.mk (and user-C-modules in a previous commit), remove all uses of them from port makefiles. Signed-off-by: Jim Mussared <[email protected]>
1 parent 87011f6 commit d6d8722

File tree

21 files changed

+235
-283
lines changed

21 files changed

+235
-283
lines changed

extmod/btstack/btstack.mk

+23-15
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,19 @@
33
ifeq ($(MICROPY_BLUETOOTH_BTSTACK),1)
44

55
GIT_SUBMODULES += lib/btstack
6+
67
MICROPY_BLUETOOTH_BTSTACK_USB ?= 0
8+
MICROPY_BLUETOOTH_BTSTACK_H4 ?= 1
79

810
BTSTACK_EXTMOD_DIR = extmod/btstack
911

10-
EXTMOD_SRC_C += extmod/btstack/modbluetooth_btstack.c
12+
SRC_EXTMOD_C += $(BTSTACK_EXTMOD_DIR)/modbluetooth_btstack.c
1113

1214
INC += -I$(TOP)/$(BTSTACK_EXTMOD_DIR)
1315

14-
CFLAGS_MOD += -DMICROPY_BLUETOOTH_BTSTACK=1
15-
CFLAGS_MOD += -DMICROPY_PY_BLUETOOTH_USE_SYNC_EVENTS=1
16-
CFLAGS_MOD += -DMICROPY_PY_BLUETOOTH_ENABLE_PAIRING_BONDING=1
16+
CFLAGS_EXTMOD += -DMICROPY_BLUETOOTH_BTSTACK=1
17+
CFLAGS_EXTMOD += -DMICROPY_PY_BLUETOOTH_USE_SYNC_EVENTS=1
18+
CFLAGS_EXTMOD += -DMICROPY_PY_BLUETOOTH_ENABLE_PAIRING_BONDING=1
1719

1820
BTSTACK_DIR = $(TOP)/lib/btstack
1921

@@ -28,44 +30,50 @@ INC += -I$(BTSTACK_DIR)/3rd-party/bluedroid/encoder/include
2830
INC += -I$(BTSTACK_DIR)/3rd-party/md5
2931
INC += -I$(BTSTACK_DIR)/3rd-party/yxml
3032

31-
SRC_BTSTACK = \
33+
SRC_BTSTACK_C = \
3234
$(addprefix lib/btstack/src/, $(SRC_FILES)) \
3335
$(addprefix lib/btstack/src/ble/, $(filter-out %_tlv.c, $(SRC_BLE_FILES))) \
3436

3537
ifeq ($(MICROPY_BLUETOOTH_BTSTACK_USB),1)
3638
ifeq ($(MICROPY_BLUETOOTH_BTSTACK_H4),1)
37-
$(error Cannot specifiy both MICROPY_BLUETOOTH_BTSTACK_USB and MICROPY_BLUETOOTH_BTSTACK_H4)
39+
$(error Cannot enable both MICROPY_BLUETOOTH_BTSTACK_USB and MICROPY_BLUETOOTH_BTSTACK_H4)
40+
endif
41+
endif
42+
43+
ifneq ($(MICROPY_BLUETOOTH_BTSTACK_USB),1)
44+
ifneq ($(MICROPY_BLUETOOTH_BTSTACK_H4),1)
45+
$(error Must enable one of MICROPY_BLUETOOTH_BTSTACK_USB or MICROPY_BLUETOOTH_BTSTACK_H4)
3846
endif
3947
endif
4048

4149
ifeq ($(MICROPY_BLUETOOTH_BTSTACK_USB),1)
42-
SRC_BTSTACK += \
50+
SRC_BTSTACK_C += \
4351
lib/btstack/platform/libusb/hci_transport_h2_libusb.c
4452

45-
CFLAGS_MOD += -DMICROPY_BLUETOOTH_BTSTACK_USB=1
53+
CFLAGS_EXTMOD += -DMICROPY_BLUETOOTH_BTSTACK_USB=1
4654

47-
CFLAGS += $(shell pkg-config libusb-1.0 --cflags)
48-
LDFLAGS += $(shell pkg-config libusb-1.0 --libs)
55+
CFLAGS_THIRDPARTY += $(shell pkg-config libusb-1.0 --cflags)
56+
LDFLAGS_THIRDPARTY += $(shell pkg-config libusb-1.0 --libs)
4957
endif
5058

5159
ifeq ($(MICROPY_BLUETOOTH_BTSTACK_H4),1)
52-
SRC_BTSTACK += \
60+
SRC_BTSTACK_C += \
5361
lib/btstack/src/hci_transport_h4.c \
5462
lib/btstack/chipset/zephyr/btstack_chipset_zephyr.c
5563

56-
EXTMOD_SRC_C += \
64+
SRC_BTSTACK_C += \
5765
extmod/btstack/btstack_hci_uart.c \
5866

59-
CFLAGS_MOD += -DMICROPY_BLUETOOTH_BTSTACK_H4=1
67+
CFLAGS_EXTMOD += -DMICROPY_BLUETOOTH_BTSTACK_H4=1
6068
endif
6169

6270
ifeq ($(MICROPY_BLUETOOTH_BTSTACK_ENABLE_CLASSIC),1)
6371
include $(BTSTACK_DIR)/src/classic/Makefile.inc
64-
SRC_BTSTACK += \
72+
SRC_BTSTACK_C += \
6573
$(addprefix lib/btstack/src/classic/, $(SRC_CLASSIC_FILES))
6674
endif
6775

68-
LIB_SRC_C += $(SRC_BTSTACK)
76+
SRC_THIRDPARTY_C += $(SRC_BTSTACK_C)
6977

7078
# Suppress some warnings.
7179
BTSTACK_WARNING_CFLAGS = -Wno-old-style-definition -Wno-unused-variable -Wno-unused-parameter -Wno-implicit-fallthrough

extmod/extmod.mk

+138-70
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,78 @@
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

5768
OOFATFS_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

6273
ifeq ($(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)/,\
6576
ff.c \
6677
ffunicode.c \
6778
)
@@ -73,18 +84,18 @@ endif
7384
LITTLEFS_DIR = lib/littlefs
7485

7586
ifeq ($(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)/,\
7990
lfs1.c \
8091
lfs1_util.c \
8192
)
8293
endif
8394

8495
ifeq ($(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)/,\
8899
lfs2.c \
89100
lfs2_util.c \
90101
)
@@ -96,13 +107,13 @@ endif
96107
# ussl
97108

98109
ifeq ($(MICROPY_PY_USSL),1)
99-
CFLAGS_MOD += -DMICROPY_PY_USSL=1
110+
CFLAGS_EXTMOD += -DMICROPY_PY_USSL=1
100111
ifeq ($(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
102112
AXTLS_DIR = lib/axtls
103113
GIT_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)/,\
106117
ssl/asn1.c \
107118
ssl/loader.c \
108119
ssl/tls1.c \
@@ -120,8 +131,9 @@ SRC_MOD += $(addprefix $(AXTLS_DIR)/,\
120131
else ifeq ($(MICROPY_SSL_MBEDTLS),1)
121132
MBEDTLS_DIR = lib/mbedtls
122133
GIT_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/,\
125137
aes.c \
126138
aesni.c \
127139
arc4.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)
205217
LWIP_DIR = lib/lwip/src
206218
INC += -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)/,\
211223
apps/mdns/mdns.c \
212224
core/def.c \
213225
core/dns.c \
@@ -246,8 +258,8 @@ SRC_MOD += $(addprefix $(LWIP_DIR)/,\
246258
netif/ethernet.c \
247259
)
248260
ifeq ($(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
251263
endif
252264
endif
253265

@@ -258,8 +270,7 @@ ifeq ($(MICROPY_PY_BTREE),1)
258270
BTREE_DIR = lib/berkeley-db-1.xx
259271
BTREE_DEFS = -D__DBINTERFACE_PRIVATE=1 -Dmpool_error=printf -Dabort=abort_ "-Dvirt_fd_t=void*" $(BTREE_DEFS_EXTRA)
260272
INC += -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)/,\
263274
btree/bt_close.c \
264275
btree/bt_conv.c \
265276
btree/bt_debug.c \
@@ -275,10 +286,67 @@ SRC_MOD += $(addprefix $(BTREE_DIR)/,\
275286
btree/bt_utils.c \
276287
mpool/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)
283294
endif
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

extmod/network_wiznet5k.c

+3-2
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,16 @@
3333
#include "py/stream.h"
3434
#include "py/mperrno.h"
3535
#include "py/mphal.h"
36+
37+
#if MICROPY_PY_NETWORK_WIZNET5K
38+
3639
#include "shared/netutils/netutils.h"
3740
#include "extmod/modnetwork.h"
3841
#include "extmod/machine_spi.h"
3942
#include "extmod/virtpin.h"
4043
#include "modmachine.h"
4144
#include "drivers/bus/spi.h"
4245

43-
#if MICROPY_PY_NETWORK_WIZNET5K
44-
4546
#include "lib/wiznet5k/Ethernet/wizchip_conf.h"
4647

4748
// The WIZNET5K module supports two usage modes:

0 commit comments

Comments
 (0)