# Makefile - makefile for target/src/os
#
# Copyright (c) 1996, 1998, 2000-2001, 2003-2012 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    
# --------------------
# 05y,05sep12,cww  added hookTblLib
# 05x,02aug12,jpb  Added objSymLib.o
# 05w,08jun11,zl   added jitterLib
# 05v,17dec10,pch  CQ244631: build os/io/ioFuncBind for small footprint
# 05u,27oct10,kk   remove use of _WRS_CONFIG_SM_OBJ usage
# 05t,11oct10,swg  prevent building smLib.c and smPktLib.c under 64bit mode
# 05s,21sep10,jpb  Added excFuncBind.c
# 05r,31aug10,jpb  Add function file objects.
# 05q,18aug10,pad  Removed scsi objects from LP64 build. Removed obsolete,
#		   unused and unsupported memLogLib.
# 05p,29jul10,kk   added objRtpLib to DOCS
# 05o,26may10,jpb  Update _WRS_CONFIG_RTP conditional
# 05n,18feb10,pch  small footprint
# 05m,12apr10,jpb  Added logFuncBind
# 05l,02mar10,zl   re-added taskVarLib for 64-bit
# 05k,22mar10,cww  Include rtp subdir irrespective of _WRS_CONFIG_RTP for
#		   rtpFuncBind.o (WIND00202501)
# 05j,27jan10,d_c  SMP M-N Update: add cpuset.o to OBJS_COMMON.
# 05i,07dec09,jpb  Removed taskVarLib for LP64 builds.
# 05h,18sep09,cww  Add sigFuncBind.o
# 05g,05jun09,cww  Added coprocFuncBind.o
# 05f,27mar09,zl   added jobTaskLib.o
# 05e,03nov08,jpb  Removed objOwnerOpen.o.
# 05d,27aug08,gls  divided taskHookLib.c
# 05c,31jul08,kk   remove shared memory files if _WRS_CONFIG_SM_OBJ is not
#		   defined
# 05b,01jul08,jpb  Added vsb support.
# 05a,11mar08,mfj  Added _WRS_CONFIG flags, renamed _WRS_LITE _WRS_CONFIG_LITE.
# 04z,27feb08,mfj  Adding _WRS_LITE flag (Temp workaround, waiting for source
#		   build system which will replace it)		
# 04y,06sep07,mmi  remove OBJS_XX variable not required
# 04x,16aug07,pch  remove taskVarLib from SMP build
# 04w,10aug07,dlk  Moved spin lock / kernel lock files to target/src/os/lock/.
# 04v,10aug07,mmi  define splDbg library in SMP mode only
# 04u,30jul07,h_k  removed scsi objects from SMP.
# 04t,26jun07,mze  only build smLib.o smPktLib.o if not SMP
# 04s,26apr07,pee  removed duplicate spinLockUpLib.o
# 04r,06apr07,zl   added classListLib and objInfo
# 04q,03apr07,mmi  support multiple implementation of spinLocks
#		   and remove obsolete pgPoolXX.c 
# 04p,29Mar07,tor  add vxIpiLib
# 04o,16feb07,pch  add edrLock.c
# 04n,15feb07,jmg  Added vxAtomicLib.c to make and docs
# 04m,12dec06,mmi  added spinLock support for UP build
# 04l,20nov06,cjj  added cpuset.c and spinLockLib.c to doc build
# 04k,17nov06,mmi  add kernelLockLib.o
# 04j,25oct06,jmg  added timerShow.o to be built and to DOC as part of defect
#		   WIND00039293
# 04i,23oct06,lei  add vxCpuLib.[c o]
# 04h,04oct06,slk  add vxMemProbeLib.c
# 04g,21jul06,pch  build cpcLib.o and spinLockLib.o only for SMP
# 04f,05may06,mig  added cpcLib.o to OBJS_COMMON
# 04e,05apr06,mig  added spinLockLib.o to OBJS_COMMON
# 04d,10jul06,gls  removed sigeventLib.c from doc build
# 04c,07sep06,dlk  Add ffsLib.c to documented files.
# 04b,13sep05,jln  diable size-opt compilation for DIAB builds for
#		   critical objects
# 04a,08sep05,dcc  removed tapeFsLib.c (SPR# 111788)
# 03z,08sep05,yvp  Removed msgLib.o from the build (SPR 111961).
# 03y,16aug05,gls  added objOwnerLib.c
# 03x,26jan05,kk   added objLib.c to DOC_FILES (SPR# 105826)
# 03w,25mar05,job  Added msgLib.o
# 03v,21mar05,yvp  Added rebootHookLib.o
# 03u,26oct04,fr   Added objOpen.o and timerOpen.o (SPR 101491)
# 03t,13oct04,ann  Added nbioLogLib.o and nbioLogLibApi.o.
# 03s,01oct04,fr   Added handleShow.o (SPR 99750)
# 03r,27sep04,tam  removed edrKHLib.o
# 03q,22sep04,bpn  Moved taskShellCmd.c and edrShellCmd.c under ostool/shell.
# 03p,10aug04,kk   renamed rtpBaseLib.c to kernelBaseLib.c
# 03n,02sep04,ans  Added jobLib.o
# 03m,01sep04,job  Renamed posixScLib.o to mqSemPxScLib.o
# 03l,30aug04,dcc  Added objRtpLib.o
# 03j,07sep04,jyo  Fixing SPR 100119: Removing references to RT11.
# 03k,24aug04,job  Added timerScLib.o, clockScLib.o
# 03j,28jul04,md   Removed edrSymLib.o
# 03i,29jun04,md   Added edrErrLogLib.c to DOC_FILES
# 03h,30apr04,h_k  SH coprocessor support modifications.
# 03g,29apr04,fr   Added edrShellCmd.o
# 03f,26apr04,job  Removed hooks.c from DOC_FILES
# 03e,10mar04,md   Added edrPrintfLib.o
# 03d,19mar04,jn   Move symLib.c and symShow.c to target/src/ostool
# 03c,23mar04,jobb Added hooks.c to DOC_FILES 
# 03b,15mar04,bpn  Added taskShellCmd.o to build.
# 03a,24feb04,pch  remove PPC32 hack, no longer needed
# 02z,18feb04,zl   added trcLib.c to build.
# 02y,03feb04,md   Added edrScLib.o
# 02x,30dec03,jkf  moving cdromFsLib.c to src/fs
# 02w,12nov03,dat  new io subdirectory
# 02v,14oct03,zl   moved memory management modules to mm
# 02u,16oct03,ans  Added posixScLib.o
# 02t,14oct03,ans  Added sigeventLib.o
# 02s,06oct03,kk   remove  syscall*.c (moved  to target/src/os/rtp)
# 02r,26sep03,scm  remove vmMpuLib for XScale...
# 02q,19sep03,pcs  change vmLib.c to vmLib.o
# 02p,15sep03,pcs  Add vmLib.o
# 02o,09sep03,zl   added mmScLib.o
# 02n,03sep03,yvp  Added syscallShow.o to OBJS_COMMON.
# 02m,26aug03,yvp  Added System Call Infrastructure.
# 02l,03sep03,dbs  remove ED&R memLogLib from doc build
# 02k,03nov03,aim  added edrErrLogLib.c
# 02j,06oct03,kk   remove  syscall*.c (moved  to target/src/os/rtp)
# 02i,19sep03,pcs  change vmLib.c to vmLib.o
# 02h,15sep03,pcs  Add vmLib.o
# 02g,09sep03,zl   added mmScLib.o
# 02f,03sep03,yvp  Added syscallShow.o to OBJS_COMMON.
# 02e,26aug03,yvp  Added System Call Infrastructure.
# 02d,03oct03,dbs  add EDR KH support
# 02c,29sep03,dbs  add edrSysDbgLib
# 02b,11aug03,yp   adding page pool objects
# 02a,23jul03,jeg  removed unixDrv and passFsLib references
# 01z,28apr03,pch  Add PPC32 support; move FP files to src/math
# 01y,10apr03,pes  PAL Coprocessor Abstraction
# 01x,30jun03,tam  added vmShow.o.c
# 01w,15jul03,kam  rebased to Base6 integration branch
# 01v,20jun03,ymz  updated headline text.
# 01u,09may03,to   added objShow.o to object list, added objShow.c to doc list,
#		   temporarily added rtpBaseLib.o to object list.
# 01t,14mar03,dcc  added handleLib.o to the list of generated object files
# 01s,22apr03,dbt  Added SIMLINUX support.
# 01r,25mar03,jeg  removed ntPassFsLib reference
# 01q,10jan03,pcm  add hashLib.c to DOC_FILES
# 01p,18dec01,to   add ARMARCH5(_T) support, fix XSCALE
# 01o,01nov01,tam  moved vmLib.c and vmShow.c to src/vxvmi
# 01n,31oct01,mas  moved smXxxLib/Show modules to target/src/vxmp/os
# 01m,26oct01,tam  added repackaging support
# 01l,25oct01,jab  use make variable instead of GNU-specific -fvec
# 01k,20aug01,zl   added dspLib.o and dspShow.o for SH builds, removed
#		   dosFsLib.o from object list.
# 01j,02may01,kab  Build fioLib.c for Altivec for PPC604
# 01i,04may01,scm  add STRONGARM support
# 01h,11dec00,scm  replace references to ARMSA2 with XScale
# 01g,31aug00,scm  add sa2 support...
# 01f,13nov98,jpd  added vmMpuLib.o for ARM.
# 01e,21jun00,rsh  remove references to dosFsLib and rawFsLib a'la dosfs2
#		   upgrade
# 01d,03mar00,zl   merged SH support into T2
# 01c,27aug98,fle  doc : set ntPassFsLib.c in DOC_FILES (not ntPassFsLib.o)
# 01b,04nov96,p_m  added modules scsiMgrLib.o and scsiCtrlLib.o
# 01a,18jun96,yp   created from 01t of MakeSkel
#
# DESCRIPTION
# This file contains the makefile rules for building the vx library
#

