@@ -926,6 +926,19 @@ if(NOT EXECUTORCH_SELECT_OPS_YAML STREQUAL ""
926926 OR NOT EXECUTORCH_SELECT_OPS_LIST STREQUAL ""
927927 OR NOT EXECUTORCH_SELECT_OPS_MODEL STREQUAL ""
928928)
929+ # Use optimized kernels when available.
930+ if (EXECUTORCH_BUILD_KERNELS_OPTIMIZED)
931+ set (_selected_kernel_functions_yaml
932+ ${CMAKE_CURRENT_BINARY_DIR} /configurations /merged.yaml
933+ )
934+ set (_selected_kernel_libs "optimized_kernels" "optimized_portable_kernels" )
935+ else ()
936+ set (_selected_kernel_functions_yaml
937+ ${EXECUTORCH_ROOT} /kernels/portable/functions.yaml
938+ )
939+ set (_selected_kernel_libs "portable_kernels" )
940+ endif ()
941+
929942 gen_selected_ops(
930943 LIB_NAME
931944 "executorch_selected_kernels"
@@ -945,7 +958,7 @@ if(NOT EXECUTORCH_SELECT_OPS_YAML STREQUAL ""
945958 LIB_NAME
946959 "executorch_selected_kernels"
947960 FUNCTIONS_YAML
948- ${EXECUTORCH_ROOT} /kernels/portable/functions.yaml
961+ ${_selected_kernel_functions_yaml}
949962 CUSTOM_OPS_YAML
950963 ""
951964 DTYPE_SELECTIVE_BUILD
@@ -956,13 +969,19 @@ if(NOT EXECUTORCH_SELECT_OPS_YAML STREQUAL ""
956969 LIB_NAME
957970 "executorch_selected_kernels"
958971 KERNEL_LIBS
959- "portable_kernels"
972+ ${_selected_kernel_libs}
960973 DEPS
961974 executorch_core
962975 DTYPE_SELECTIVE_BUILD
963976 "${EXECUTORCH_ENABLE_DTYPE_SELECTIVE_BUILD} "
964977 )
965978 list (APPEND _executorch_kernels executorch_selected_kernels)
979+
980+ install (
981+ TARGETS executorch_selected_kernels
982+ EXPORT ExecuTorchTargets
983+ DESTINATION lib
984+ )
966985else ()
967986 # No selective build - link the full library.
968987 if (EXECUTORCH_BUILD_KERNELS_OPTIMIZED)
0 commit comments