13d0407baSopenharmony_ci# 23d0407baSopenharmony_ci# (C) COPYRIGHT 2012-2016, 2017 ARM Limited. All rights reserved. 33d0407baSopenharmony_ci# 43d0407baSopenharmony_ci# This program is free software and is provided to you under the terms of the 53d0407baSopenharmony_ci# GNU General Public License version 2 as published by the Free Software 63d0407baSopenharmony_ci# Foundation, and any use by you of this program is subject to the terms 73d0407baSopenharmony_ci# of such GNU licence. 83d0407baSopenharmony_ci# 93d0407baSopenharmony_ci# A copy of the licence is included with the program, and can also be obtained 103d0407baSopenharmony_ci# from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 113d0407baSopenharmony_ci# Boston, MA 02110-1301, USA. 123d0407baSopenharmony_ci# 133d0407baSopenharmony_ci# 143d0407baSopenharmony_ci 153d0407baSopenharmony_ciKBUILD_CFLAGS += -include rename.h 163d0407baSopenharmony_ci 173d0407baSopenharmony_ci# Driver version string which is returned to userspace via an ioctl 183d0407baSopenharmony_ciMALI_RELEASE_NAME ?= "r18p0-01rel0" 193d0407baSopenharmony_ci 203d0407baSopenharmony_ci# Paths required for build 213d0407baSopenharmony_ci 223d0407baSopenharmony_ci# make $(src) as absolute path if it isn't already, by prefixing $(srctree) 233d0407baSopenharmony_cisrc:=$(if $(patsubst /%,,$(src)),$(srctree)/$(src),$(src)) 243d0407baSopenharmony_ciKBASE_PATH = $(src) 253d0407baSopenharmony_ciKBASE_PLATFORM_PATH = $(KBASE_PATH)/platform_dummy 263d0407baSopenharmony_ciUMP_PATH = $(src)/../../../base 273d0407baSopenharmony_ci 283d0407baSopenharmony_ciifeq ($(CONFIG_MALI_ERROR_INJECTION),y) 293d0407baSopenharmony_ciMALI_ERROR_INJECT_ON = 1 303d0407baSopenharmony_ciendif 313d0407baSopenharmony_ci 323d0407baSopenharmony_ci# Set up defaults if not defined by build system 333d0407baSopenharmony_ciMALI_CUSTOMER_RELEASE ?= 1 343d0407baSopenharmony_ciMALI_UNIT_TEST ?= 0 353d0407baSopenharmony_ciMALI_KERNEL_TEST_API ?= 0 363d0407baSopenharmony_ciMALI_ERROR_INJECT_ON ?= 0 373d0407baSopenharmony_ciMALI_MOCK_TEST ?= 0 383d0407baSopenharmony_ciMALI_COVERAGE ?= 0 393d0407baSopenharmony_ciMALI_INSTRUMENTATION_LEVEL ?= 0 403d0407baSopenharmony_ci# This workaround is for what seems to be a compiler bug we observed in 413d0407baSopenharmony_ci# GCC 4.7 on AOSP 4.3. The bug caused an intermittent failure compiling 423d0407baSopenharmony_ci# the "_Pragma" syntax, where an error message is returned: 433d0407baSopenharmony_ci# 443d0407baSopenharmony_ci# "internal compiler error: unspellable token PRAGMA" 453d0407baSopenharmony_ci# 463d0407baSopenharmony_ci# This regression has thus far only been seen on the GCC 4.7 compiler bundled 473d0407baSopenharmony_ci# with AOSP 4.3.0. So this makefile, intended for in-tree kernel builds 483d0407baSopenharmony_ci# which are not known to be used with AOSP, is hardcoded to disable the 493d0407baSopenharmony_ci# workaround, i.e. set the define to 0. 503d0407baSopenharmony_ciMALI_GCC_WORKAROUND_MIDCOM_4598 ?= 0 513d0407baSopenharmony_ci 523d0407baSopenharmony_ci# Set up our defines, which will be passed to gcc 533d0407baSopenharmony_ciDEFINES = \ 543d0407baSopenharmony_ci -DMALI_CUSTOMER_RELEASE=$(MALI_CUSTOMER_RELEASE) \ 553d0407baSopenharmony_ci -DMALI_KERNEL_TEST_API=$(MALI_KERNEL_TEST_API) \ 563d0407baSopenharmony_ci -DMALI_UNIT_TEST=$(MALI_UNIT_TEST) \ 573d0407baSopenharmony_ci -DMALI_ERROR_INJECT_ON=$(MALI_ERROR_INJECT_ON) \ 583d0407baSopenharmony_ci -DMALI_MOCK_TEST=$(MALI_MOCK_TEST) \ 593d0407baSopenharmony_ci -DMALI_COVERAGE=$(MALI_COVERAGE) \ 603d0407baSopenharmony_ci -DMALI_INSTRUMENTATION_LEVEL=$(MALI_INSTRUMENTATION_LEVEL) \ 613d0407baSopenharmony_ci -DMALI_RELEASE_NAME=\"$(MALI_RELEASE_NAME)\" \ 623d0407baSopenharmony_ci -DMALI_GCC_WORKAROUND_MIDCOM_4598=$(MALI_GCC_WORKAROUND_MIDCOM_4598) 633d0407baSopenharmony_ci 643d0407baSopenharmony_ciifeq ($(KBUILD_EXTMOD),) 653d0407baSopenharmony_ci# in-tree 663d0407baSopenharmony_ciDEFINES +=-DMALI_KBASE_THIRDPARTY_PATH=../../$(src)/platform/$(CONFIG_MALI_PLATFORM_THIRDPARTY_NAME) 673d0407baSopenharmony_cielse 683d0407baSopenharmony_ci# out-of-tree 693d0407baSopenharmony_ciDEFINES +=-DMALI_KBASE_THIRDPARTY_PATH=$(src)/platform/$(CONFIG_MALI_PLATFORM_THIRDPARTY_NAME) 703d0407baSopenharmony_ciendif 713d0407baSopenharmony_ci 723d0407baSopenharmony_ciDEFINES += -I$(srctree)/drivers/staging/android 733d0407baSopenharmony_ci 743d0407baSopenharmony_ci# Use our defines when compiling 753d0407baSopenharmony_ciccflags-y += $(DEFINES) -I$(KBASE_PATH) -I$(KBASE_PLATFORM_PATH) -I$(UMP_PATH) -I$(srctree)/include/linux 763d0407baSopenharmony_cisubdir-ccflags-y += $(DEFINES) -I$(KBASE_PATH) -I$(KBASE_PLATFORM_PATH) -I$(OSK_PATH) -I$(UMP_PATH) -I$(srctree)/include/linux 773d0407baSopenharmony_ci 783d0407baSopenharmony_ciSRC := \ 793d0407baSopenharmony_ci mali_kbase_device.c \ 803d0407baSopenharmony_ci mali_kbase_cache_policy.c \ 813d0407baSopenharmony_ci mali_kbase_mem.c \ 823d0407baSopenharmony_ci mali_kbase_mmu.c \ 833d0407baSopenharmony_ci mali_kbase_ctx_sched.c \ 843d0407baSopenharmony_ci mali_kbase_jd.c \ 853d0407baSopenharmony_ci mali_kbase_jd_debugfs.c \ 863d0407baSopenharmony_ci mali_kbase_jm.c \ 873d0407baSopenharmony_ci mali_kbase_gpuprops.c \ 883d0407baSopenharmony_ci mali_kbase_js.c \ 893d0407baSopenharmony_ci mali_kbase_js_ctx_attr.c \ 903d0407baSopenharmony_ci mali_kbase_event.c \ 913d0407baSopenharmony_ci mali_kbase_context.c \ 923d0407baSopenharmony_ci mali_kbase_pm.c \ 933d0407baSopenharmony_ci mali_kbase_config.c \ 943d0407baSopenharmony_ci mali_kbase_vinstr.c \ 953d0407baSopenharmony_ci mali_kbase_softjobs.c \ 963d0407baSopenharmony_ci mali_kbase_10969_workaround.c \ 973d0407baSopenharmony_ci mali_kbase_hw.c \ 983d0407baSopenharmony_ci mali_kbase_utility.c \ 993d0407baSopenharmony_ci mali_kbase_debug.c \ 1003d0407baSopenharmony_ci mali_kbase_trace_timeline.c \ 1013d0407baSopenharmony_ci mali_kbase_gpu_memory_debugfs.c \ 1023d0407baSopenharmony_ci mali_kbase_mem_linux.c \ 1033d0407baSopenharmony_ci mali_kbase_core_linux.c \ 1043d0407baSopenharmony_ci mali_kbase_replay.c \ 1053d0407baSopenharmony_ci mali_kbase_mem_profile_debugfs.c \ 1063d0407baSopenharmony_ci mali_kbase_mmu_mode_lpae.c \ 1073d0407baSopenharmony_ci mali_kbase_mmu_mode_aarch64.c \ 1083d0407baSopenharmony_ci mali_kbase_disjoint_events.c \ 1093d0407baSopenharmony_ci mali_kbase_gator_api.c \ 1103d0407baSopenharmony_ci mali_kbase_debug_mem_view.c \ 1113d0407baSopenharmony_ci mali_kbase_debug_job_fault.c \ 1123d0407baSopenharmony_ci mali_kbase_smc.c \ 1133d0407baSopenharmony_ci mali_kbase_mem_pool.c \ 1143d0407baSopenharmony_ci mali_kbase_mem_pool_debugfs.c \ 1153d0407baSopenharmony_ci mali_kbase_tlstream.c \ 1163d0407baSopenharmony_ci mali_kbase_strings.c \ 1173d0407baSopenharmony_ci mali_kbase_as_fault_debugfs.c \ 1183d0407baSopenharmony_ci mali_kbase_regs_history_debugfs.c 1193d0407baSopenharmony_ci 1203d0407baSopenharmony_ci 1213d0407baSopenharmony_ci 1223d0407baSopenharmony_ci 1233d0407baSopenharmony_ciifeq ($(MALI_UNIT_TEST),1) 1243d0407baSopenharmony_ci SRC += mali_kbase_tlstream_test.c 1253d0407baSopenharmony_ciendif 1263d0407baSopenharmony_ci 1273d0407baSopenharmony_ciifeq ($(MALI_CUSTOMER_RELEASE),0) 1283d0407baSopenharmony_ci SRC += mali_kbase_regs_dump_debugfs.c 1293d0407baSopenharmony_ciendif 1303d0407baSopenharmony_ci 1313d0407baSopenharmony_ci 1323d0407baSopenharmony_ciccflags-y += -I$(KBASE_PATH) 1333d0407baSopenharmony_ci 1343d0407baSopenharmony_ciifeq ($(CONFIG_MALI_PLATFORM_FAKE),y) 1353d0407baSopenharmony_ci SRC += mali_kbase_platform_fake.c 1363d0407baSopenharmony_ci 1373d0407baSopenharmony_ci ifeq ($(CONFIG_MALI_PLATFORM_VEXPRESS),y) 1383d0407baSopenharmony_ci SRC += platform/vexpress/mali_kbase_config_vexpress.c \ 1393d0407baSopenharmony_ci platform/vexpress/mali_kbase_cpu_vexpress.c 1403d0407baSopenharmony_ci ccflags-y += -I$(src)/platform/vexpress 1413d0407baSopenharmony_ci endif 1423d0407baSopenharmony_ci 1433d0407baSopenharmony_ci ifeq ($(CONFIG_MALI_PLATFORM_RTSM_VE),y) 1443d0407baSopenharmony_ci SRC += platform/rtsm_ve/mali_kbase_config_vexpress.c 1453d0407baSopenharmony_ci ccflags-y += -I$(src)/platform/rtsm_ve 1463d0407baSopenharmony_ci endif 1473d0407baSopenharmony_ci 1483d0407baSopenharmony_ci ifeq ($(CONFIG_MALI_PLATFORM_VEXPRESS_1XV7_A57),y) 1493d0407baSopenharmony_ci SRC += platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c 1503d0407baSopenharmony_ci ccflags-y += -I$(src)/platform/vexpress_1xv7_a57 1513d0407baSopenharmony_ci endif 1523d0407baSopenharmony_ci 1533d0407baSopenharmony_ci ifeq ($(CONFIG_MALI_PLATFORM_VEXPRESS_6XVIRTEX7_10MHZ),y) 1543d0407baSopenharmony_ci SRC += platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c \ 1553d0407baSopenharmony_ci platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.c 1563d0407baSopenharmony_ci ccflags-y += -I$(src)/platform/vexpress_6xvirtex7_10mhz 1573d0407baSopenharmony_ci endif 1583d0407baSopenharmony_ciendif # CONFIG_MALI_PLATFORM_FAKE=y 1593d0407baSopenharmony_ci 1603d0407baSopenharmony_ci# Tell the Linux build system from which .o file to create the kernel module 1613d0407baSopenharmony_ciobj-$(CONFIG_MALI_MIDGARD) += midgard_kbase.o 1623d0407baSopenharmony_ci 1633d0407baSopenharmony_ci# Tell the Linux build system to enable building of our .c files 1643d0407baSopenharmony_cimidgard_kbase-y := $(SRC:.c=.o) 1653d0407baSopenharmony_ci 1663d0407baSopenharmony_ciifeq ($(CONFIG_MALI_PLATFORM_THIRDPARTY),y) 1673d0407baSopenharmony_ci # Kconfig passes in the name with quotes for in-tree builds - remove them. 1683d0407baSopenharmony_ci platform_name := $(shell echo $(CONFIG_MALI_PLATFORM_THIRDPARTY_NAME)) 1693d0407baSopenharmony_ci MALI_PLATFORM_THIRDPARTY_DIR := platform/$(platform_name) 1703d0407baSopenharmony_ci ccflags-y += -I$(src)/$(MALI_PLATFORM_THIRDPARTY_DIR) 1713d0407baSopenharmony_ci include $(src)/$(MALI_PLATFORM_THIRDPARTY_DIR)/Kbuild 1723d0407baSopenharmony_ciendif 1733d0407baSopenharmony_ci 1743d0407baSopenharmony_ciifeq ($(CONFIG_MALI_DEVFREQ),y) 1753d0407baSopenharmony_ci ifeq ($(CONFIG_DEVFREQ_THERMAL),y) 1763d0407baSopenharmony_ci include $(src)/ipa/Kbuild 1773d0407baSopenharmony_ci endif 1783d0407baSopenharmony_ciendif 1793d0407baSopenharmony_ci 1803d0407baSopenharmony_cimidgard_kbase-$(CONFIG_MALI_DMA_FENCE) += \ 1813d0407baSopenharmony_ci mali_kbase_dma_fence.o \ 1823d0407baSopenharmony_ci mali_kbase_fence.o 1833d0407baSopenharmony_cimidgard_kbase-$(CONFIG_SYNC) += \ 1843d0407baSopenharmony_ci mali_kbase_sync_android.o \ 1853d0407baSopenharmony_ci mali_kbase_sync_common.o 1863d0407baSopenharmony_cimidgard_kbase-$(CONFIG_SYNC_FILE) += \ 1873d0407baSopenharmony_ci mali_kbase_sync_file.o \ 1883d0407baSopenharmony_ci mali_kbase_sync_common.o \ 1893d0407baSopenharmony_ci mali_kbase_fence.o 1903d0407baSopenharmony_ci 1913d0407baSopenharmony_ciMALI_BACKEND_PATH ?= backend 1923d0407baSopenharmony_ciCONFIG_MALI_BACKEND ?= gpu 1933d0407baSopenharmony_ciCONFIG_MALI_BACKEND_REAL ?= $(CONFIG_MALI_BACKEND) 1943d0407baSopenharmony_ci 1953d0407baSopenharmony_ciifeq ($(MALI_MOCK_TEST),1) 1963d0407baSopenharmony_ciifeq ($(CONFIG_MALI_BACKEND_REAL),gpu) 1973d0407baSopenharmony_ci# Test functionality 1983d0407baSopenharmony_cimidgard_kbase-y += tests/internal/src/mock/mali_kbase_pm_driver_mock.o 1993d0407baSopenharmony_ciendif 2003d0407baSopenharmony_ciendif 2013d0407baSopenharmony_ci 2023d0407baSopenharmony_ciinclude $(src)/$(MALI_BACKEND_PATH)/$(CONFIG_MALI_BACKEND_REAL)/Kbuild 2033d0407baSopenharmony_cimidgard_kbase-y += $(BACKEND:.c=.o) 2043d0407baSopenharmony_ci 2053d0407baSopenharmony_ci 2063d0407baSopenharmony_ciccflags-y += -I$(src)/$(MALI_BACKEND_PATH)/$(CONFIG_MALI_BACKEND_REAL) 2073d0407baSopenharmony_cisubdir-ccflags-y += -I$(src)/$(MALI_BACKEND_PATH)/$(CONFIG_MALI_BACKEND_REAL) 2083d0407baSopenharmony_ci 2093d0407baSopenharmony_ci# Default to devicetree platform if neither a fake platform or a thirdparty 2103d0407baSopenharmony_ci# platform is configured. 2113d0407baSopenharmony_ciifeq ($(CONFIG_MALI_PLATFORM_THIRDPARTY)$(CONFIG_MALI_PLATFORM_FAKE),) 2123d0407baSopenharmony_ciCONFIG_MALI_PLATFORM_DEVICETREE := y 2133d0407baSopenharmony_ciendif 2143d0407baSopenharmony_ci 2153d0407baSopenharmony_cimidgard_kbase-$(CONFIG_MALI_PLATFORM_DEVICETREE) += \ 2163d0407baSopenharmony_ci platform/devicetree/mali_kbase_runtime_pm.o \ 2173d0407baSopenharmony_ci platform/devicetree/mali_kbase_config_devicetree.o 2183d0407baSopenharmony_ciccflags-$(CONFIG_MALI_PLATFORM_DEVICETREE) += -I$(src)/platform/devicetree 2193d0407baSopenharmony_ci 2203d0407baSopenharmony_ci# For kutf and mali_kutf_irq_latency_test 2213d0407baSopenharmony_ciobj-$(CONFIG_MALI_KUTF) += tests/ 222