# Makefile - makefile for target/src/wind
#
# Copyright (c) 1996, 2001, 2003-2011, 2013,2016 Wind River Systems, Inc.
#
# The right to copy, distribute, modify or otherwise make use
# of this software may be licensed only pursuant to the terms
# of an applicable Wind River license agreement.
#
# modification history
# --------------------
# 03b,25apr16,jmp  Import task stop and cont hooks support from vxWorks 7 for
#                  WB4 debug agent support.
# 03a,30oct13,cww  Merged in semRWMinLib.o
# 02z,13jul11,rec  move power management files to src/hwif/pwr
# 02y,19nov10,rec  add odgPolicyMgrLib
# 03a,31aug10,kk   remove the use of CUSTOM_SEMAPHORE_TYPES
# 02z,28may10,pch  small footprint
# 02y,26may10,rec  add cpuPwrFuncBind.o
# 02x,28apr10,jpb  Added taskPxFuncBind.
# 02w,08apr10,jpb  Added func bind objects
# 02v,25feb10,rec  ACPI power management support
# 02u,12may09,gls  added semULib.c for SMP
# 02t,11nov08,jpb  isrLib.o only built if _WRS_CONFIG_OBJECT_CLASS_LIST
#		   included.
# 02s,06jul08,gls  removed minimal semaphore libraries
# 02r,01jul08,jpb  Added vsb support.
# 02q,10mar08,p_r  remove readyQAbsLib.o
# 02p,03mar08,zl   moved readyQAbsLib.c to subfolder
# 02o,12feb08,zl   added readyQAbsLib for SMP
# 02p,07jan08,gls  fast semaphores renamed to minimal semaphores
# 02o,21nov07,gls  added semMFastLib and semBFastLib
#	           added semMFastCreateLib and semBFastCreateLib
# 02n,30aug07,kk   remove deprecated library semOLib.c, removed 
#                  non-existing smpLockLib.o
# 02m,04jun07,gls  added semExchange.o
# 02l,06jun07,lei  removed taskAbsSym.o
# 02k,11may07,gls  added taskToolsUtilLib.o
# 02j,06apr07,zl   added taskListLib.
# 02i,15mar07,kk   fixed typo for wdShow in DOC_FILES
# 02h,02feb07,gls  added semRWLib.o, semRWCreateLib.o, and windSemRWLib.o
# 02g,08jan07,jmg  Added rotateTask.c (Req. WIND00071010).
# 02f,05sep06,lei  build smpLockLib.o if TYPE_II_SPINLOCK not used for SMP. 
# 02e,17jul06,zl   added kernelData.o for SMP build.
# 02d,20apr06,lei  added smpLockLib.o for SMP 
# 02c,25may06,jln  added pxSSThreadLib.o
# 02b,06mar06,jln  rename pxCpuTimeLib.o to pxCpuTimerLib.o
# 02a,26jan06,jln  added pxCpuTimeLib.o
# 01z,14oct05,mmi  mods for DOC_FILES entries to .c
# 01y,12oct05,mmi  add light power manager
# 01x,13sep05,jln  diable size-opt compilation for DIAB builds for
#                  critical objects
# 01w,09sep05,jln  added taskAbsSym.o
# 01v,31aug05,gls  added taskUtilLib.o
# 01u,16aug05,jln  removed roundRobinLib.o
# 01t,06aug05,jln  Added roundRobinLib.o 
# 01s,01aug05,yvp  Added newly created files (sem/msgQ/wd create/delete).
# 01r,04jul05,jln  Added taskPxLib.o
# 01q,14mar05,yvp  Added taskRestart.o taskCreateLib.o
#                  Removed semObjAlloc.o
# 01p,20jan05,yvp  Added semObjAlloc.o
# 01o,26oct04,fr   added msgQOpen, semOpen, and taskOpen (SPR 101491)
# 01n,01sep04,fr   added semInfo (SPR 100038)
# 01m,05may04,lei  added msgQInfo.[co]
# 01l,04feb04,pch  remove PPC32 hack, no longer needed
# 01k,02dec03,bwa  removed all MsgC/S references
# 01j,31oct03,pcs  Move taskInfo.o to VX_CPU_FAMILY ppc dependant.
# 01i,21aug03,dcc  added windScLib.o to the list of generated objects.
# 01h,31jan03,pch  Add PPC32 support
# 01g,11jun03,bwa  Added msgC* and msgS* references.
# 01f,05jun03,rec  Power management, added windPwrLib
# 01e,15nov01,aeg  added eventShow.o to OBJS
# 01d,31oct01,mas  moved semSm*, msgQSm* to target/src/vxmp/wind
# 01c,04sep01,bwa  Added eventLib.[co], semEvLib.[co] and msgQEvLib.[co]
# 01b,06aug01,mem  Build support for new runtime arrangement
# 01a,17aug96,yp   derived from 01g of MakeSkel
#
# DESCRIPTION
# This file contains the makefile rules for building the vx library
#
#*/

