########################################################################### ###
#@File           Makefile
#@Title
#@Copyright     Copyright (c) Innosilicon Technology Ltd. All Rights Reserved
#@Description
#@License       Dual MIT/GPLv2
#
# The contents of this file are subject to the MIT license as set out below.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# Alternatively, the contents of this file may be used under the terms of
# the GNU General Public License Version 2 ("GPL") in which case the provisions
# of GPL are applicable instead of those above.
#
# If you wish to allow use of your version of this file only under the terms of
# GPL, and not to allow others to use your version of this file under the terms
# of the MIT license, indicate your decision by deleting the provisions above
# and replace them with the notice and other provisions required by GPL as set
# out in the file called "GPL-COPYING" included in this distribution. If you do
# not delete the provisions above, a recipient may use your version of this file
# under the terms of either the MIT license or GPL.
#
# This License is also included in this distribution in the file called
# "MIT-COPYING".
#
# EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
# PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
# PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
### ###########################################################################

subdir-ccflags-y += \
	-I$(srctree)/$(src)/include \
	-I$(srctree)/$(src)/include/public \
	-I$(srctree)/$(src)/include/volcanic \
	-I$(srctree)/$(src)/include/drm \
	-I$(srctree)/$(src)/include/system/rgx_innogpu \
	-I$(srctree)/$(src)/hwdefs \
	-I$(srctree)/$(src)/hwdefs/volcanic \
	-I$(srctree)/$(src)/hwdefs/volcanic/km \
	-I$(srctree)/$(src)/hwdefs/volcanic/km/configs \
	-I$(srctree)/$(src)/services/server \
	-I$(srctree)/$(src)/services/server/include \
	-I$(srctree)/$(src)/services/server/common \
	-I$(srctree)/$(src)/services/server/devices \
	-I$(srctree)/$(src)/services/server/devices/volcanic \
	-I$(srctree)/$(src)/services/server/env/linux \
	-I$(srctree)/$(src)/services/include \
	-I$(srctree)/$(src)/services/include/volcanic \
	-I$(srctree)/$(src)/services/shared \
	-I$(srctree)/$(src)/services/shared/include \
	-I$(srctree)/$(src)/services/shared/common \
	-I$(srctree)/$(src)/services/system \
	-I$(srctree)/$(src)/services/system/include \
	-I$(srctree)/$(src)/services/system/volcanic/rgx_innogpu \
	-I$(srctree)/$(src)/services/system/volcanic/include \
	-I$(srctree)/$(src)/kernel/drivers/staging/innosilicon \
	-I$(srctree)/$(src)/bridge/cache_bridge \
	-I$(srctree)/$(src)/bridge/cmm_bridge \
	-I$(srctree)/$(src)/bridge/devicememhistory_bridge \
	-I$(srctree)/$(src)/bridge/di_bridge \
	-I$(srctree)/$(src)/bridge/dma_bridge \
	-I$(srctree)/$(src)/bridge/dmabuf_bridge \
	-I$(srctree)/$(src)/bridge/htbuffer_bridge \
	-I$(srctree)/$(src)/bridge/mm_bridge \
	-I$(srctree)/$(src)/bridge/pvrtl_bridge \
	-I$(srctree)/$(src)/bridge/rgxcmp_bridge \
	-I$(srctree)/$(src)/bridge/rgxfwdbg_bridge \
	-I$(srctree)/$(src)/bridge/rgxhwperf_bridge \
	-I$(srctree)/$(src)/bridge/rgxkicksync_bridge \
	-I$(srctree)/$(src)/bridge/rgxray_bridge \
	-I$(srctree)/$(src)/bridge/rgxregconfig_bridge \
	-I$(srctree)/$(src)/bridge/rgxta3d_bridge \
	-I$(srctree)/$(src)/bridge/rgxtimerquery_bridge \
	-I$(srctree)/$(src)/bridge/rgxtq2_bridge \
	-I$(srctree)/$(src)/bridge/srvcore_bridge \
	-I$(srctree)/$(src)/bridge/sync_bridge \
	-I$(srctree)/$(src)/bridge/synctracking_bridge \
	-I$(srctree)/$(src)/../innogpu/pcie/ \
	-I$(srctree)/$(src)/../innogpu/hal
#	-I$(srctree)/$(src)/bridge/ri_bridge \
#	-I$(srctree)/$(src)/bridge/syncfallback_bridge \
#	-I$(srctree)/$(src)/bridge/rgxpdump_bridge \
#	-I$(srctree)/$(src)/bridge/pdumpmm_bridge \
#	-I$(srctree)/$(src)/bridge/pdumpctrl_bridge \
#	-I$(srctree)/$(src)/bridge/pdump_bridge \

