@@ -351,6 +351,9 @@ add_library(executorch_core ${_executorch_core__srcs})
351351# Legacy name alias.
352352add_library (executorch_no_prim_ops ALIAS executorch_core)
353353
354+ # A list of all configured backends.
355+ set (_executorch_backends "" )
356+
354357target_link_libraries (executorch_core PRIVATE program_schema)
355358if (ANDROID)
356359 target_link_libraries (executorch_core PUBLIC log )
@@ -494,6 +497,7 @@ install(FILES tools/cmake/Utils.cmake tools/cmake/executorch-config.cmake
494497
495498if (EXECUTORCH_BUILD_ARM_BAREMETAL)
496499 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /backends/arm)
500+ list (APPEND _executorch_backends executorch_delegate_ethos_u)
497501endif ()
498502
499503if (EXECUTORCH_BUILD_CADENCE)
@@ -502,30 +506,37 @@ endif()
502506
503507if (EXECUTORCH_BUILD_NXP_NEUTRON)
504508 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /backends/nxp)
509+ list (APPEND _executorch_backends executorch_delegate_neutron)
505510endif ()
506511
507512if (EXECUTORCH_BUILD_COREML)
508513 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /backends/apple /coreml)
514+ list (APPEND _executorch_backends coremldelegate)
509515endif ()
510516
511517if (EXECUTORCH_BUILD_MPS)
512518 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /backends/apple /mps)
519+ list (APPEND _executorch_backends mpsdelegate)
513520endif ()
514521
515522if (EXECUTORCH_BUILD_NEURON)
516523 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /backends/mediatek)
524+ list (APPEND _executorch_backends neuron_backend)
517525endif ()
518526
519527if (EXECUTORCH_BUILD_OPENVINO)
520528 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /backends/openvino)
529+ list (APPEND _executorch_backends openvino_backend)
521530endif ()
522531
523532if (EXECUTORCH_BUILD_QNN)
524533 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /backends/qualcomm)
534+ list (APPEND _executorch_backends qnn_executorch_backend)
525535endif ()
526536
527537if (EXECUTORCH_BUILD_XNNPACK)
528538 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /backends/xnnpack)
539+ list (APPEND _executorch_backends xnnpack_backend)
529540endif ()
530541
531542if (EXECUTORCH_BUILD_CORTEX_M)
@@ -689,9 +700,20 @@ if(EXECUTORCH_BUILD_KERNELS_QUANTIZED)
689700 target_link_options_shared_lib(quantized_ops_lib)
690701endif ()
691702
703+ if (EXECUTORCH_BUILD_VULKAN)
704+ add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /backends/vulkan)
705+ list (APPEND _executorch_backends vulkan_backend)
706+ endif ()
707+
708+ # Top-level interface targets.
709+ add_library (executorch_backends INTERFACE )
710+
711+ # A target containing all configured backends.
712+ target_link_libraries (executorch_backends INTERFACE ${_executorch_backends} )
713+
692714if (EXECUTORCH_BUILD_EXECUTOR_RUNNER)
693715 # Baseline libraries that executor_runner will link against.
694- set (_executor_runner_libs executorch gflags)
716+ set (_executor_runner_libs executorch gflags executorch_backends )
695717
696718 if (EXECUTORCH_BUILD_KERNELS_OPTIMIZED)
697719 list (APPEND _executor_runner_libs optimized_native_cpu_ops_lib)
@@ -710,18 +732,10 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER)
710732 list (APPEND _executor_runner_libs $<LINK_LIBRARY:WHOLE_ARCHIVE,custom_ops>)
711733 endif ()
712734
713- if (EXECUTORCH_BUILD_XNNPACK)
714- list (APPEND _executor_runner_libs xnnpack_backend)
715- endif ()
716-
717735 if (EXECUTORCH_ENABLE_EVENT_TRACER)
718736 list (APPEND _executor_runner_libs etdump flatccrt)
719737 endif ()
720738
721- if (EXECUTORCH_BUILD_COREML AND APPLE )
722- list (APPEND _executor_runner_libs coremldelegate)
723- endif ()
724-
725739 add_executable (executor_runner ${_executor_runner__srcs} )
726740 if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug" )
727741 target_link_options_gc_sections(executor_runner)
@@ -741,10 +755,6 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER)
741755 endif ()
742756endif ()
743757
744- if (EXECUTORCH_BUILD_VULKAN)
745- add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /backends/vulkan)
746- endif ()
747-
748758if (EXECUTORCH_BUILD_ANDROID_JNI)
749759 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /extension/android)
750760endif ()
0 commit comments