mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-10-17 10:17:45 -04:00
133 lines
5 KiB
Makefile
133 lines
5 KiB
Makefile
CC := gcc
|
|
BIN := posix_demo
|
|
|
|
BUILD_DIR := ./build
|
|
BUILD_DIR_ABS := $(abspath $(BUILD_DIR))
|
|
|
|
FREERTOS_DIR_REL := ../../../FreeRTOS
|
|
FREERTOS_DIR := $(abspath $(FREERTOS_DIR_REL))
|
|
|
|
FREERTOS_PLUS_DIR_REL := ../../../FreeRTOS-Plus
|
|
FREERTOS_PLUS_DIR := $(abspath $(FREERTOS_PLUS_DIR_REL))
|
|
|
|
KERNEL_DIR := ${FREERTOS_DIR}/Source
|
|
|
|
INCLUDE_DIRS := -I.
|
|
INCLUDE_DIRS += -I${KERNEL_DIR}/include
|
|
INCLUDE_DIRS += -I${KERNEL_DIR}/portable/ThirdParty/GCC/Posix
|
|
INCLUDE_DIRS += -I${KERNEL_DIR}/portable/ThirdParty/GCC/Posix/utils
|
|
INCLUDE_DIRS += -I${FREERTOS_DIR}/Demo/Common/include
|
|
INCLUDE_DIRS += -I${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/Include
|
|
|
|
SOURCE_FILES := $(wildcard *.c)
|
|
SOURCE_FILES += $(wildcard ${FREERTOS_DIR}/Source/*.c)
|
|
# Memory manager (use malloc() / free() )
|
|
SOURCE_FILES += ${KERNEL_DIR}/portable/MemMang/heap_3.c
|
|
# posix port
|
|
SOURCE_FILES += ${KERNEL_DIR}/portable/ThirdParty/GCC/Posix/utils/wait_for_event.c
|
|
SOURCE_FILES += ${KERNEL_DIR}/portable/ThirdParty/GCC/Posix/port.c
|
|
|
|
# Demo library.
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/AbortDelay.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/BlockQ.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/blocktim.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/countsem.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/death.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/dynamic.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/EventGroupsDemo.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/flop.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/GenQTest.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/integer.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/IntSemTest.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/MessageBufferAMP.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/MessageBufferDemo.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/PollQ.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/QPeek.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/QueueOverwrite.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/QueueSet.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/QueueSetPolling.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/recmutex.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/semtest.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/StaticAllocation.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/StreamBufferDemo.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/StreamBufferInterrupt.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/TaskNotify.c
|
|
SOURCE_FILES += ${FREERTOS_DIR}/Demo/Common/Minimal/TimerDemo.c
|
|
|
|
|
|
|
|
CFLAGS := -ggdb3
|
|
LDFLAGS := -ggdb3 -pthread
|
|
CPPFLAGS := $(INCLUDE_DIRS) -DBUILD_DIR=\"$(BUILD_DIR_ABS)\"
|
|
CPPFLAGS += -D_WINDOWS_
|
|
|
|
ifeq ($(TRACE_ON_ENTER),1)
|
|
CPPFLAGS += -DTRACE_ON_ENTER=1
|
|
else
|
|
CPPFLAGS += -DTRACE_ON_ENTER=0
|
|
endif
|
|
|
|
ifeq ($(COVERAGE_TEST),1)
|
|
CPPFLAGS += -DprojCOVERAGE_TEST=1
|
|
else
|
|
CPPFLAGS += -DprojCOVERAGE_TEST=0
|
|
# Trace library.
|
|
SOURCE_FILES += ${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/trcKernelPort.c
|
|
SOURCE_FILES += ${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/trcSnapshotRecorder.c
|
|
SOURCE_FILES += ${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/trcStreamingRecorder.c
|
|
SOURCE_FILES += ${FREERTOS_PLUS_DIR}/Source/FreeRTOS-Plus-Trace/streamports/File/trcStreamingPort.c
|
|
endif
|
|
|
|
ifdef PROFILE
|
|
CFLAGS += -pg -O0
|
|
LDFLAGS += -pg -O0
|
|
else
|
|
CFLAGS += -O3
|
|
LDFLAGS += -O3
|
|
endif
|
|
|
|
ifdef SANITIZE_ADDRESS
|
|
CFLAGS += -fsanitize=address -fsanitize=alignment
|
|
LDFLAGS += -fsanitize=address -fsanitize=alignment
|
|
endif
|
|
|
|
ifdef SANITIZE_LEAK
|
|
LDFLAGS += -fsanitize=leak
|
|
endif
|
|
|
|
ifeq ($(USER_DEMO),BLINKY_DEMO)
|
|
CPPFLAGS += -DUSER_DEMO=0
|
|
endif
|
|
|
|
ifeq ($(USER_DEMO),FULL_DEMO)
|
|
CPPFLAGS += -DUSER_DEMO=1
|
|
endif
|
|
|
|
|
|
OBJ_FILES = $(SOURCE_FILES:%.c=$(BUILD_DIR)/%.o)
|
|
|
|
DEP_FILE = $(OBJ_FILES:%.o=%.d)
|
|
|
|
${BIN} : $(BUILD_DIR)/$(BIN)
|
|
|
|
${BUILD_DIR}/${BIN} : ${OBJ_FILES}
|
|
-mkdir -p ${@D}
|
|
$(CC) $^ ${LDFLAGS} -o $@
|
|
|
|
-include ${DEP_FILE}
|
|
|
|
${BUILD_DIR}/%.o : %.c Makefile
|
|
-mkdir -p $(@D)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -c $< -o $@
|
|
|
|
.PHONY: clean
|
|
|
|
clean:
|
|
-rm -rf $(BUILD_DIR)
|
|
|
|
|
|
GPROF_OPTIONS := --directory-path=$(INCLUDE_DIRS)
|
|
profile:
|
|
gprof -a -p --all-lines $(GPROF_OPTIONS) $(BUILD_DIR)/$(BIN) $(BUILD_DIR)/gmon.out > $(BUILD_DIR)/prof_flat.txt
|
|
gprof -a --graph $(GPROF_OPTIONS) $(BUILD_DIR)/$(BIN) $(BUILD_DIR)/gmon.out > $(BUILD_DIR)/prof_call_graph.txt
|
|
|