| # |
| # (C) COPYRIGHT 2010-2016 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. |
| # |
| # A copy of the licence is included with the program, and can also be obtained |
| # from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| # Boston, MA 02110-1301, USA. |
| # |
| # |
| |
| |
| |
| import os |
| import re |
| 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('#kernel/drivers/base/ump/src/linux/*.c'), Glob('#kernel/drivers/base/ump/src/common/*.c'), Glob('#kernel/drivers/base/ump/src/imports/*/*.c')] |
| |
| env_ump.Append( CPPPATH='#kernel/drivers/base/ump/src/' ) |
| |
| if env_ump.GetOption('clean') : |
| env_ump.Execute(Action("make clean", '[clean] ump')) |
| cmd = env_ump.Command('$STATIC_LIB_PATH/ump.ko', ump_src, []) |
| else: |
| if env['unit'] == '1': |
| makeAction=Action("cd ${SOURCE.dir}/.. && make MALI_UNIT_TEST=${unit} PLATFORM=${platform} %s && cp ump.ko $STATIC_LIB_PATH/ump.ko" % env.kernel_get_config_defines(), '$MAKECOMSTR') |
| else: |
| # The target is ump.ko, built from the source in ump_src, via the action makeAction |
| # ump.ko will be copied to $STATIC_LIB_PATH after being built by the standard Linux |
| # kernel build system, after which it can be installed to the directory specified if |
| # "libs_install" is set; this is done by LibTarget. |
| makeAction=Action("cd ${SOURCE.dir}/.. && make PLATFORM=${platform} %s && cp ump.ko $STATIC_LIB_PATH/ump.ko" % env.kernel_get_config_defines(), '$MAKECOMSTR') |
| cmd = env_ump.Command('$STATIC_LIB_PATH/ump.ko', ump_src, [makeAction]) |
| |
| # Add a dependency on kds.ko only when the build is not Android |
| # Android uses sync_pt instead of Midgard KDS to achieve KDS functionality |
| # Only necessary when KDS is not built into the kernel. |
| # |
| if env['os'] != 'android': |
| linux_config_file = os.path.normpath(os.environ['KDIR']) + '/.config' |
| search_term = '^[\ ]*CONFIG_KDS[\ ]*=[\ ]*y' |
| kds_in_kernel = 0 |
| for line in open(linux_config_file, 'r'): |
| if re.search(search_term, line): |
| # KDS in kernel. |
| kds_in_kernel = 1 |
| if not kds_in_kernel: |
| env.Depends('$STATIC_LIB_PATH/ump.ko', '$STATIC_LIB_PATH/kds.ko') |
| |
| env_ump.KernelObjTarget('ump', cmd) |
| |
| SConscript( 'imports/sconscript' ) |
| |