1*4882a593Smuzhiyun# 2*4882a593Smuzhiyun# (C) COPYRIGHT 2010-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*4882a593Smuzhiyun 16*4882a593Smuzhiyunimport sys 17*4882a593SmuzhiyunImport('env') 18*4882a593Smuzhiyun 19*4882a593SmuzhiyunSConscript( 'tests/sconscript' ) 20*4882a593Smuzhiyun 21*4882a593Smuzhiyunmock_test = 0 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun# Fake platform is a transient solution for GPL drivers running in kernel that does not provide configuration via platform data. 24*4882a593Smuzhiyun# For such kernels fake_platform_device should be set to 1. For kernels providing platform data fake_platform_device should be set to 0. 25*4882a593Smuzhiyunif env['platform_config']=='devicetree' or env['platform_config']=='juno_soc': 26*4882a593Smuzhiyun fake_platform_device = 0 27*4882a593Smuzhiyunelse: 28*4882a593Smuzhiyun fake_platform_device = 1 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun# Source files required for kbase. 31*4882a593Smuzhiyunkbase_src = [ 32*4882a593Smuzhiyun Glob('*.c'), 33*4882a593Smuzhiyun Glob('backend/*/*.c'), 34*4882a593Smuzhiyun Glob('internal/*/*.c'), 35*4882a593Smuzhiyun Glob('ipa/*.c') 36*4882a593Smuzhiyun] 37*4882a593Smuzhiyun 38*4882a593Smuzhiyunif env['platform_config']=='juno_soc': 39*4882a593Smuzhiyun kbase_src += [Glob('platform/devicetree/*.c')] 40*4882a593Smuzhiyunelse: 41*4882a593Smuzhiyun kbase_src += [Glob('platform/%s/*.c' % env['platform_config'])] 42*4882a593Smuzhiyun 43*4882a593Smuzhiyunif Glob('#kernel/drivers/gpu/arm/midgard/tests/internal/src/mock') and env['unit'] == '1': 44*4882a593Smuzhiyun kbase_src += [Glob('#kernel/drivers/gpu/arm/midgard/tests/internal/src/mock/*.c')] 45*4882a593Smuzhiyun mock_test = 1 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun# we need platform config for GPL version using fake platform 48*4882a593Smuzhiyunif fake_platform_device==1: 49*4882a593Smuzhiyun # Check if we are compiling for PBX 50*4882a593Smuzhiyun if env.KernelConfigEnabled("CONFIG_MACH_REALVIEW_PBX") and \ 51*4882a593Smuzhiyun env["platform_config"] in {"vexpress", "vexpress_6xvirtex7_10mhz"}: 52*4882a593Smuzhiyun sys.stderr.write("WARNING: Building for a PBX kernel but with platform_config=vexpress*\n") 53*4882a593Smuzhiyun # if the file platform config file is in the tpip directory then use that, otherwise use the default config directory 54*4882a593Smuzhiyun if Glob('#kernel/drivers/gpu/arm/midgard/config/tpip/*%s.c' % (env['platform_config'])): 55*4882a593Smuzhiyun kbase_src += Glob('#kernel/drivers/gpu/arm/midgard/config/tpip/*%s.c' % (env['platform_config'])) 56*4882a593Smuzhiyun else: 57*4882a593Smuzhiyun kbase_src += Glob('#kernel/drivers/gpu/arm/midgard/config/*%s.c' % (env['platform_config'])) 58*4882a593Smuzhiyun 59*4882a593Smuzhiyunmake_args = env.kernel_get_config_defines(ret_list = True, 60*4882a593Smuzhiyun fake = fake_platform_device) + [ 61*4882a593Smuzhiyun 'PLATFORM=%s' % env['platform'], 62*4882a593Smuzhiyun 'MALI_ERROR_INJECT_ON=%s' % env['error_inject'], 63*4882a593Smuzhiyun 'MALI_KERNEL_TEST_API=%s' % env['debug'], 64*4882a593Smuzhiyun 'MALI_UNIT_TEST=%s' % env['unit'], 65*4882a593Smuzhiyun 'MALI_RELEASE_NAME=%s' % env['mali_release_name'], 66*4882a593Smuzhiyun 'MALI_MOCK_TEST=%s' % mock_test, 67*4882a593Smuzhiyun 'MALI_CUSTOMER_RELEASE=%s' % env['release'], 68*4882a593Smuzhiyun 'MALI_INSTRUMENTATION_LEVEL=%s' % env['instr'], 69*4882a593Smuzhiyun 'MALI_COVERAGE=%s' % env['coverage'], 70*4882a593Smuzhiyun 'MALI_BUS_LOG=%s' % env['buslog'] 71*4882a593Smuzhiyun] 72*4882a593Smuzhiyun 73*4882a593Smuzhiyunkbase = env.BuildKernelModule('$STATIC_LIB_PATH/mali_kbase.ko', kbase_src, 74*4882a593Smuzhiyun make_args = make_args) 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun# Add a dependency on kds.ko. 77*4882a593Smuzhiyun# Only necessary when KDS is not built into the kernel. 78*4882a593Smuzhiyun# 79*4882a593Smuzhiyunif env['os'] != 'android': 80*4882a593Smuzhiyun if not env.KernelConfigEnabled("CONFIG_KDS"): 81*4882a593Smuzhiyun env.Depends(kbase, '$STATIC_LIB_PATH/kds.ko') 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun# need Module.symvers from ump.ko build 84*4882a593Smuzhiyunif int(env['ump']) == 1: 85*4882a593Smuzhiyun env.Depends(kbase, '$STATIC_LIB_PATH/ump.ko') 86*4882a593Smuzhiyun 87*4882a593Smuzhiyunif 'smc_protected_mode_switcher' in env: 88*4882a593Smuzhiyun env.Depends('$STATIC_LIB_PATH/mali_kbase.ko', '$STATIC_LIB_PATH/smc_protected_mode_switcher.ko') 89*4882a593Smuzhiyun 90*4882a593Smuzhiyunenv.KernelObjTarget('kbase', kbase) 91*4882a593Smuzhiyun 92*4882a593Smuzhiyunenv.AppendUnique(BASE=['cutils_linked_list']) 93