1CC = arm-none-eabi-gcc 2SIZE = arm-none-eabi-size 3BIN := freertos_tcp_mps2_demo.axf 4 5BUILD_DIR := build 6 7FREERTOS_DIR_REL := ../../../FreeRTOS 8FREERTOS_DIR := $(abspath $(FREERTOS_DIR_REL)) 9KERNEL_DIR := $(FREERTOS_DIR)/Source 10 11FREERTOS_PLUS_DIR_REL := ../../../FreeRTOS-Plus 12FREERTOS_PLUS_DIR := $(abspath $(FREERTOS_PLUS_DIR_REL)) 13 14INCLUDE_DIRS += -I. 15 16FREERTOS_TCP = ${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-TCP 17 18# Demo Source Files 19SOURCE_FILES += startup.c 20SOURCE_FILES += syscalls.c 21SOURCE_FILES += main.c 22SOURCE_FILES += main_networking.c 23SOURCE_FILES += TCPEchoClient_SingleTasks.c 24 25INCLUDE_DIRS += -ICMSIS 26 27# FreeRTOS Kernel 28INCLUDE_DIRS += -I$(KERNEL_DIR)/include 29 30SOURCE_FILES += $(KERNEL_DIR)/tasks.c 31SOURCE_FILES += $(KERNEL_DIR)/list.c 32SOURCE_FILES += $(KERNEL_DIR)/queue.c 33SOURCE_FILES += $(KERNEL_DIR)/event_groups.c 34 35# FreeRTOS Kernel ARM Cortex-M3 Port 36INCLUDE_DIRS += -I$(KERNEL_DIR)/portable/GCC/ARM_CM3 37 38SOURCE_FILES += $(KERNEL_DIR)/portable/GCC/ARM_CM3/port.c 39SOURCE_FILES += ${KERNEL_DIR}/portable/MemMang/heap_3.c 40 41# FreeRTOS+TCP 42INCLUDE_DIRS += -I${FREERTOS_TCP}/source/include/ 43 44SOURCE_FILES += $(wildcard ${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-TCP/source/*.c ) 45 46# FreeRTOS+TCP Port for ARM MPS2 SoC 47INCLUDE_DIRS += -I${FREERTOS_TCP}/source/portable/NetworkInterface/MPS2_AN385/ether_lan9118 48INCLUDE_DIRS += -I${FREERTOS_TCP}/source/portable/Compiler/GCC 49 50SOURCE_FILES += ${FREERTOS_TCP}/source/portable/BufferManagement/BufferAllocation_2.c 51SOURCE_FILES += ${FREERTOS_TCP}/source/portable/NetworkInterface/MPS2_AN385/NetworkInterface.c 52SOURCE_FILES += ${FREERTOS_TCP}/source/portable/NetworkInterface/MPS2_AN385/ether_lan9118/smsc9220_eth_drv.c 53 54CPPFLAGS += -DHEAP3 55 56ifeq ($(PICOLIBC), 1) 57 CFLAGS += --specs=picolibc.specs -DPICOLIBC_INTEGER_PRINTF_SCANF --oslib=semihost 58endif 59CFLAGS += -mthumb -mcpu=cortex-m3 60ifeq ($(DEBUG), 1) 61 CFLAGS += -g3 -Og -ffunction-sections -fdata-sections 62else 63 CFLAGS += -Os -ffunction-sections -fdata-sections 64endif 65#CFLAGS += -flto 66CFLAGS += -Wall -Wextra -Wshadow 67#CFLAGS += -Wpedantic -fanalyzer 68CFLAGS += -MMD 69CFLAGS += $(INCLUDE_DIRS) 70 71LDFLAGS = -T mps2_m3.ld 72LDFLAGS += -Xlinker -Map=${BUILD_DIR}/output.map 73LDFLAGS += -Xlinker --gc-sections 74#LDFLAGS += -Xlinker --print-gc-sections 75ifeq ($(PICOLIBC), 1) 76 LDFLAGS += -nostartfiles 77else 78 LDFLAGS += -nostartfiles -specs=nano.specs -specs=nosys.specs -specs=rdimon.specs 79endif 80 81OBJ_FILES := $(SOURCE_FILES:%.c=$(BUILD_DIR)/%.o) 82 83.PHONY: clean 84 85$(BUILD_DIR)/$(BIN): $(OBJ_FILES) 86 $(CC) $(CFLAGS) $(LDFLAGS) $+ -o $(@) 87 $(SIZE) $(@) 88 89%.d: %.c 90 @set -e; rm -f $@; \ 91 $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ 92 sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ 93 rm -f $@.$$$$ 94 95INCLUDES := $(SOURCE_FILES:%.c=$(BUILD_DIR)/%.d) 96-include $(INCLUDES) 97 98${BUILD_DIR}/%.o: %.c Makefile 99 -mkdir -p $(@D) 100 $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ 101 102clean: 103 -rm -rf build 104