Skip to content

Commit 1614227

Browse files
committed
[onert] Fix compilation on Ubuntu 25.10 with GCC 15.2.0
Trying to compile generated tests on Ubuntu 25.10 results in a compilation error due to name clash between test case namespace and function from the standard library: > In file included from ../../../../runtime/tests/nnapi/src/generated/all_generated_V1_2_cts_tests.cpp:182: > ../../../../runtime/tests/nnapi/src/generated/tests/rsqrt.mod.py.cpp:5:11: error: ‘namespace rsqrt { }’ redeclared as different kind of entity > 5 | namespace rsqrt { > | ^~~~~ > In file included from /usr/include/features.h:523, > from /usr/include/x86_64-linux-gnu/c++/15/bits/os_defines.h:39, > from /usr/include/x86_64-linux-gnu/c++/15/bits/c++config.h:727, > from /usr/include/c++/15/cstddef:51, > from ../../../../runtime/externals/GTEST-1.15.2/googletest/include/gtest/gtest.h:52, > from ../../../../runtime/tests/nnapi/src/generated/tests/../../TestGenerated.h:21, > from ../../../../runtime/tests/nnapi/src/generated/tests/abs_1D_float_nnfw.mod.py.cpp:3, > from ../../../../runtime/tests/nnapi/src/generated/all_generated_V1_2_cts_tests.cpp:4: > /usr/include/x86_64-linux-gnu/bits/mathcalls.h:206:1: note: previous declaration ‘double rsqrt(double)’ ONE-DCO-1.0-Signed-off-by: Arkadiusz Bokowy <a.bokowy@samsung.com>
1 parent cdd7cb6 commit 1614227

File tree

3 files changed

+39
-32
lines changed

3 files changed

+39
-32
lines changed

runtime/tests/nnapi/nnapi_test_generator/android-10/cts_generator.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,14 @@ def NeedRegenerate():
9999
def InitializeFiles(model_fd, example_fd, test_fd):
100100
fileHeader = "// clang-format off\n// Generated file (from: {spec_file}). Do not edit"
101101
testFileHeader = """\
102-
#include "../../TestGenerated.h"\n
103-
namespace {spec_name} {{
102+
#include "../../TestGenerated.h"
103+
namespace cts_gen_{spec_name} {{
104104
// Generated {spec_name} test
105105
#include "{example_file}"
106106
// Generated model constructor
107107
#include "{model_file}"
108-
}} // namespace {spec_name}\n"""
108+
}} // namespace cts_gen_{spec_name}
109+
"""
109110
# This regex is to remove prefix and get relative path for #include
110111
# Fix for onert: update path
111112
pathRegex = r".*(runtime/tests/nnapi/src/)"
@@ -272,13 +273,13 @@ def DumpCtsExample(example, example_fd):
272273
def DumpCtsTest(example, test_fd):
273274
testTemplate = """\
274275
TEST_F({test_case_name}, {test_name}) {{
275-
execute({namespace}::{create_model_name},
276-
{namespace}::{is_ignored_name},
277-
{namespace}::get_{examples_name}(){log_file});\n}}\n"""
278-
# Fix for onert: Remove version check
279-
#if example.model.version is not None:
280-
#testTemplate += """\
281-
#TEST_AVAILABLE_SINCE({version}, {test_name}, {namespace}::{create_model_name})\n"""
276+
execute(cts_gen_{namespace}::{create_model_name},
277+
cts_gen_{namespace}::{is_ignored_name},
278+
cts_gen_{namespace}::get_{examples_name}(){log_file});\n}}\n"""
279+
# Fix for onert: Remove version check
280+
# if example.model.version is not None:
281+
# testTemplate += """\
282+
# TEST_AVAILABLE_SINCE({version}, {test_name}, {namespace}::{create_model_name})\n"""
282283
print(testTemplate.format(
283284
test_case_name="DynamicOutputShapeTest" if example.model.hasDynamicOutputShape \
284285
else "GeneratedTests",

runtime/tests/nnapi/nnapi_test_generator/android-10/vts_generator.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/usr/bin/env python3
22
#
33
# Copyright 2017, The Android Open Source Project
4+
# Copyright 2026, Samsung Electronics Co., Ltd. All Rights Reserved
45
#
56
# Licensed under the Apache License, Version 2.0 (the "License");
67
# you may not use this file except in compliance with the License.
@@ -271,15 +272,17 @@ def generate_vts_test(example, test_file):
271272
testTemplate = """\
272273
TEST_F({test_case_name}, {test_name}) {{
273274
generated_tests::Execute(device,
274-
{namespace}::{create_model_name},
275-
{namespace}::{is_ignored_name},
276-
{namespace}::get_{examples_name}(){test_dynamic_output_shape});\n}}
275+
vts_gen_{namespace}::{create_model_name},
276+
vts_gen_{namespace}::{is_ignored_name},
277+
vts_gen_{namespace}::get_{examples_name}(){test_dynamic_output_shape});
278+
}}
277279
278280
TEST_F(ValidationTest, {test_name}) {{
279-
const Model model = {namespace}::{create_model_name}();
280-
const std::vector<Request> requests = createRequests({namespace}::get_{examples_name}());
281+
const Model model = vts_gen_{namespace}::{create_model_name}();
282+
const std::vector<Request> requests = createRequests(vts_gen_{namespace}::get_{examples_name}());
281283
validateEverything(model, requests);
282-
}}\n
284+
}}
285+
283286
"""
284287
if example.model.hasDynamicOutputShape:
285288
print("#ifdef NN_TEST_DYNAMIC_OUTPUT_SHAPE", file=test_fd)
@@ -300,12 +303,12 @@ def InitializeFiles(model_fd, example_fd, test_fd):
300303
fileHeader = "// clang-format off\n// Generated file (from: {spec_file}). Do not edit"
301304
testFileHeader = """\
302305
// Generated from: {spec_file}.
303-
namespace {spec_name} {{
306+
namespace vts_gen_{spec_name} {{
304307
// Generated {spec_name} test
305308
#include "{example_file}"
306309
// Generated model constructor
307310
#include "{model_file}"
308-
}} // namespace {spec_name}\n"""
311+
}} // namespace vts_gen_{spec_name}\n"""
309312
# This regex is to remove prefix and get relative path for #include
310313
pathRegex = r".*frameworks/ml/nn/(runtime/test/generated/)?"
311314
specFileBase = os.path.basename(tg.FileNames.specFile)