TGT_DIR=$(WIND_BASE)/target

LIB_BASE_NAME   = os

# 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=	clockLib.c cpuset.c \
		edrLib.c edrShow.c edrSysDbgLib.c edrErrLogLib.c \
		envLib.c errnoLib.c excLib.c ffsLib.c hashLib.c intLib.c \
		logLib.c objLib.c objRtpLib.c objShow.c pmLib.c rebootLib.c \
		scsiLib.c scsi1Lib.c scsi2Lib.c scsiCommonLib.c \
		scsiDirectLib.c scsiSeqLib.c scsiMgrLib.c scsiCtrlLib.c \
		sigLib.c taskCreateHookLib.c taskSwitchHookLib.c \
 		taskHookShow.c taskVarLib.c \
		timerLib.c timerOpen.c timerShow.c \
		vxAtomicLib.c vxMemProbeLib.c vxCpuLib.c

OBJS_COMMON=	classLib.o clockLib.o coprocLib.o coprocFuncBind.o copyright.o \
		cpuset.o edrLib.o edrPrintfLib.o edrSysDbgLib.o errnoLib.o \
                excFuncBind.o excLib.o ffsLib.o funcBind.o handleLib.o \
                handleShow.o hookTblLib.o hookTblShow.o intLib.o jitterLib.o \
		jobFuncBind.o jobLib.o jobTaskLib.o logFuncBind.o logLib.o \
                objFuncBind.o objLib.o objSymLib.o pmLib.o \
                rebootLib.o rebootHookLib.o kernelBaseLib.o sigFuncBind.o \
                taskHookShow.o timerLib.o timerShow.o trcLib.o vxAtomicLib.o \
                vxMemProbeLib.o vxCpuLib.o vxIpiLib.o 

