1CC := gcc 2BIN := posix_tcp_demo 3 4BUILD_DIR := build 5BUILD_DIR_ABS := $(abspath $(BUILD_DIR)) 6 7FREERTOS_DIR_REL := ../../../FreeRTOS 8FREERTOS_DIR := $(abspath $(FREERTOS_DIR_REL)) 9 10FREERTOS_PLUS_DIR_REL := ../../../FreeRTOS-Plus 11FREERTOS_PLUS_DIR := $(abspath $(FREERTOS_PLUS_DIR_REL)) 12 13KERNEL_DIR := ${FREERTOS_DIR}/Source 14FREERTOS_PLUS_TCP_DIR := ${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-TCP/source 15 16INCLUDE_DIRS := -I. 17INCLUDE_DIRS += -I./Trace_Recorder_Configuration 18INCLUDE_DIRS += -I${KERNEL_DIR}/include 19INCLUDE_DIRS += -I${KERNEL_DIR}/portable/ThirdParty/GCC/Posix 20INCLUDE_DIRS += -I${KERNEL_DIR}/portable/ThirdParty/GCC/Posix/utils 21INCLUDE_DIRS += -I${FREERTOS_DIR}/Demo/Common/include 22INCLUDE_DIRS += -I${FREERTOS_PLUS_TCP_DIR}/portable/NetworkInterface/linux/ 23INCLUDE_DIRS += -I${FREERTOS_PLUS_TCP_DIR}/include/ 24INCLUDE_DIRS += -I${FREERTOS_PLUS_TCP_DIR}/portable/Compiler/GCC/ 25INCLUDE_DIRS += -I${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/include 26INCLUDE_DIRS += -I${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/kernelports/FreeRTOS/include 27INCLUDE_DIRS += -I${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/streamports/RingBuffer/include 28 29 30# FreeRTOS Kernel source files 31SOURCE_FILES := 32SOURCE_FILES += ${FREERTOS_DIR}/Source/event_groups.c 33SOURCE_FILES += ${FREERTOS_DIR}/Source/list.c 34SOURCE_FILES += ${FREERTOS_DIR}/Source/queue.c 35SOURCE_FILES += ${FREERTOS_DIR}/Source/stream_buffer.c 36SOURCE_FILES += ${FREERTOS_DIR}/Source/tasks.c 37SOURCE_FILES += ${FREERTOS_DIR}/Source/timers.c 38 39# FreeRTOS Kernel POSIX Port 40SOURCE_FILES += ${KERNEL_DIR}/portable/ThirdParty/GCC/Posix/utils/wait_for_event.c 41SOURCE_FILES += ${KERNEL_DIR}/portable/ThirdParty/GCC/Posix/port.c 42 43# FreeRTOS+TCP demo source file 44SOURCE_FILES += SimpleTCPEchoServer.c 45SOURCE_FILES += TCPEchoClient_SingleTasks.c 46SOURCE_FILES += console.c 47SOURCE_FILES += main.c 48SOURCE_FILES += main_networking.c 49SOURCE_FILES += runtime_stats_hooks.c 50 51# Memory manager (use malloc() / free() ) 52SOURCE_FILES += ${FREERTOS_DIR}/Source/portable/MemMang/heap_3.c 53 54# FreeRTOS TCP 55SOURCE_FILES += $(wildcard ${FREERTOS_PLUS_TCP_DIR}/*.c ) 56SOURCE_FILES += ${FREERTOS_PLUS_TCP_DIR}/portable/BufferManagement/BufferAllocation_2.c 57SOURCE_FILES += ${FREERTOS_PLUS_TCP_DIR}/portable/NetworkInterface/libslirp/MBuffNetifBackendLibslirp.c 58SOURCE_FILES += ${FREERTOS_PLUS_TCP_DIR}/portable/NetworkInterface/libslirp/MBuffNetworkInterface.c 59 60CFLAGS := -ggdb3 61LDFLAGS := -ggdb3 -pthread 62 63# Get libslirp package configuration (header and library paths) 64CFLAGS += $(shell pkg-config --cflags slirp) 65LDFLAGS += $(shell pkg-config --libs slirp) 66 67CPPFLAGS = $(INCLUDE_DIRS) -DBUILD_DIR=\"$(BUILD_DIR_ABS)\" 68 69DEFINES := -DHEAP3 70CPPFLAGS += $(DEFINES) 71 72ifndef TRACE_ON_ENTER 73 TRACE_ON_ENTER = 1 74endif 75 76ifeq ($(TRACE_ON_ENTER),1) 77 CPPFLAGS += -DTRACE_ON_ENTER=1 78else 79 CPPFLAGS += -DTRACE_ON_ENTER=0 80endif 81 82ifeq ($(COVERAGE_TEST),1) 83 CPPFLAGS += -DprojCOVERAGE_TEST=1 84else 85 CPPFLAGS += -DprojCOVERAGE_TEST=0 86# Trace library. 87 SOURCE_FILES += ${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/kernelports/FreeRTOS/trcKernelPort.c 88 SOURCE_FILES += ${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/streamports/RingBuffer/trcStreamPort.c 89 SOURCE_FILES += $(wildcard ${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/*.c ) 90endif 91 92ifdef PROFILE 93 CFLAGS += -pg -O0 94 LDFLAGS += -pg -O0 95else 96 CFLAGS += -O3 97 LDFLAGS += -O3 98endif 99 100OBJ_FILES = $(SOURCE_FILES:%.c=$(BUILD_DIR)/%.o) 101 102DEP_FILE = $(OBJ_FILES:%.o=%.d) 103 104${BIN} : $(BUILD_DIR)/$(BIN) 105 106${BUILD_DIR}/${BIN} : ${OBJ_FILES} 107 -mkdir -p ${@D} 108 $(CC) $^ ${LDFLAGS} -o $@ 109 110 111-include ${DEP_FILE} 112 113${BUILD_DIR}/%.o : %.c Makefile 114 -mkdir -p $(@D) 115 $(CC) $(CPPFLAGS) $(CFLAGS) -MMD -c $< -o $@ 116 117.PHONY: clean 118 119clean: 120 -rm -rf $(BUILD_DIR) 121 122GPROF_OPTIONS := --directory-path=$(INCLUDE_DIRS) 123profile: 124 gprof -a -p --all-lines $(GPROF_OPTIONS) $(BUILD_DIR)/$(BIN) $(BUILD_DIR)/gmon.out > $(BUILD_DIR)/prof_flat.txt 125 gprof -a --graph $(GPROF_OPTIONS) $(BUILD_DIR)/$(BIN) $(BUILD_DIR)/gmon.out > $(BUILD_DIR)/prof_call_graph.txt 126