set("OPERATOR_DEFINITION" ${CMAKE_CURRENT_SOURCE_DIR}/init.cpp)
message(STATUS "OPERATOR_DEFINITION: ${OPERATOR_DEFINITION}")
message(STATUS "Final TORCH_EXTENSION_OPERATOR_TARGETS: ${TORCH_EXTENSION_OPERATOR_TARGETS}")
unset(CMAKE_CXX_FLAGS)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type(Release/Debug)" FORCE)
endif()
set(CMAKE_C_COMPILER ${BISHENG})
set(CMAKE_CXX_COMPILER ${BISHENG})
set(CMAKE_LINKER ${BISHENG})
if(NOT TORCH_EXTENSION_OPERATOR_TARGETS)
message(WARNING "TORCH_EXTENSION_OPERATOR_TARGETS is empty.")
add_library(_C SHARED ${OPERATOR_DEFINITION})
target_include_directories(_C PRIVATE ${TORCH_EXTENSION_INCLUDE_DIRS})
set_target_properties(_C PROPERTIES
PREFIX ""
SUFFIX ".abi3.so"
OUTPUT_NAME "_C"
)
else()
add_library(_C SHARED
${OPERATOR_DEFINITION}
${TORCH_EXTENSION_OPERATOR_TARGETS}
)
target_compile_definitions(_C PRIVATE Py_LIMITED_API=0x03080000)
set_target_properties(_C PROPERTIES
POSITION_INDEPENDENT_CODE ON
LINK_FLAGS "--cce-fatobj-link"
PREFIX ""
SUFFIX ".abi3.so"
OUTPUT_NAME "_C"
)
target_compile_options(_C PRIVATE ${TORCH_EXTENSION_COMPILE_OPTIONS})
target_include_directories(_C PRIVATE ${TORCH_EXTENSION_INCLUDE_DIRS})
target_link_directories(_C PRIVATE ${TORCH_EXTENSION_LINK_DIRS})
target_link_libraries(_C PRIVATE ${TORCH_EXTENSION_LINK_LIBS})
endif()
add_custom_command(TARGET _C POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:_C>
${CMAKE_CURRENT_SOURCE_DIR}/npu_math_extension/$<TARGET_FILE_NAME:_C>
COMMENT "Copying compiled extension $<TARGET_FILE_NAME:_C> to ${CMAKE_CURRENT_SOURCE_DIR}/npu_math_extension/"
)