99 lines
2.4 KiB
Makefile
99 lines
2.4 KiB
Makefile
|
### 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
|
||
|
|