@@ -14,36 +14,102 @@ endif()
1414
1515include (${EXECUTORCH_ROOT} /tools/cmake/Utils.cmake )
1616
17+ if (POLICY CMP0169)
18+ # Allow FetchContent_Populate to be used for source-only fetch
19+ cmake_policy (SET CMP0169 OLD )
20+ endif ()
21+
1722set (_common_include_directories
1823 ${EXECUTORCH_ROOT} /.. ${EXECUTORCH_ROOT} /runtime/core/portable_type/c10
1924)
2025add_compile_definitions (C10_USING_CUSTOM_GENERATED_MACROS )
2126
22- # bare metal backend builds
23- if (EXECUTORCH_BUILD_ARM_BAREMETAL)
27+ set (ETHOSU_LINUX_DRIVER_GIT_REPO
28+ "https://gitlab.arm.com/artificial-intelligence/ethos-u/ethos-u-linux-driver-stack.git"
29+ CACHE STRING "Git repository that hosts the Ethos-U Linux driver stack"
30+ )
31+ set (ETHOSU_LINUX_DRIVER_GIT_TAG
32+ "25.11"
33+ CACHE STRING
34+ "Git tag/branch/commit used to fetch the Ethos-U Linux driver stack"
35+ )
36+ set (ETHOSU_LINUX_DRIVER_SOURCE_DIR
37+ ""
38+ CACHE
39+ PATH
40+ "Optional local path to an existing ethos-u-linux-driver stack checkout"
41+ )
42+
43+ if (EXECUTORCH_BUILD_ARM_BAREMETAL AND EXECUTORCH_BUILD_ARM_ETHOSU_LINUX)
44+ message (
45+ FATAL_ERROR
46+ "EXECUTORCH_BUILD_ARM_BAREMETAL and EXECUTORCH_BUILD_ARM_ETHOSU_LINUX cannot be enabled at the same time."
47+ )
48+ endif ()
49+
50+ # Ethos-U backend builds (bare metal or Linux driver stack)
51+ if (EXECUTORCH_BUILD_ARM_BAREMETAL OR EXECUTORCH_BUILD_ARM_ETHOSU_LINUX)
2452
2553 add_compile_options ("-Wall" "-Werror" )
2654
27- # Third-party folder and Ethos-U driver inclued
2855 set (THIRD_PARTY_ROOT "${CMAKE_CURRENT_SOURCE_DIR } /third-party" )
29- set (DRIVER_ETHOSU_INCLUDE_DIR
30- "${THIRD_PARTY_ROOT} /ethos-u-core-driver/include"
31- )
32- include_directories (${DRIVER_ETHOSU_INCLUDE_DIR} )
3356
34- set (_arm_baremetal_sources backends/arm/runtime/EthosUBackend.cpp
35- backends/arm/runtime/VelaBinStream.cpp
57+ set (_arm_backend_sources backends/arm/runtime/EthosUBackend.cpp
58+ backends/arm/runtime/VelaBinStream.cpp
3659 )
37- list (TRANSFORM _arm_baremetal_sources PREPEND "${EXECUTORCH_ROOT} /" )
60+ list (TRANSFORM _arm_backend_sources PREPEND "${EXECUTORCH_ROOT} /" )
3861
39- add_library (executorch_delegate_ethos_u STATIC ${_arm_baremetal_sources} )
40- target_link_libraries (
41- executorch_delegate_ethos_u PUBLIC executorch_core ethosu_core_driver
42- )
62+ add_library (executorch_delegate_ethos_u STATIC ${_arm_backend_sources} )
63+ target_link_libraries (executorch_delegate_ethos_u PUBLIC executorch_core )
64+
65+ if (EXECUTORCH_BUILD_ARM_BAREMETAL)
66+ target_sources (
67+ executorch_delegate_ethos_u
68+ PRIVATE ${EXECUTORCH_ROOT} /backends/arm/runtime/EthosUBackend_Cortex_M.cpp
69+ )
70+ set (DRIVER_ETHOSU_INCLUDE_DIR
71+ "${THIRD_PARTY_ROOT} /ethos-u-core-driver/include"
72+ )
73+ target_include_directories (
74+ executorch_delegate_ethos_u PRIVATE ${DRIVER_ETHOSU_INCLUDE_DIR}
75+ )
76+ target_link_libraries (executorch_delegate_ethos_u PUBLIC ethosu_core_driver )
77+ elseif (EXECUTORCH_BUILD_ARM_ETHOSU_LINUX)
78+ target_sources (
79+ executorch_delegate_ethos_u
80+ PRIVATE ${EXECUTORCH_ROOT} /backends/arm/runtime/EthosUBackend_Cortex_A.cpp
81+ )
82+ if (NOT ETHOSU_LINUX_DRIVER_SOURCE_DIR
83+ OR NOT EXISTS
84+ "${ETHOSU_LINUX_DRIVER_SOURCE_DIR } /driver_library/src/ethosu.cpp"
85+ )
86+ include (FetchContent )
87+ FetchContent_Declare (
88+ ethosu_linux_driver_src
89+ GIT_REPOSITORY ${ETHOSU_LINUX_DRIVER_GIT_REPO}
90+ GIT_TAG ${ETHOSU_LINUX_DRIVER_GIT_TAG}
91+ GIT_SHALLOW TRUE
92+ )
93+ FetchContent_GetProperties (ethosu_linux_driver_src)
94+ if (NOT ethosu_linux_driver_src_POPULATED)
95+ FetchContent_Populate (ethosu_linux_driver_src)
96+ endif ()
97+ set (ETHOSU_LINUX_DRIVER_SOURCE_DIR ${ethosu_linux_driver_src_SOURCE_DIR } )
98+ endif ()
99+
100+ target_include_directories (
101+ executorch_delegate_ethos_u
102+ PRIVATE ${ETHOSU_LINUX_DRIVER_SOURCE_DIR } /driver_library/include
103+ ${ETHOSU_LINUX_DRIVER_SOURCE_DIR } /kernel/include
104+ )
105+ target_sources (
106+ executorch_delegate_ethos_u
107+ PRIVATE ${ETHOSU_LINUX_DRIVER_SOURCE_DIR } /driver_library/src/ethosu.cpp
108+ )
109+ endif ()
43110
44111 install (TARGETS executorch_delegate_ethos_u EXPORT ExecuTorchTargets)
45112
46- # end config for bare metal builds
47113endif ()
48114
49115# VGF backend builds
0 commit comments