# Makefile - makefile for src/arch/i86
#
# Copyright (c) 1996, 1998, 2001-2011, 2018 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
# --------------------
# 03c,18jul18,r_h  Add kernel page table isolation support (F10571)
# 03b,11aug11,sem  WIND00292261 - Add pwrCpuMonArchLib.o
# 03a,22oct10,ggm  Added dsmLib.o to COMMON_64 group.
# 02z,01oct10,sem  Add new IA cpu tags, remove pentium2/3
# 02y,21may10,pch  PENTIUM4 small footprint
# 02x,18may10,dlk  Merge from 6.8.1: Adding ipcSpinlockALib.o for 32-bit build.
# 02w,26apr10,rec  ACPI power management support
# 02v,19mar10,scm  remove kernelLockALib as a common lib between 32 and 64 bit
#                  builds...
# 02u,10dec09,scm  update for 64 bit syscall support...
# 02t,11nov09,pad  Fixed manual merge mistake.
# 02s,06nov09,mze  adding endif that is missing.
# 02r,30jul09,scm  rename workQ_OptALib.s to workQALib.s
# 02q,21oct08,kk   rename spinlockIsrNdLib to spinLockIsrNdLib
# 02p,07jul08,jpb  Changed SMP conditional.
# 02o,24mar08,scm  add optimized workQ routines...
# 02n,16jan08,dlk  Rename spinLockFastALib --> spinlockIsrNdALib.
# 02m,10dec07,dlk  Added spinLockFastALib.o.
# 02l,22sep07,zl   added kernelLockALib.o
# 02k,15aug07,mmi  add cpuPwrALib.o
# 02j,07aug07,scm  WIND00070893.
# 02i,29jun07,jmp  added vxdbgCpuArchLib.o for SMP build.
# 02h,04may07,zl   removed unixALib.s.
# 02g,30oct06,scm  change references from vxCpuLib to vxCpuArchLib...
# 02f,14sep06,slk  add vxMemProbeArchLib.c and vxMemProbeArchALib.s
# 02e,31aug06,scm  rename vxAtomicLib.s to vxAtomicALib.s
# 02d,31jul06,scm  remove workQALib.s, we are portable...
# 02c,07jul06,scm  add vxAtomicLib component.
# 02b,06jul06,scm  add vxCpuLib component
# 02a,02nov05,mdo  Add vxBus
# 01z,06sep05,mmi  Add cpuPwrArchLib.o
# 01y,13aug05,mmi  Add sStepLib.o
# 01x,01dec04,rec  add archSysctl
# 01w,11nov04,scm  Adding sysGdtLib.c, removing optimized sem code SPR103246
# 01v,01sep04,jb   Adding OBJ_VERIFY support
# 01u,22jun04,zmm  Add mmuI86Lib into build.
# 01t,27apr04,jmp  replaced trcLib.o by trcArchLib.o. added trcScArchLib.o.
# 01s,20apr04,scm  add sysOsmLib.c, sysOsmALib.s...
# 01r,19apr04,scm  update to build in mmuPro36Lib support...
# 01q,14apr04,zmm  Add ffpArchShow.o
# 01p,17mar04,m_h  in_cksum
# 01o,02jan04,jb   Removing mmuI86Lib.o and mmuPro36Lib.o from build
#		   (not supported)
# 01n,19dec03,kab  remove cacheAIM temporarily
# 01m,15dec03,dee  add cacheAIM functions for P2 arch
# 01l,05nov03,jb   Adding syscall and RTP support
# 01k,01oct02,hdn  added dbgStrLib.o and dbgStrShow.o for PENTIUM4
# 01j,09sep02,hdn  added gv3Lib.o and gv3Show.o for PENTIUM4
# 01i,12jun02,hdn  added vmArch3[26]Lib.o and vmBaseArch3[26]Lib.o
# 01h,28mar02,hdn  added ipiArchLib and ipiALib for PENTIUM2/3/4
# 01g,25oct01,tam  updated for repackaging
# 01f,15oct01,pad  Added compilation of elfI86.c
# 01e,04sep01,hdn  renamed mmu[A]Lib.o to mmuI86[A]Lib.o
# 01d,16aug01,hdn  added PENTIUM2/3/4 support
# 01c,09apr98,hdn  added support for Pentium.
# 01b,08jan98,dbt  removed wdbArchLib.o, wdbALib.o and dbgALib.o. Added
#		   wdbDbgArchLib.o and wdbDbgALib.o
# 01a,18jun96,yp   created from 01c of MakeSkel
#
# DESCRIPTION
# This file contains the makefile rules for building the vx library
#
#*/

TGT_DIR=$(WIND_BASE)/target

LIB_BASE_NAME   = arch

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

DOC_FILES =

# These objects are for 32 bit builds.

OBJS_COMMON_32= archSysctl.o \
		cpuPwrALib.o \
		cpuPwrArchLib.o \
		excALib.o \
		excArchLib.o \
		excArchShow.o \
		fppALib.o \
		fppArchLib.o \
		fppArchShow.o \
		intALib.o \
		intArchLib.o \
                pwrCpuMonArchLib.o \
		objALib.o \
		objArchLib.o \
		sigCtxALib.o \
		sigCtxLib.o \
		sysGdtLib.o \
		sysOsmALib.o \
		sysOsmLib.o \
		taskArchLib.o \
		vxALib.o \
		vxAtomicALib.o \
		vxbAccessArchALib.o \
		vxbAccessArchLib.o \
		vxCpuALib.o \
		vxCpuArchLib.o \
		vxLib.o \
		vxMemProbeArchALib.o \
		vxMemProbeArchLib.o \
		windALib.o

