@@ -787,5 +787,67 @@ if(EXECUTORCH_BUILD_KERNELS_CUSTOM)
787
787
)
788
788
endif ()
789
789
790
+ function (executorch_runtime target_name)
791
+ set (options OPTIMIZED QUANTIZED)
792
+ set (multi_value_args BACKEND EXTENSION)
793
+
794
+ cmake_parse_arguments (ETR "${options} " "" "${multi_value_args} " ${ARGN} )
795
+
796
+ message (STATUS "executorch_runtime: ${target_name} " )
797
+ message (STATUS "ETR_BACKEND: ${ETR_BACKEND} " )
798
+
799
+ set (runtime_deps executorch)
800
+
801
+ # Link backends.
802
+ foreach (backend IN LISTS ETR_BACKEND)
803
+ message (STATUS "backend: ${backend} " )
804
+ string (TOLOWER "${backend} " backend_l)
805
+ message (STATUS "backend_l: ${backend_l} " )
806
+
807
+ if (backend_l STREQUAL "coreml" )
808
+ list (APPEND runtime_deps coremldelegate)
809
+ elseif (backend_l STREQUAL "mps" )
810
+ list (APPEND runtime_deps mpsdelegate)
811
+ elseif (backend_l STREQUAL "qualcomm" )
812
+ list (APPEND runtime_deps qnn_executorch_backend)
813
+ elseif (backend_l STREQUAL "vulkan" )
814
+ list (APPEND runtime_deps vulkan_backend)
815
+ elseif (backend_l STREQUAL "xnnpack" )
816
+ list (APPEND runtime_deps xnnpack_backend)
817
+ else ()
818
+ message (FATAL_ERROR "Unknown backend \" ${backend} }\" ." )
819
+ endif ()
820
+ endforeach ()
821
+
822
+ # Link extensions.
823
+ foreach (extension IN LISTS ETR_EXTENSION)
824
+ string (TOLOWER "${extension} " extension_l)
825
+ message (STATUS "Extension ${extension_l} " )
826
+
827
+ if (extension_l STREQUAL "apple" )
828
+ list (APPEND runtime_deps extension_apple)
829
+ elseif (extension_l STREQUAL "dataloader" )
830
+ list (APPEND runtime_deps extension_data_loader)
831
+ elseif (extension_l STREQUAL "module" )
832
+ list (APPEND runtime_deps extension_module)
833
+ endif ()
834
+ endforeach ()
835
+
836
+ # Include optimized or portable operator library.
837
+ if (ETR_OPTIMIZED)
838
+ list (APPEND runtime_deps optimized_native_cpu_ops_lib)
839
+ else ()
840
+ list (APPEND runtime_deps portable_ops_lib)
841
+ endif ()
842
+
843
+ # Include quantized operator library.
844
+ if (ETR_QUANTIZED)
845
+ list (APPEND runtime_deps quantized_ops_lib)
846
+ endif ()
847
+
848
+ add_library ("${target_name} " INTERFACE )
849
+ target_link_libraries ("${target_name} " INTERFACE "${runtime_deps} " )
850
+ endfunction ()
851
+
790
852
# Print all summary
791
853
executorch_print_configuration_summary()
0 commit comments