set(EXECUTOR_SRC_LIST
executor/ge_executor.cc
graph/execute/graph_executor.cc
graph/execute/model_executor.cc
graph/load/graph_loader.cc
graph/load/model_manager/model_manager.cc
common/profiling/ge_profiling.cc
common/profiling/command_handle.cc
common/profiling/profiling_init.cc
common/dump/dump_utils.cc
common/dump/dump_callback.cc
)
set(DAVINCI_SRC_LIST
common/runtime/model_rt_var_manager.cc
common/runtime/rt_session.cc
common/dump/opdebug_register.cc
common/dump/data_dumper.cc
common/runtime_api_wrapper.cc
graph/load/model_manager/aipp_utils.cc
graph/manager/caching_allocator.cc
graph/manager/graph_mem_allocator.cc
graph/manager/active_memory_allocator.cc
graph/manager/mem_manager.cc
graph/manager/host_mem_allocator.cc
graph/manager/host_mem_manager.cc
graph/manager/memory_api.cc
graph/manager/rdma_pool_allocator.cc
graph/manager/session_scope_mem_allocator.cc
common/profiling/profiling_manager.cc
opskernel_executor/ops_kernel_executor_manager.cc
graph/manager/util/hcom_ome_util.cc
graph/manager/trans_var_data_utils.cc
hybrid/node_executor/aicpu/aicpu_ext_info_handler.cc
graph/load/model_manager/cpu_queue_schedule.cc
graph/load/model_manager/davinci_model.cc
graph/load/model_manager/memory_block_manager.cc
graph/load/model_manager/reusable_stream_allocator.cc
graph/load/model_manager/memory_app_type_classifier.cc
graph/load/model_manager/task_args_refresh_type_classifier.cc
graph/load/model_manager/task_node_map.cc
graph/load/model_manager/model_args_layout_planner.cc
graph/load/model_manager/model_args_manager.cc
graph/load/model_manager/aicpu_resources.cc
graph/load/model_manager/model_utils.cc
graph/load/model_manager/sink_only_allocator.cc
graph/load/model_manager/task_info/args_format/args_format_utils.cc
graph/load/model_manager/kernel/kernel_register_info_builder.cc
graph/load/model_manager/kernel/model_kernel_handles_manager.cc
graph/load/model_manager/task_info/fe/cmo_barrier_task_info.cc
graph/load/model_manager/task_info/fe/cmo_task_info.cc
graph/load/model_manager/task_info/rts/cmo_addr_task_info.cc
graph/load/model_manager/task_info/fe/dsa_task_info.cc
graph/load/model_manager/task_info/dvpp/dvpp_task_info.cc
graph/load/model_manager/task_info/rts/npu_get_float_status_task_info.cc
graph/load/model_manager/task_info/rts/npu_clear_float_status_task_info.cc
graph/load/model_manager/task_info/rts/end_graph_task_info.cc
graph/load/model_manager/task_info/rts/event_record_task_info.cc
graph/load/model_manager/task_info/rts/event_wait_task_info.cc
graph/load/model_manager/task_info/rts/event_mem_record_task_info.cc
graph/load/model_manager/task_info/rts/event_mem_wait_task_info.cc
graph/load/model_manager/task_info/rts/notify_record_task_info.cc
graph/load/model_manager/task_info/rts/notify_wait_task_info.cc
graph/load/model_manager/task_info/ffts_plus/ffts_plus_context_adapter.cc
graph/load/model_manager/task_info/ffts_plus/ffts_plus_task_info.cc
graph/load/model_manager/task_info/ffts_plus/ffts_plus_args_helper.cc
graph/load/model_manager/task_info/ffts_plus/ffts_plus_proto_transfer.cc
graph/load/model_manager/task_info/fe/fusion_start_task_info.cc
graph/load/model_manager/task_info/fe/fusion_stop_task_info.cc
graph/load/model_manager/task_info/fe/fusion_task_info.cc
graph/load/model_manager/task_info/hccl/hccl_task_info.cc
graph/load/model_manager/task_info/hccl/hccl_util.cc
graph/load/model_manager/task_info/aicpu/kernel_ex_task_info.cc
graph/load/model_manager/task_info/fe/kernel_task_info.cc
graph/load/model_manager/task_info/fe/super_kernel_task_info.cc
graph/load/model_manager/task_info/fe/update_pc_task_info.cc
graph/load/model_manager/task_info/rts/nop_task_info.cc
graph/load/model_manager/task_info/rts/label_goto_ex_task_info.cc
graph/load/model_manager/task_info/rts/label_set_task_info.cc
graph/load/model_manager/task_info/rts/label_switch_by_index_task_info.cc
graph/load/model_manager/task_info/rts/memcpy_addr_async_task_info.cc
graph/load/model_manager/task_info/rts/memcpy_async_task_info.cc
graph/load/model_manager/task_info/ge/profiler_trace_task_info.cc
graph/load/model_manager/task_info/ge/custom_task_info.cc
graph/load/model_manager/task_info/ge/sink_op_args_handler.cc
graph/load/model_manager/task_info/rts/stream_active_task_info.cc
graph/load/model_manager/task_info/rts/stream_switch_task_info.cc
graph/load/model_manager/task_info/task_info.cc
graph/load/model_manager/task_info/task_info_factory.cc
graph/load/model_manager/task_info/args_io_addrs_updater.cc
graph/load/model_manager/tbe_kernel_handle.cc
graph/load/model_manager/zero_copy_offset.cc
)
set(SINGLE_OP_SRC_LIST
single_op/single_op.cc
single_op/single_op_manager.cc
single_op/single_op_model.cc
single_op/stream_resource.cc
single_op/task/aicpu_c_c_task_builder.cc
single_op/task/aicpu_task_builder.cc
single_op/task/build_task_utils.cc
single_op/task/op_task.cc
single_op/task/rts_kernel_task_builder.cc
single_op/task/tbe_task_builder.cc
single_op/task/dsa_task_builder.cc
)
set(HYBRID_SRC_LIST
common/utils/executor_utils.cc
hybrid/common/npu_memory_allocator.cc
hybrid/common/tensor_value.cc
hybrid/common/bin_cache/one_node_single_bin_selector.cc
hybrid/executor/hybrid_execution_context.cc
hybrid/executor/hybrid_model_async_executor.cc
hybrid/executor/hybrid_model_executor.cc
hybrid/executor/hybrid_model_pipeline_executor.cc
hybrid/executor/hybrid_model_rt_v2_executor.cc
hybrid/executor/runtime_v2/rt_v2_executor_factory.cc
hybrid/executor/runtime_v2/rt_v2_pipeline_executor.cc
hybrid/executor/runtime_v2/rt_v2_simple_executor.cc
hybrid/executor/runtime_v2/rt_v2_stage_state.cc
hybrid/executor/runtime_v2/rt_v2_utils.cc
hybrid/executor/runtime_v2/scalable_allocator_manager.cc
hybrid/executor/hybrid_model_rt_v1_executor.cc
hybrid/executor/hybrid_profiler.cc
hybrid/executor/node_done_manager.cc
hybrid/executor/node_state.cc
hybrid/executor/rt_callback_manager.cc
hybrid/executor/host_cpu_callback_manager.cc
hybrid/executor/subgraph_context.cc
hybrid/executor/subgraph_executor.cc
hybrid/executor/hybrid_data_flow.cc
hybrid/executor/resource_manager.cc
hybrid/executor/worker/execution_engine.cc
hybrid/executor/worker/shape_inference_engine.cc
hybrid/executor/cann_tracing_profiler.cc
hybrid/hybrid_davinci_model.cc
hybrid/model/graph_item.cc
hybrid/model/hybrid_model.cc
hybrid/model/hybrid_model_builder.cc
hybrid/model/node_item.cc
hybrid/model/infer/graph_stage_cache.cc
hybrid/model/infer/node_shape_infer.cc
hybrid/model/infer/node_shape_propagator.cc
hybrid/model/infer/shape_utils.cc
hybrid/model/infer/shape_propagator.cc
hybrid/model/infer/tensor_desc_observer.cc
hybrid/model/infer/tensor_desc_holder.cc
hybrid/node_executor/aicore/aicore_node_executor.cc
hybrid/node_executor/aicore/aicore_op_task.cc
hybrid/node_executor/aicore/aicore_task_builder.cc
hybrid/node_executor/aicpu/aicpu_node_executor.cc
hybrid/node_executor/compiledsubgraph/known_node_executor.cc
hybrid/node_executor/controlop/control_op_executor.cc
hybrid/node_executor/ge_local/data_flow_kernels.cc
hybrid/node_executor/ge_local/ge_local_node_executor.cc
hybrid/node_executor/hccl/hccl_node_executor.cc
hybrid/node_executor/host_cpu/host_cpu_node_executor.cc
hybrid/node_executor/node_executor.cc
hybrid/node_executor/partitioned_call/partitioned_call_node_executor.cc
hybrid/node_executor/rts/rts_node_executor.cc
hybrid/node_executor/rts/rts_node_task.cc
hybrid/node_executor/rts/rts_task_factory.cc
hybrid/node_executor/task_context.cc
${AIR_CODE_DIR}/compiler/host_kernels/kernel_utils.cc
${AIR_CODE_DIR}/compiler/host_kernels/array_ops/rank_kernel.cc
${AIR_CODE_DIR}/compiler/host_kernels/array_ops/shape_kernel.cc
${AIR_CODE_DIR}/compiler/host_kernels/array_ops/shape_n_kernel.cc
${AIR_CODE_DIR}/compiler/host_kernels/array_ops/size_kernel.cc
${AIR_CODE_DIR}/compiler/host_kernels/array_ops/gathershapes_kernel.cc
)
message("CMAKE_CXX_COMPILER_VERSION = ${CMAKE_CXX_COMPILER_VERSION}")
add_library(ge_executor STATIC
${EXECUTOR_SRC_LIST}
)
add_dependencies(ge_executor
graphengine_protos
)
target_compile_options(ge_executor PRIVATE
$<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:${AIR_COMMON_COMPILE_OPTION}>
$<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd>
$<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT>
-Os
-fvisibility=hidden
-fvisibility-inlines-hidden
-ffunction-sections
-fdata-sections
)
target_compile_definitions(ge_executor PRIVATE
PROTOBUF_INLINE_NOT_IN_HEADERS=0
google=ascend_private
$<IF:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,OS_TYPE=WIN,OS_TYPE=0>
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>:SECUREC_USING_STD_SECURE_LIB=0 NOMINMAX>
)
target_include_directories(ge_executor PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${AIR_CODE_DIR}
${AIR_CODE_DIR}/base
${AIR_CODE_DIR}/compiler
${AIR_CODE_DIR}/inc
${AIR_CODE_DIR}/inc/graph_metadef
${AIR_CODE_DIR}/inc/external
${AIR_CODE_DIR}/inc/framework
${AIR_CODE_DIR}/runtime/v2
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}/proto/graphengine_protos
${METADEF_DIR}/pkg_inc
${TOP_DIR}/runtime/include/external
${TOP_DIR}/runtime/include/external/acl
${TOP_DIR}/runtime/include/external/acl/error_codes
${TOP_DIR}/hcomm/pkg_inc
${TOP_DIR}/hcomm/include
${TOP_DIR}/hcomm/include/hccl
)
target_link_libraries(ge_executor PRIVATE
intf_pub
cce_headers
slog_headers
msprof_headers
adump_headers
mmpa_headers
metadef_headers
runtime_headers
hccl_headers
datagw_headers
ascend_protobuf_static
json
ascend_dump
c_sec
$<$<NOT:$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-lrt>
-ldl
)
add_library(ge_executor_shared SHARED
${EXECUTOR_SRC_LIST}
)
add_dependencies(ge_executor_shared
graphengine_protos
)
target_compile_options(ge_executor_shared PRIVATE
-fno-common
-Werror
${AIR_COMMON_DYNAMIC_COMPILE_OPTION}
-Wextra
-Wfloat-equal
)
target_compile_definitions(ge_executor_shared PRIVATE
PROTOBUF_INLINE_NOT_IN_HEADERS=0
google=ascend_private
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>:SECUREC_USING_STD_SECURE_LIB=0 NOMINMAX>
)
target_include_directories(ge_executor_shared PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${AIR_CODE_DIR}
${AIR_CODE_DIR}/base
${AIR_CODE_DIR}/runtime/v2
${AIR_CODE_DIR}/compiler
${AIR_CODE_DIR}/inc
${AIR_CODE_DIR}/inc/graph_metadef
${AIR_CODE_DIR}/inc/external
${AIR_CODE_DIR}/inc/framework
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}/proto/graphengine_protos
${METADEF_DIR}/pkg_inc
${TOP_DIR}/metadef/inc
${TOP_DIR}/runtime/include/external
${TOP_DIR}/runtime/include/external/acl
${TOP_DIR}/runtime/include/external/acl/error_codes
${TOP_DIR}/hcomm/pkg_inc
${TOP_DIR}/hcomm/include
${TOP_DIR}/hcomm/include/hccl
)
target_link_options(ge_executor_shared PRIVATE
-Wl,-Bsymbolic
-Wl,--exclude-libs,ALL
)
target_link_libraries(ge_executor_shared
PRIVATE
intf_pub
$<$<TARGET_EXISTS:cce_headers>:cce_headers>
$<$<TARGET_EXISTS:aicpu_headers>:aicpu_headers>
msprof_headers
adump_headers
mmpa_headers
hccl_headers
$<$<TARGET_EXISTS:datagw_headers>:datagw_headers>
-Wl,--no-as-needed
graph
ge_common
ge_common_base
runtime
ascend_dump
davinci_executor
hybrid_executor
unified_dlog
platform
graph_base
register
error_manager
ascend_protobuf
c_sec
json
-Wl,--as-needed
$<$<NOT:$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-lrt>
-ldl
PUBLIC
air_headers
)
set_target_properties(ge_executor_shared PROPERTIES
OUTPUT_NAME ge_executor
)
add_library(davinci_executor SHARED
${DAVINCI_SRC_LIST})
add_dependencies(davinci_executor
graphengine_protos
)
target_compile_options(davinci_executor PRIVATE ${AIR_COMMON_DYNAMIC_COMPILE_OPTION})
target_compile_definitions(davinci_executor PRIVATE
PROTOBUF_INLINE_NOT_IN_HEADERS=0
google=ascend_private
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>:SECUREC_USING_STD_SECURE_LIB=0 NOMINMAX>
)
target_include_directories(davinci_executor PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${AIR_CODE_DIR}
${AIR_CODE_DIR}/base
${AIR_CODE_DIR}/compiler
${AIR_CODE_DIR}/inc
${AIR_CODE_DIR}/inc/graph_metadef
${AIR_CODE_DIR}/inc/external
${AIR_CODE_DIR}/inc/framework
${AIR_CODE_DIR}/runtime/v1
${AIR_CODE_DIR}/runtime/v2
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}/proto/graphengine_protos
${METADEF_DIR}/pkg_inc
${TOP_DIR}/metadef/inc
${TOP_DIR}/runtime/include/external/acl
${TOP_DIR}/runtime/include/external/acl/error_codes
${TOP_DIR}/hcomm/pkg_inc
${TOP_DIR}/hcomm/include
${TOP_DIR}/hcomm/include/hccl
${TOP_DIR}/runtime/pkg_inc/dump
)
target_link_options(davinci_executor PRIVATE
-Wl,-Bsymbolic -Wl,--exclude-libs,ALL
)
target_link_libraries(davinci_executor
PRIVATE
intf_pub
$<$<TARGET_EXISTS:cce_headers>:cce_headers>
$<$<TARGET_EXISTS:aicpu_headers>:aicpu_headers>
msprof_headers
adump_headers
mmpa_headers
hccl_headers
acl_rt
$<$<TARGET_EXISTS:datagw_headers>:datagw_headers>
-Wl,--no-as-needed
graph_base
ge_common
ge_common_base
ascend_dump
opp_registry
runtime
error_manager
ascend_protobuf
c_sec
unified_dlog
json
-Wl,--as-needed
$<$<NOT:$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-lrt>
-ldl
${AIR_COMMON_LINK_OPTION}
PUBLIC
air_headers
)
if ("${PRODUCT}" STREQUAL "ascend031")
target_clone(davinci_executor davinci_executor_static STATIC)
add_dependencies(davinci_executor_static graphengine_protos)
target_compile_options(davinci_executor_static PRIVATE
-Os
-fvisibility=hidden
-fvisibility-inlines-hidden
-ffunction-sections
-fdata-sections
)
set_target_properties(davinci_executor_static PROPERTIES
OUTPUT_NAME davinci_executor
)
endif ()
add_library(hybrid_executor SHARED
${SINGLE_OP_SRC_LIST}
${HYBRID_SRC_LIST}
)
add_dependencies(hybrid_executor
graphengine_protos
)
target_compile_options(hybrid_executor PRIVATE
${AIR_COMMON_DYNAMIC_COMPILE_OPTION}
)
target_compile_definitions(hybrid_executor PRIVATE
PROTOBUF_INLINE_NOT_IN_HEADERS=0
google=ascend_private
$<$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>:SECUREC_USING_STD_SECURE_LIB=0 NOMINMAX>
)
target_include_directories(hybrid_executor PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${AIR_CODE_DIR}
${AIR_CODE_DIR}/base
${AIR_CODE_DIR}/runtime/v2
${AIR_CODE_DIR}/compiler
${AIR_CODE_DIR}/inc
${AIR_CODE_DIR}/inc/graph_metadef
${AIR_CODE_DIR}/inc/external
${AIR_CODE_DIR}/inc/framework
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}/proto/graphengine_protos
${METADEF_DIR}/pkg_inc
${TOP_DIR}/metadef/inc
${TOP_DIR}/runtime/include/external
${TOP_DIR}/runtime/include/external/acl
${TOP_DIR}/runtime/include/external/acl/error_codes
${TOP_DIR}/hcomm/pkg_inc
${TOP_DIR}/hcomm/include
${TOP_DIR}/hcomm/include/hccl
)
target_link_options(hybrid_executor PRIVATE
-Wl,-Bsymbolic -Wl,--exclude-libs,ALL
)
target_link_libraries(hybrid_executor
PRIVATE
intf_pub
$<$<TARGET_EXISTS:cce_headers>:cce_headers>
$<$<TARGET_EXISTS:aicpu_headers>:aicpu_headers>
msprof_headers
mmpa_headers
adump_headers
$<$<TARGET_EXISTS:datagw_headers>:datagw_headers>
hccl_headers
-Wl,--no-as-needed
graph
register
acl_rt
opp_registry
ge_common
ge_common_base
runtime
davinci_executor
ascend_dump
error_manager
ascend_protobuf
unified_dlog
platform
json
c_sec
-Wl,--as-needed
$<$<NOT:$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-lrt>
-ldl
${AIR_COMMON_LINK_OPTION}
PUBLIC
air_headers
)
set(STUB_HEADER_LIST
${AIR_CODE_DIR}/runtime/v1/common/utils/executor_utils.h
${AIR_CODE_DIR}/runtime/v1/hybrid/common/npu_memory_allocator.h
${AIR_CODE_DIR}/runtime/v1/hybrid/hybrid_davinci_model.h
${AIR_CODE_DIR}/runtime/v1/single_op/single_op.h
${AIR_CODE_DIR}/runtime/v1/single_op/single_op_manager.h
${AIR_CODE_DIR}/runtime/v1/single_op/stream_resource.h
)
list(TRANSFORM STUB_HEADER_LIST
REPLACE "^.*/([^/]+)\\.h$" "${CMAKE_CURRENT_BINARY_DIR}/stub_\\1.cc"
OUTPUT_VARIABLE STUB_SRC_LIST
)
if(NOT BUILD_PKG_COMPONENT)
add_custom_command(
OUTPUT ${STUB_SRC_LIST}
COMMAND echo "Generating hybrid_executor_stub files."
&& ${HI_PYTHON} ${METADEF_DIR}/tests/stub/gen_stubapi.py ${CMAKE_CURRENT_BINARY_DIR} ${STUB_HEADER_LIST}
&& echo "Generating stub files end."
)
else()
add_custom_command(
OUTPUT ${STUB_SRC_LIST}
COMMAND echo "Generating hybrid_executor_stub files."
&& ${HI_PYTHON} ${GE_METADEF_DIR}/../tests/graph_metadef/stub/gen_stubapi.py ${CMAKE_CURRENT_BINARY_DIR} ${STUB_HEADER_LIST}
&& echo "Generating stub files end."
)
endif()
add_custom_target(stub_hybrid_executor DEPENDS ${STUB_SRC_LIST})
add_library(hybrid_executor_stub SHARED
${STUB_SRC_LIST}
)
add_dependencies(hybrid_executor_stub
graphengine_protos
stub_hybrid_executor
)
target_compile_options(hybrid_executor_stub PRIVATE
-fno-common -Wfloat-equal -fvisibility=default -Os
-Werror=return-type
-Wno-unused-parameter
)
target_compile_definitions(hybrid_executor_stub PRIVATE
PROTOBUF_INLINE_NOT_IN_HEADERS=0
google=ascend_private
)
target_include_directories(hybrid_executor_stub PRIVATE
${PROJECT_SOURCE_DIR}
${AIR_CODE_DIR}/base
${AIR_CODE_DIR}/runtime/v2
${AIR_CODE_DIR}/compiler
${CMAKE_CURRENT_LIST_DIR}
${AIR_CODE_DIR}/inc
${AIR_CODE_DIR}/inc/graph_metadef
${AIR_CODE_DIR}/inc/external
${AIR_CODE_DIR}/inc/framework
${CMAKE_BINARY_DIR}/proto/graphengine_protos
${METADEF_DIR}/pkg_inc
${TOP_DIR}/metadef/inc
${TOP_DIR}/runtime/include/external
${TOP_DIR}/runtime/include/external/acl
${TOP_DIR}/runtime/include/external/acl/error_codes
${TOP_DIR}/runtime/pkg_inc/dump
)
target_link_libraries(hybrid_executor_stub PRIVATE
intf_pub
slog_headers
msprof_headers
mmpa_headers
runtime_headers
metadef_headers
$<$<TARGET_EXISTS:cce_headers>:cce_headers>
$<$<TARGET_EXISTS:aicpu_headers>:aicpu_headers>
c_sec_headers
ascend_protobuf_shared_headers
$<$<NOT:$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-lrt>
-ldl
PUBLIC
air_headers
)
set_target_properties(hybrid_executor_stub PROPERTIES
OUTPUT_NAME hybrid_executor
LIBRARY_OUTPUT_DIRECTORY stub
)
if ("${PRODUCT}" STREQUAL "ascend031")
target_clone(hybrid_executor_stub hybrid_executor_static_stub STATIC)
add_dependencies(hybrid_executor_static_stub
graphengine_protos
stub_hybrid_executor
)
target_compile_options(hybrid_executor_static_stub PRIVATE
-ffunction-sections
-fdata-sections
)
set_target_properties(hybrid_executor_static_stub PROPERTIES
OUTPUT_NAME hybrid_executor
ARCHIVE_OUTPUT_DIRECTORY stub
)
endif ()
install(TARGETS hybrid_executor_stub ${INSTALL_OPTIONAL}
LIBRARY DESTINATION ${INSTALL_LIBRARY_DIR}/${CMAKE_SYSTEM_PROCESSOR}/stub
)