summaryrefslogtreecommitdiff
path: root/FreeRTOS/Demo/WIN32-MingW/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS/Demo/WIN32-MingW/Makefile')
-rw-r--r--FreeRTOS/Demo/WIN32-MingW/Makefile148
1 files changed, 148 insertions, 0 deletions
diff --git a/FreeRTOS/Demo/WIN32-MingW/Makefile b/FreeRTOS/Demo/WIN32-MingW/Makefile
new file mode 100644
index 000000000..45cbe0db5
--- /dev/null
+++ b/FreeRTOS/Demo/WIN32-MingW/Makefile
@@ -0,0 +1,148 @@
+# Build directory
+BUILD_DIR := ./build
+
+# Compiler - Note this expects you are using MinGW version of GCC
+CC := gcc
+CFLAGS := -O0 -g3 -Wall -Wextra -c -fmessage-length=0 -Wcast-qual -D_WIN32_WINNT=0x0601
+
+ifeq ($(COVERAGE_TEST),1)
+ CFLAGS += -DprojCOVERAGE_TEST=1
+else
+ CFLAGS += -DprojCOVERAGE_TEST=0
+endif
+
+# Linker - Note this expects you are using MinGW version of GCC
+LD := gcc
+LDFLAGS := -Xlinker -Map=$(BUILD_DIR)/rtosdemo.map
+
+# Executable Targets
+EXE := $(BUILD_DIR)/RTOSDemo.exe
+
+# FreeRTOS Kernel
+FREERTOS_KERNEL_DIR := $(abspath ../../Source)
+FREERTOS_KERNEL_INCLUDES :=
+FREERTOS_KERNEL_SOURCES :=
+FREERTOS_KERNEL_INCLUDE_DIRS :=
+FREERTOS_KERNEL_OBJS :=
+FREERTOS_KERNEL_BUILD_DIR := $(BUILD_DIR)/FreeRTOS-Kernel
+
+## FreeRTOS Kernel includes
+FREERTOS_KERNEL_INCLUDES += $(wildcard $(FREERTOS_KERNEL_DIR)/include/*.h)
+FREERTOS_KERNEL_INCLUDE_DIRS += -I $(FREERTOS_KERNEL_DIR)/include
+
+## FreeRTOS Kernel sources
+FREERTOS_KERNEL_SOURCES += $(wildcard $(FREERTOS_KERNEL_DIR)/*.c)
+FREERTOS_KERNEL_SOURCES += $(FREERTOS_KERNEL_DIR)/portable/MemMang/heap_5.c
+
+## FreeRTOS Kernel Windows port includes
+FREERTOS_KERNEL_INCLUDES += $(FREERTOS_KERNEL_DIR)/portable/MSVC-MingW/portmacro.h
+FREERTOS_KERNEL_INCLUDE_DIRS += -I $(FREERTOS_KERNEL_DIR)/portable/MSVC-MingW
+
+## FreeRTOS Kernel Windows port sources
+FREERTOS_KERNEL_SOURCES += $(FREERTOS_KERNEL_DIR)/portable/MSVC-MingW/port.c
+
+## FreeRTOS Kernel configuration includes
+FREERTOS_KERNEL_INCLUDES += ./FreeRTOSConfig.h
+FREERTOS_KERNEL_INCLUDE_DIRS += -I .
+
+# FreeRTOS Kernel objects
+FREERTOS_KERNEL_SOURCES_NAMES :=$(notdir $(FREERTOS_KERNEL_SOURCES))
+FREERTOS_KERNEL_OBJS := $(FREERTOS_KERNEL_SOURCES_NAMES:%.c=$(FREERTOS_KERNEL_BUILD_DIR)/%.o)
+
+# Trace Recorder
+FREERTOS_PLUS_TRACE_DIR := $(abspath ../../../FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace)
+FREERTOS_PLUS_TRACE_INCLUDES :=
+FREERTOS_PLUS_TRACE_SOURCES :=
+FREERTOS_PLUS_TRACE_INCLUDE_DIRS :=
+FREERTOS_PLUS_TRACE_OBJS :=
+FREERTOS_PLUS_TRACE_BUILD_DIR := $(BUILD_DIR)/FreeRTOS-Plus-Trace
+
+## Trace Recorder includes
+FREERTOS_PLUS_TRACE_INCLUDES += $(wildcard $(FREERTOS_PLUS_TRACE_DIR)/Include/*.h)
+FREERTOS_PLUS_TRACE_INCLUDE_DIRS += -I $(FREERTOS_PLUS_TRACE_DIR)/Include
+
+## Trace Recorder sources
+FREERTOS_PLUS_TRACE_SOURCES += $(wildcard $(FREERTOS_PLUS_TRACE_DIR)/*.c)
+
+## Trace Recorder configuration includes
+FREERTOS_PLUS_TRACE_INCLUDES += $(wildcard ./Trace_Recorder_Configuration/*.h)
+FREERTOS_PLUS_TRACE_INCLUDE_DIRS += -I ./Trace_Recorder_Configuration
+
+# Trace Recoder objects
+FREERTOS_PLUS_TRACE_SOURCES_NAMES :=$(notdir $(FREERTOS_PLUS_TRACE_SOURCES))
+FREERTOS_PLUS_TRACE_OBJS := $(FREERTOS_PLUS_TRACE_SOURCES_NAMES:%.c=$(FREERTOS_PLUS_TRACE_BUILD_DIR)/%.o)
+
+# Demos
+FREERTOS_DEMOS_DIR := $(abspath ../Common/Minimal)
+FREERTOS_DEMOS_INCLUDES :=
+FREERTOS_DEMOS_SOURCES :=
+FREERTOS_DEMOS_INCLUDE_DIRS :=
+FREERTOS_DEMOS_OBJS :=
+FREERTOS_DEMOS_BUILD_DIR := $(BUILD_DIR)/FreeRTOS-Demos
+
+## Demos includes
+FREERTOS_DEMOS_INCLUDES := $(wildcard $(FREERTOS_DEMOS_DIR)/../include/*.h)
+FREERTOS_DEMOS_INCLUDE_DIRS := -I $(FREERTOS_DEMOS_DIR)/../include
+
+## Demos sources
+FREERTOS_DEMOS_SOURCES += $(wildcard $(FREERTOS_DEMOS_DIR)/*.c)
+
+### Filter out unsupported demos
+FREERTOS_DEMOS_SOURCES := $(filter-out $(FREERTOS_DEMOS_DIR)/comtest_strings.c, $(FREERTOS_DEMOS_SOURCES))
+FREERTOS_DEMOS_SOURCES := $(filter-out $(FREERTOS_DEMOS_DIR)/comtest.c, $(FREERTOS_DEMOS_SOURCES))
+FREERTOS_DEMOS_SOURCES := $(filter-out $(FREERTOS_DEMOS_DIR)/flash_timer.c, $(FREERTOS_DEMOS_SOURCES))
+FREERTOS_DEMOS_SOURCES := $(filter-out $(FREERTOS_DEMOS_DIR)/flash.c, $(FREERTOS_DEMOS_SOURCES))
+FREERTOS_DEMOS_SOURCES := $(filter-out $(FREERTOS_DEMOS_DIR)/IntQueue.c, $(FREERTOS_DEMOS_SOURCES))
+FREERTOS_DEMOS_SOURCES := $(filter-out $(FREERTOS_DEMOS_DIR)/recmutex.c, $(FREERTOS_DEMOS_SOURCES))
+FREERTOS_DEMOS_SOURCES += ./DemosModifiedForLowTickRate/recmutex.c
+FREERTOS_DEMOS_SOURCES := $(filter-out $(FREERTOS_DEMOS_DIR)/sp_flop.c, $(FREERTOS_DEMOS_SOURCES))
+FREERTOS_DEMOS_SOURCES := $(filter-out $(FREERTOS_DEMOS_DIR)/TaskNotifyArray.c, $(FREERTOS_DEMOS_SOURCES))
+
+## Demos objects
+FREERTOS_DEMOS_SOURCES_NAMES :=$(notdir $(FREERTOS_DEMOS_SOURCES))
+FREERTOS_DEMOS_OBJS := $(FREERTOS_DEMOS_SOURCES_NAMES:%.c=$(FREERTOS_DEMOS_BUILD_DIR)/%.o)
+
+# Main
+MAIN_DIR := .
+MAIN_INCLUDES :=
+MAIN_SOURCES :=
+MAIN_INCLUDE_DIRS :=
+MAIN_BUILD_DIR := $(BUILD_DIR)/main
+
+## Main includes
+
+## Main sources
+MAIN_SOURCES += $(wildcard $(MAIN_DIR)/*.c)
+
+## Main objects
+MAIN_SOURCES_NAMES :=$(notdir $(MAIN_SOURCES))
+MAIN_OBJS := $(MAIN_SOURCES_NAMES:%.c=$(MAIN_BUILD_DIR)/%.o)
+
+$(EXE) : $(MAIN_OBJS) $(FREERTOS_KERNEL_OBJS) $(FREERTOS_DEMOS_OBJS) $(FREERTOS_PLUS_TRACE_OBJS)
+ $(LD) $(LDFLAGS) -o $@ $^ -lwinmm
+
+# Main objects rules
+$(MAIN_OBJS): %.o: $(MAIN_SOURCES) $(MAIN_INCLUDES) $(FREERTOS_KERNEL_INCLUDES) $(FREERTOS_PLUS_TRACE_INCLUDES) $(FREERTOS_DEMOS_INCLUDES)
+ mkdir -p $(@D)
+ $(CC) $(CFLAGS) $(FREERTOS_KERNEL_INCLUDE_DIRS) $(FREERTOS_PLUS_TRACE_INCLUDE_DIRS) $(FREERTOS_DEMOS_INCLUDE_DIRS) -o $@ $(filter %$(notdir $(patsubst %.o, %.c, $@)), $^)
+
+# FreeRTOS Kernel objects rules
+$(FREERTOS_KERNEL_OBJS): %.o: $(FREERTOS_KERNEL_SOURCES) $(FREERTOS_KERNEL_INCLUDES) $(FREERTOS_PLUS_TRACE_INCLUDES)
+ mkdir -p $(@D)
+ $(CC) $(CFLAGS) $(FREERTOS_KERNEL_INCLUDE_DIRS) $(FREERTOS_PLUS_TRACE_INCLUDE_DIRS) -o $@ $(filter %$(notdir $(patsubst %.o, %.c, $@)), $^)
+
+# FreeRTOS Demos objects rules
+$(FREERTOS_DEMOS_OBJS): %.o: $(FREERTOS_DEMOS_SOURCES) $(FREERTOS_DEMOS_INCLUDES) $(FREERTOS_KERNEL_INCLUDES) $(FREERTOS_PLUS_TRACE_INCLUDES)
+ mkdir -p $(@D)
+ $(CC) $(CFLAGS) $(FREERTOS_DEMOS_INCLUDE_DIRS) $(FREERTOS_KERNEL_INCLUDE_DIRS) $(FREERTOS_PLUS_TRACE_INCLUDE_DIRS) -o $@ $(filter %$(notdir $(patsubst %.o, %.c, $@)), $^)
+
+# Trace Recorder object filess
+$(FREERTOS_PLUS_TRACE_OBJS): %.o: $(FREERTOS_PLUS_TRACE_SOURCES) $(FREERTOS_PLUS_TRACE_INCLUDES) $(FREERTOS_KERNEL_INCLUDES)
+ mkdir -p $(@D)
+ $(CC) $(CFLAGS) $(FREERTOS_PLUS_TRACE_INCLUDE_DIRS) $(FREERTOS_KERNEL_INCLUDE_DIRS) -o $@ $(filter %$(notdir $(patsubst %.o, %.c, $@)), $^)
+
+# Clean rule
+clean:
+ rm -rf $(BUILD_DIR)
+
+