blob: a9e1db36f361e2737c6ae72a20bb146b4a56bcaf [file] [log] [blame]
Jeremy Johnsonf0348ea2023-09-27 16:10:59 +01001# Copyright (c) 2023, ARM Limited.
2# SPDX-License-Identifier: Apache-2.0
3"""Locate model files helper functions."""
4from enum import IntEnum
5from pathlib import Path
6
7DEFAULT_REF_MODEL_SCHEMA_PATH = Path("thirdparty/serialization_lib/schema")
8DEFAULT_REF_MODEL_BUILD_FLATC_PATH = Path(
9 "thirdparty/serialization_lib/third_party/flatbuffers"
10)
11DEFAULT_REF_MODEL_BUILD_EXE_PATH = Path("reference_model")
12DEFAULT_BUILD_DIR = Path("build")
13
14
15class TosaFileType(IntEnum):
16 """TOSA file types."""
17
18 REF_MODEL = 0
19 SCHEMA = 1
20 FLATC = 2
21 VERIFY_LIBRARY = 3
22
23
24TOSA_FILE_TYPE_TO_DETAILS = {
25 TosaFileType.REF_MODEL: {
26 "name": "tosa_reference_model",
27 "location": DEFAULT_REF_MODEL_BUILD_EXE_PATH,
28 "build": True,
29 },
30 TosaFileType.SCHEMA: {
31 "name": "tosa.fbs",
32 "location": DEFAULT_REF_MODEL_SCHEMA_PATH,
33 "build": False,
34 },
35 TosaFileType.FLATC: {
36 "name": "flatc",
37 "location": DEFAULT_REF_MODEL_BUILD_FLATC_PATH,
38 "build": True,
39 },
40 TosaFileType.VERIFY_LIBRARY: {
41 "name": "libtosa_reference_verify_lib.so",
42 "location": DEFAULT_REF_MODEL_BUILD_EXE_PATH,
43 "build": True,
44 },
45}
46
47
48def find_tosa_file(file_type, ref_model_path, path_is_ref_model_exe=True):
49 """Return the possible path to the required tosa file type."""
50 name = TOSA_FILE_TYPE_TO_DETAILS[file_type]["name"]
51 location = TOSA_FILE_TYPE_TO_DETAILS[file_type]["location"]
52 build = TOSA_FILE_TYPE_TO_DETAILS[file_type]["build"]
53
54 if path_is_ref_model_exe:
55 # Given a path to the reference_model executable
56
57 # Special case - return what we have been given!
58 if file_type == TosaFileType.REF_MODEL:
59 return ref_model_path
60
61 try:
62 if build:
63 # Look in build directory
64 search_path = ref_model_path.parents[1]
65 else:
66 # Look in reference_model directory
67 search_path = ref_model_path.parents[2]
68 except IndexError:
69 search_path = ref_model_path.parent
70 else:
71 # Given a path to the reference_model directory
72 if build:
73 search_path = ref_model_path / DEFAULT_BUILD_DIR
74 else:
75 search_path = ref_model_path
76
77 search_path = search_path / location / name
78
79 return search_path