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 ${CMAKE_SOURCE_DIR}/build/package/mindspore) 12set(CPACK_TEMPORARY_INSTALL_DIRECTORY ${CMAKE_SOURCE_DIR}/build/package/mindspore) 13set(CPACK_PACK_ROOT_DIR ${BUILD_PATH}/package/) 14set(CPACK_CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR}) 15set(CPACK_PYTHON_EXE ${Python3_EXECUTABLE}) 16set(CPACK_PYTHON_VERSION ${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}) 17 18if(ENABLE_GPU) 19 set(CPACK_MS_BACKEND "ms") 20elseif(ENABLE_CPU) 21 set(CPACK_MS_BACKEND "ms") 22else() 23 set(CPACK_MS_BACKEND "debug") 24endif() 25if(BUILD_DEV_MODE) 26 set(CPACK_MS_PACKAGE_NAME "mindspore_dev") 27else() 28 set(CPACK_MS_PACKAGE_NAME "mindspore") 29endif() 30include(CPack) 31 32# set install path 33set(INSTALL_LIB_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Installation directory for libraries") 34set(INSTALL_PY_DIR ".") 35set(INSTALL_BASE_DIR ".") 36set(INSTALL_BIN_DIR "bin") 37set(INSTALL_CFG_DIR "config") 38set(INSTALL_PLUGIN_DIR ".") 39 40set(INSTALL_LIB_DIR ".") 41set(onednn_LIBPATH ${onednn_LIBPATH}/../bin/) 42set(glog_LIBPATH ${glog_LIBPATH}/../bin/) 43set(opencv_LIBPATH ${opencv_LIBPATH}/../bin/) 44set(jpeg_turbo_LIBPATH ${jpeg_turbo_LIBPATH}/../bin/) 45set(sqlite_LIBPATH ${sqlite_LIBPATH}/../bin/) 46set(tinyxml2_LIBPATH ${tinyxml2_LIBPATH}/../bin/) 47 48message("offline debugger does not support windows system temporarily") 49 50file(GLOB PROTO_PY_PB2_LST ${CMAKE_SOURCE_DIR}/build/mindspore/proto_py/proto/*_pb2.py) 51file(COPY ${PROTO_PY_PB2_LST} DESTINATION ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/train) 52 53# set package files 54install( 55 TARGETS _c_expression 56 DESTINATION ${INSTALL_BASE_DIR} 57 COMPONENT mindspore 58) 59 60install( 61 TARGETS mindspore_shared_lib 62 DESTINATION ${INSTALL_LIB_DIR} 63 COMPONENT mindspore 64) 65 66install( 67 TARGETS mindspore_core mindspore_common mindspore_backend mindspore_np_dtype 68 DESTINATION ${INSTALL_LIB_DIR} 69 COMPONENT mindspore 70) 71 72if(MSVC AND DEBUG_MODE) 73 install( 74 FILES $<TARGET_PDB_FILE:_c_expression> 75 DESTINATION ${INSTALL_BASE_DIR} 76 COMPONENT mindspore 77 ) 78 79 install( 80 FILES $<TARGET_PDB_FILE:mindspore_shared_lib> 81 DESTINATION ${INSTALL_LIB_DIR} 82 COMPONENT mindspore 83 ) 84 85 install( 86 FILES $<TARGET_PDB_FILE:mindspore_core> $<TARGET_PDB_FILE:mindspore_common> $<TARGET_PDB_FILE:mindspore_backend> 87 DESTINATION ${INSTALL_LIB_DIR} 88 COMPONENT mindspore 89 ) 90 91 install( 92 FILES $<TARGET_PDB_FILE:mindspore_np_dtype> 93 DESTINATION ${INSTALL_LIB_DIR} 94 COMPONENT mindspore 95 ) 96endif() 97 98if(USE_GLOG) 99 if(MSVC) 100 if(DEBUG_MODE) 101 file(GLOB_RECURSE GLOG_LIB_LIST ${glog_LIBPATH}/mindspore_glogd.dll) 102 else() 103 file(GLOB_RECURSE GLOG_LIB_LIST ${glog_LIBPATH}/mindspore_glog.dll) 104 endif() 105 else() 106 file(GLOB_RECURSE GLOG_LIB_LIST ${glog_LIBPATH}/libmindspore_glog.dll) 107 endif() 108 install( 109 FILES ${GLOG_LIB_LIST} 110 DESTINATION ${INSTALL_LIB_DIR} 111 COMPONENT mindspore 112 ) 113endif() 114 115if(ENABLE_MINDDATA) 116 message("icu4c does not support windows system temporarily") 117 install( 118 TARGETS _c_dataengine _c_mindrecord 119 DESTINATION ${INSTALL_BASE_DIR} 120 COMPONENT mindspore 121 ) 122 if(MSVC AND DEBUG_MODE) 123 install( 124 FILES $<TARGET_PDB_FILE:_c_dataengine> $<TARGET_PDB_FILE:_c_mindrecord> 125 DESTINATION ${INSTALL_BASE_DIR} 126 COMPONENT mindspore 127 ) 128 endif() 129 if(MSVC) 130 file(GLOB_RECURSE OPENCV_LIB_LIST 131 ${opencv_LIBPATH}/opencv_core* 132 ${opencv_LIBPATH}/opencv_imgcodecs* 133 ${opencv_LIBPATH}/opencv_imgproc* 134 ) 135 else() 136 file(GLOB_RECURSE OPENCV_LIB_LIST 137 ${opencv_LIBPATH}/libopencv_core* 138 ${opencv_LIBPATH}/libopencv_imgcodecs* 139 ${opencv_LIBPATH}/libopencv_imgproc* 140 ) 141 endif() 142 install( 143 FILES ${OPENCV_LIB_LIST} 144 DESTINATION ${INSTALL_LIB_DIR} 145 COMPONENT mindspore 146 ) 147 148 if(MSVC) 149 if(ENABLE_FFMPEG) 150 set(ffmpeg_LIB_PATH ${CMAKE_SOURCE_DIR}/build/mindspore/ffmpeg_lib) 151 file(GLOB FFMPEG_LIB_LIST ${ffmpeg_LIB_PATH}/bin/*.dll) 152 install( 153 FILES ${FFMPEG_LIB_LIST} 154 DESTINATION ${INSTALL_LIB_DIR} 155 COMPONENT mindspore 156 ) 157 endif() 158 endif() 159 160 if(MSVC) 161 if(DEBUG_MODE) 162 file(GLOB_RECURSE TINYXML2_LIB_LIST ${tinyxml2_LIBPATH}/tinyxml2d.dll) 163 else() 164 file(GLOB_RECURSE TINYXML2_LIB_LIST ${tinyxml2_LIBPATH}/tinyxml2.dll) 165 endif() 166 else() 167 file(GLOB_RECURSE TINYXML2_LIB_LIST ${tinyxml2_LIBPATH}/libtinyxml2.dll) 168 endif() 169 170 install( 171 FILES ${TINYXML2_LIB_LIST} 172 DESTINATION ${INSTALL_LIB_DIR} 173 COMPONENT mindspore 174 ) 175endif() 176 177if(ENABLE_CPU) 178 file(GLOB_RECURSE DNNL_LIB_LIST ${onednn_LIBPATH}/dnnl.dll) 179 install( 180 FILES ${DNNL_LIB_LIST} 181 DESTINATION ${INSTALL_LIB_DIR} 182 COMPONENT mindspore 183 ) 184 install( 185 TARGETS nnacl 186 DESTINATION ${INSTALL_LIB_DIR} 187 COMPONENT mindspore 188 ) 189endif() 190 191if(ENABLE_MPI) 192 if(ENABLE_CPU) 193 install( 194 TARGETS mpi_adapter 195 DESTINATION ${INSTALL_LIB_DIR} 196 COMPONENT mindspore 197 ) 198 install( 199 TARGETS mpi_collective 200 DESTINATION ${INSTALL_LIB_DIR} 201 COMPONENT mindspore 202 ) 203 endif() 204endif() 205 206if(ENABLE_GPU) 207 if(ENABLE_MPI) 208 install( 209 TARGETS nvidia_collective 210 DESTINATION ${INSTALL_LIB_DIR} 211 COMPONENT mindspore 212 ) 213 endif() 214 install( 215 TARGETS cuda_ops 216 DESTINATION ${INSTALL_LIB_DIR} 217 COMPONENT mindspore 218 ) 219 install( 220 TARGETS mindspore_gpu 221 DESTINATION ${INSTALL_PLUGIN_DIR} 222 COMPONENT mindspore 223 ) 224endif() 225 226get_filename_component(CXX_DIR ${CMAKE_CXX_COMPILER} PATH) 227file(GLOB CXX_LIB_LIST ${CXX_DIR}/*.dll) 228 229string(REPLACE "\\" "/" SystemRoot $ENV{SystemRoot}) 230file(GLOB VC_LIB_LIST ${SystemRoot}/System32/msvcp140.dll ${SystemRoot}/System32/vcomp140.dll) 231 232file(GLOB JPEG_LIB_LIST ${jpeg_turbo_LIBPATH}/*.dll) 233 234install( 235 FILES ${CXX_LIB_LIST} ${JPEG_LIB_LIST} ${VC_LIB_LIST} 236 DESTINATION ${INSTALL_LIB_DIR} 237 COMPONENT mindspore 238) 239 240if(NOT MSVC) 241 file(GLOB SQLITE_LIB_LIST ${sqlite_LIBPATH}/*.dll) 242 install( 243 FILES ${SQLITE_LIB_LIST} 244 DESTINATION ${INSTALL_LIB_DIR} 245 COMPONENT mindspore 246 ) 247endif() 248 249# set python files 250file(GLOB MS_PY_LIST ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/*.py) 251install( 252 FILES ${MS_PY_LIST} 253 DESTINATION ${INSTALL_PY_DIR} 254 COMPONENT mindspore 255) 256 257install( 258 DIRECTORY 259 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/nn 260 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/_extends 261 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/parallel 262 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/mindrecord 263 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/numpy 264 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/train 265 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/boost 266 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/common 267 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/ops 268 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/ops_generate 269 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/communication 270 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/profiler 271 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/rewrite 272 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/safeguard 273 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/run_check 274 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/experimental 275 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/mint 276 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/multiprocessing 277 ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/hal 278 DESTINATION ${INSTALL_PY_DIR} 279 COMPONENT mindspore 280) 281 282if(EXISTS ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/dataset) 283 install( 284 DIRECTORY ${CMAKE_SOURCE_DIR}/mindspore/python/mindspore/dataset 285 DESTINATION ${INSTALL_PY_DIR} 286 COMPONENT mindspore 287 ) 288endif() 289 290## Public header files 291install( 292 DIRECTORY ${CMAKE_SOURCE_DIR}/include 293 DESTINATION ${INSTALL_BASE_DIR} 294 COMPONENT mindspore 295) 296 297## Public header files for minddata 298install( 299 FILES ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/config.h 300 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/constants.h 301 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/execute.h 302 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/text.h 303 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/transforms.h 304 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/vision.h 305 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/vision_lite.h 306 ${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include/dataset/vision_ascend.h 307 DESTINATION ${INSTALL_BASE_DIR}/include/dataset 308 COMPONENT mindspore 309) 310 311## config files 312install( 313 FILES ${CMAKE_SOURCE_DIR}/config/op_info.config 314 DESTINATION ${INSTALL_CFG_DIR} 315 COMPONENT mindspore 316) 317