export KERNELDIR = /opt/oe/stuff/build/tmp/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.29-r44/git/

export KERNEL_PATH=$(KERNELDIR)
export KERNEL_SRC=$(KERNELDIR)
export KDIR=$(KERNELDIR)

export BUILD = release

export KBUILD_EXTRA_SYMBOLS = `pwd`/services4/srvkm/env/linux/kbuild/Module.symvers

SGXCORE = 530
ifeq ($(TI_PLATFORM),ti8168)
CORE = -DPLAT_TI8168 -DSGX530 -DSUPPORT_SGX530 -DSGX_CORE_REV=125
else
ifeq ($(TI_PLATFORM),omap3630)
CORE = -DSGX530 -DSUPPORT_SGX530 -DSGX_CORE_REV=125
else
CORE = -DSGX530 -DSUPPORT_SGX530 -DSGX_CORE_REV=121
endif
endif
SUPPORT_SGX = 1
SUPPORT_HW_RECOVERY = 1
SUPPORT_SGX_HWPERF = 1
SYS_USING_INTERRUPTS = 1
SUPPORT_TI_PM = 0

PVR2D_ALT_2DHW = 1

LDM_PLATFORM ?= 1

# Only enable active power management if passive power management is
# enabled, as indicated by LDM_PLATFORM being set to 1.  On OMAP,
# the system can suspend in the case where active power management is
# enabled in the SGX driver, but passive power management isn't. As
# passive power management isn't enabled, the driver won't see the
# system suspend/resume events, and so won't take appropriate action.
ifeq ($(LDM_PLATFORM),1)
SUPPORT_ACTIVE_POWER_MANAGEMENT ?= 1
else
SUPPORT_ACTIVE_POWER_MANAGEMENT = 0
endif

export PVR_BUILD_DIR := $(shell pwd)

DATE := $(shell date "+%a %B %d %Z %Y" )

CBUILD			=	-DPVR_BUILD_DIR="\"$(PVR_BUILD_DIR)\"" \
				-DPVR_BUILD_DATE="\"$(DATE)\"" \
				-DPVR_BUILD_TYPE="\"$(BUILD)\""

#  Don't support HW recovery on debug builds
CBUILD.debug	= -DDEBUG
CBUILD.timing	= -DTIMING
CBUILD.release	= -DRELEASE
CFLAGS.debug	= -g -O0 -DDLL_METRIC=1
CFLAGS.timing	= $(OPTIM) -g -DDLL_METRIC=1 -DTIMING
CFLAGS.release	= $(OPTIM) -g
CFLAGS          = $(CFLAGS.$(BUILD))


ifeq ("$(BUILD)", "debug")
DEBUG_LINUX_MEMORY_ALLOCATIONS	?= 1
DEBUG_LINUX_MEM_AREAS		?= 1
DEBUG_LINUX_MMAP_AREAS		?= 1
DEBUG_LINUX_XML_PROC_FILES	?= 0
DEBUG_LINUX_SLAB_ALLOCATIONS	?= 0
DEBUG_BRIDGE_KM			?= 1
DEBUG_TRACE_BRIDGE_KM		?= 0
endif

TRANSFER_QUEUE				?= 1
SUPPORT_SGX_EVENT_OBJECT		?= 1
SUPPORT_SECURE_HANDLES			= 1
SUPPORT_SECURE_FD_EXPORT        	= 1
SUPPORT_SRVINIT				= 1
SUPPORT_PERCONTEXT_PB			= 1
SUPPORT_LINUX_X86_PAT 			?=1
SUPPORT_LINUX_X86_WRITECOMBINE 		?=1
SUPPORT_SGX_LOW_LATENCY_SCHEDULING 	?=1


SYS_CFLAGS += -DSERVICES4 -D_XOPEN_SOURCE=600 -DPVR2D_VALIDATE_INPUT_PARAMS

# Thread support
USE_PTHREADS ?= 1
USE_GCC__thread_KEYWORD ?= 0
OPTIMISE_NON_NPTL_SINGLE_THREAD_TLS_LOOKUP ?= 0
DISABLE_THREADS ?= 0

# Automatically define C compiler macros for features possible (or not) in use.

SYS_CFLAGS.$(SUPPORT_SRVINIT)				+= -DSUPPORT_SRVINIT

SYS_CFLAGS.$(SUPPORT_SGX)				+= -DSUPPORT_SGX
SYS_CFLAGS.$(SUPPORT_XWS)				+= -DSUPPORT_XWS
SYS_CFLAGS.$(PDUMP)					+= -DPDUMP
SYS_CFLAGS.$(SUPPORT_POWER_MANAGEMENT)			+= -DSUPPORT_POWER_MANAGEMENT
SYS_CFLAGS.$(SUPPORT_BUFFER_CLASS)			+= -DSUPPORT_BUFFER_CLASS

SYS_CFLAGS.$(SUPPORT_PERCONTEXT_PB)			+= -DSUPPORT_PERCONTEXT_PB 
SYS_CFLAGS.$(SUPPORT_DYNAMIC_PBRESIZE)			+= -DSUPPORT_DYNAMIC_PBRESIZE

SYS_CFLAGS.$(USE_FBDEV)					+= -DUSE_FBDEV
SYS_CFLAGS.$(USE_FBDEV)					+= -DFBDEV_NAME="\"$(FBDEV_NAME)\""
SYS_CFLAGS.$(SUPPORT_DYNAMIC_3DCLOCKGATING) 		+= -DSUPPORT_DYNAMIC_3DCLOCKGATING
SYS_CFLAGS.$(REENTRANCY_PROTECTION)			+= -DREENTRANCY_PROTECTION
SYS_CFLAGS.$(SCHEDULER_CONTROL_SUPPORT) 		+= -DSCHEDULER_CONTROL_SUPPORT
SYS_CFLAGS.$(USE_IMG_POWER_DOMAIN_FUNCTION) 		+= -DUSE_IMG_POWER_DOMAIN_FUNCTION