# Handle modules & subdirs that are incompatible
# with MEM_ALLOT because they use malloc/free.
ifdef _WRS_CONFIG_MEM_ALLOT
EXCLUDE_SUBDIRS += sysctl
else
OBJS_COMMON +=	coprocShow.o edrErrLogLib.o edrShow.o envLib.o hashLib.o \
		nbioLogLib.o nbioLogLibApi.o sigeventLib.o sigLib.o
endif

ifdef _WRS_CONFIG_OBJECT_CLASS_LIST
OBJS_COMMON +=	classListLib.o classShow.o objShow.o objInfo.o objOpen.o \
		timerOpen.o
endif

ifdef _WRS_CONFIG_OBJECT_OWNERSHIP
OBJS_COMMON +=	objOwnerLib.o
endif

ifdef _WRS_CONFIG_RTP
OBJS_COMMON +=	objRtpLib.o clockScLib.o edrScLib.o mqSemPxScLib.o \
		timerScLib.o
else
EXCLUDE_SUBDIRS += rtp
endif

ifdef _WRS_CONFIG_SMP
OBJS_COMMON +=	cpcLib.o edrLock.o
else
  ifndef _WRS_CONFIG_MEM_ALLOT
    OBJS_COMMON += taskVarLib.o
    ifndef _WRS_CONFIG_LP64
      OBJS_COMMON += scsiLib.o scsi1Lib.o scsi2Lib.o scsiCommonLib.o \
		     scsiDirectLib.o scsiSeqLib.o scsiMgrLib.o scsiCtrlLib.o \
		     smLib.o smPktLib.o
    endif
  endif
endif

ifdef _WRS_CONFIG_TASK_CREATE_HOOKS
OBJS_COMMON     += taskCreateHookLib.o
endif

ifdef _WRS_CONFIG_TASK_SWAP_HOOKS
OBJS_COMMON     += taskSwapHookLib.o
endif

ifdef _WRS_CONFIG_TASK_SWITCH_HOOKS
OBJS_COMMON     += taskSwitchHookLib.o
endif

OBJS		= $(OBJS_COMMON) 

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

ifndef _WRS_CONFIG_PROFILE_SMALL_FOOTPRINT
# 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_objLib.o     = -Xsize-opt=0
  CFLAGS_objInfo.o    = -Xsize-opt=0
  CFLAGS_taskVarLib.o = -Xsize-opt=0
  endif
endif