# Bridge
innosrvkm-objs += \
	bridge/cache_bridge/client_cache_direct_bridge.o \
	bridge/cache_bridge/server_cache_bridge.o \
	bridge/cmm_bridge/server_cmm_bridge.o \
	bridge/devicememhistory_bridge/client_devicememhistory_direct_bridge.o \
	bridge/devicememhistory_bridge/server_devicememhistory_bridge.o \
	bridge/di_bridge/server_di_bridge.o \
	bridge/dma_bridge/server_dma_bridge.o \
	bridge/dmabuf_bridge/server_dmabuf_bridge.o \
	bridge/htbuffer_bridge/client_htbuffer_direct_bridge.o \
	bridge/htbuffer_bridge/server_htbuffer_bridge.o \
	bridge/mm_bridge/client_mm_direct_bridge.o \
	bridge/mm_bridge/server_mm_bridge.o \
	bridge/pvrtl_bridge/client_pvrtl_direct_bridge.o \
	bridge/pvrtl_bridge/server_pvrtl_bridge.o \
	bridge/rgxcmp_bridge/server_rgxcmp_bridge.o \
	bridge/rgxfwdbg_bridge/server_rgxfwdbg_bridge.o \
	bridge/rgxhwperf_bridge/server_rgxhwperf_bridge.o \
	bridge/rgxkicksync_bridge/server_rgxkicksync_bridge.o \
	bridge/rgxray_bridge/server_rgxray_bridge.o \
	bridge/rgxregconfig_bridge/server_rgxregconfig_bridge.o \
	bridge/rgxta3d_bridge/server_rgxta3d_bridge.o \
	bridge/rgxtimerquery_bridge/server_rgxtimerquery_bridge.o \
	bridge/rgxtq2_bridge/server_rgxtq2_bridge.o \
	bridge/srvcore_bridge/server_srvcore_bridge.o \
	bridge/sync_bridge/client_sync_direct_bridge.o \
	bridge/sync_bridge/server_sync_bridge.o \
	bridge/synctracking_bridge/client_synctracking_direct_bridge.o \
	bridge/synctracking_bridge/server_synctracking_bridge.o
#	bridge/syncfallback_bridge/server_syncfallback_bridge.o \
#	bridge/ri_bridge/client_ri_direct_bridge.o \
#	bridge/ri_bridge/server_ri_bridge.o \
#	bridge/pdump_bridge/client_pdump_direct_bridge.o \
#	bridge/pdump_bridge/server_pdump_bridge.o \
#	bridge/pdumpctrl_bridge/client_pdumpctrl_direct_bridge.o \
#	bridge/pdumpctrl_bridge/server_pdumpctrl_bridge.o \
#	bridge/pdumpmm_bridge/client_pdumpmm_direct_bridge.o \
#	bridge/pdumpmm_bridge/server_pdumpmm_bridge.o \
#	bridge/rgxpdump_bridge/client_rgxpdump_direct_bridge.o \
#	bridge/rgxpdump_bridge/server_rgxpdump_bridge.o \

# services->server->common
innosrvkm-objs += \
	services/server/common/cache_km.o \
	services/server/common/connection_server.o \
	services/server/common/debug_common.o \
	services/server/common/devicemem_heapcfg.o \
	services/server/common/devicemem_history_server.o \
	services/server/common/devicemem_server.o \
	services/server/common/di_impl_brg.o \
	services/server/common/di_server.o \
	services/server/common/dma_km.o \
	services/server/common/handle.o \
	services/server/common/htb_debug.o \
	services/server/common/htbserver.o \
	services/server/common/info_page_km.o \
	services/server/common/lists.o \
	services/server/common/mmu_common.o \
	services/server/common/physheap.o \
	services/server/common/physmem.o \
	services/server/common/physmem_hostmem.o \
	services/server/common/physmem_lma.o \
	services/server/common/pmr.o \
	services/server/common/power.o \
	services/server/common/process_stats.o \
	services/server/common/pvr_notifier.o \
	services/server/common/pvrsrv_bridge_init.o \
	services/server/common/pvrsrv.o \
	services/server/common/pvrsrv_pool.o \
	services/server/common/srvcore.o \
	services/server/common/sync_checkpoint.o \
	services/server/common/sync_server.o \
	services/server/common/tlintern.o \
	services/server/common/tlserver.o \
	services/server/common/tlstream.o \
	services/server/common/vmm_pvz_client.o \
	services/server/common/vmm_pvz_server.o \
	services/server/common/vz_vmm_pvz.o \
	services/server/common/vz_vmm_vm.o
#	services/server/common/pdump_mmu.o \
#	services/server/common/pdump_physmem.o \
#	services/server/common/pdump_server.o \
#	services/server/common/ri_server.o \
#	services/server/common/sync_fallback_server.o \

# services->server->devices/volcanic
innosrvkm-objs += \
	services/server/devices/volcanic/rgxcompute.o \
	services/server/devices/volcanic/rgxdebug.o \
	services/server/devices/volcanic/rgxfwutils.o \
	services/server/devices/volcanic/rgxhwperf.o \
	services/server/devices/volcanic/rgxinit.o \
	services/server/devices/volcanic/rgxlayer_impl.o \
	services/server/devices/volcanic/rgxmmuinit.o \
	services/server/devices/volcanic/rgxmulticore.o \
	services/server/devices/volcanic/rgxpower.o \
	services/server/devices/volcanic/rgxray.o \
	services/server/devices/volcanic/rgxsrvinit.o \
	services/server/devices/volcanic/rgxstartstop.o \
	services/server/devices/volcanic/rgxta3d.o \
	services/server/devices/volcanic/rgxtdmtransfer.o