# omit the following from small-footprint build

ifndef _WRS_CONFIG_PROFILE_SMALL_FOOTPRINT
OBJS_COMMON_32 += dbgArchLib.o \
		  dsmLib.o \
		  elfI86.o \
		  in_cksum.o \
		  rtpALib.o \
		  rtpSigArchLib.o \
		  syscallALib.o \
		  syscallArchLib.o \
		  trcArchLib.o \
		  trcScArchLib.o \
		  vxShow.o \
		  wdbALib.o \
		  wdbDbgALib.o \
		  wdbDbgArchLib.o
endif

OBJS_OPTIMIZED_32 = bALib.o \
		dllALib.o \
		ffsALib.o \
		ipcSpinlockALib.o \
		qPriBMapALib.o \
		sllALib.o \
		spinLockIsrNdALib.o \
		workQALib.o

OBJS_COMMON_64= archSysctl.o \
		cacheArchLib.o  \
		cpuPwrArchLib.o \
		dsmLib.o \
		excArchLib.o \
		excArchShow.o \
		fppArchShow.o \
		in_cksum.o \
		ipiArchLib.o \
		objArchLib.o \
		pentiumLib.o  \
		pentiumShow.o \
                pwrCpuMonArchLib.o \
		trcScArchLib.o \
		vxbAccessArchLib.o \
		vxCpuArchLib.o \
		vxLib.o \
		vxMemProbeArchLib.o \
		vxShow.o

OBJS_PENTIUM  = $(OBJS_COMMON_32) $(OBJS_OPTIMIZED_32) \
		cacheALib.o  \
		cacheArchLib.o  \
		mmuI86ALib.o  \
		mmuI86Lib.o  \
		mmuPro32Lib.o  \
		mmuPro32ALib.o  \
		pentiumALib.o  \
		pentiumLib.o  \
		pentiumShow.o

OBJS_PENTIUM4 = $(OBJS_COMMON_32) $(OBJS_OPTIMIZED_32) \
		cacheALib.o \
		cacheArchLib.o \
		pentiumALib.o \
		pentiumLib.o

OBJS_ATOM = $(OBJS_COMMON_32) $(OBJS_OPTIMIZED_32) \
		cacheALib.o \
		cacheArchLib.o \
		dbgStrLib.o \
		dbgStrShow.o \
		ipiALib.o \
		ipiArchLib.o \
		mmuI86ALib.o \
		mmuPro32ALib.o \
		mmuPro32Lib.o \
		mmuPro36ALib.o \
		mmuPro36Lib.o \
		pentiumALib.o \
		pentiumLib.o \
		pentiumShow.o 

OBJS_CORE = $(OBJS_COMMON_32) $(OBJS_OPTIMIZED_32) \
		cacheALib.o \
		cacheArchLib.o \
		dbgStrLib.o \
		dbgStrShow.o \
		ipiALib.o \
		ipiArchLib.o \
		mmuI86ALib.o \
		mmuPro32ALib.o \
		mmuPro32Lib.o \
		mmuPro36ALib.o \
		mmuPro36Lib.o \
		pentiumALib.o \
		pentiumLib.o \
		pentiumShow.o 

OBJS_NEHALEM = $(OBJS_COMMON_32) $(OBJS_OPTIMIZED_32) \
		cacheALib.o \
		cacheArchLib.o \
		dbgStrLib.o \
		dbgStrShow.o \
		ipiALib.o \
		ipiArchLib.o \
		mmuI86ALib.o \
		mmuPro32ALib.o \
		mmuPro32Lib.o \
		mmuPro36ALib.o \
		mmuPro36Lib.o \
		pentiumALib.o \
		pentiumLib.o \
		pentiumShow.o 

# omit the following from small-footprint build

ifndef _WRS_CONFIG_PROFILE_SMALL_FOOTPRINT
OBJS_PENTIUM4 += dbgStrLib.o \
		 dbgStrShow.o \
		 ipiALib.o \
		 ipiArchLib.o \
		 mmuI86ALib.o \
		 mmuPro32ALib.o \
		 mmuPro32Lib.o \
		 mmuPro36ALib.o \
		 mmuPro36Lib.o \
		pentiumShow.o 
endif

ifdef _WRS_CONFIG_LP64
OBJS= $(OBJS_COMMON_64)
ifdef _WRS_CONFIG_KPTI
OBJS += kptiArchLib.o
endif
ifdef _WRS_CONFIG_SMP
OBJS += vxdbgCpuArchLib.o
endif
else
OBJS=$(OBJS_$(CPU))
ifdef _WRS_CONFIG_KPTI
OBJS += kptiArchLib.o
OBJS += kptiALib.o
endif
ifdef _WRS_CONFIG_SMP
OBJS += vxdbgCpuArchLib.o kernelLockALib.o
endif
endif

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