blob: 5a0b5c88b9dde2fb622878a385b3b7f59d5b3c4c [file] [log] [blame]
########################################################################### ###
#@File
#@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved
#@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.
### ###########################################################################
# Compatibility BVNC
ccflags-y += -I$(TOP)/services/shared/devices/rgx
# Errata files
ccflags-y += -I$(TOP)/hwdefs
# Linux-specific headers
ccflags-y += \
-I$(TOP)/services/include/env/linux \
-I$(TOP)/kernel/drivers/staging/imgtec
$(PVRSRV_MODNAME)-y += \
services/server/env/linux/event.o \
services/server/env/linux/km_apphint.o \
services/server/env/linux/module_common.o \
services/server/env/linux/osmmap_stub.o \
services/server/env/linux/osfunc.o \
services/server/env/linux/allocmem.o \
services/server/env/linux/osconnection_server.o \
services/server/env/linux/pdump.o \
services/server/env/linux/physmem_osmem_linux.o \
services/server/env/linux/pmr_os.o \
services/server/env/linux/pvr_debugfs.o \
services/server/env/linux/pvr_bridge_k.o \
services/server/env/linux/pvr_debug.o \
services/server/env/linux/physmem_dmabuf.o \
services/server/common/devicemem_heapcfg.o \
services/shared/common/devicemem.o \
services/shared/common/devicemem_utils.o \
services/shared/common/hash.o \
services/shared/common/ra.o \
services/shared/common/sync.o \
services/shared/common/mem_utils.o \
services/server/common/devicemem_server.o \
services/server/common/handle.o \
services/server/common/lists.o \
services/server/common/mmu_common.o \
services/server/common/connection_server.o \
services/server/common/physheap.o \
services/server/common/physmem.o \
services/server/common/physmem_lma.o \
services/server/common/physmem_hostmem.o \
services/server/common/physmem_tdsecbuf.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.o \
services/server/common/srvcore.o \
services/server/common/sync_checkpoint.o \
services/server/common/sync_server.o \
services/shared/common/htbuffer.o \
services/server/common/htbserver.o \
services/server/common/tlintern.o \
services/shared/common/tlclient.o \
services/server/common/tlserver.o \
services/server/common/tlstream.o \
services/server/common/cache_km.o \
services/shared/common/uniq_key_splay_tree.o \
services/server/common/pvrsrv_pool.o \
services/server/common/info_page_km.o
ifeq ($(SUPPORT_FALLBACK_FENCE_SYNC),1)
$(PVRSRV_MODNAME)-y += \
services/server/common/sync_fallback_server.o
endif
# Wrap ExtMem support
ifeq ($(SUPPORT_WRAP_EXTMEM),1)
$(PVRSRV_MODNAME)-y += \
services/server/env/linux/physmem_extmem_linux.o \
services/server/common/physmem_extmem.o
endif
ifeq ($(SUPPORT_TRUSTED_DEVICE),1)
$(PVRSRV_MODNAME)-y += \
services/server/common/physmem_tdfwcode.o
endif
ifeq ($(SUPPORT_PDVFS),1)
$(PVRSRV_MODNAME)-y += \
services/server/devices/rgx/rgxpdvfs.o
ifeq ($(SUPPORT_WORKLOAD_ESTIMATION),1)
$(PVRSRV_MODNAME)-y += \
services/server/devices/rgx/rgxworkest.o
endif
endif
ifeq ($(SUPPORT_DRM_EXT),)
ifneq ($(PVR_LOADER),)
ifeq ($(KERNEL_DRIVER_DIR),)
$(PVRSRV_MODNAME)-y += kernel/drivers/staging/imgtec/$(PVR_LOADER).o
else
ifneq ($(wildcard $(KERNELDIR)/$(KERNEL_DRIVER_DIR)/$(PVR_SYSTEM)/$(PVR_LOADER).c),)
$(PVRSRV_MODNAME)-y += external/$(KERNEL_DRIVER_DIR)/$(PVR_SYSTEM)/$(PVR_LOADER).o
else
ifneq ($(wildcard $(KERNELDIR)/$(KERNEL_DRIVER_DIR)/$(PVR_LOADER).c),)
$(PVRSRV_MODNAME)-y += external/$(KERNEL_DRIVER_DIR)/$(PVR_LOADER).o
else
$(PVRSRV_MODNAME)-y += kernel/drivers/staging/imgtec/$(PVR_LOADER).o
endif
endif
endif
else
$(PVRSRV_MODNAME)-y += kernel/drivers/staging/imgtec/pvr_platform_drv.o
endif
endif
$(PVRSRV_MODNAME)-y += \
services/server/devices/rgx/debugmisc_server.o \
services/server/devices/rgx/rgxbreakpoint.o \
services/server/devices/rgx/rgxccb.o \
services/server/devices/rgx/rgxdebug.o \
services/server/devices/rgx/rgxfwutils.o \
services/server/devices/rgx/rgxinit.o \
services/server/devices/rgx/rgxkicksync.o \
services/server/devices/rgx/rgxlayer_impl.o \
services/server/devices/rgx/rgxmem.o \
services/server/devices/rgx/rgxmmuinit.o \
services/server/devices/rgx/rgxregconfig.o \
services/server/devices/rgx/rgxta3d.o \
services/server/devices/rgx/rgxtimerquery.o \
services/server/devices/rgx/rgxtransfer.o \
services/server/devices/rgx/rgxtdmtransfer.o \
services/server/devices/rgx/rgxutils.o \
services/shared/devices/rgx/rgx_compat_bvnc.o \
services/server/devices/rgx/rgxmipsmmuinit.o \
services/server/devices/rgx/rgxhwperf.o \
services/server/devices/rgx/rgxpower.o \
services/server/devices/rgx/rgxstartstop.o \
services/server/devices/rgx/rgxtimecorr.o
ifeq ($(SUPPORT_DISPLAY_CLASS),1)
$(PVRSRV_MODNAME)-y += \
services/server/common/dc_server.o \
services/server/common/scp.o
endif
ifeq ($(SUPPORT_SECURE_EXPORT),1)
$(PVRSRV_MODNAME)-y += services/server/env/linux/ossecure_export.o
endif
ifeq ($(PDUMP),1)
$(PVRSRV_MODNAME)-y += \
services/server/common/pdump_common.o \
services/server/common/pdump_mmu.o \
services/server/common/pdump_physmem.o \
services/shared/common/devicemem_pdump.o \
services/shared/common/devicememx_pdump.o \
services/server/devices/rgx/rgxpdump.o
endif
$(PVRSRV_MODNAME)-y += services/server/devices/rgx/rgxcompute.o
$(PVRSRV_MODNAME)-y += services/server/devices/rgx/rgxray.o
ifeq ($(PVR_RI_DEBUG),1)
$(PVRSRV_MODNAME)-y += services/server/common/ri_server.o
endif
ifeq ($(PVR_TESTING_UTILS),1)
$(PVRSRV_MODNAME)-y += services/server/common/tutils.o
endif
ifeq ($(SUPPORT_PAGE_FAULT_DEBUG),1)
$(PVRSRV_MODNAME)-y += services/server/common/devicemem_history_server.o
endif
$(PVRSRV_MODNAME)-y += services/server/devices/rgx/rgxsignals.o
ifeq ($(PVR_HANDLE_BACKEND),generic)
$(PVRSRV_MODNAME)-y += services/server/common/handle_generic.o
else
ifeq ($(PVR_HANDLE_BACKEND),idr)
$(PVRSRV_MODNAME)-y += services/server/env/linux/handle_idr.o
endif
endif
ifeq ($(SUPPORT_GPUTRACE_EVENTS),1)
$(PVRSRV_MODNAME)-y += services/server/env/linux/pvr_gputrace.o
endif
ifeq ($(SUPPORT_BUFFER_SYNC),1)
$(PVRSRV_MODNAME)-y += \
kernel/drivers/staging/imgtec/pvr_buffer_sync.o \
kernel/drivers/staging/imgtec/pvr_fence.o
endif
ifeq ($(SUPPORT_NATIVE_FENCE_SYNC),1)
ifeq ($(PVRSRV_USE_SYNC_CHECKPOINTS),1)
ifeq ($(SUPPORT_DMA_FENCE),1)
$(PVRSRV_MODNAME)-y += \
kernel/drivers/staging/imgtec/pvr_sync_dma_fence.o \
kernel/drivers/staging/imgtec/pvr_counting_timeline.o \
kernel/drivers/staging/imgtec/pvr_sw_fence.o \
kernel/drivers/staging/imgtec/pvr_fence.o \
services/server/env/linux/dma_fence_sync_native_server.o
else
$(PVRSRV_MODNAME)-y += services/server/env/linux/sync_native_server.o
$(PVRSRV_MODNAME)-y += kernel/drivers/staging/imgtec/pvr_sync2.o
endif
else
$(PVRSRV_MODNAME)-y += services/server/env/linux/sync_native_server.o
$(PVRSRV_MODNAME)-y += kernel/drivers/staging/imgtec/pvr_sync.o
endif
else
ifeq ($(SUPPORT_FALLBACK_FENCE_SYNC),1)
$(PVRSRV_MODNAME)-y += services/server/common/sync_fallback_server.o
endif
endif
ifeq ($(PVR_DVFS),1)
$(PVRSRV_MODNAME)-y += \
services/server/env/linux/pvr_dvfs_device.o
endif
$(PVRSRV_MODNAME)-$(CONFIG_X86) += services/server/env/linux/osfunc_x86.o
$(PVRSRV_MODNAME)-$(CONFIG_ARM) += services/server/env/linux/osfunc_arm.o
$(PVRSRV_MODNAME)-$(CONFIG_ARM64) += services/server/env/linux/osfunc_arm64.o
$(PVRSRV_MODNAME)-$(CONFIG_METAG) += services/server/env/linux/osfunc_metag.o
$(PVRSRV_MODNAME)-$(CONFIG_MIPS) += services/server/env/linux/osfunc_mips.o
$(PVRSRV_MODNAME)-$(CONFIG_EVENT_TRACING) += services/server/env/linux/trace_events.o
ifneq ($(SUPPORT_DRM_EXT),1)
ccflags-y += \
-Iinclude/drm \
-I$(TOP)/include/drm \
-I$(TOP)/services/include/env/linux
$(PVRSRV_MODNAME)-y += \
kernel/drivers/staging/imgtec/pvr_drm.o
endif # SUPPORT_DRM_EXT
ccflags-y += -I$(OUT)/target_neutral/intermediates/firmware
# Srvinit headers and source files
$(PVRSRV_MODNAME)-y += \
services/server/devices/rgx/rgxsrvinit.o \
services/server/devices/rgx/rgxsrvinit_script.o \
services/server/devices/rgx/rgxfwimageutils.o \
services/shared/devices/rgx/rgx_compat_bvnc.o \
services/shared/devices/rgx/rgx_hwperf_table.o \
services/server/devices/rgx/env/linux/km/rgxfwload.o
ccflags-y += \
-Iinclude \
-Ihwdefs \
-Ihwdefs/km \
-Iservices/include \
-Iservices/include/shared \
-Iservices/server/include \
-Iservices/server/devices/rgx \
-Iservices/shared/include \
-Iservices/shared/devices/rgx
# Bridge headers and source files
# Keep in sync with:
# build/linux/common/bridges.mk AND
# services/bridge/Linux.mk
ccflags-y += \
-I$(bridge_base)/mm_bridge \
-I$(bridge_base)/cmm_bridge \
-I$(bridge_base)/rgxtq_bridge \
-I$(bridge_base)/rgxtq2_bridge \
-I$(bridge_base)/rgxta3d_bridge \
-I$(bridge_base)/srvcore_bridge \
-I$(bridge_base)/sync_bridge \
-I$(bridge_base)/synctracking_bridge \
-I$(bridge_base)/breakpoint_bridge \
-I$(bridge_base)/debugmisc_bridge \
-I$(bridge_base)/htbuffer_bridge \
-I$(bridge_base)/pvrtl_bridge \
-I$(bridge_base)/rgxhwperf_bridge \
-I$(bridge_base)/regconfig_bridge \
-I$(bridge_base)/timerquery_bridge \
-I$(bridge_base)/rgxkicksync_bridge \
-I$(bridge_base)/cache_bridge \
-I$(bridge_base)/dmabuf_bridge \
$(PVRSRV_MODNAME)-y += \
generated/mm_bridge/server_mm_bridge.o \
generated/cmm_bridge/server_cmm_bridge.o \
generated/rgxtq_bridge/server_rgxtq_bridge.o \
generated/rgxtq2_bridge/server_rgxtq2_bridge.o \
generated/rgxta3d_bridge/server_rgxta3d_bridge.o \
generated/srvcore_bridge/server_srvcore_bridge.o \
generated/sync_bridge/server_sync_bridge.o \
generated/breakpoint_bridge/server_breakpoint_bridge.o \
generated/debugmisc_bridge/server_debugmisc_bridge.o \
generated/htbuffer_bridge/server_htbuffer_bridge.o \
generated/pvrtl_bridge/server_pvrtl_bridge.o \
generated/rgxhwperf_bridge/server_rgxhwperf_bridge.o \
generated/regconfig_bridge/server_regconfig_bridge.o \
generated/timerquery_bridge/server_timerquery_bridge.o \
generated/rgxkicksync_bridge/server_rgxkicksync_bridge.o \
generated/cache_bridge/server_cache_bridge.o \
generated/dmabuf_bridge/server_dmabuf_bridge.o
ifeq ($(SUPPORT_WRAP_EXTMEM),1)
ccflags-y += -I$(bridge_base)/mmextmem_bridge
$(PVRSRV_MODNAME)-y += generated/mmextmem_bridge/server_mmextmem_bridge.o
endif
ifeq ($(SUPPORT_DISPLAY_CLASS),1)
ccflags-y += -I$(bridge_base)/dc_bridge
$(PVRSRV_MODNAME)-y += generated/dc_bridge/server_dc_bridge.o
endif
ifeq ($(SUPPORT_SECURE_EXPORT),1)
ccflags-y += -I$(bridge_base)/smm_bridge
$(PVRSRV_MODNAME)-y += generated/smm_bridge/server_smm_bridge.o
endif
ifeq ($(SUPPORT_SERVER_SYNC),1)
ifeq ($(SUPPORT_SECURE_EXPORT),1)
ccflags-y += -I$(bridge_base)/syncsexport_bridge
$(PVRSRV_MODNAME)-y += generated/syncsexport_bridge/server_syncsexport_bridge.o
endif
ifeq ($(SUPPORT_INSECURE_EXPORT),1)
ccflags-y += \
-I$(bridge_base)/syncexport_bridge
$(PVRSRV_MODNAME)-y += generated/syncexport_bridge/server_syncexport_bridge.o
endif
endif
ifeq ($(PDUMP),1)
ccflags-y += \
-I$(bridge_base)/pdump_bridge \
-I$(bridge_base)/pdumpctrl_bridge \
-I$(bridge_base)/pdumpmm_bridge \
-I$(bridge_base)/rgxpdump_bridge
$(PVRSRV_MODNAME)-y += \
generated/pdump_bridge/server_pdump_bridge.o \
generated/pdumpctrl_bridge/server_pdumpctrl_bridge.o \
generated/pdumpmm_bridge/server_pdumpmm_bridge.o \
generated/rgxpdump_bridge/server_rgxpdump_bridge.o
endif
ccflags-y += -I$(bridge_base)/rgxcmp_bridge
$(PVRSRV_MODNAME)-y += generated/rgxcmp_bridge/server_rgxcmp_bridge.o
ccflags-y += -I$(bridge_base)/rgxray_bridge
$(PVRSRV_MODNAME)-y += generated/rgxray_bridge/server_rgxray_bridge.o
ifeq ($(PVR_RI_DEBUG),1)
ccflags-y += -I$(bridge_base)/ri_bridge
$(PVRSRV_MODNAME)-y += generated/ri_bridge/server_ri_bridge.o
endif
ifeq ($(SUPPORT_VALIDATION),1)
ccflags-y += -I$(bridge_base)/validation_bridge
$(PVRSRV_MODNAME)-y += generated/validation_bridge/server_validation_bridge.o
$(PVRSRV_MODNAME)-y += services/server/common/validation.o
endif
ifeq ($(PVR_TESTING_UTILS),1)
ccflags-y += -I$(bridge_base)/tutils_bridge
$(PVRSRV_MODNAME)-y += generated/tutils_bridge/server_tutils_bridge.o
endif
ifeq ($(SUPPORT_PAGE_FAULT_DEBUG),1)
ccflags-y += -I$(bridge_base)/devicememhistory_bridge
$(PVRSRV_MODNAME)-y += \
generated/devicememhistory_bridge/server_devicememhistory_bridge.o
endif
ifeq ($(SUPPORT_SYNCTRACKING_BRIDGE),1)
ccflags-y += -I$(bridge_base)/synctracking_bridge
$(PVRSRV_MODNAME)-y += \
generated/synctracking_bridge/server_synctracking_bridge.o
endif
#ifeq ($(SUPPORT_SIGNAL_FILTER),1)
ccflags-y += -I$(bridge_base)/rgxsignals_bridge
$(PVRSRV_MODNAME)-y += generated/rgxsignals_bridge/server_rgxsignals_bridge.o
#endif
ifeq ($(SUPPORT_FALLBACK_FENCE_SYNC),1)
ccflags-y += \
-I$(bridge_base)/syncfallback_bridge
$(PVRSRV_MODNAME)-y += generated/syncfallback_bridge/server_syncfallback_bridge.o
endif
# Direct bridges
$(PVRSRV_MODNAME)-y += \
generated/mm_bridge/client_mm_direct_bridge.o \
generated/sync_bridge/client_sync_direct_bridge.o \
generated/htbuffer_bridge/client_htbuffer_direct_bridge.o \
generated/cache_bridge/client_cache_direct_bridge.o \
generated/pvrtl_bridge/client_pvrtl_direct_bridge.o
ifeq ($(PDUMP),1)
$(PVRSRV_MODNAME)-y += generated/pdumpmm_bridge/client_pdumpmm_direct_bridge.o
endif
ifeq ($(PVR_RI_DEBUG),1)
$(PVRSRV_MODNAME)-y += generated/ri_bridge/client_ri_direct_bridge.o
endif
ifeq ($(PDUMP),1)
$(PVRSRV_MODNAME)-y += \
generated/pdump_bridge/client_pdump_direct_bridge.o \
generated/pdumpctrl_bridge/client_pdumpctrl_direct_bridge.o \
generated/rgxpdump_bridge/client_rgxpdump_direct_bridge.o
endif
ifeq ($(SUPPORT_PAGE_FAULT_DEBUG),1)
$(PVRSRV_MODNAME)-y += \
generated/devicememhistory_bridge/client_devicememhistory_direct_bridge.o
endif
ifeq ($(SUPPORT_SYNCTRACKING_BRIDGE),1)
$(PVRSRV_MODNAME)-y += \
generated/synctracking_bridge/client_synctracking_direct_bridge.o
endif
# Enable -Werror for all built object files (suppress for Fiasco.OC/L4Linux)
ifeq ($(CONFIG_L4),)
ifneq ($(W),1)
$(foreach _o,$(addprefix CFLAGS_,$(notdir $($(PVRSRV_MODNAME)-y))),$(eval $(_o) := -Werror))
endif
endif
# With certain build configurations, e.g., ARM, Werror, we get a build
# failure in the ftrace Linux kernel header. So disable the relevant check.
CFLAGS_trace_events.o := -Wno-missing-prototypes
# Make sure the mem_utils are built in 'free standing' mode, so the compiler
# is not encouraged to call out to C library functions
CFLAGS_mem_utils.o := -ffreestanding
# Chrome OS kernel adds some issues
ccflags-y += -Wno-ignored-qualifiers
include $(TOP)/services/system/$(PVR_SYSTEM)/Kbuild.mk