@@ -33,7 +33,11 @@ CFLAGS_MCU_SAMD21 = -mtune=cortex-m0plus -mcpu=cortex-m0plus -msoft-float
33
33
CFLAGS_MCU_SAMD51 = -mtune=cortex-m4 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
34
34
CFLAGS = $(INC ) -Wall -Werror -std=c99 -nostdlib -mthumb $(CFLAGS_MCU_$(MCU_SERIES ) ) -fsingle-precision-constant -Wdouble-promotion
35
35
CFLAGS += -DMCU_$(MCU_SERIES ) -D__$(CMSIS_MCU ) __
36
+ CFLAGS += $(CFLAGS_MOD )
37
+
36
38
LDFLAGS = -nostdlib $(addprefix -T,$(LD_FILES ) ) -Map=$@ .map --cref
39
+ LDFLAGS += $(LDFLAGS_MOD )
40
+
37
41
LIBS = $(shell $(CC ) $(CFLAGS ) -print-libgcc-file-name)
38
42
39
43
# Tune for Debugging or Optimization
@@ -45,6 +49,14 @@ LDFLAGS += --gc-sections
45
49
CFLAGS += -fdata-sections -ffunction-sections
46
50
endif
47
51
52
+ # Flags for optional C++ source code
53
+ CXXFLAGS += $(filter-out -std=c99,$(CFLAGS ) )
54
+ CXXFLAGS += $(CXXFLAGS_MOD )
55
+ ifneq ($(SRC_CXX )$(SRC_MOD_CXX ) ,)
56
+ LIBSTDCPP_FILE_NAME = "$(shell $(CXX ) $(CXXFLAGS ) -print-file-name=libstdc++.a) "
57
+ LDFLAGS += -L"$(shell dirname $(LIBSTDCPP_FILE_NAME ) ) "
58
+ endif
59
+
48
60
SRC_C = \
49
61
main.c \
50
62
modutime.c \
@@ -70,17 +82,22 @@ SRC_C = \
70
82
shared/runtime/pyexec.c \
71
83
shared/runtime/stdout_helpers.c \
72
84
85
+ SRC_C += $(SRC_MOD )
86
+
87
+ SRC_CXX += $(SRC_MOD_CXX )
88
+
73
89
ifeq ($(MCU_SERIES ) ,SAMD21)
74
90
SRC_S = shared/runtime/gchelper_m0.s
75
91
else
76
92
SRC_S = shared/runtime/gchelper_m3.s
77
93
endif
78
94
79
95
# List of sources for qstr extraction
80
- SRC_QSTR += modutime.c modmachine.c
96
+ SRC_QSTR += modutime.c modmachine.c $( SRC_MOD ) $( SRC_CXX )
81
97
82
98
OBJ += $(PY_O )
83
99
OBJ += $(addprefix $(BUILD ) /, $(SRC_C:.c=.o ) )
100
+ OBJ += $(addprefix $(BUILD ) /, $(SRC_CXX:.cpp=.o ) )
84
101
OBJ += $(addprefix $(BUILD ) /, $(SRC_S:.s=.o ) )
85
102
86
103
# Workaround for bug in older gcc, warning on "static usbd_device_t _usbd_dev = { 0 };"
0 commit comments