diff options
Diffstat (limited to 'compute_kernel_writer/validation/SConscript')
-rw-r--r-- | compute_kernel_writer/validation/SConscript | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/compute_kernel_writer/validation/SConscript b/compute_kernel_writer/validation/SConscript new file mode 100644 index 0000000000..452cc0a9ea --- /dev/null +++ b/compute_kernel_writer/validation/SConscript @@ -0,0 +1,100 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# Copyright (c) 2023 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 os.path + +Import('env') +Import('vars') +Import('install_bin') + +# vars is imported from compute_kernel_writer: +variables = [ + BoolVariable("validation_tests", "Build validation test programs", 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 compute_kernel_writer one: +test_env = env.Clone() +vars.Update(test_env) + +Help(new_options.GenerateHelpText(test_env)) + +# Check if we need to build the test framework +build_test_framework = False +for opt in new_options.keys(): + option_value = test_env[opt] + if type(option_value) is bool and option_value: + build_test_framework = True + break + +if not build_test_framework: + Return() + +# Remove -Wnoexcept from tests +if 'g++' in test_env['CXX'] and '-Wnoexcept' in test_env['CXXFLAGS']: + test_env['CXXFLAGS'].remove("-Wnoexcept") + +load_whole_archive = '-Wl,--whole-archive' +noload_whole_archive = '-Wl,--no-whole-archive' + +if env['os'] in ['android']: + Import("ckw_a") + + test_env.Append(LIBS = [ckw_a]) + ckw_lib = ckw_a +else: + Import("ckw_so") + test_env.Append(LIBS = ["ckw"]) + ckw_lib = ckw_so + +# Add main file +files_validation = Glob('Validation.cpp') + +# Add unit tests +files_validation += Glob('tests/*.cpp') + +extra_link_flags = [] + +test_env.Append(LIBS = ["rt"]) +extra_link_flags += ['-fstack-protector-strong'] + +bm_link_flags = [] +if test_env['linker_script']: + bm_link_flags += ['-Wl,--build-id=none', '-T', env['linker_script']] + +if test_env['validation_tests']: + program_objects = files_validation + + ckw_validation = test_env.Program('ckw_validation', program_objects, LIBS=test_env['LIBS'], LINKFLAGS=test_env['LINKFLAGS'] + bm_link_flags) + ckw_validation = install_bin(ckw_validation) + Depends(ckw_validation, ckw_lib) + + Default(ckw_validation) + Export('ckw_validation') |