#	services/server/devices/volcanic/rgxpdump.o \

# services->server->devices
innosrvkm-objs += \
	services/server/devices/rgxbreakpoint.o \
	services/server/devices/rgxbvnc.o \
	services/server/devices/rgxccb.o \
	services/server/devices/rgxfwdbg.o \
	services/server/devices/rgxfwimageutils.o \
	services/server/devices/rgxfwtrace_strings.o \
	services/server/devices/rgxhwperf_common.o \
	services/server/devices/rgxkicksync.o \
	services/server/devices/rgxmem.o \
	services/server/devices/rgxregconfig.o \
	services/server/devices/rgxshader.o \
	services/server/devices/rgxsyncutils.o \
	services/server/devices/rgxtimecorr.o \
	services/server/devices/rgx_bridge_init.o \
	services/server/devices/rgxtimerquery.o \
	services/server/devices/rgxutils.o
#	services/server/devices/rgxworkest.o \

#	services/server/devices/rgxpdvfs.o \

# services->server->server/env/linux
innosrvkm-objs += \
	services/server/env/linux/allocmem.o \
	services/server/env/linux/event.o \
	services/server/env/linux/fwload.o \
	services/server/env/linux/handle_idr.o \
	services/server/env/linux/km_apphint.o \
	services/server/env/linux/module_common.o \
	services/server/env/linux/osconnection_server.o \
	services/server/env/linux/osfunc.o \
	services/server/env/linux/osmmap_stub.o \
	services/server/env/linux/physmem_dmabuf.o \
	services/server/env/linux/physmem_osmem_linux.o \
	services/server/env/linux/physmem_test.o \
	services/server/env/linux/pmr_os.o \
	services/server/env/linux/pvr_bridge_k.o \
	services/server/env/linux/pvr_buffer_sync.o \
	services/server/env/linux/pvr_counting_timeline.o \
	services/server/env/linux/pvr_debug.o \
	services/server/env/linux/pvr_debugfs.o \
	services/server/env/linux/pvr_drm.o \
	services/server/env/linux/pvr_fence.o \
	services/server/env/linux/pvr_gputrace.o \
	services/server/env/linux/pvr_platform_drv.o \
	services/server/env/linux/pvr_sw_fence.o \
	services/server/env/linux/pvr_sync_file.o \
	services/server/env/linux/pvr_sync_ioctl_common.o \
	services/server/env/linux/pvr_sync_ioctl_drm.o

innosrvkm-$(CONFIG_EVENT_TRACING) += services/server/env/linux/trace_events.o

innosrvkm-$(CONFIG_X86) += services/server/env/linux/osfunc_x86.o
innosrvkm-$(CONFIG_ARM) += services/server/env/linux/osfunc_arm.o
innosrvkm-$(CONFIG_ARM64) += services/server/env/linux/osfunc_arm64.o
innosrvkm-$(CONFIG_LOONGARCH) += services/server/env/linux/osfunc_loongarch.o
innosrvkm-$(CONFIG_RISCV) += services/server/env/linux/osfunc_riscv.o
innosrvkm-$(CONFIG_SW64) += services/server/env/linux/osfunc_sw_64.o

#	services/server/env/linux/osfunc_arm64.o \
#	services/server/env/linux/osfunc_arm.o \
#	services/server/env/linux/osfunc_loongarch.o \
#	services/server/env/linux/osfunc_riscv.o \
#	services/server/env/linux/osfunc_sw_64.o \
#	services/server/env/linux/ossecure_export.o \
#	services/server/env/linux/pvr_dvfs_device.o \
#	services/server/env/linux/pvr_dvfs_device.o \
#	services/server/env/linux/pvr_sync2.o \


# services->shared->common
innosrvkm-objs += \
	services/shared/common/devicemem.o \
	services/shared/common/devicemem_utils.o \
	services/shared/common/hash.o \
	services/shared/common/htbuffer.o \
	services/shared/common/mem_utils.o \
	services/shared/common/pvrsrv_error.o \
	services/shared/common/ra.o \
	services/shared/common/sync.o \
	services/shared/common/tlclient.o \
	services/shared/common/uniq_key_splay_tree.o
#	services/shared/common/devicemem_pdump.o \
#	services/shared/common/devicememx_pdump.o \

# service->system->system/common
# service->system->system/common/env/linux
innosrvkm-objs += \
	services/system/common/sysconfig_cmn.o \
	services/system/common/env/linux/interrupt_support.o \
	services/system/common/env/linux/pci_support.o

# service->system->system/volcanic/common
# service->system->system/volcanic/common/env/linux
# service->system->system/volcanic/rgx_innogpu
innosrvkm-objs += \
	services/system/volcanic/common/vmm_type_stub.o \
	services/system/volcanic/common/env/linux/dma_support.o \
	services/system/volcanic/rgx_innogpu/sysconfig.o
#	services/system/volcanic/rgx_innogpu/fpga.o \

obj-$(CONFIG_GPU_INNO_INNOSILICON_GPU) += innosrvkm.o
