#
#    Copyright (c) 2012 Nest Labs, Inc.
#    All rights reserved.
#
#    This document is the property of Nest. It is considered
#    confidential and proprietary information.
#
#    This document may not be reproduced or transmitted in any form,
#    in whole or in part, without the express written permission of
#    Nest.
#
#    Description:
#      This file...
#

include pre.mak

# Check to make sure that $(PackageSourceDir) was properly set.

ifeq ($(BUILD_FEATURE_FREERTOS),1)

FreeRTOSSourceDir	= repo/FreeRTOSV7.2.0/FreeRTOS/Source

# Tell make where to find the archive source files.

VPATH			= $(FreeRTOSSourceDir) \
			  $(FreeRTOSSourceDir)/portable/MemMang \
			  $(FreeRTOSSourceDir)/portable/$(FreeRTOSToolChainName)/$(FreeRTOSTargetName)

kernel_INCLUDES		= repo/configs/$(BuildProduct) \
			  $(FreeRTOSSourceDir)/include \
			  $(FreeRTOSSourceDir)/portable/$(FreeRTOSToolChainName)/$(FreeRTOSTargetName) \

ARCHIVES		= kernel

kernel_SOURCES		= croutine.c	\
			  list.c	\
			  queue.c	\
			  tasks.c	\
			  timers.c	\
			  port.c	\
			  semphr.c	\
			  static-allocator.c \
			  init.c

ifeq ($(FreeRTOSTargetName),Posix)
	kernel_SOURCES += \
		heap_posix.c
endif

ifeq ($(FreeRTOSTargetName),ARM_CM3)
	kernel_SOURCES += \
		heap_error.c
	kernel_DEFINES += PORTABLE_ARCH_ARM_CM3=1
endif

ifeq ($(FreeRTOSTargetName),ARM_CM3_KXX)
	kernel_SOURCES += \
		heap_error.c
	kernel_DEFINES += PORTABLE_ARCH_ARM_CM3=1
endif

endif # BUILD_FEATURE_FREERTOS

include post.mak
