### Makefile to build the FreeRTOS library ### | |
# Build target (options: sim, board) | |
TARGET = sim | |
SMALL = | |
# Tools | |
CC = xt-xcc | |
AS = xt-xcc | |
AR = xt-ar | |
XT_CORE = $(patsubst %-params,%,$(notdir $(shell xt-xcc --show-config=core))) | |
CONFIGDIR = $(shell xt-xcc --show-config=config) | |
# For platform-specific commands | |
include $(CONFIGDIR)/misc/hostenv.mk | |
# Source code and build locations | |
SRCROOT = $(subst /,$(S),$(CURDIR)) | |
TSTROOT = $(abspath $(SRCROOT)$(S)..$(S)..$(S)..$(S)..$(S)..$(S)demos$(S)cadence$(S)sim$(SMALL)) | |
BLDROOT = $(TSTROOT)$(S)build | |
BLDDIR = $(BLDROOT)$(S)$(XT_CORE) | |
FR_SRCDIR = $(abspath $(SRCROOT)$(S)..$(S)..$(S)..) | |
FR_SRCDIR2 = $(FR_SRCDIR)$(S)portable$(S)MemMang | |
XT_SRCDIR = $(SRCROOT) | |
vpath %.c $(FR_SRCDIR) $(FR_SRCDIR2) $(XT_SRCDIR) | |
vpath %.S $(XT_SRCDIR) | |
# File lists | |
FR_C_FILES = $(notdir $(wildcard $(FR_SRCDIR)/*.c)) $(notdir $(wildcard $(FR_SRCDIR2)/*.c)) | |
XT_C_FILES = $(notdir $(wildcard $(XT_SRCDIR)/*.c)) | |
XT_S_FILES = $(notdir $(wildcard $(XT_SRCDIR)/*.S)) | |
# List of all .o files that will go into the library | |
LIB_C_O = $(patsubst %.c,%.o,$(XT_C_FILES) $(FR_C_FILES)) | |
LIB_S_O = $(patsubst %.S,%.o,$(XT_S_FILES)) | |
LIB_O_LIST = $(addprefix $(BLDDIR)/,$(LIB_C_O) $(LIB_S_O)) | |
# Output files | |
OSLIB = $(BLDDIR)$(S)libfreertos.a | |
# Build options | |
ifeq ($(TARGET),sim) | |
DFLAGS = -DXT_SIMULATOR | |
endif | |
ifeq ($(TARGET),board) | |
DFLAGS = -DXT_BOARD | |
endif | |
IFLAGS = \ | |
-I$(FR_SRCDIR)$(S)..$(S)include -I$(FR_SRCDIR)$(S)..$(S)include$(S)private \ | |
-I$(XT_SRCDIR) -I$(TSTROOT)$(S)common$(S)config_files -I$(BLDDIR) | |
CFLAGS = -O2 -g | |
CCFLAGS = $(CFLAGS) -Wall -mno-coproc -mlongcalls -ffunction-sections -mno-l32r-flix $(DFLAGS) | |
ASFLAGS = $(CCFLAGS) | |
# Include dependency rules (generated using -MD) | |
-include $(wildcard $(BLDDIR)/*.d) | |
# Targets | |
all : mkdir $(OSLIB) | |
mkdir : $(BLDDIR)/.mkdir | |
$(BLDDIR)/.mkdir : | |
@$(MKPATH) $(BLDDIR) | |
@echo "" > $@ | |
-$(CP) $(CONFIGDIR)/xtensa-elf/include/sys/reent.h $(BLDDIR)/reent.h | |
$(OSLIB) : $(LIB_O_LIST) | |
$(AR) -rs $@ $^ | |
$(BLDDIR)/%.o : %.c | |
$(CC) $(CCFLAGS) $(IFLAGS) -MD -MF $(subst .o,.d,$@) -c -o $@ $< | |
$(BLDDIR)/%.o : %.S | |
$(CC) $(ASFLAGS) $(IFLAGS) -MD -MF $(subst .o,.d,$@) -c -o $@ $< | |
clean : | |
$(RM_R) $(BLDDIR) | |
clean_all : | |
$(RM_R) $(BLDROOT) | |
.PHONY : all mkdir clean clean_all | |