128 lines
2.6 KiB
Makefile
128 lines
2.6 KiB
Makefile
# ######## Build options ########
|
|
|
|
verbose = 0
|
|
|
|
######## Build setup ########
|
|
|
|
# SRCROOT should always be the current directory
|
|
SRCROOT = $(CURDIR)
|
|
|
|
# .o directory
|
|
ODIR = obj
|
|
|
|
# Source VPATHS
|
|
VPATH += $(SRCROOT)/Source
|
|
VPATH += $(SRCROOT)/Source/portable/MemMang
|
|
VPATH += $(SRCROOT)/Source/portable/GCC/POSIX
|
|
VPATH += $(SRCROOT)/Project/FileIO
|
|
VPATH += $(SRCROOT)/Project
|
|
|
|
# FreeRTOS Objects
|
|
C_FILES += croutine.c
|
|
C_FILES += event_groups.c
|
|
C_FILES += list.c
|
|
C_FILES += queue.c
|
|
C_FILES += tasks.c
|
|
C_FILES += timers.c
|
|
|
|
# portable Objects
|
|
C_FILES += heap_3.c
|
|
C_FILES += port.c
|
|
|
|
|
|
# Main Object
|
|
C_FILES += demo.c
|
|
C_FILES += nodes.c
|
|
|
|
|
|
|
|
# Include Paths
|
|
INCLUDES += -I$(SRCROOT)/Source/include
|
|
INCLUDES += -I$(SRCROOT)/Source/portable/GCC/POSIX/
|
|
INCLUDES += -I$(SRCROOT)/Project
|
|
|
|
# Generate OBJS names
|
|
OBJS = $(patsubst %.c,%.o,$(C_FILES))
|
|
|
|
######## C Flags ########
|
|
|
|
# Warnings
|
|
CWARNS += -W
|
|
CWARNS += -Wall
|
|
CWARNS += -Werror
|
|
CWARNS += -Wextra
|
|
CWARNS += -Wformat
|
|
CWARNS += -Wmissing-braces
|
|
CWARNS += -Wno-cast-align
|
|
CWARNS += -Wparentheses
|
|
CWARNS += -Wshadow
|
|
CWARNS += -Wno-sign-compare
|
|
CWARNS += -Wswitch
|
|
CWARNS += -Wuninitialized
|
|
CWARNS += -Wunknown-pragmas
|
|
CWARNS += -Wunused-function
|
|
CWARNS += -Wunused-label
|
|
CWARNS += -Wunused-parameter
|
|
CWARNS += -Wunused-value
|
|
CWARNS += -Wunused-variable
|
|
#CWARNS += -Wmissing-prototypes
|
|
|
|
#CWARNS += -Wno-unused-function
|
|
|
|
CFLAGS += -m32
|
|
CFLAGS += -DDEBUG=1
|
|
#CFLAGS += -g -DUSE_STDIO=1 -D__GCC_POSIX__=1
|
|
CFLAGS += -g -UUSE_STDIO -D__GCC_POSIX__=1
|
|
ifneq ($(shell uname), Darwin)
|
|
CFLAGS += -pthread
|
|
endif
|
|
|
|
# MAX_NUMBER_OF_TASKS = max pthreads used in the POSIX port.
|
|
# Default value is 64 (_POSIX_THREAD_THREADS_MAX), the minimum number required by POSIX.
|
|
CFLAGS += -DMAX_NUMBER_OF_TASKS=300
|
|
|
|
CFLAGS += $(INCLUDES) $(CWARNS) -O2
|
|
|
|
######## Makefile targets ########
|
|
|
|
# Rules
|
|
.PHONY : all
|
|
all: setup FreeRTOS-Demo
|
|
|
|
.PHONY : setup
|
|
setup:
|
|
# Make obj directory
|
|
@mkdir -p $(ODIR)
|
|
|
|
# Fix to place .o files in ODIR
|
|
_OBJS = $(patsubst %,$(ODIR)/%,$(OBJS))
|
|
|
|
$(ODIR)/%.o: %.c
|
|
# If verbose, print gcc execution, else hide
|
|
ifeq ($(verbose),1)
|
|
@echo ">> Compiling $<"
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
else
|
|
@echo ">> Compiling $(notdir $<)"
|
|
@$(CC) $(CFLAGS) -c -o $@ $<
|
|
endif
|
|
|
|
FreeRTOS-Demo: $(_OBJS)
|
|
@echo ">> Linking $@..."
|
|
ifeq ($(verbose),1)
|
|
$(CC) $(CFLAGS) $^ $(LINKFLAGS) $(LIBS) -o $@
|
|
else
|
|
@$(CC) $(CFLAGS) $^ $(LINKFLAGS) $(LIBS) -o $@
|
|
endif
|
|
|
|
@echo "-------------------------"
|
|
@echo "BUILD COMPLETE: $@"
|
|
@echo "-------------------------"
|
|
|
|
.PHONY : clean
|
|
clean:
|
|
@-rm -rf $(ODIR) FreeRTOS-Demo
|
|
@echo "--------------"
|
|
@echo "CLEAN COMPLETE"
|
|
@echo "--------------"
|