#
# (C) COPYRIGHT 2010-2017 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')

# Clone the environment so changes don't affect other build files
env_ump = env.Clone()

# Source files required for UMP.
ump_src = [
    Glob('common/*.c'),
    Glob('imports/*/*.c'),
    Glob('linux/*.c'),
]

make_args = env_ump.kernel_get_config_defines(ret_list = True) + [
    'PLATFORM=%s' % env_ump['platform'],
    'MALI_UNIT_TEST=%s' % env_ump['unit'],
]

mod = env_ump.BuildKernelModule('$STATIC_LIB_PATH/ump.ko', ump_src,
                                make_args = make_args)
env_ump.KernelObjTarget('ump', mod)

SConscript( 'imports/sconscript' )

