1# include dependency 2include(CMakePackageConfigHelpers) 3include(GNUInstallDirs) 4 5# set package information 6set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) 7set(CPACK_GENERATOR "External") 8set(CPACK_CMAKE_GENERATOR "Ninja") 9set(CPACK_EXTERNAL_PACKAGE_SCRIPT ${CMAKE_SOURCE_DIR}/cmake/package_script.cmake) 10set(CPACK_EXTERNAL_ENABLE_STAGING true) 11set(CPACK_TEMPORARY_PACKAGE_FILE_NAME ${BUILD_PATH}/package/mindspore) 12set(CPACK_TEMPORARY_INSTALL_DIRECTORY ${BUILD_PATH}/package/mindspore) 13set(CPACK_PACK_ROOT_DIR ${BUILD_PATH}/package/) 14set(CPACK_CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR}) 15set(CPACK_ENABLE_SYM_FILE ${ENABLE_SYM_FILE}) 16set(CPACK_CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}) 17set(CPACK_PYTHON_EXE ${Python3_EXECUTABLE}) 18set(CPACK_PYTHON_VERSION ${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}) 19 20if(ENABLE_GPU) 21 set(CPACK_MS_BACKEND "ms") 22elseif(ENABLE_D) 23 set(CPACK_MS_BACKEND "ms") 24elseif(ENABLE_CPU) 25 set(CPACK_MS_BACKEND "ms") 26else() 27 set(CPACK_MS_BACKEND "debug") 28endif() 29if(BUILD_DEV_MODE) 30 # providing cuda11 version of dev package only 31 set(CPACK_MS_PACKAGE_NAME "mindspore-dev") 32else() 33 set(CPACK_MS_PACKAGE_NAME "mindspore") 34endif() 35include(CPack) 36 37# set install path 38set(INSTALL_LIB_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Installation directory for libraries") 39set(INSTALL_PY_DIR ".") 40set(INSTALL_BASE_DIR ".") 41set(INSTALL_BIN_DIR "bin") 42set(INSTALL_CFG_DIR "config") 43set(INSTALL_LIB_DIR "lib") 44set(INSTALL_PLUGIN_DIR "${INSTALL_LIB_DIR}/plugin") 45set(INSTALL_ASCEND_DIR "${INSTALL_PLUGIN_DIR}/ascend") 46# set package files 47install( 48 TARGETS _c_expression 49 DESTINATION ${INSTALL_BASE_DIR} 50 COMPONENT mindspore 51) 52 53if(ENABLE_DEBUGGER) 54 install( 55 TARGETS _mindspore_offline_debug 56 DESTINATION ${INSTALL_BASE_DIR} 57 COMPONENT mindspore 58 ) 59endif() 60 61install( 62 TARGETS mindspore_shared_lib 63 DESTINATION ${INSTALL_LIB_DIR} 64 COMPONENT mindspore 65) 66 67if(ENABLE_D OR ENABLE_GPU) 68 install( 69 TARGETS api_lib 70 DESTINATION ${INSTALL_LIB_DIR} 71 COMPONENT mindspore 72 ) 73endif() 74 75install( 76 TARGETS mindspore_core mindspore_common mindspore_backend mindspore_np_dtype 77 DESTINATION ${INSTALL_LIB_DIR} 78 COMPONENT mindspore 79) 80 81if(ENABLE_D) 82 install( 83 TARGETS mindspore_ascend LIBRARY 84 DESTINATION ${INSTALL_PLUGIN_DIR} 85 COMPONENT mindspore 86 NAMELINK_SKIP 87 ) 88endif() 89 90if(ENABLE_GPU) 91 install( 92 TARGETS mindspore_gpu LIBRARY 93 DESTINATION ${INSTALL_PLUGIN_DIR} 94 COMPONENT mindspore 95 NAMELINK_SKIP 96 ) 97endif() 98 99if(USE_GLOG) 100 install(FILES ${glog_LIBPATH}/libmindspore_glog.so.0.4.0 101 DESTINATION ${INSTALL_LIB_DIR} RENAME libmindspore_glog.so.0 COMPONENT mindspore) 102endif() 103 104if(ENABLE_MINDDATA) 105 install( 106 TARGETS _c_dataengine _c_mindrecord 107 DESTINATION ${INSTALL_BASE_DIR} 108 COMPONENT mindspore 109 ) 110 if(CMAKE_SYSTEM_NAME MATCHES "Linux") 111 install( 112 TARGETS cache_admin cache_server 113 OPTIONAL 114 DESTINATION ${INSTALL_BIN_DIR} 115 COMPONENT mindspore 116 ) 117 endif() 118 119 if(ENABLE_FFMPEG) 120 install(FILES ${ffmpeg_LIBPATH}/libavcodec.so.59.37.100 121 DESTINATION ${INSTALL_LIB_DIR} RENAME libavcodec.so.59 COMPONENT mindspore) 122 install(FILES ${ffmpeg_LIBPATH}/libavdevice.so.59.7.100 123 DESTINATION ${INSTALL_LIB_DIR} RENAME libavdevice.so.59 COMPONENT mindspore) 124 install(FILES ${ffmpeg_LIBPATH}/libavfilter.so.8.44.100 125 DESTINATION ${INSTALL_LIB_DIR} RENAME libavfilter.so.8 COMPONENT mindspore) 126 install(FILES ${ffmpeg_LIBPATH}/libavformat.so.59.27.100 127 DESTINATION ${INSTALL_LIB_DIR} RENAME libavformat.so.59 COMPONENT mindspore) 128 install(FILES ${ffmpeg_LIBPATH}/libavutil.so.57.28.100 129 DESTINATION ${INSTALL_LIB_DIR} RENAME libavutil.so.57 COMPONENT mindspore) 130 install(FILES ${ffmpeg_LIBPATH}/libswresample.so.4.7.100 131 DESTINATION ${INSTALL_LIB_DIR} RENAME libswresample.so.4 COMPONENT mindspore) 132 install(FILES ${ffmpeg_LIBPATH}/libswscale.so.6.7.100 133 DESTINATION ${INSTALL_LIB_DIR} RENAME libswscale.so.6 COMPONENT mindspore) 134 endif() 135 136 install(FILES ${opencv_LIBPATH}/libopencv_core.so.4.5.2 137 DESTINATION ${INSTALL_LIB_DIR} RENAME libopencv_core.so.4.5 COMPONENT mindspore) 138 install(FILES ${opencv_LIBPATH}/libopencv_imgcodecs.so.4.5.2 139 DESTINATION ${INSTALL_LIB_DIR} RENAME libopencv_imgcodecs.so.4.5 COMPONENT mindspore) 140 install(FILES ${opencv_LIBPATH}/libopencv_imgproc.so.4.5.2 141 DESTINATION ${INSTALL_LIB_DIR} RENAME libopencv_imgproc.so.4.5 COMPONENT mindspore) 142 install(FILES ${tinyxml2_LIBPATH}/libtinyxml2.so.8.0.0 143 DESTINATION ${INSTALL_LIB_DIR} RENAME libtinyxml2.so.8 COMPONENT mindspore) 144 145 install(FILES ${icu4c_LIBPATH}/libicuuc.so.69.1 146 DESTINATION ${INSTALL_LIB_DIR} RENAME libicuuc.so.69 COMPONENT mindspore) 147 install(FILES ${icu4c_LIBPATH}/libicudata.so.69.1 148 DESTINATION ${INSTALL_LIB_DIR} RENAME libicudata.so.69 COMPONENT mindspore) 149 install(FILES ${icu4c_LIBPATH}/libicui18n.so.69.1 150 DESTINATION ${INSTALL_LIB_DIR} RENAME libicui18n.so.69 COMPONENT mindspore) 151 install(FILES ${jemalloc_LIBPATH}/libjemalloc.so.2 DESTINATION ${INSTALL_LIB_DIR} COMPONENT mindspore) 152endif() 153 154if(ENABLE_CPU) 155 if(CMAKE_SYSTEM_NAME MATCHES "Linux") 156 install(FILES ${onednn_LIBPATH}/libdnnl.so.2.2 157 DESTINATION ${INSTALL_LIB_DIR} RENAME libdnnl.so.2 COMPONENT mindspore) 158 elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin") 159 file(GLOB_RECURSE DNNL_LIB_LIST ${onednn_LIBPATH}/libdnnl*${CMAKE_SHARED_LIBRARY_SUFFIX}*) 160 install( 161 FILES ${DNNL_LIB_LIST} 162 DESTINATION ${INSTALL_LIB_DIR} 163 COMPONENT mindspore 164 ) 165 endif() 166 install( 167 TARGETS nnacl 168 DESTINATION ${INSTALL_LIB_DIR} 169 COMPONENT mindspore 170 ) 171endif() 172 173if(ENABLE_MPI) 174 if(ENABLE_CPU) 175 install( 176 TARGETS mpi_adapter 177 DESTINATION ${INSTALL_LIB_DIR} 178 COMPONENT mindspore 179 ) 180 install( 181 TARGETS mpi_collective 182 DESTINATION ${INSTALL_LIB_DIR} 183 COMPONENT mindspore 184 ) 185 endif() 186 if(ENABLE_D) 187 install( 188 TARGETS _ascend_mpi 189 DESTINATION ${INSTALL_BASE_DIR} 190 COMPONENT mindspore 191 ) 192 endif() 193endif() 194 195if(ENABLE_GPU) 196 if(ENABLE_MPI) 197 install( 198 TARGETS nvidia_collective 199 DESTINATION ${INSTALL_PLUGIN_DIR}/gpu${CUDA_VERSION} 200 COMPONENT mindspore 201 ) 202 if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND GPU_BACKEND_CUDA) 203 install(FILES ${nccl_LIBPATH}/libnccl.so.2.16.5 DESTINATION ${INSTALL_PLUGIN_DIR}/gpu${CUDA_VERSION} 204 RENAME libnccl.so.2 COMPONENT mindspore) 205 endif() 206 endif() 207 install( 208 TARGETS cuda_ops LIBRARY 209 DESTINATION ${INSTALL_PLUGIN_DIR}/gpu${CUDA_VERSION} 210 COMPONENT mindspore 211 NAMELINK_SKIP 212 ) 213endif() 214 215if(ENABLE_D) 216 if(ENABLE_MPI) 217 install( 218 TARGETS ascend_collective 219 DESTINATION ${INSTALL_PLUGIN_DIR}/ascend 220 COMPONENT mindspore 221 ) 222 if(DEFINED ENV{MS_INTERNAL_KERNEL_HOME}) 223 install( 224 TARGETS lowlatency_collective 225 DESTINATION ${INSTALL_PLUGIN_DIR}/ascend 226 COMPONENT mindspore 227 ) 228 endif() 229 endif() 230endif() 231 232if(ENABLE_CPU AND NOT WIN32) 233 install( 234 TARGETS ps_cache 235 DESTINATION ${INSTALL_LIB_DIR} 236 COMPONENT mindspore 237 ) 238endif() 239 240if(ENABLE_D OR ENABLE_ACL) 241 if(DEFINED ENV{ASCEND_CUSTOM_PATH}) 242 set(ASCEND_PATH $ENV{ASCEND_CUSTOM_PATH}) 243 else() 244 set(ASCEND_PATH /usr/local/Ascend) 245 endif() 246 set(ASCEND_DRIVER_PATH ${ASCEND_PATH}/driver/lib64/common) 247 248 if(ENABLE_D) 249 install( 250 TARGETS hccl_plugin 251 DESTINATION ${INSTALL_PLUGIN_DIR}/ascend 252 COMPONENT mindspore 253 ) 254 endif() 255 if(ENABLE_ACL) 256 install( 257 TARGETS dvpp_utils 258 DESTINATION ${INSTALL_PLUGIN_DIR}/ascend 259 COMPONENT mindspore 260 ) 261 endif() 262endif() 263 264if(MS_BUILD_GRPC) 265 install(FILES ${grpc_LIBPATH}/libmindspore_grpc++.so.1.36.1 266 DESTINATION ${INSTALL_LIB_DIR} RENAME libmindspore_grpc++.so.1 COMPONENT mindspore) 267 install(FILES ${grpc_LIBPATH}/libmindspore_grpc.so.15.0.0 268 DESTINATION ${INSTALL_LIB_DIR} RENAME libmindspore_grpc.so.15 COMPONENT mindspore) 269 install(FILES ${grpc_LIBPATH}/libmindspore_gpr.so.15.0.0 270 DESTINATION ${INSTALL_LIB_DIR} RENAME libmindspore_gpr.so.15 COMPONENT mindspore) 271 install(FILES ${grpc_LIBPATH}/libmindspore_upb.so.15.0.0 272 DESTINATION ${INSTALL_LIB_DIR} RENAME libmindspore_upb.so.15 COMPONENT mindspore) 273 install(FILES ${grpc_LIBPATH}/libmindspore_address_sorting.so.15.0.0 274 DESTINATION ${INSTALL_LIB_DIR} RENAME libmindspore_address_sorting.so.15 COMPONENT mindspore) 275endif() 276 277if(CMAKE_SYSTEM_NAME MATCHES "Windows") 278 get_filename_component(CXX_DIR ${CMAKE_CXX_COMPILER} PATH) 279 file(GLOB CXX_LIB_LIST ${CXX_DIR}/*.dll) 280 281 string(REPLACE "\\" "/" SystemRoot $ENV{SystemRoot}) 282 file(GLOB VC_LIB_LIST ${SystemRoot}/System32/msvcp140.dll ${SystemRoot}/System32/vcomp140.dll) 283 284 file(GLOB JPEG_LIB_LIST ${jpeg_turbo_LIBPATH}/*.dll) 285 file(GLOB SQLITE_LIB_LIST ${sqlite_LIBPATH}/*.dll) 286 install( 287 FILES ${CXX_LIB_LIST} ${JPEG_LIB_LIST} ${SQLITE_LIB_LIST} ${VC_LIB_LIST} 288 DESTINATION ${INSTALL_LIB_DIR} 289 COMPONENT mindspore 290 ) 291endif() 292 293# set python files 294file(GLOB MS_PY_LIST ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/*.py) 295install( 296 FILES ${MS_PY_LIST} 297 DESTINATION ${INSTALL_PY_DIR} 298 COMPONENT mindspore 299) 300 301file(GLOB NOTICE ${CMAKE_SOURCE_DIR}/Third_Party_Open_Source_Software_Notice) 302install( 303 FILES ${NOTICE} 304 DESTINATION ${INSTALL_PY_DIR} 305 COMPONENT mindspore 306) 307install( 308 DIRECTORY 309 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/nn 310 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/_extends 311 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/parallel 312 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/mindrecord 313 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/numpy 314 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/scipy 315 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/train 316 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/boost 317 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/common 318 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/ops 319 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/ops_generate 320 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/communication 321 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/profiler 322 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/rewrite 323 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/safeguard 324 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/run_check 325 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/experimental 326 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/mint 327 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/multiprocessing 328 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/hal 329 DESTINATION ${INSTALL_PY_DIR} 330 COMPONENT mindspore 331) 332 333if(ENABLE_AKG AND CMAKE_SYSTEM_NAME MATCHES "Linux") 334 set (AKG_PATH ${BUILD_PATH}/mindspore/akg) 335 file(REMOVE_RECURSE ${AKG_PATH}/_akg) 336 file(MAKE_DIRECTORY ${AKG_PATH}/_akg) 337 file(TOUCH ${AKG_PATH}/_akg/__init__.py) 338 install(DIRECTORY "${AKG_PATH}/akg" DESTINATION "${AKG_PATH}/_akg") 339 install( 340 DIRECTORY 341 ${AKG_PATH}/_akg 342 DESTINATION ${INSTALL_PY_DIR}/ 343 COMPONENT mindspore 344 ) 345 if(ENABLE_CPU AND NOT ENABLE_GPU AND NOT ENABLE_D) 346 install( 347 TARGETS akg 348 DESTINATION ${INSTALL_PLUGIN_DIR}/cpu 349 COMPONENT mindspore 350 ) 351 endif() 352 353 if(ENABLE_GPU) 354 install( 355 TARGETS akg 356 DESTINATION ${INSTALL_PLUGIN_DIR}/gpu${CUDA_VERSION} 357 COMPONENT mindspore 358 ) 359 endif() 360 361 if(ENABLE_D) 362 install( 363 TARGETS akg 364 DESTINATION ${INSTALL_PLUGIN_DIR}/ascend 365 COMPONENT mindspore 366 ) 367 endif() 368endif() 369 370if(ENABLE_D) 371 if(DEFINED ENV{MS_INTERNAL_KERNEL_HOME}) 372 set(_MS_INTERNAL_KERNEL_HOME $ENV{MS_INTERNAL_KERNEL_HOME}) 373 install( 374 DIRECTORY ${_MS_INTERNAL_KERNEL_HOME} 375 DESTINATION ${INSTALL_PLUGIN_DIR}/ascend 376 COMPONENT mindspore 377 ) 378 endif() 379endif() 380 381if(EXISTS ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/dataset) 382 install( 383 DIRECTORY ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/dataset 384 DESTINATION ${INSTALL_PY_DIR} 385 COMPONENT mindspore 386 ) 387endif() 388 389if(CMAKE_SYSTEM_NAME MATCHES "Windows") 390 message("offline debugger does not support windows system temporarily") 391else() 392 if(EXISTS ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/offline_debug) 393 install( 394 DIRECTORY ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/offline_debug 395 DESTINATION ${INSTALL_PY_DIR} 396 COMPONENT mindspore 397 ) 398 endif() 399endif() 400 401## Public header files 402install( 403 DIRECTORY ${CMAKE_SOURCE_DIR}/include 404 DESTINATION ${INSTALL_BASE_DIR} 405 COMPONENT mindspore 406) 407 408## Public header files for minddata 409install( 410 FILES ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/config.h 411 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/constants.h 412 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/execute.h 413 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/text.h 414 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/transforms.h 415 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/vision.h 416 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/vision_lite.h 417 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/vision_ascend.h 418 DESTINATION ${INSTALL_BASE_DIR}/include/dataset 419 COMPONENT mindspore 420) 421 422install( 423 FILES 424 ${CMAKE_SOURCE_DIR}/mindspore/core/mindapi/base/format.h 425 ${CMAKE_SOURCE_DIR}/mindspore/core/mindapi/base/type_id.h 426 ${CMAKE_SOURCE_DIR}/mindspore/core/mindapi/base/types.h 427 DESTINATION ${INSTALL_BASE_DIR}/include/mindapi/base 428 COMPONENT mindspore) 429 430## config files 431install( 432 FILES ${CMAKE_SOURCE_DIR}/config/op_info.config 433 DESTINATION ${INSTALL_CFG_DIR} 434 COMPONENT mindspore 435) 436 437if(ENABLE_AIO) 438 install( 439 TARGETS aio_plugin 440 DESTINATION ${INSTALL_LIB_DIR} 441 COMPONENT mindspore 442 ) 443endif() 444 445if(ENABLE_D) 446 install( 447 DIRECTORY 448 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/custom_compiler 449 DESTINATION ${INSTALL_ASCEND_DIR} 450 COMPONENT mindspore 451 ) 452endif() 453 454 455