| #!/usr/bin/python | |
| # -*- coding: utf-8 -*- | |
| # Copyright (c) 2017-2022 Arm Limited. | |
| # | |
| # SPDX-License-Identifier: MIT | |
| # | |
| # Permission is hereby granted, free of charge, to any person obtaining a copy | |
| # of this software and associated documentation files (the "Software"), to | |
| # deal in the Software without restriction, including without limitation the | |
| # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | |
| # sell copies of the Software, and to permit persons to whom the Software is | |
| # furnished to do so, subject to the following conditions: | |
| # | |
| # The above copyright notice and this permission notice shall be included in all | |
| # copies or substantial portions of the Software. | |
| # | |
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| # SOFTWARE. | |
| import SCons | |
| import os.path | |
| Import('env') | |
| Import('vars') | |
| # vars is imported from arm_compute: | |
| variables = [ | |
| BoolVariable("pmu", "Enable the PMU cycle counter to measure execution time in benchmark tests. (Your device needs to support it)", False), | |
| BoolVariable("mali", "Enable the collection of Arm® Mali™ hardware counters to measure execution time in benchmark tests. (Your device needs to have a Arm® Mali™ driver that supports it)", False), | |
| ] | |
| # We need a separate set of Variables for the Help message (Otherwise the global variables will get displayed twice) | |
| new_options = Variables('scons') | |
| for v in variables: | |
| new_options.Add(v) | |
| vars.Add(v) | |
| # Clone the environment to make sure we're not polluting the arm_compute one: | |
| framework_env = env.Clone() | |
| vars.Update(framework_env) | |
| Help(new_options.GenerateHelpText(framework_env)) | |
| if(env['opencl']): | |
| framework_env.Append(CPPDEFINES=['ARM_COMPUTE_CL']) | |
| framework_env.Append(CPPPATH = ["."]) | |
| framework_env.Append(CPPFLAGS=['-Wno-overloaded-virtual']) | |
| files = Glob('*.cpp') | |
| files += Glob('command_line/*.cpp') | |
| files += Glob('printers/*.cpp') | |
| files += Glob('datasets/*.cpp') | |
| files += Glob('instruments/*.cpp') | |
| if not framework_env['pmu']: | |
| # Remove PMU files | |
| files = [f for f in files if "PMU" not in os.path.basename(str(f))] | |
| else: | |
| framework_env.Append(CPPDEFINES = ['PMU_ENABLED']) | |
| if not env['opencl']: | |
| # Remove OpenCLTimer files | |
| files = [f for f in files if "OpenCL" not in os.path.basename(str(f))] | |
| if not framework_env['mali']: | |
| # Remove Arm® Mali™ files | |
| files = [f for f in files if "MaliCounter" not in os.path.basename(str(f))] | |
| else: | |
| framework_env.Append(CPPDEFINES = ['MALI_ENABLED']) | |
| arm_compute_test_framework = framework_env.StaticLibrary('arm_compute_test_framework', files) | |
| Default(arm_compute_test_framework) | |
| Export('arm_compute_test_framework') |