aboutsummaryrefslogtreecommitdiff
path: root/tests/SConscript
diff options
context:
space:
mode:
Diffstat (limited to 'tests/SConscript')
-rw-r--r--tests/SConscript120
1 files changed, 67 insertions, 53 deletions
diff --git a/tests/SConscript b/tests/SConscript
index 26d422c10b..0907c5713b 100644
--- a/tests/SConscript
+++ b/tests/SConscript
@@ -1,4 +1,7 @@
-# Copyright (c) 2017-2019 ARM Limited.
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017-2023,2024 Arm Limited.
#
# SPDX-License-Identifier: MIT
#
@@ -19,7 +22,6 @@
# 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')
@@ -28,12 +30,11 @@ Import('install_bin')
# vars is imported from arm_compute:
variables = [
- BoolVariable("benchmark_examples", "Build benchmark examples programs", True),
- BoolVariable("validate_examples", "Build validate examples programs", True),
+ BoolVariable("benchmark_examples", "Build benchmark examples programs", False),
+ BoolVariable("validate_examples", "Build validate examples programs", False),
BoolVariable("reference_openmp", "Build reference validation with openmp", True),
- #FIXME Switch the following two options to False before releasing
- BoolVariable("validation_tests", "Build validation test programs", True),
- BoolVariable("benchmark_tests", "Build benchmark test programs", True),
+ BoolVariable("validation_tests", "Build validation test programs", False),
+ BoolVariable("benchmark_tests", "Build benchmark test programs", False),
("test_filter", "Pattern to specify the tests' filenames to be compiled", "*.cpp")
]
@@ -67,41 +68,45 @@ Import("arm_compute_test_framework")
test_env.Append(LIBS = arm_compute_test_framework)
# Disable floating-point expression contraction (e.g. fused multiply-add operations)
-test_env.Append(CXXFLAGS = ['-ffp-contract=off'])
+if not 'windows' in env['os']:
+ test_env.Append(CXXFLAGS = ['-ffp-contract=off'])
# Remove -Wnoexcept from tests
if 'g++' in test_env['CXX'] and '-Wnoexcept' in test_env['CXXFLAGS']:
test_env['CXXFLAGS'].remove("-Wnoexcept")
-if env['os'] in ['android', 'bare_metal'] or env['standalone']:
+load_whole_archive = '-Wl,--whole-archive'
+noload_whole_archive = '-Wl,--no-whole-archive'
+if 'macos' in test_env['os']:
+ load_whole_archive = '-Wl,-force_load'
+ noload_whole_archive = ''
+
+if (env['multi_isa']):
+ test_env.Append(CPPDEFINES=['ARM_COMPUTE_ENABLE_BF16'])
+
+if env['os'] in ['android', 'macos', 'bare_metal'] or env['standalone']:
Import("arm_compute_a")
- Import("arm_compute_core_a")
Import("arm_compute_graph_a")
- test_env.Append(LIBS = [arm_compute_graph_a, arm_compute_a, arm_compute_core_a])
+ test_env.Append(LIBS = [arm_compute_graph_a, arm_compute_a])
arm_compute_lib = arm_compute_graph_a
else:
Import("arm_compute_graph_so")
- Import("arm_compute_core_a")
- test_env.Append(LIBS = ["arm_compute_graph", "arm_compute", "arm_compute_core"])
+ test_env.Append(LIBS = ["arm_compute_graph", "arm_compute"])
arm_compute_lib = arm_compute_graph_so
if env['os'] in ['bare_metal']:
Import("bootcode_o")
-#FIXME Delete before release
-if env['internal_only']:
- test_env.Append(CPPDEFINES=['INTERNAL_ONLY'])
-
-test_env.Append(CPPPATH = ["#3rdparty/include"])
-test_env.Append(LIBPATH = ["#3rdparty/%s/%s" % (env['os'], env['arch'])])
+if env['external_tests_dir']:
+ test_env.Append(CPPPATH = [env['external_tests_dir'] + "/include"])
+ test_env.Append(LIBPATH = [env['external_tests_dir'] + "/%s/%s" % (env['os'], env['arch'])])
common_files = Glob('*.cpp')
common_objects = [test_env.StaticObject(f) for f in common_files]
files_benchmark = Glob('benchmark/*.cpp')
-#FIXME Delete before release
-if env['internal_only']:
- files_benchmark += Glob('../3rdparty/tests/benchmark/*.cpp')
+if env['external_tests_dir']:
+ files_benchmark += Glob(env['external_tests_dir'] + '/tests/benchmark/*.cpp')
# Add unit tests
files_validation = Glob('validation/UNIT/*/*.cpp')
@@ -112,29 +117,33 @@ filter_pattern = test_env['test_filter']
files_validation += Glob('validation/CPP/' + filter_pattern)
if env['opencl']:
+ if env['experimental_dynamic_fusion']:
+ files_validation += Glob('validation/dynamic_fusion/gpu/' + filter_pattern)
+ files_validation += Glob('validation/dynamic_fusion/gpu/cl/' + filter_pattern)
+
filter_pattern = test_env['test_filter']
test_env.Append(CPPDEFINES=['ARM_COMPUTE_CL'])
files_benchmark += Glob('benchmark/CL/*/' + filter_pattern)
files_benchmark += Glob('benchmark/CL/' + filter_pattern)
- #FIXME Delete before release
- if env['internal_only']:
- files_benchmark += Glob('../3rdparty/tests/benchmark/CL/' + filter_pattern)
+ if env['external_tests_dir']:
+ files_benchmark += Glob(env['external_tests_dir'] + '/tests/benchmark/CL/' + filter_pattern)
files_validation += Glob('validation/CL/*/' + filter_pattern)
files_validation += Glob('validation/CL/' + filter_pattern)
- #FIXME Delete before release
- if env['internal_only']:
- files_validation += Glob('../3rdparty/tests/validation/CL/' + filter_pattern)
+
+ if env['external_tests_dir']:
+ files_validation += Glob(env['external_tests_dir'] + '/tests/validation/CL/' + filter_pattern)
+ files_validation += Glob('validation/gpu/unit/*.cpp')
if env['neon']:
filter_pattern = test_env['test_filter']
files_benchmark += Glob('benchmark/NEON/*/' + filter_pattern)
files_benchmark += Glob('benchmark/NEON/' + filter_pattern)
- #FIXME Delete before release
- if env['internal_only']:
- files_benchmark += Glob('../3rdparty/tests/benchmark/NEON/' + filter_pattern)
+ test_env.Append(CPPPATH = ["#/src/cpu/kernels/assembly/"])
+ if env['external_tests_dir']:
+ files_benchmark += Glob(env['external_tests_dir'] + '/tests/benchmark/NEON/' + filter_pattern)
files_validation += Glob('validation/NEON/' + filter_pattern)
if env['os'] == 'bare_metal':
@@ -143,21 +152,16 @@ if env['neon']:
files_validation += Glob('validation/NEON/UNIT/TensorAllocator.cpp' + filter_pattern)
else:
files_validation += Glob('validation/NEON/*/' + filter_pattern)
+ if env['external_tests_dir']:
+ files_validation += Glob(env['external_tests_dir'] + '/tests/validation/NEON/' + filter_pattern)
+ files_validation += Glob('validation/cpu/unit/*.cpp')
-
-if env['gles_compute']:
- test_env.Append(CPPDEFINES=['ARM_COMPUTE_GC'])
-
- files_benchmark += Glob('benchmark/GLES_COMPUTE/*/*.cpp')
- files_benchmark += Glob('benchmark/GLES_COMPUTE/*.cpp')
-
- files_validation += Glob('validation/GLES_COMPUTE/*/*.cpp')
- files_validation += Glob('validation/GLES_COMPUTE/*.cpp')
-
+extra_link_flags = []
if env['os'] == 'android':
test_env.Append(LIBS = ["log"])
-elif env['os'] != 'bare_metal':
+elif env['os'] not in ['windows','bare_metal', 'macos']:
test_env.Append(LIBS = ["rt"])
+ extra_link_flags += ['-fstack-protector-strong']
if test_env['benchmark_tests']:
arm_compute_benchmark = test_env.Program('arm_compute_benchmark', files_benchmark + common_objects)
@@ -167,18 +171,24 @@ if test_env['benchmark_tests']:
Default(arm_compute_benchmark)
Export('arm_compute_benchmark')
-bm_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['reference_openmp'] and env['os'] != 'bare_metal':
- test_env['CXXFLAGS'].append('-fopenmp')
- test_env['LINKFLAGS'].append('-fopenmp')
+if test_env['reference_openmp'] and env['os'] not in ['bare_metal', 'macos','windows']:
+ test_env['CXXFLAGS'].append('-fopenmp')
+ test_env['LINKFLAGS'].append('-fopenmp')
+
+ if 'ndk_above_r21' in env:
+ test_env['LINKFLAGS'].append('-static-openmp')
+
+# Testing for fixed format GEMM kernels.
+if env['fixed_format_kernels'] and test_env['validation_tests']:
+ test_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS'])
if test_env['validation_tests']:
- arm_compute_validation_framework = env.StaticLibrary('arm_compute_validation_framework', Glob('validation/reference/*.cpp') + Glob('validation/*.cpp'), LINKFLAGS=test_env['LINKFLAGS'], CXXFLAGS=test_env['CXXFLAGS'], LIBS= [ arm_compute_test_framework, arm_compute_core_a])
+ arm_compute_validation_framework = env.StaticLibrary('arm_compute_validation_framework', Glob('validation/reference/*.cpp') + Glob('validation/*.cpp'), LINKFLAGS=test_env['LINKFLAGS'], CXXFLAGS=test_env['CXXFLAGS'], LIBS= [ arm_compute_test_framework ])
Depends(arm_compute_validation_framework , arm_compute_test_framework)
- Depends(arm_compute_validation_framework , arm_compute_core_a)
program_objects = files_validation + common_objects
if test_env['os'] == 'bare_metal':
@@ -218,8 +228,8 @@ if test_env['validation_tests']:
graph_utils = test_env.Object(source="../utils/GraphUtils.cpp", target="GraphUtils")
for file in Glob("validate_examples/graph_*.cpp"):
example = "validate_" + os.path.basename(os.path.splitext(str(file))[0])
- if env['os'] in ['android', 'bare_metal'] or env['standalone']:
- prog = test_env.Program(example, [ test_env.Object(source=file, target=example), graph_utils]+ files_validate_examples, LIBS = test_env["LIBS"] + [ arm_compute_validation_framework ], LINKFLAGS=test_env["LINKFLAGS"]+['-Wl,--whole-archive',arm_compute_lib,'-Wl,--no-whole-archive'] + bm_link_flags)
+ if env['os'] in ['android', 'macos', 'bare_metal'] or env['standalone']:
+ prog = test_env.Program(example, [ test_env.Object(source=file, target=example), graph_utils]+ files_validate_examples, LIBS = test_env["LIBS"] + [ arm_compute_validation_framework ], LINKFLAGS=test_env["LINKFLAGS"]+[load_whole_archive, arm_compute_lib, noload_whole_archive] + bm_link_flags + extra_link_flags)
arm_compute_validate_examples += [ prog ]
else:
#-Wl,--allow-shlib-undefined: Ignore dependencies of dependencies
@@ -239,7 +249,10 @@ if test_env['benchmark_examples']:
graph_utils = test_env.Object(source="../utils/GraphUtils.cpp", target="GraphUtils")
graph_params = test_env.Object(source="../utils/CommonGraphOptions.cpp", target="CommonGraphOptions")
arm_compute_benchmark_examples = []
- for examples_folder in [ "../examples", "../3rdparty/examples"]:
+ all_examples_folders = ["../examples"]
+ if env['external_tests_dir']:
+ all_examples_folders.append(env['external_tests_dir'] + "/examples")
+ for examples_folder in all_examples_folders:
if test_env['neon']:
for file in Glob("%s/neon_*.cpp" % examples_folder):
example = "benchmark_" + os.path.basename(os.path.splitext(str(file))[0])
@@ -267,13 +280,14 @@ if test_env['benchmark_examples']:
# Graph examples
for file in Glob("%s/graph_*.cpp" % examples_folder ):
example = "benchmark_" + os.path.basename(os.path.splitext(str(file))[0])
- if env['os'] in ['android', 'bare_metal'] or env['standalone']:
- prog = test_env.Program(example, [ test_env.Object(source=file, target=example), graph_utils, graph_params]+ files_benchmark_examples, LIBS = test_env["LIBS"], LINKFLAGS=test_env["LINKFLAGS"]+['-Wl,--whole-archive',arm_compute_lib,'-Wl,--no-whole-archive'] + bm_link_flags)
+ if env['os'] in ['android', 'macos', 'bare_metal'] or env['standalone']:
+ prog = test_env.Program(example, [ test_env.Object(source=file, target=example), graph_utils, graph_params]+ files_benchmark_examples, LIBS = test_env["LIBS"], LINKFLAGS=test_env["LINKFLAGS"]+[load_whole_archive, arm_compute_lib, noload_whole_archive] + bm_link_flags + extra_link_flags)
arm_compute_benchmark_examples += [ prog ]
else:
#-Wl,--allow-shlib-undefined: Ignore dependencies of dependencies
prog = test_env.Program(example, [ test_env.Object(source=file, target=example), graph_utils, graph_params]+ files_benchmark_examples, LIBS = test_env["LIBS"] + ["arm_compute_graph"], LINKFLAGS=test_env["LINKFLAGS"]+['-Wl,--allow-shlib-undefined'])
arm_compute_benchmark_examples += [ prog ]
+
arm_compute_benchmark_examples = install_bin(arm_compute_benchmark_examples)
Depends(arm_compute_benchmark_examples, arm_compute_test_framework)
Depends(arm_compute_benchmark_examples, arm_compute_lib)