# Makefile fragment for generating native .mpy files from C source# MPY_DIR must be set to the top of the MicroPython source treeBUILD ?= buildECHO = @echoRM = /bin/rmMKDIR = /bin/mkdirPYTHON = python3MPY_CROSS = $(MPY_DIR)/mpy-cross/mpy-crossMPY_TOOL = $(PYTHON) $(MPY_DIR)/tools/mpy-tool.pyMPY_LD = $(PYTHON) $(MPY_DIR)/tools/mpy_ld.pyQ = @ifeq ("$(origin V)", "command line")ifeq ($(V),1)Q =MPY_LD += '-vvv'endifendifARCH_UPPER = $(shell echo $(ARCH) | tr '[:lower:]' '[:upper:]')CONFIG_H = $(BUILD)/$(MOD).config.hCFLAGS += -I. -I$(MPY_DIR)CFLAGS += -std=c99CFLAGS += -OsCFLAGS += -Wall -Werror -DNDEBUGCFLAGS += -DNO_QSTRCFLAGS += -DMICROPY_ENABLE_DYNRUNTIMECFLAGS += -DMP_CONFIGFILE='<$(CONFIG_H)>'CFLAGS += -fpic -fno-commonCFLAGS += -U _FORTIFY_SOURCE # prevent use of __*_chk libc functions#CFLAGS += -fdata-sections -ffunction-sectionsMPY_CROSS_FLAGS += -march=$(ARCH)SRC_O += $(addprefix $(BUILD)/, $(patsubst %.c,%.o,$(filter %.c,$(SRC))))SRC_MPY += $(addprefix $(BUILD)/, $(patsubst %.py,%.mpy,$(filter %.py,$(SRC))))################################################################################# Architecture configurationifeq ($(ARCH),x86)# x86CROSS =CFLAGS += -m32 -fno-stack-protectorMPY_CROSS_FLAGS += -mcache-lookup-bcMICROPY_FLOAT_IMPL ?= doubleelse ifeq ($(ARCH),x64)# x64CROSS =CFLAGS += -fno-stack-protectorMPY_CROSS_FLAGS += -mcache-lookup-bcMICROPY_FLOAT_IMPL ?= doubleelse ifeq ($(ARCH),armv7m)# thumbCROSS = arm-none-eabi-CFLAGS += -mthumb -mcpu=cortex-m3MICROPY_FLOAT_IMPL ?= noneelse ifeq ($(ARCH),armv7emsp)# thumbCROSS = arm-none-eabi-CFLAGS += -mthumb -mcpu=cortex-m4CFLAGS += -mfpu=fpv4-sp-d16 -mfloat-abi=hardMICROPY_FLOAT_IMPL ?= floatelse ifeq ($(ARCH),armv7emdp)# thumbCROSS = arm-none-eabi-CFLAGS += -mthumb -mcpu=cortex-m7CFLAGS += -mfpu=fpv5-d16 -mfloat-abi=hardMICROPY_FLOAT_IMPL ?= doubleelse ifeq ($(ARCH),xtensa)# xtensaCROSS = xtensa-lx106-elf-CFLAGS += -mforce-l32MICROPY_FLOAT_IMPL ?= noneelse ifeq ($(ARCH),xtensawin)# xtensawinCROSS = xtensa-esp32-elf-CFLAGS +=MICROPY_FLOAT_IMPL ?= floatelse$(error architecture '$(ARCH)' not supported)endifMICROPY_FLOAT_IMPL_UPPER = $(shell echo $(MICROPY_FLOAT_IMPL) | tr '[:lower:]' '[:upper:]')CFLAGS += -DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_$(MICROPY_FLOAT_IMPL_UPPER)CFLAGS += $(CFLAGS_EXTRA)################################################################################# Build rules.PHONY: all cleanall: $(MOD).mpyclean:$(RM) -rf $(BUILD) $(CLEAN_EXTRA)# Create build destination directories firstBUILD_DIRS = $(sort $(dir $(CONFIG_H) $(SRC_O) $(SRC_MPY)))$(CONFIG_H) $(SRC_O) $(SRC_MPY): | $(BUILD_DIRS)$(BUILD_DIRS):$(Q)$(MKDIR) -p $@# Preprocess all source files to generate $(CONFIG_H)$(CONFIG_H): $(SRC)$(ECHO) "GEN $@"$(Q)$(MPY_LD) --arch $(ARCH) --preprocess -o $@ $^# Build .o from .c source files$(BUILD)/%.o: %.c $(CONFIG_H) Makefile$(ECHO) "CC $<"$(Q)$(CROSS)gcc $(CFLAGS) -o $@ -c $<# Build .mpy from .py source files$(BUILD)/%.mpy: %.py$(ECHO) "MPY $<"$(Q)$(MPY_CROSS) $(MPY_CROSS_FLAGS) -o $@ $<# Build native .mpy from object files$(BUILD)/$(MOD).native.mpy: $(SRC_O)$(ECHO) "LINK $<"$(Q)$(MPY_LD) --arch $(ARCH) --qstrs $(CONFIG_H) -o $@ $^# Build final .mpy from all intermediate .mpy files$(MOD).mpy: $(BUILD)/$(MOD).native.mpy $(SRC_MPY)$(ECHO) "GEN $@"$(Q)$(MPY_TOOL) --merge -o $@ $^
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。