diff --git a/CMakeLists.txt b/CMakeLists.txt index e83d8ea11b5..d94e6e2fda6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -380,6 +380,9 @@ add_library(executorch_core ${_executorch_core__srcs}) # Legacy name alias. add_library(executorch_no_prim_ops ALIAS executorch_core) +# A list of all configured backends. +set(_executorch_backends "") + target_link_libraries(executorch_core PRIVATE program_schema) if(ANDROID) target_link_libraries(executorch_core PUBLIC log) @@ -524,6 +527,7 @@ install(FILES tools/cmake/executorch-config.cmake if(EXECUTORCH_BUILD_ARM_BAREMETAL) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/arm) + list(APPEND _executorch_backends executorch_delegate_ethos_u) endif() if(EXECUTORCH_BUILD_CADENCE) @@ -532,30 +536,37 @@ endif() if(EXECUTORCH_BUILD_NXP_NEUTRON) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/nxp) + list(APPEND _executorch_backends executorch_delegate_neutron) endif() if(EXECUTORCH_BUILD_COREML) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/apple/coreml) + list(APPEND _executorch_backends coremldelegate) endif() if(EXECUTORCH_BUILD_MPS) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/apple/mps) + list(APPEND _executorch_backends mpsdelegate) endif() if(EXECUTORCH_BUILD_NEURON) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/mediatek) + list(APPEND _executorch_backends neuron_backend) endif() if(EXECUTORCH_BUILD_OPENVINO) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/openvino) + list(APPEND _executorch_backends openvino_backend) endif() if(EXECUTORCH_BUILD_QNN) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/qualcomm) + list(APPEND _executorch_backends qnn_executorch_backend) endif() if(EXECUTORCH_BUILD_XNNPACK) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/xnnpack) + list(APPEND _executorch_backends xnnpack_backend) endif() if(EXECUTORCH_BUILD_CORTEX_M) @@ -757,10 +768,35 @@ if(EXECUTORCH_BUILD_KERNELS_QUANTIZED) executorch_target_link_options_shared_lib(quantized_ops_lib) endif() +if(EXECUTORCH_BUILD_VULKAN) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/vulkan) + list(APPEND _executorch_backends vulkan_backend vulkan_schema) +endif() + +if(EXECUTORCH_BUILD_VGF) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/arm) + list(APPEND _executorch_backends vgf_backend) +endif() + + +# Top-level interface targets. +add_library(executorch_backends INTERFACE) +add_library(executorch::backends ALIAS executorch_backends) + +# A target containing all configured backends. +target_link_libraries(executorch_backends INTERFACE ${_executorch_backends}) + +install( + TARGETS executorch_backends + INCLUDES + DESTINATION ${_common_include_directories} +) + if(EXECUTORCH_BUILD_EXECUTOR_RUNNER) # Baseline libraries that executor_runner will link against. set(_executor_runner_libs executorch extension_evalue_util extension_runner_util gflags + executorch_backends ) if(EXECUTORCH_BUILD_KERNELS_OPTIMIZED) @@ -780,18 +816,10 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER) list(APPEND _executor_runner_libs $) endif() - if(EXECUTORCH_BUILD_XNNPACK) - list(APPEND _executor_runner_libs xnnpack_backend) - endif() - if(EXECUTORCH_ENABLE_EVENT_TRACER) list(APPEND _executor_runner_libs etdump flatccrt) endif() - if(EXECUTORCH_BUILD_COREML AND APPLE) - list(APPEND _executor_runner_libs coremldelegate) - endif() - add_executable(executor_runner ${_executor_runner__srcs}) if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") target_link_options_gc_sections(executor_runner) @@ -814,14 +842,6 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER) endif() endif() -if(EXECUTORCH_BUILD_VULKAN) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/vulkan) -endif() -if(EXECUTORCH_BUILD_VGF) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/arm) -endif() - - if(EXECUTORCH_BUILD_ANDROID_JNI) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/extension/android) endif() diff --git a/backends/vulkan/CMakeLists.txt b/backends/vulkan/CMakeLists.txt index 0b805aef5f4..72d5fb8d830 100644 --- a/backends/vulkan/CMakeLists.txt +++ b/backends/vulkan/CMakeLists.txt @@ -122,27 +122,6 @@ executorch_target_link_options_shared_lib(vulkan_backend) set_property(TARGET vulkan_backend PROPERTY CXX_STANDARD 17) -# Executor Runner - -if(NOT CMAKE_TOOLCHAIN_FILE MATCHES ".*(iOS|ios\.toolchain)\.cmake$") - set(VULKAN_RUNNER_SRCS ${_executor_runner__srcs}) - list(TRANSFORM VULKAN_RUNNER_SRCS PREPEND "${EXECUTORCH_ROOT}/") - - set(VGF_BACKEND ) - if(EXECUTORCH_BUILD_VGF) - set(VGF_BACKEND vgf_backend) - endif() - - add_executable(vulkan_executor_runner ${VULKAN_RUNNER_SRCS}) - target_link_libraries( - vulkan_executor_runner ${_executor_runner_libs} vulkan_schema - vulkan_backend - ${VGF_BACKEND} - ) - - target_compile_options(vulkan_executor_runner PUBLIC ${VULKAN_CXX_FLAGS}) -endif() - # Test targets install(