#******************************************************************************
#
# Makefile - Rules for building the FreeRTOS Library.
#
#  Copyright (C) 2014 Texas Instruments Incorporated - http:#www.ti.com/
#
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions
#  are met:
#
#    Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#    Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the
#    distribution.
#
#    Neither the name of Texas Instruments Incorporated nor the names of
#    its contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#*****************************************************************************

include ../../tools/gcc_scripts/makedefs_ti_rtos

#******************************************************************************
#
# Object File directory.
#
#******************************************************************************
OBJDIR?=obj

#******************************************************************************
#
#OutPut directory
#
#******************************************************************************
BINDIR?=exe

#
# Where to find source files that do not live in this directory.
#
VPATH=..

###### recursive wildcard function #######
rwildcard=$(wildcard $1$2) $(foreach d, $(wildcard $1*),$(call rwildcard,$d/,$2))

###### returns all sources in examples directory ######
SOURCES   = ../osi_tirtos.c
ASM_FILES = $(wildcard *.asm)

###### returns all directories except one generated by configuro ######
DIRS = $(filter-out $(NAME)/, $(wildcard */))

###### recursively find all sources in every returned directory ######
SOURCES   += $(foreach d, $(DIRS),$(call rwildcard,$(d),*.c))
ASM_FILES += $(foreach d, $(DIRS),$(call rwildcard,$(d),*.asm))


###### return list of .obj's from all .c's ######
OBJECTS  = $(patsubst %.c, ${OBJDIR}/osi_tirtos.obj, ../osi_tirtos.c)
OBJECTS += $(patsubst %.asm, %.obj, $(ASM_FILES))

###### return example's name #######
NAME = libtirtos

###### Extend compiler options here ######

CFLAGS += 

OTHERPROJECT = ../../ti_rtos/ti_rtos_config/gcc/configPkg
###### Extend linker options here ######
LFLAGS =  -mcpu=cortex-m4 -march=armv7e-m -mthumb -mfloat-abi=soft -Wl,-T,$(OTHERPROJECT)/linker.cmd  -lgcc -lc -lm -lrdimon 

.PRECIOUS: %/compiler.opt %/linker.cmd


#
# The default rule, which causes the driver library to be built.
#
all: ${OBJDIR} ${BINDIR} \
     ${BINDIR}/$(NAME).a

#
# The rule to create the target directories.
#
${OBJDIR}:
	@mkdir -p ${OBJDIR}

${BINDIR}:
	@mkdir -p ${BINDIR}


${OBJDIR}/%.obj : %.c
${OBJDIR}/%.obj : %.asm


${OBJDIR}/%.obj: %.c
	@ echo Building $@
	@ echo @ $(CC)  $(CFLAGS) $<  -c @$(OTHERPROJECT)/compiler.opt -o $@
	@ $(CC)  $(CFLAGS) $<  -c @$(OTHERPROJECT)/compiler.opt -o $@
	

${OBJDIR}/%.obj: %.asm
	@ echo Building $@
	@ $(CC)  $(CFLAGS) $<  -c @$(OTHERPROJECT)/compiler.opt -o $@

${BINDIR}/$(NAME).a: $(OBJECTS)
	 @ echo linking...
	 @ ${AR} -cr ${BINDIR}/$(NAME).a $(OBJECTS)
	
#
# The rule to clean out all the build products.
#
clean:
	@rm -rf ${OBJDIR} ${wildcard *~}
	