xref: /OK3568_Linux_fs/kernel/drivers/gpu/arm/midgard/Kbuild (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# (C) COPYRIGHT 2012-2016, 2017 ARM Limited. All rights reserved.
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# This program is free software and is provided to you under the terms of the
5*4882a593Smuzhiyun# GNU General Public License version 2 as published by the Free Software
6*4882a593Smuzhiyun# Foundation, and any use by you of this program is subject to the terms
7*4882a593Smuzhiyun# of such GNU licence.
8*4882a593Smuzhiyun#
9*4882a593Smuzhiyun# A copy of the licence is included with the program, and can also be obtained
10*4882a593Smuzhiyun# from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
11*4882a593Smuzhiyun# Boston, MA  02110-1301, USA.
12*4882a593Smuzhiyun#
13*4882a593Smuzhiyun#
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunKBUILD_CFLAGS += -include rename.h
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun# Driver version string which is returned to userspace via an ioctl
18*4882a593SmuzhiyunMALI_RELEASE_NAME ?= "r18p0-01rel0"
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun# Paths required for build
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun# make $(src) as absolute path if it isn't already, by prefixing $(srctree)
23*4882a593Smuzhiyunsrc:=$(if $(patsubst /%,,$(src)),$(srctree)/$(src),$(src))
24*4882a593SmuzhiyunKBASE_PATH = $(src)
25*4882a593SmuzhiyunKBASE_PLATFORM_PATH = $(KBASE_PATH)/platform_dummy
26*4882a593SmuzhiyunUMP_PATH = $(src)/../../../base
27*4882a593Smuzhiyun
28*4882a593Smuzhiyunifeq ($(CONFIG_MALI_ERROR_INJECTION),y)
29*4882a593SmuzhiyunMALI_ERROR_INJECT_ON = 1
30*4882a593Smuzhiyunendif
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun# Set up defaults if not defined by build system
33*4882a593SmuzhiyunMALI_CUSTOMER_RELEASE ?= 1
34*4882a593SmuzhiyunMALI_UNIT_TEST ?= 0
35*4882a593SmuzhiyunMALI_KERNEL_TEST_API ?= 0
36*4882a593SmuzhiyunMALI_ERROR_INJECT_ON ?= 0
37*4882a593SmuzhiyunMALI_MOCK_TEST ?= 0
38*4882a593SmuzhiyunMALI_COVERAGE ?= 0
39*4882a593SmuzhiyunMALI_INSTRUMENTATION_LEVEL ?= 0
40*4882a593Smuzhiyun# This workaround is for what seems to be a compiler bug we observed in
41*4882a593Smuzhiyun# GCC 4.7 on AOSP 4.3.  The bug caused an intermittent failure compiling
42*4882a593Smuzhiyun# the "_Pragma" syntax, where an error message is returned:
43*4882a593Smuzhiyun#
44*4882a593Smuzhiyun# "internal compiler error: unspellable token PRAGMA"
45*4882a593Smuzhiyun#
46*4882a593Smuzhiyun# This regression has thus far only been seen on the GCC 4.7 compiler bundled
47*4882a593Smuzhiyun# with AOSP 4.3.0.  So this makefile, intended for in-tree kernel builds
48*4882a593Smuzhiyun# which are not known to be used with AOSP, is hardcoded to disable the
49*4882a593Smuzhiyun# workaround, i.e. set the define to 0.
50*4882a593SmuzhiyunMALI_GCC_WORKAROUND_MIDCOM_4598 ?= 0
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun# Set up our defines, which will be passed to gcc
53*4882a593SmuzhiyunDEFINES = \
54*4882a593Smuzhiyun	-DMALI_CUSTOMER_RELEASE=$(MALI_CUSTOMER_RELEASE) \
55*4882a593Smuzhiyun	-DMALI_KERNEL_TEST_API=$(MALI_KERNEL_TEST_API) \
56*4882a593Smuzhiyun	-DMALI_UNIT_TEST=$(MALI_UNIT_TEST) \
57*4882a593Smuzhiyun	-DMALI_ERROR_INJECT_ON=$(MALI_ERROR_INJECT_ON) \
58*4882a593Smuzhiyun	-DMALI_MOCK_TEST=$(MALI_MOCK_TEST) \
59*4882a593Smuzhiyun	-DMALI_COVERAGE=$(MALI_COVERAGE) \
60*4882a593Smuzhiyun	-DMALI_INSTRUMENTATION_LEVEL=$(MALI_INSTRUMENTATION_LEVEL) \
61*4882a593Smuzhiyun	-DMALI_RELEASE_NAME=\"$(MALI_RELEASE_NAME)\" \
62*4882a593Smuzhiyun	-DMALI_GCC_WORKAROUND_MIDCOM_4598=$(MALI_GCC_WORKAROUND_MIDCOM_4598)
63*4882a593Smuzhiyun
64*4882a593Smuzhiyunifeq ($(KBUILD_EXTMOD),)
65*4882a593Smuzhiyun# in-tree
66*4882a593SmuzhiyunDEFINES +=-DMALI_KBASE_THIRDPARTY_PATH=../../$(src)/platform/$(CONFIG_MALI_PLATFORM_THIRDPARTY_NAME)
67*4882a593Smuzhiyunelse
68*4882a593Smuzhiyun# out-of-tree
69*4882a593SmuzhiyunDEFINES +=-DMALI_KBASE_THIRDPARTY_PATH=$(src)/platform/$(CONFIG_MALI_PLATFORM_THIRDPARTY_NAME)
70*4882a593Smuzhiyunendif
71*4882a593Smuzhiyun
72*4882a593SmuzhiyunDEFINES += -I$(srctree)/drivers/staging/android
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun# Use our defines when compiling
75*4882a593Smuzhiyunccflags-y += $(DEFINES) -I$(KBASE_PATH)   -I$(KBASE_PLATFORM_PATH) -I$(UMP_PATH) -I$(srctree)/include/linux
76*4882a593Smuzhiyunsubdir-ccflags-y += $(DEFINES) -I$(KBASE_PATH)   -I$(KBASE_PLATFORM_PATH) -I$(OSK_PATH) -I$(UMP_PATH) -I$(srctree)/include/linux
77*4882a593Smuzhiyun
78*4882a593SmuzhiyunSRC := \
79*4882a593Smuzhiyun	mali_kbase_device.c \
80*4882a593Smuzhiyun	mali_kbase_cache_policy.c \
81*4882a593Smuzhiyun	mali_kbase_mem.c \
82*4882a593Smuzhiyun	mali_kbase_mmu.c \
83*4882a593Smuzhiyun	mali_kbase_ctx_sched.c \
84*4882a593Smuzhiyun	mali_kbase_jd.c \
85*4882a593Smuzhiyun	mali_kbase_jd_debugfs.c \
86*4882a593Smuzhiyun	mali_kbase_jm.c \
87*4882a593Smuzhiyun	mali_kbase_gpuprops.c \
88*4882a593Smuzhiyun	mali_kbase_js.c \
89*4882a593Smuzhiyun	mali_kbase_js_ctx_attr.c \
90*4882a593Smuzhiyun	mali_kbase_event.c \
91*4882a593Smuzhiyun	mali_kbase_context.c \
92*4882a593Smuzhiyun	mali_kbase_pm.c \
93*4882a593Smuzhiyun	mali_kbase_config.c \
94*4882a593Smuzhiyun	mali_kbase_vinstr.c \
95*4882a593Smuzhiyun	mali_kbase_softjobs.c \
96*4882a593Smuzhiyun	mali_kbase_10969_workaround.c \
97*4882a593Smuzhiyun	mali_kbase_hw.c \
98*4882a593Smuzhiyun	mali_kbase_utility.c \
99*4882a593Smuzhiyun	mali_kbase_debug.c \
100*4882a593Smuzhiyun	mali_kbase_trace_timeline.c \
101*4882a593Smuzhiyun	mali_kbase_gpu_memory_debugfs.c \
102*4882a593Smuzhiyun	mali_kbase_mem_linux.c \
103*4882a593Smuzhiyun	mali_kbase_core_linux.c \
104*4882a593Smuzhiyun	mali_kbase_replay.c \
105*4882a593Smuzhiyun	mali_kbase_mem_profile_debugfs.c \
106*4882a593Smuzhiyun	mali_kbase_mmu_mode_lpae.c \
107*4882a593Smuzhiyun	mali_kbase_mmu_mode_aarch64.c \
108*4882a593Smuzhiyun	mali_kbase_disjoint_events.c \
109*4882a593Smuzhiyun	mali_kbase_gator_api.c \
110*4882a593Smuzhiyun	mali_kbase_debug_mem_view.c \
111*4882a593Smuzhiyun	mali_kbase_debug_job_fault.c \
112*4882a593Smuzhiyun	mali_kbase_smc.c \
113*4882a593Smuzhiyun	mali_kbase_mem_pool.c \
114*4882a593Smuzhiyun	mali_kbase_mem_pool_debugfs.c \
115*4882a593Smuzhiyun	mali_kbase_tlstream.c \
116*4882a593Smuzhiyun	mali_kbase_strings.c \
117*4882a593Smuzhiyun	mali_kbase_as_fault_debugfs.c \
118*4882a593Smuzhiyun	mali_kbase_regs_history_debugfs.c
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun
123*4882a593Smuzhiyunifeq ($(MALI_UNIT_TEST),1)
124*4882a593Smuzhiyun	SRC += mali_kbase_tlstream_test.c
125*4882a593Smuzhiyunendif
126*4882a593Smuzhiyun
127*4882a593Smuzhiyunifeq ($(MALI_CUSTOMER_RELEASE),0)
128*4882a593Smuzhiyun	SRC += mali_kbase_regs_dump_debugfs.c
129*4882a593Smuzhiyunendif
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun
132*4882a593Smuzhiyunccflags-y += -I$(KBASE_PATH)
133*4882a593Smuzhiyun
134*4882a593Smuzhiyunifeq ($(CONFIG_MALI_PLATFORM_FAKE),y)
135*4882a593Smuzhiyun	SRC += mali_kbase_platform_fake.c
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun	ifeq ($(CONFIG_MALI_PLATFORM_VEXPRESS),y)
138*4882a593Smuzhiyun		SRC += platform/vexpress/mali_kbase_config_vexpress.c \
139*4882a593Smuzhiyun		platform/vexpress/mali_kbase_cpu_vexpress.c
140*4882a593Smuzhiyun		ccflags-y += -I$(src)/platform/vexpress
141*4882a593Smuzhiyun	endif
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun	ifeq ($(CONFIG_MALI_PLATFORM_RTSM_VE),y)
144*4882a593Smuzhiyun		SRC += platform/rtsm_ve/mali_kbase_config_vexpress.c
145*4882a593Smuzhiyun		ccflags-y += -I$(src)/platform/rtsm_ve
146*4882a593Smuzhiyun	endif
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun	ifeq ($(CONFIG_MALI_PLATFORM_VEXPRESS_1XV7_A57),y)
149*4882a593Smuzhiyun		SRC += platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c
150*4882a593Smuzhiyun		ccflags-y += -I$(src)/platform/vexpress_1xv7_a57
151*4882a593Smuzhiyun	endif
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun	ifeq ($(CONFIG_MALI_PLATFORM_VEXPRESS_6XVIRTEX7_10MHZ),y)
154*4882a593Smuzhiyun		SRC += platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c \
155*4882a593Smuzhiyun		platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.c
156*4882a593Smuzhiyun		ccflags-y += -I$(src)/platform/vexpress_6xvirtex7_10mhz
157*4882a593Smuzhiyun	endif
158*4882a593Smuzhiyunendif # CONFIG_MALI_PLATFORM_FAKE=y
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun# Tell the Linux build system from which .o file to create the kernel module
161*4882a593Smuzhiyunobj-$(CONFIG_MALI_MIDGARD) += midgard_kbase.o
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun# Tell the Linux build system to enable building of our .c files
164*4882a593Smuzhiyunmidgard_kbase-y := $(SRC:.c=.o)
165*4882a593Smuzhiyun
166*4882a593Smuzhiyunifeq ($(CONFIG_MALI_PLATFORM_THIRDPARTY),y)
167*4882a593Smuzhiyun  # Kconfig passes in the name with quotes for in-tree builds - remove them.
168*4882a593Smuzhiyun  platform_name := $(shell echo $(CONFIG_MALI_PLATFORM_THIRDPARTY_NAME))
169*4882a593Smuzhiyun  MALI_PLATFORM_THIRDPARTY_DIR := platform/$(platform_name)
170*4882a593Smuzhiyun  ccflags-y += -I$(src)/$(MALI_PLATFORM_THIRDPARTY_DIR)
171*4882a593Smuzhiyun  include $(src)/$(MALI_PLATFORM_THIRDPARTY_DIR)/Kbuild
172*4882a593Smuzhiyunendif
173*4882a593Smuzhiyun
174*4882a593Smuzhiyunifeq ($(CONFIG_MALI_DEVFREQ),y)
175*4882a593Smuzhiyun  ifeq ($(CONFIG_DEVFREQ_THERMAL),y)
176*4882a593Smuzhiyun    include $(src)/ipa/Kbuild
177*4882a593Smuzhiyun  endif
178*4882a593Smuzhiyunendif
179*4882a593Smuzhiyun
180*4882a593Smuzhiyunmidgard_kbase-$(CONFIG_MALI_DMA_FENCE) += \
181*4882a593Smuzhiyun	mali_kbase_dma_fence.o \
182*4882a593Smuzhiyun	mali_kbase_fence.o
183*4882a593Smuzhiyunmidgard_kbase-$(CONFIG_SYNC) += \
184*4882a593Smuzhiyun	mali_kbase_sync_android.o \
185*4882a593Smuzhiyun	mali_kbase_sync_common.o
186*4882a593Smuzhiyunmidgard_kbase-$(CONFIG_SYNC_FILE) += \
187*4882a593Smuzhiyun	mali_kbase_sync_file.o \
188*4882a593Smuzhiyun	mali_kbase_sync_common.o \
189*4882a593Smuzhiyun	mali_kbase_fence.o
190*4882a593Smuzhiyun
191*4882a593SmuzhiyunMALI_BACKEND_PATH ?= backend
192*4882a593SmuzhiyunCONFIG_MALI_BACKEND ?= gpu
193*4882a593SmuzhiyunCONFIG_MALI_BACKEND_REAL ?= $(CONFIG_MALI_BACKEND)
194*4882a593Smuzhiyun
195*4882a593Smuzhiyunifeq ($(MALI_MOCK_TEST),1)
196*4882a593Smuzhiyunifeq ($(CONFIG_MALI_BACKEND_REAL),gpu)
197*4882a593Smuzhiyun# Test functionality
198*4882a593Smuzhiyunmidgard_kbase-y += tests/internal/src/mock/mali_kbase_pm_driver_mock.o
199*4882a593Smuzhiyunendif
200*4882a593Smuzhiyunendif
201*4882a593Smuzhiyun
202*4882a593Smuzhiyuninclude  $(src)/$(MALI_BACKEND_PATH)/$(CONFIG_MALI_BACKEND_REAL)/Kbuild
203*4882a593Smuzhiyunmidgard_kbase-y += $(BACKEND:.c=.o)
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun
206*4882a593Smuzhiyunccflags-y += -I$(src)/$(MALI_BACKEND_PATH)/$(CONFIG_MALI_BACKEND_REAL)
207*4882a593Smuzhiyunsubdir-ccflags-y += -I$(src)/$(MALI_BACKEND_PATH)/$(CONFIG_MALI_BACKEND_REAL)
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun# Default to devicetree platform if neither a fake platform or a thirdparty
210*4882a593Smuzhiyun# platform is configured.
211*4882a593Smuzhiyunifeq ($(CONFIG_MALI_PLATFORM_THIRDPARTY)$(CONFIG_MALI_PLATFORM_FAKE),)
212*4882a593SmuzhiyunCONFIG_MALI_PLATFORM_DEVICETREE := y
213*4882a593Smuzhiyunendif
214*4882a593Smuzhiyun
215*4882a593Smuzhiyunmidgard_kbase-$(CONFIG_MALI_PLATFORM_DEVICETREE) += \
216*4882a593Smuzhiyun	platform/devicetree/mali_kbase_runtime_pm.o \
217*4882a593Smuzhiyun	platform/devicetree/mali_kbase_config_devicetree.o
218*4882a593Smuzhiyunccflags-$(CONFIG_MALI_PLATFORM_DEVICETREE) += -I$(src)/platform/devicetree
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun# For kutf and mali_kutf_irq_latency_test
221*4882a593Smuzhiyunobj-$(CONFIG_MALI_KUTF) += tests/
222