aboutsummaryrefslogtreecommitdiff
path: root/scripts/include_functions_kernels.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/include_functions_kernels.py')
-rw-r--r--[-rwxr-xr-x]scripts/include_functions_kernels.py61
1 files changed, 48 insertions, 13 deletions
diff --git a/scripts/include_functions_kernels.py b/scripts/include_functions_kernels.py
index 074f7949b8..49c12867e6 100755..100644
--- a/scripts/include_functions_kernels.py
+++ b/scripts/include_functions_kernels.py
@@ -1,17 +1,52 @@
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017-2018, 2020-2021, 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 glob
import collections
import os
-Target = collections.namedtuple('Target', 'name prefix')
+armcv_path = "arm_compute"
+src_path ="src"
-targets = [Target("NEON", "NE"), Target("CL", "CL"), Target("CPP", "CPP"), Target("GLES_COMPUTE", "GC")]
+Target = collections.namedtuple('Target', 'name prefix basepath')
-armcv_path = "arm_compute"
-core_path = armcv_path + "/core/"
-runtime_path = armcv_path + "/runtime/"
-include_str = "#include \""
+core_targets = [
+ Target("NEON", "NE", src_path), # Arm® Neon™ kernels are under src
+ Target("CL", "CL", src_path), # CL kernels are under src
+ Target("CPP", "CPP", armcv_path) # CPP kernels are under arm_compute
+ ]
+# All functions are under arm_compute
+runtime_targets = [
+ Target("NEON", "NE", armcv_path),
+ Target("CL", "CL", armcv_path),
+ Target("CPP", "CPP", armcv_path)
+ ]
+
+core_path = "/core/"
+runtime_path = "/runtime/"
+include_str = "#include \""
def read_file(file):
with open(file, "r") as f:
@@ -39,19 +74,19 @@ def create_include_list(folder):
files_path = folder + "/*.h"
files = glob.glob(files_path)
updated_files = [include_str + folder + "/" + x.rsplit('/',1)[1] + "\"\n" for x in files]
- updated_files.sort()
+ updated_files.sort(key=lambda x: x.lower())
return updated_files
-def include_components(path, header_prefix, folder, subfolders=None):
- for t in targets:
- target_path = path + t.name + "/"
+def include_components(target, path, header_prefix, folder, subfolders=None):
+ for t in target:
+ target_path = t.basepath + path + t.name + "/"
components_file = target_path + t.prefix + header_prefix
if os.path.exists(components_file):
include_list = create_include_list(target_path + folder)
for s in subfolders or []:
include_list += create_include_list( target_path + folder + "/" + s)
- include_list.sort()
+ include_list.sort(key=lambda x: x.lower())
lines = read_file(components_file)
lines, first_pos = remove_existing_includes(lines)
lines = add_updated_includes(lines, first_pos, include_list)
@@ -60,7 +95,7 @@ def include_components(path, header_prefix, folder, subfolders=None):
if __name__ == "__main__":
# Include kernels
- include_components(core_path, "Kernels.h", "kernels", ["arm32", "arm64"])
+ include_components(core_targets, core_path, "Kernels.h", "kernels", ["arm32", "arm64"])
# Include functions
- include_components(runtime_path, "Functions.h", "functions")
+ include_components(runtime_targets, runtime_path, "Functions.h", "functions")