TGT_DIR=$(WIND_BASE)/target

LIB_BASE_NAME   = wind

# Including defs.library to see if _WRS_CONFIG_XXX is defined.
# It must be after LIB_BASE_NAME
include $(TGT_DIR)/h/make/defs.library

DOC_FILES=	eventLib.c kernelLib.c \
                msgQEvLib.c msgQInfo.c msgQLib.c msgQOpen.c msgQShow.c \
		semBLib.c semCLib.c semEvLib.c semExchange.c semInfo.c \
		semLib.c semMLib.c semOpen.c semRWLib.c semShow.c \
		taskInfo.c taskLib.c taskOpen.c taskRotate.c taskShow.c \
		taskUtilLib.c tickLib.c wdLib.c wdShow.c \
		isrLib.c isrShow.c 

OBJS=	eventFuncBind.o eventLib.o eventShow.o isrLib.o kernelLib.o    \
        msgQCreateLib.o msgQLib.o msgQEvLib.o msgQInfo.o  \
	msgQShow.o odgPolicyMgrLib.o pxSSThreadLib.o schedLib.o semBLib.o \
	semCLib.o semInfo.o \
 	semLib.o semMLib.o semRWLib.o semRWMinLib.o semShow.o \
	semBCreateLib.o semCCreateLib.o semEvLib.o semExchange.o \
	semMCreateLib.o semRWCreateLib.o \
	taskInfo.o taskCreateLib.o taskLib.o taskListLib.o taskPxFuncBind.o \
	taskRotate.o taskShow.o \
	taskUtilLib.o tickLib.o wdCreateLib.o wdLib.o wdShow.o windFuncBind.o \
	windLib.o windRotate.o windSemRWLib.o workQLib.o 

# no point in building these w/ MEM_ALLOT -- they require memory management
ifndef _WRS_CONFIG_MEM_ALLOT
OBJS+=	pxCpuTimerLib.o semDeleteLib.o taskPxLib.o taskRestartLib.o
endif

ifdef _WRS_CONFIG_OBJECT_CLASS_LIST
OBJS+= isrShow.o msgQOpen.o semOpen.o taskOpen.o   
endif

ifdef _WRS_CONFIG_SMP
OBJS+= kernelData.o taskToolsUtilLib.o
ifdef _WRS_CONFIG_RTP
OBJS+= semULib.o
endif
else
EXCLUDE_SUBDIRS = readyq
endif

ifdef _WRS_CONFIG_RTP
OBJS+= windScLib.o
endif

ifdef _WRS_CONFIG_TASK_STOP_HOOKS
OBJS+= taskStopHookLib.o
endif

include $(TGT_DIR)/h/make/rules.library

# The following kernel critical objects are built with size optimization off
# for DIAB builds for better performance, but with the tradeoff of potentially
# having an increase in code size for the objects.
                                                                                                           
ifeq ($(TOOL_FAMILY),diab)
CFLAGS_eventLib.o              = -Xsize-opt=0
CFLAGS_isrLib.o                = -Xsize-opt=0
CFLAGS_kernelLib.o             = -Xsize-opt=0
CFLAGS_msgQCreateLib.o         = -Xsize-opt=0
CFLAGS_msgQLib.o               = -Xsize-opt=0
CFLAGS_msgQEvLib.o             = -Xsize-opt=0
CFLAGS_pxCpuTimerLib.o         = -Xsize-opt=0
CFLAGS_pxSSThreadLib.o         = -Xsize-opt=0
CFLAGS_schedLib.o              = -Xsize-opt=0
CFLAGS_semBLib.o               = -Xsize-opt=0
CFLAGS_semCLib.o               = -Xsize-opt=0
CFLAGS_semDeleteLib.o          = -Xsize-opt=0
CFLAGS_semEvLib.o              = -Xsize-opt=0
CFLAGS_semLib.o                = -Xsize-opt=0
CFLAGS_semMLib.o               = -Xsize-opt=0
CFLAGS_semBCreateLib.o         = -Xsize-opt=0
CFLAGS_semCCreateLib.o         = -Xsize-opt=0
CFLAGS_semMCreateLib.o         = -Xsize-opt=0
CFLAGS_semRWMinLib.o           = -Xsize-opt=0
CFLAGS_taskCreateLib.o         = -Xsize-opt=0
CFLAGS_taskLib.o               = -Xsize-opt=0
CFLAGS_taskListLib.o           = -Xsize-opt=0
CFLAGS_taskPxLib.o             = -Xsize-opt=0
CFLAGS_taskRestartLib.o        = -Xsize-opt=0
CFLAGS_taskUtilLib.o           = -Xsize-opt=0
CFLAGS_tickLib.o               = -Xsize-opt=0
CFLAGS_wdCreateLib.o           = -Xsize-opt=0
CFLAGS_wdLib.o                 = -Xsize-opt=0
CFLAGS_windLib.o               = -Xsize-opt=0
CFLAGS_workQLib.o              = -Xsize-opt=0
endif