runtime/tests/nnapi/specs/generate_vts_test.sh

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
#!/bin/bash
2+
13
#
24
# Copyright (C) 2017 The Android Open Source Project
5+
# Copyright (C) 2026 Samsung Electronics Co., Ltd. All Rights Reserved
36
#
47
# Licensed under the Apache License, Version 2.0 (the "License");
58
# you may not use this file except in compliance with the License.
@@ -29,20 +32,20 @@ function generate_one_testcase {
2932
-e $VTS_PATH/generated/examples/$BASENAME.example.cpp
3033
# Paste these lines into TestGenerated.cpp
3134
echo
32-
echo namespace $BASENAME {
33-
echo std::vector\<MixedTypedExample\> examples \= {
34-
echo // Generated $BASENAME test
35-
echo \#include \"examples/$BASENAME.example.cpp\"
36-
echo }\;
37-
echo // Generated model constructor
38-
echo \#include \"vts_models/$BASENAME.model.cpp\"
39-
echo } // namespace $BASENAME
40-
echo TEST_F\(NeuralnetworksHidlTest\, $BASENAME\) {
41-
echo ' generated_tests::Execute'\(device,
42-
echo ' '$BASENAME\:\:createTestModel\,
43-
echo ' '$BASENAME\:\:is_ignored\,
44-
echo ' '$BASENAME\:\:examples\)\;
45-
echo }
35+
echo "namespace vts_gen_$BASENAME {"
36+
echo "std::vector<MixedTypedExample> examples = {"
37+
echo "// Generated $BASENAME test"
38+
echo "#include \"examples/$BASENAME.example.cpp\""
39+
echo "};"
40+
echo "// Generated model constructor"
41+
echo "#include \"vts_models/$BASENAME.model.cpp\""
42+
echo "} // namespace vts_gen_$BASENAME"
43+
echo "TEST_F(NeuralnetworksHidlTest, $BASENAME) {"
44+
echo " generated_tests::Execute(device,"
45+
echo " vts_gen_$BASENAME::createTestModel,"
46+
echo " vts_gen_$BASENAME::is_ignored,"
47+
echo " vts_gen_$BASENAME::examples);"
48+
echo "}"
4649
}
4750

4851
for ver in $NNAPI_VERSION;

0 commit comments

Comments
 (0)