onnxruntime
82 строки · 4.4 Кб
1# Copyright (c) Microsoft Corporation. All rights reserved.
2# Licensed under the MIT License.
3
4if (onnxruntime_MINIMAL_BUILD AND NOT onnxruntime_EXTENDED_MINIMAL_BUILD)
5message(FATAL_ERROR "NNAPI can not be used in a basic minimal build. Please build with '--minimal_build extended'")
6endif()
7
8add_compile_definitions(USE_NNAPI=1)
9
10# This is the minimum Android API Level required by ORT NNAPI EP to run
11# ORT running on any host system with Android API level less than this will fall back to CPU EP
12if(onnxruntime_NNAPI_MIN_API)
13add_compile_definitions(ORT_NNAPI_MIN_API_LEVEL=${onnxruntime_NNAPI_MIN_API})
14endif()
15
16# This is the maximum Android API level supported in the ort model conversion for NNAPI EP
17# Note: This is only for running NNAPI for ort format model conversion on non-Android system since we cannot
18# get the actually Android system version.
19if(onnxruntime_NNAPI_HOST_API)
20if(CMAKE_SYSTEM_NAME STREQUAL "Android")
21message(FATAL_ERROR "onnxruntime_NNAPI_HOST_API should only be set for non-Android target")
22endif()
23add_compile_definitions(ORT_NNAPI_MAX_SUPPORTED_API_LEVEL=${onnxruntime_NNAPI_HOST_API})
24endif()
25
26set(onnxruntime_provider_nnapi_cc_src_patterns
27"${ONNXRUNTIME_ROOT}/core/providers/nnapi/*.h"
28"${ONNXRUNTIME_ROOT}/core/providers/nnapi/*.cc"
29"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/*.h"
30"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/*.cc"
31"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/builders/*.h"
32"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/builders/*.cc"
33"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/builders/impl/*.h"
34"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/builders/impl/*.cc"
35"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/nnapi_lib/NeuralNetworksTypes.h"
36"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/nnapi_lib/NeuralNetworksWrapper.h"
37"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/nnapi_lib/NeuralNetworksWrapper.cc"
38"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/nnapi_lib/nnapi_implementation.h"
39)
40
41# On Android, use the actual NNAPI implementation.
42# Otherwise, use a stub implementation to support some unit testing.
43if(CMAKE_SYSTEM_NAME STREQUAL "Android")
44list(APPEND onnxruntime_provider_nnapi_cc_src_patterns
45"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/nnapi_lib/nnapi_implementation.cc")
46else()
47list(APPEND onnxruntime_provider_nnapi_cc_src_patterns
48"${ONNXRUNTIME_ROOT}/core/providers/nnapi/nnapi_builtin/nnapi_lib/nnapi_implementation_stub.cc")
49endif()
50
51# These are shared utils,
52# TODO, move this to a separate lib when used by EPs other than NNAPI and CoreML
53list(APPEND onnxruntime_provider_nnapi_cc_src_patterns
54"${ONNXRUNTIME_ROOT}/core/providers/shared/utils/utils.h"
55"${ONNXRUNTIME_ROOT}/core/providers/shared/utils/utils.cc"
56)
57
58file(GLOB onnxruntime_providers_nnapi_cc_srcs CONFIGURE_DEPENDS ${onnxruntime_provider_nnapi_cc_src_patterns})
59
60source_group(TREE ${ONNXRUNTIME_ROOT}/core FILES ${onnxruntime_providers_nnapi_cc_srcs})
61onnxruntime_add_static_library(onnxruntime_providers_nnapi ${onnxruntime_providers_nnapi_cc_srcs})
62onnxruntime_add_include_to_target(onnxruntime_providers_nnapi
63onnxruntime_common onnxruntime_framework onnx onnx_proto ${PROTOBUF_LIB} flatbuffers::flatbuffers Boost::mp11 safeint_interface
64)
65target_link_libraries(onnxruntime_providers_nnapi)
66add_dependencies(onnxruntime_providers_nnapi onnx ${onnxruntime_EXTERNAL_DEPENDENCIES})
67set_target_properties(onnxruntime_providers_nnapi PROPERTIES CXX_STANDARD_REQUIRED ON)
68set_target_properties(onnxruntime_providers_nnapi PROPERTIES FOLDER "ONNXRuntime")
69target_include_directories(onnxruntime_providers_nnapi PRIVATE ${ONNXRUNTIME_ROOT} ${nnapi_INCLUDE_DIRS})
70set_target_properties(onnxruntime_providers_nnapi PROPERTIES LINKER_LANGUAGE CXX)
71# ignore the warning unknown-pragmas on "pragma region"
72if(NOT MSVC)
73target_compile_options(onnxruntime_providers_nnapi PRIVATE "-Wno-unknown-pragmas")
74endif()
75
76if (NOT onnxruntime_BUILD_SHARED_LIB)
77install(TARGETS onnxruntime_providers_nnapi
78ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
79LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
80RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
81FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR})
82endif()
83