### 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