You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 11 kB

4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
4 years ago
5 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-sign-compare")
  2. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-reorder")
  3. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-switch")
  4. if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  5. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-uninitialized -Wno-deprecated-declarations \
  6. -Wno-delete-non-abstract-non-virtual-dtor \
  7. -Wno-unused-comparison -Wno-constant-conversion \
  8. -Wno-unknown-warning-option -Wno-macro-redefined")
  9. else()
  10. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-maybe-uninitialized")
  11. endif()
  12. # fix for GCC8.0
  13. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-class-memaccess -Wno-stringop-truncation")
  14. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-format")
  15. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes")
  16. ############################# Options ################################
  17. if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  18. add_definitions(-D _CRT_RAND_S)
  19. endif()
  20. if(ENABLE_ACL)
  21. add_definitions(-D ENABLE_ACL)
  22. message(STATUS "ACL module is enabled")
  23. endif()
  24. if(ENABLE_GPUQUE)
  25. add_definitions(-D ENABLE_GPUQUE)
  26. message(STATUS "GPU queue is enabled")
  27. endif()
  28. if(ENABLE_TDTQUE)
  29. add_definitions(-D ENABLE_TDTQUE)
  30. message(STATUS "TDT queue is enabled")
  31. endif()
  32. if(MS_BUILD_GRPC)
  33. set(ENABLE_CACHE true)
  34. add_definitions(-D ENABLE_CACHE)
  35. message(STATUS "Cache is enabled")
  36. endif()
  37. # conde coverage
  38. # option(ENABLE_COVERAGE "Enable code coverage report" OFF)
  39. # if(ENABLE_COVERAGE)
  40. # include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
  41. # append_coverage_compiler_flags()
  42. # endif()
  43. ########### Set up the include directories ###########################
  44. include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc)
  45. include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc/runtime/device/ascend/platform)
  46. include_directories(${CMAKE_BINARY_DIR}) # for protobuf generated .h
  47. include_directories(${CMAKE_SOURCE_DIR}/mindspore)
  48. include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/mindrecord/include)
  49. include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset)
  50. include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/kernels/image)
  51. ######################################################################
  52. ####################### Flags ########################################
  53. # compile flags
  54. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=default")
  55. if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  56. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-delete-abstract-non-virtual-dtor")
  57. else()
  58. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-rpath,$ORIGIN:$ORIGIN/lib")
  59. endif()
  60. ################## Include sub-modules ###############################
  61. add_subdirectory(util)
  62. add_subdirectory(core)
  63. add_subdirectory(kernels)
  64. add_subdirectory(engine)
  65. add_subdirectory(api)
  66. add_subdirectory(audio)
  67. add_subdirectory(text)
  68. add_subdirectory(callback)
  69. add_subdirectory(plugin)
  70. ######################################################################
  71. add_dependencies(utils core)
  72. add_dependencies(kernels-image core)
  73. add_dependencies(kernels-data core)
  74. add_dependencies(kernels-soft-dvpp-image core soft-dvpp-utils)
  75. add_dependencies(kernels core)
  76. add_dependencies(engine-datasetops-source core)
  77. add_dependencies(engine-datasetops-source-sampler core)
  78. add_dependencies(engine-datasetops core)
  79. add_dependencies(engine-datasetops-mapop core)
  80. add_dependencies(engine-opt core)
  81. add_dependencies(engine-gnn core)
  82. add_dependencies(engine core)
  83. add_dependencies(callback core)
  84. add_dependencies(audio-kernels core)
  85. add_dependencies(audio-ir core)
  86. add_dependencies(audio-ir-kernels core)
  87. add_dependencies(text core)
  88. add_dependencies(text-kernels core)
  89. add_dependencies(text-ir core)
  90. add_dependencies(text-ir-kernels core)
  91. add_dependencies(cpp-API core)
  92. add_dependencies(engine-ir-datasetops core)
  93. add_dependencies(engine-ir-datasetops-source core)
  94. add_dependencies(engine-ir-datasetops-source-samplers core)
  95. add_dependencies(engine-ir-cache core)
  96. add_dependencies(kernels-ir core)
  97. add_dependencies(kernels-ir-data core)
  98. add_dependencies(kernels-ir-vision core)
  99. if(ENABLE_ACL)
  100. add_dependencies(kernels-dvpp-image core dvpp-utils)
  101. endif()
  102. if(ENABLE_PYTHON)
  103. add_dependencies(APItoPython core)
  104. endif()
  105. if(NOT ENABLE_SECURITY)
  106. add_dependencies(engine-perf core)
  107. endif()
  108. if(ENABLE_TDTQUE)
  109. add_dependencies(engine-tdt core)
  110. endif()
  111. if(ENABLE_CACHE)
  112. add_dependencies(APItoPython engine-cache-client)
  113. add_dependencies(cpp-API engine-cache-client)
  114. add_dependencies(engine-ir-cache engine-cache-client)
  115. add_dependencies(engine-ir-datasetops engine-cache-client)
  116. add_dependencies(engine-ir-datasetops-source engine-cache-client)
  117. add_dependencies(engine-opt engine-cache-client)
  118. add_dependencies(engine-datasetops engine-cache-client)
  119. if(NOT ENABLE_SECURITY)
  120. add_dependencies(engine-perf engine-cache-client)
  121. endif()
  122. add_dependencies(engine-cache-client core)
  123. add_dependencies(engine-cache-server core)
  124. endif()
  125. ################### Create _c_dataengine Library ######################
  126. set(submodules
  127. $<TARGET_OBJECTS:core>
  128. $<TARGET_OBJECTS:callback>
  129. $<TARGET_OBJECTS:utils>
  130. $<TARGET_OBJECTS:kernels>
  131. $<TARGET_OBJECTS:kernels-image>
  132. $<TARGET_OBJECTS:lite-cv>
  133. $<TARGET_OBJECTS:kernels-data>
  134. $<TARGET_OBJECTS:cpp-API>
  135. $<TARGET_OBJECTS:engine-ir-datasetops>
  136. $<TARGET_OBJECTS:engine-ir-datasetops-source>
  137. $<TARGET_OBJECTS:engine-ir-datasetops-source-samplers>
  138. $<TARGET_OBJECTS:engine-ir-cache>
  139. $<TARGET_OBJECTS:kernels-soft-dvpp-image>
  140. $<TARGET_OBJECTS:soft-dvpp-utils>
  141. $<TARGET_OBJECTS:engine-datasetops-source>
  142. $<TARGET_OBJECTS:engine-datasetops-source-sampler>
  143. $<TARGET_OBJECTS:engine-datasetops-mapop>
  144. $<TARGET_OBJECTS:engine-gnn>
  145. $<TARGET_OBJECTS:engine-datasetops>
  146. $<TARGET_OBJECTS:engine-opt>
  147. $<TARGET_OBJECTS:engine-cache-client>
  148. $<TARGET_OBJECTS:engine>
  149. $<TARGET_OBJECTS:audio-kernels>
  150. $<TARGET_OBJECTS:audio-ir>
  151. $<TARGET_OBJECTS:audio-ir-kernels>
  152. $<TARGET_OBJECTS:text>
  153. $<TARGET_OBJECTS:text-kernels>
  154. $<TARGET_OBJECTS:text-ir>
  155. $<TARGET_OBJECTS:text-ir-kernels>
  156. $<TARGET_OBJECTS:kernels-ir>
  157. $<TARGET_OBJECTS:kernels-ir-data>
  158. $<TARGET_OBJECTS:kernels-ir-vision>
  159. $<TARGET_OBJECTS:md_plugin>
  160. )
  161. if(ENABLE_ACL)
  162. set(submodules
  163. ${submodules}
  164. $<TARGET_OBJECTS:kernels-dvpp-image>
  165. $<TARGET_OBJECTS:dvpp-utils>)
  166. endif()
  167. if(ENABLE_PYTHON)
  168. set(submodules
  169. ${submodules}
  170. $<TARGET_OBJECTS:APItoPython>)
  171. endif()
  172. if(ENABLE_TDTQUE)
  173. if(NOT ENABLE_SECURITY)
  174. add_library(_c_dataengine SHARED ${submodules} $<TARGET_OBJECTS:engine-perf> $<TARGET_OBJECTS:engine-tdt>)
  175. else()
  176. add_library(_c_dataengine SHARED ${submodules} $<TARGET_OBJECTS:engine-tdt>)
  177. endif()
  178. else()
  179. if(NOT ENABLE_SECURITY)
  180. add_library(_c_dataengine SHARED ${submodules} $<TARGET_OBJECTS:engine-perf>)
  181. else()
  182. add_library(_c_dataengine SHARED ${submodules})
  183. endif()
  184. endif()
  185. if(ENABLE_PYTHON)
  186. set_target_properties(_c_dataengine PROPERTIES
  187. PREFIX "${PYTHON_MODULE_PREFIX}"
  188. SUFFIX "${PYTHON_MODULE_EXTENSION}"
  189. )
  190. endif()
  191. ######################################################################
  192. ################# Link with external libraries ########################
  193. target_link_libraries(_c_dataengine PRIVATE mindspore mindspore_gvar)
  194. if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  195. if(ENABLE_PYTHON)
  196. target_link_libraries(_c_dataengine PRIVATE mindspore::pybind11_module ${PYTHON_LIBRARIES} ${SECUREC_LIBRARY})
  197. else()
  198. target_link_libraries(_c_dataengine PRIVATE ${SECUREC_LIBRARY})
  199. endif()
  200. target_link_options(_c_dataengine PRIVATE -Wl,--allow-multiple-definition)
  201. else()
  202. set(ICU_LIB mindspore::icuuc mindspore::icudata mindspore::icui18n)
  203. if(ENABLE_PYTHON)
  204. target_link_libraries(_c_dataengine PRIVATE mindspore::pybind11_module -ldl ${SECUREC_LIBRARY})
  205. else()
  206. target_link_libraries(_c_dataengine PRIVATE -ldl ${SECUREC_LIBRARY})
  207. endif()
  208. target_link_libraries(_c_dataengine PUBLIC mindspore::sentencepiece)
  209. endif()
  210. target_link_libraries(_c_dataengine PUBLIC mindspore::jpeg_turbo mindspore::turbojpeg mindspore::opencv_core
  211. mindspore::opencv_imgcodecs mindspore::opencv_imgproc mindspore::tinyxml2
  212. mindspore::sentencepiece_train ${ICU_LIB})
  213. if(ENABLE_GPUQUE)
  214. target_link_libraries(_c_dataengine PRIVATE gpu_queue
  215. ${CUDNN_LIBRARY_PATH}
  216. ${CUDA_PATH}/lib64/libcudart.so
  217. ${CUDA_PATH}/lib64/stubs/libcuda.so)
  218. endif()
  219. if(ENABLE_TDTQUE)
  220. target_link_libraries(_c_dataengine PRIVATE ${ACL} ${ACL_TDT_CHANNEL})
  221. endif()
  222. add_dependencies(_c_dataengine _c_mindrecord)
  223. if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  224. set(MINDRECORD_LINK_OBJECT
  225. ${CMAKE_BINARY_DIR}/mindspore/ccsrc/minddata/mindrecord/CMakeFiles/_c_mindrecord.dir/objects.a)
  226. target_link_libraries(_c_dataengine PRIVATE _c_mindrecord ${MINDRECORD_LINK_OBJECT} mindspore::sqlite)
  227. else()
  228. target_link_libraries(_c_dataengine PRIVATE _c_mindrecord)
  229. if(ENABLE_CPU AND NOT WIN32)
  230. if(${ENABLE_IBVERBS} STREQUAL "ON")
  231. target_link_libraries(_c_dataengine PRIVATE ibverbs rdmacm)
  232. endif()
  233. target_link_libraries(_c_dataengine PRIVATE ps_cache)
  234. endif()
  235. endif()
  236. target_link_libraries(_c_dataengine PRIVATE mindspore_core mindspore_shared_lib)
  237. if(USE_GLOG)
  238. target_link_libraries(_c_dataengine PRIVATE mindspore::glog)
  239. else()
  240. if(CMAKE_SYSTEM_NAME MATCHES "Linux")
  241. target_link_options(_c_dataengine PRIVATE -Wl,-init,mindspore_log_init)
  242. elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  243. set_target_properties(_c_dataengine PROPERTIES MACOSX_RPATH ON)
  244. endif()
  245. endif()
  246. if(MS_BUILD_GRPC)
  247. if(NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
  248. target_link_libraries(_c_dataengine PRIVATE -Wl,--no-as-needed mindspore::grpc++)
  249. else()
  250. target_link_libraries(_c_dataengine PRIVATE mindspore::grpc++)
  251. endif()
  252. endif()
  253. if(NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
  254. set_target_properties(_c_dataengine PROPERTIES INSTALL_RPATH ${MINDSPORE_RPATH})
  255. endif()
  256. if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  257. include(${CMAKE_SOURCE_DIR}/cmake/change_rpath.cmake)
  258. set(LINK_SOS libtinyxml libicuuc libicudata libicui18n)
  259. changerpath($<TARGET_FILE:_c_dataengine> _c_dataengine "${LINK_SOS}")
  260. endif()