#
# (C) COPYRIGHT 2010-2014, 2016-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' )

if Glob('bus_logger/sconscript'):
	if env['buslog'] == '1':
		SConscript('bus_logger/sconscript')

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

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

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

if Glob('smc_protected_mode_switcher/sconscript'):
	if env['platform_config'] == 'juno_soc':
		SConscript('smc_protected_mode_switcher/sconscript')

