file(GLOB_RECURSE SUPER_KERNEL_SRC CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*.py")
add_custom_target(superkernel_whl ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/superkernel-0.1.0-py3-none-any.whl)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/superkernel-0.1.0-py3-none-any.whl
COMMAND echo "Start to build superkernel wheel package"
&& cd ${CMAKE_CURRENT_SOURCE_DIR}
&& python3 -m build --wheel --no-isolation --outdir ${CMAKE_CURRENT_BINARY_DIR}
&& rm -rf build
&& echo "Build superkernel wheel package end"
DEPENDS ${SUPER_KERNEL_SRC} pyproject.toml
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/superkernel-0.1.0-py3-none-any.whl ${INSTALL_OPTIONAL}
DESTINATION ${INSTALL_LIBRARY_DIR}
COMPONENT graph-autofusion
)
find_cann_package(ASC REQUIRED PATHS $ENV{ASCEND_HOME_PATH}/compiler/tikcpp/ascendc_kernel_cmake)
enable_language(ASC)
set(GENERATED_SK_ENTRY_STUB_CPP "${CMAKE_CURRENT_BINARY_DIR}/kernel/sk_kernel_stub.cpp")
set_source_files_properties(${GENERATED_SK_ENTRY_STUB_CPP} PROPERTIES GENERATED TRUE)
if (NOT TARGET sk_kernel)
add_subdirectory(kernel)
endif()
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/aot SRC_FILES)
add_library(ascendsk SHARED
${SRC_FILES}
${GENERATED_SK_ENTRY_STUB_CPP}
)
add_dependencies(ascendsk generate_entry_stub)
target_compile_options(ascendsk PRIVATE
-std=c++17
-fPIC
-fvisibility=hidden
-Werror
-fno-common
-ftrapv
$<IF:$<VERSION_GREATER:${CMAKE_C_COMPILER_VERSION},4.8.5>,-fstack-protector-strong,-fstack-protector-all>
$<$<CONFIG:Release>:-O2>
$<$<CONFIG:Debug>:-g -O0>
)
target_compile_definitions(ascendsk PRIVATE
FUNC_VISIBILITY
_GLIBCXX_USE_CXX11_ABI=0
$<$<CONFIG:Release>:_FORTIFY_SOURCE=2>
)
target_include_directories(ascendsk PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/include/super_kernel
${CMAKE_CURRENT_SOURCE_DIR}/src/aot
)
target_link_options(ascendsk PRIVATE
-Wl,-z,relro
-Wl,-z,now
-Wl,-z,noexecstack
$<$<CONFIG:Release>:-s>
)
target_link_libraries(ascendsk PRIVATE c_sec_headers runtime_headers)
target_link_libraries(ascendsk PUBLIC sk_scope_dav_2201 sk_scope_dav_3510 acl_rt acl_rtc ascend_dump runtime error_manager c_sec unified_dlog ascendc_runtime profapi profimpl msprofiler json)
if(ENABLE_CPP_UTEST OR ENABLE_RDV_UTEST)
add_subdirectory(tests/aot)
endif()