cmake_minimum_required(VERSION 3.16.3)
project(cann_superbuild)
include(../function/function.cmake)
init_cann_superbuild_project(PRODUCT_SIDE "host")
set(BUILD_OPEN_PROJECT TRUE)
set(PACKAGE_OPEN_PROJECT TRUE)
set(BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG TRUE)
set(METADEF_INC_PATH "${CANN_TOP_DIR}/metadef/inc/external")
set(BUILD_METADEF TRUE)
get_pkg_dependencies("${CANN_PACKAGES}")
calc_device_packages()
set(ENABLE_BUILD_DEVICE FALSE)
if(DEVICE_CANN_PACKAGES AND NOT DEVICE_CANN_PACKAGES STREQUAL "ge-executor" AND NOT DEVICE_CANN_PACKAGES STREQUAL "ge-compiler")
set(SUPERBUILD_ENABLE_DEVICE TRUE)
else()
set(SUPERBUILD_ENABLE_DEVICE FALSE)
endif()
get_package_dirs(CANN_DEPEND_PACKAGE_DIRS "${CANN_DEPEND_PACKAGES}")
foreach(CANN_DEPEND_PACKAGE_DIR IN LISTS CANN_DEPEND_PACKAGE_DIRS)
add_subdirectory(${CANN_TOP_DIR}/${CANN_DEPEND_PACKAGE_DIR} ${CANN_DEPEND_PACKAGE_DIR})
endforeach()
get_package_dirs(CANN_PACKAGE_DIRS "${CANN_PACKAGES}")
set_cann_all_targets("${CANN_PACKAGE_DIRS}")
set(TOOLCHAIN_DIR ${ASCEND_INSTALL_PATH}/toolkit/toolchain/hcc)
string(REPLACE ";" "::" EP_DEVICE_CANN_PACKAGES "${DEVICE_CANN_PACKAGES}")
string(REPLACE ";" "::" EP_CANN_BINARY_PACKAGES "${CANN_BINARY_PACKAGES}")
string(REPLACE ";" "::" EP_DEVICE_CANN_DEPEND_PACKAGES "${DEVICE_CANN_DEPEND_PACKAGES}")
if(SUPERBUILD_ENABLE_DEVICE)
include(ExternalProject)
ExternalProject_Add(cann_device
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/device
BINARY_DIR ${CMAKE_BINARY_DIR}/device_build
CMAKE_ARGS
-DENABLE_OPEN_SRC=TRUE
-DENABLE_UNIFIED_BUILD=TRUE
-DBUILD_OPEN_PROJECT=TRUE
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCANN_SUPERBUILD_CONFIG=${CANN_SUPERBUILD_CONFIG}
-DTOOLCHAIN_DIR=${TOOLCHAIN_DIR}
-DCMAKE_TOOLCHAIN_FILE=${CANN_CMAKE_DIR}/toolchain/aarch64-hcc-toolchain.cmake
-DASCEND_CANN_PACKAGE_PATH=${ASCEND_CANN_PACKAGE_PATH}
-DCANN_3RD_LIB_PATH=${CANN_3RD_LIB_PATH}
-DCANN_PACKAGES=${EP_DEVICE_CANN_PACKAGES}
-DCANN_BINARY_PACKAGES=${EP_CANN_BINARY_PACKAGES}
-DCANN_DEPEND_PACKAGES=${EP_DEVICE_CANN_DEPEND_PACKAGES}
-DENABLE_SIGN=${ENABLE_SIGN}
-DCUSTOM_SIGN_SCRIPT=${CUSTOM_SIGN_SCRIPT}
-DLAUNCH_COMPILE_TOOL=${LAUNCH_COMPILE_TOOL}
-DLAUNCH_LINK_TOOL=${LAUNCH_LINK_TOOL}
INSTALL_COMMAND ${CMAKE_CPACK_COMMAND}
LIST_SEPARATOR ::
BUILD_ALWAYS TRUE
)
ExternalProject_Add_Step(cann_device query_codemodel
COMMAND ${CMAKE_COMMAND} -E make_directory <BINARY_DIR>/.cmake/api/v1/query
COMMAND ${CMAKE_COMMAND} -E touch <BINARY_DIR>/.cmake/api/v1/query/codemodel-v2
DEPENDEES patch
DEPENDERS configure
)
foreach(CANN_PACKAGE IN LISTS DEVICE_CANN_PACKAGES)
install(FILES
${CMAKE_BINARY_DIR}/device_build/device-${CANN_PACKAGE}.tar.gz
DESTINATION .
COMPONENT ${CANN_PACKAGE}
)
endforeach()
endif()