SYS_CFLAGS.$(USE_DMALLOC)				+= -DDMALLOC

SYS_CFLAGS.$(DEBUG_LINUX_MEMORY_ALLOCATIONS)		+= -DDEBUG_LINUX_MEMORY_ALLOCATIONS
SYS_CFLAGS.$(DEBUG_LINUX_MEM_AREAS)			+= -DDEBUG_LINUX_MEM_AREAS
SYS_CFLAGS.$(DEBUG_LINUX_MMAP_AREAS)			+= -DDEBUG_LINUX_MMAP_AREAS
SYS_CFLAGS.$(DEBUG_LINUX_XML_PROC_FILES)		+= -DDEBUG_LINUX_XML_PROC_FILES
SYS_CFLAGS.$(DEBUG_LINUX_SLAB_ALLOCATIONS)		+= -DDEBUG_LINUX_SLAB_ALLOCATIONS
SYS_CFLAGS.$(DEBUG_BRIDGE_KM)				+= -DDEBUG_BRIDGE_KM
SYS_CFLAGS.$(DEBUG_TRACE_BRIDGE_KM)			+= -DDEBUG_TRACE_BRIDGE_KM
SYS_CFLAGS.$(DEBUG_BRIDGE_KM_DISPATCH_TABLE)		+= -DDEBUG_BRIDGE_KM_DISPATCH_TABLE

SYS_CFLAGS.$(SUPPORT_LINUX_X86_WRITECOMBINE)		+= -DSUPPORT_LINUX_X86_WRITECOMBINE

SYS_CFLAGS.$(SGX_PDS_EVENTS_DISABLED)			+= -DSGX_PDS_EVENTS_DISABLED
SYS_CFLAGS.$(USE_SUPPORT_NO_TA3D_OVERLAP)		+= -DUSE_SUPPORT_NO_TA3D_OVERLAP
SYS_CFLAGS.$(SUPPORT_SGX_TILING)			+= -DSUPPORT_SGX_TILING
SYS_CFLAGS.$(TRANSFER_QUEUE)				+= -DTRANSFER_QUEUE

SYS_CFLAGS.$(SUPPORT_SGX_MMU_DUMMY_PAGE)		+= -DSUPPORT_SGX_MMU_DUMMY_PAGE

SYS_CFLAGS.$(PVRSRV_USSE_EDM_STATUS_DEBUG)		+= -DPVRSRV_USSE_EDM_STATUS_DEBUG

SYS_CFLAGS.$(SUPPORT_DRI_DRM)				+= -DSUPPORT_DRI_DRM

SYS_CFLAGS.$(SYS_USING_INTERRUPTS)			+= -DSYS_USING_INTERRUPTS
SYS_CFLAGS.$(SUPPORT_HW_RECOVERY)			+= -DSUPPORT_HW_RECOVERY
SYS_CFLAGS.$(SUPPORT_ACTIVE_POWER_MANAGEMENT)		+= -DSUPPORT_ACTIVE_POWER_MANAGEMENT

SYS_CFLAGS.$(SUPPORT_SECURE_HANDLES)			+= -DPVR_SECURE_HANDLES
SYS_CFLAGS.$(SUPPORT_SECURE_FD_EXPORT)			+= -DPVR_SECURE_FD_EXPORT


SYS_CFLAGS.$(USE_PTHREADS)				+= -DUSE_PTHREADS
SYS_CFLAGS.$(USE_GCC__thread_KEYWORD)			+= -DUSE_GCC__thread_KEYWORD
SYS_CFLAGS.$(OPTIMISE_NON_NPTL_SINGLE_THREAD_TLS_LOOKUP)	+= -DOPTIMISE_NON_NPTL_SINGLE_THREAD_TLS_LOOKUP
SYS_CFLAGS.$(DISABLE_THREADS)				+= -DDISABLE_THREADS
SYS_CFLAGS.$(SUPPORT_SGX_EVENT_OBJECT)			+= -DSUPPORT_SGX_EVENT_OBJECT
SYS_CFLAGS.$(LDM_PLATFORM)				+= -DLDM_PLATFORM
SYS_CFLAGS.$(LDM_PCI)					+= -DLDM_PCI
SYS_CFLAGS.$(PVR_MANUAL_POWER_CONTROL)			+= -DPVR_MANUAL_POWER_CONTROL

SYS_CFLAGS.$(PVR2D_ALT_2DHW)				+= -DPVR2D_ALT_2DHW

SYS_CFLAGS.$(SUPPORT_SGX_HWPERF)			+= -DSUPPORT_SGX_HWPERF

SYS_CFLAGS.$(SUPPORT_SGX_LOW_LATENCY_SCHEDULING)	+= -DSUPPORT_SGX_LOW_LATENCY_SCHEDULING


SYS_CFLAGS.$(SUPPORT_LINUX_X86_PAT)			+= -DSUPPORT_LINUX_X86_PAT


SYS_CFLAGS.$(SUPPORT_TI_PM)                             += -DSUPPORT_TI_PM

export ALL_CFLAGS =	-DLINUX \
			$(CBUILD) $(CBUILD.$(BUILD)) \
			$(SYS_CFLAGS) $(SYS_CFLAGS.1) \
			$(MODULE_CFLAGS) $(MODULE_CFLAGS.$(BUILD)) \
			$(CORE) \
			$(CFLAGS)

all:
	$(MAKE) -C $(KERNELDIR) M=`pwd` $*

clean:
	$(MAKE) -C $(KERNELDIR) M=`pwd` clean

