#
# (C) COPYRIGHT 2010-2011, 2013, 2017-2018 ARM Limited. All rights reserved.
#
# This program is free software and is provided to you under the terms of the
# GNU General Public License version 2 as published by the Free Software
# Foundation, and any use by you of this program is subject to the terms
# of such GNU licence.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, you can access it online at
# http://www.gnu.org/licenses/gpl-2.0.html.
#
# SPDX-License-Identifier: GPL-2.0
#
#

Import ('env')

kutf_env = env.Clone()
kutf_env.Append(CPPPATH = '#kernel/drivers/gpu/arm/midgard/tests/include')
Export('kutf_env')

if Glob('internal/sconscript'):
	SConscript('internal/sconscript')

if kutf_env['debug'] == '1':
	SConscript('kutf/sconscript')
	SConscript('mali_kutf_irq_test/sconscript')

	if Glob('kutf_test/sconscript'):
		SConscript('kutf_test/sconscript')

	if Glob('kutf_test_runner/sconscript'):
		SConscript('kutf_test_runner/sconscript')

if env['unit'] == '1':
	SConscript('mali_kutf_ipa_unit_test/sconscript')
	SConscript('mali_kutf_vinstr_test/sconscript')
