cmake_minimum_required(VERSION 3.16)
add_library(${OPS_RAND} SHARED)
set_target_properties(${OPS_RAND} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION 1
OUTPUT_NAME "cann_ops_rand"
)
target_include_directories(${OPS_RAND} PUBLIC
${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/src
${ASCEND_HOME_PATH}/include
${ASCEND_HOME_PATH}/pkg_inc/op_common/
${ASCEND_HOME_PATH}/pkg_inc/base/
${ASCEND_HOME_PATH}/pkg_inc/
)
target_compile_options(${OPS_RAND} PRIVATE
$<$<COMPILE_LANGUAGE:ASC>:--npu-arch=${ASCEND_NPU_ARCH}>
)
target_link_libraries(${OPS_RAND} PRIVATE
tiling_api
)
message(STATUS "==========================================")
message(STATUS "Registering operators...")
message(STATUS "==========================================")
if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
file(GLOB LIB_SRC ${CMAKE_SOURCE_DIR}/lib/*.cpp)
if(LIB_SRC)
target_sources(${OPS_RAND} PRIVATE ${LIB_SRC})
message(STATUS "Collected lib sources: ${LIB_SRC}")
endif()
endif()
foreach(OP ${BUILD_OPERATORS})
if(EXISTS ${CMAKE_SOURCE_DIR}/src/${OP}/CMakeLists.txt)
add_subdirectory(${OP})
message(STATUS "Added operator directory: ${OP}")
else()
message(WARNING "Operator ${OP} missing CMakeLists.txt, skipping")
endif()
endforeach()
get_target_property(LIB_TARGET_SOURCE ${OPS_RAND} SOURCES)
if (NOT LIB_TARGET_SOURCE OR LIB_TARGET_SOURCE STREQUAL "")
message(FATAL_ERROR "No sources added to cann_ops_rand target")
endif()
set_source_files_properties(
${LIB_TARGET_SOURCE}
PROPERTIES LANGUAGE ASC
)
message(STATUS "==========================================")
message(STATUS "Operator registration completed")
message(STATUS "==========================================")
message(STATUS "")
message(STATUS "Operator library 'ops_rand' configured successfully")