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 12 kB

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
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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  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-constant-conversion -Wno-unknown-warning-option")
  8. else()
  9. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-maybe-uninitialized")
  10. endif()
  11. # fix for GCC8.0
  12. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-class-memaccess -Wno-stringop-truncation")
  13. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-format")
  14. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes")
  15. ############################# Options ################################
  16. if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  17. add_definitions(-D _CRT_RAND_S)
  18. endif()
  19. if(ENABLE_ACL)
  20. add_definitions(-D ENABLE_ACL)
  21. message(STATUS "ACL module is enabled")
  22. endif()
  23. if(ENABLE_GPUQUE)
  24. add_definitions(-D ENABLE_GPUQUE)
  25. message(STATUS "GPU queue is enabled")
  26. endif()
  27. if(ENABLE_TDTQUE)
  28. add_definitions(-D ENABLE_TDTQUE)
  29. message(STATUS "TDT queue is enabled")
  30. endif()
  31. if(MS_BUILD_GRPC)
  32. set(ENABLE_CACHE true)
  33. add_definitions(-D ENABLE_CACHE)
  34. message(STATUS "Cache is enabled")
  35. endif()
  36. # conde coverage
  37. # option(ENABLE_COVERAGE "Enable code coverage report" OFF)
  38. # if(ENABLE_COVERAGE)
  39. # include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
  40. # append_coverage_compiler_flags()
  41. # endif()
  42. ########### Set up the include directories ###########################
  43. include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc)
  44. include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc/runtime/device/ascend/platform)
  45. include_directories(${CMAKE_BINARY_DIR}) # for protobuf generated .h
  46. include_directories(${CMAKE_SOURCE_DIR}/mindspore)
  47. include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/mindrecord/include)
  48. include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/include)
  49. include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/kernels/image)
  50. ######################################################################
  51. ####################### Flags ########################################
  52. # compile flags
  53. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=default")
  54. if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  55. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-delete-abstract-non-virtual-dtor")
  56. else()
  57. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-rpath,$ORIGIN:$ORIGIN/lib")
  58. endif()
  59. ################## Include sub-modules ###############################
  60. add_subdirectory(util)
  61. add_subdirectory(core)
  62. add_subdirectory(kernels)
  63. add_subdirectory(engine)
  64. add_subdirectory(api)
  65. add_subdirectory(text)
  66. add_subdirectory(callback)
  67. ######################################################################
  68. add_dependencies(utils core)
  69. add_dependencies(kernels-image core)
  70. add_dependencies(kernels-data core)
  71. add_dependencies(kernels-soft-dvpp-image core soft-dvpp-utils)
  72. add_dependencies(kernels core)
  73. add_dependencies(engine-datasetops-source core)
  74. add_dependencies(engine-datasetops-source-sampler core)
  75. add_dependencies(engine-datasetops core)
  76. add_dependencies(engine-datasetops-mapop core)
  77. add_dependencies(engine-opt core)
  78. add_dependencies(engine-perf core)
  79. add_dependencies(engine-gnn core)
  80. add_dependencies(engine core)
  81. add_dependencies(callback core)
  82. add_dependencies(text core)
  83. add_dependencies(text-kernels core)
  84. add_dependencies(text-ir core)
  85. add_dependencies(text-ir-kernels core)
  86. add_dependencies(cpp-API core)
  87. add_dependencies(engine-ir-datasetops core)
  88. add_dependencies(engine-ir-datasetops-source core)
  89. add_dependencies(engine-ir-datasetops-source-samplers core)
  90. add_dependencies(engine-ir-cache core)
  91. add_dependencies(kernels-ir core)
  92. add_dependencies(kernels-ir-data core)
  93. add_dependencies(kernels-ir-vision core)
  94. if(ENABLE_ACL)
  95. add_dependencies(kernels-dvpp-image core dvpp-utils)
  96. endif()
  97. if(ENABLE_PYTHON)
  98. add_dependencies(APItoPython core)
  99. endif()
  100. if(ENABLE_TDTQUE)
  101. add_dependencies(engine-tdt core)
  102. endif()
  103. if(ENABLE_CACHE)
  104. add_dependencies(APItoPython engine-cache-client)
  105. add_dependencies(cpp-API engine-cache-client)
  106. add_dependencies(engine-ir-cache engine-cache-client)
  107. add_dependencies(engine-ir-datasetops engine-cache-client)
  108. add_dependencies(engine-opt engine-cache-client)
  109. add_dependencies(engine-datasetops engine-cache-client)
  110. add_dependencies(engine-perf engine-cache-client)
  111. add_dependencies(engine-cache-client core)
  112. add_dependencies(engine-cache-server core)
  113. endif()
  114. ################### Create _c_dataengine Library ######################
  115. set(submodules
  116. $<TARGET_OBJECTS:core>
  117. $<TARGET_OBJECTS:callback>
  118. $<TARGET_OBJECTS:utils>
  119. $<TARGET_OBJECTS:kernels>
  120. $<TARGET_OBJECTS:kernels-image>
  121. $<TARGET_OBJECTS:lite-cv>
  122. $<TARGET_OBJECTS:kernels-data>
  123. $<TARGET_OBJECTS:cpp-API>
  124. $<TARGET_OBJECTS:engine-ir-datasetops>
  125. $<TARGET_OBJECTS:engine-ir-datasetops-source>
  126. $<TARGET_OBJECTS:engine-ir-datasetops-source-samplers>
  127. $<TARGET_OBJECTS:engine-ir-cache>
  128. $<TARGET_OBJECTS:kernels-soft-dvpp-image>
  129. $<TARGET_OBJECTS:soft-dvpp-utils>
  130. $<TARGET_OBJECTS:engine-datasetops-source>
  131. $<TARGET_OBJECTS:engine-datasetops-source-sampler>
  132. $<TARGET_OBJECTS:engine-datasetops-mapop>
  133. $<TARGET_OBJECTS:engine-gnn>
  134. $<TARGET_OBJECTS:engine-perf>
  135. $<TARGET_OBJECTS:engine-datasetops>
  136. $<TARGET_OBJECTS:engine-opt>
  137. $<TARGET_OBJECTS:engine-cache-client>
  138. $<TARGET_OBJECTS:engine>
  139. $<TARGET_OBJECTS:text>
  140. $<TARGET_OBJECTS:text-kernels>
  141. $<TARGET_OBJECTS:text-ir>
  142. $<TARGET_OBJECTS:text-ir-kernels>
  143. $<TARGET_OBJECTS:kernels-ir>
  144. $<TARGET_OBJECTS:kernels-ir-data>
  145. $<TARGET_OBJECTS:kernels-ir-vision>
  146. )
  147. if(ENABLE_ACL)
  148. set(submodules
  149. ${submodules}
  150. $<TARGET_OBJECTS:kernels-dvpp-image>
  151. $<TARGET_OBJECTS:dvpp-utils>)
  152. endif()
  153. if(ENABLE_PYTHON)
  154. set(submodules
  155. ${submodules}
  156. $<TARGET_OBJECTS:APItoPython>)
  157. endif()
  158. if(ENABLE_TDTQUE)
  159. add_library(_c_dataengine SHARED ${submodules} $<TARGET_OBJECTS:engine-tdt>)
  160. else()
  161. add_library(_c_dataengine SHARED ${submodules})
  162. endif()
  163. if(ENABLE_PYTHON)
  164. set_target_properties(_c_dataengine PROPERTIES
  165. PREFIX "${PYTHON_MODULE_PREFIX}"
  166. SUFFIX "${PYTHON_MODULE_EXTENSION}"
  167. )
  168. endif()
  169. ######################################################################
  170. ################# Link with external libraries ########################
  171. target_link_libraries(_c_dataengine PRIVATE mindspore mindspore_gvar)
  172. if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  173. set(CMAKE_MACOSX_RPATH 1)
  174. set(CMAKE_INSTALL_RPATH "@loader_path/lib;@loader_path")
  175. set_target_properties(_c_dataengine PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH}")
  176. endif()
  177. set(targetso $<TARGET_FILE:_c_dataengine>)
  178. set(target_tiny "libtinyxml")
  179. set(target_icuuc "libicuuc")
  180. set(target_icudata "libicudata")
  181. set(target_icui18n "libicui18n")
  182. function(changerpath targetso linkso)
  183. set(some-file "${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/${linkso}.txt")
  184. set(some-file1 "${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/${linkso}1.txt")
  185. set(some-file2 "${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset/${linkso}2.txt")
  186. add_custom_command(
  187. OUTPUT
  188. ${some-file}
  189. COMMAND
  190. otool -L ${targetso} | grep ${linkso} > ${some-file}
  191. WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset"
  192. VERBATIM
  193. )
  194. add_custom_command(
  195. OUTPUT
  196. ${some-file1}
  197. COMMAND
  198. cat ${some-file} | cut -d " " -f 1 | sed -E "s/^.//g" > ${some-file1}
  199. DEPENDS
  200. ${some-file}
  201. WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset"
  202. VERBATIM
  203. )
  204. add_custom_command(
  205. OUTPUT
  206. ${some-file2}
  207. COMMAND
  208. awk -F "/" "{print $NF}" ${some-file1} > ${some-file2}
  209. DEPENDS
  210. ${some-file1}
  211. WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset"
  212. VERBATIM
  213. )
  214. add_custom_target(
  215. link_${linkso} ALL
  216. COMMAND install_name_tool -change `cat ${some-file1}` @rpath/`cat ${some-file2}` ${targetso}
  217. WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset"
  218. DEPENDS ${targetso} ${some-file1} ${some-file2}
  219. COMMENT "install tool name")
  220. endfunction()
  221. if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  222. changerpath(${targetso} ${target_tiny})
  223. changerpath(${targetso} ${target_icuuc})
  224. add_dependencies(link_${target_icuuc} link_${target_tiny})
  225. changerpath(${targetso} ${target_icudata})
  226. add_dependencies(link_${target_icudata} link_${target_icuuc})
  227. changerpath(${targetso} ${target_icui18n})
  228. add_dependencies(link_${target_icui18n} link_${target_icudata})
  229. endif()
  230. if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  231. if(ENABLE_PYTHON)
  232. target_link_libraries(_c_dataengine PRIVATE mindspore::pybind11_module ${PYTHON_LIBRARIES} ${SECUREC_LIBRARY})
  233. else()
  234. target_link_libraries(_c_dataengine PRIVATE ${SECUREC_LIBRARY})
  235. endif()
  236. else()
  237. set(ICU_LIB mindspore::icuuc mindspore::icudata mindspore::icui18n)
  238. if(ENABLE_PYTHON)
  239. target_link_libraries(_c_dataengine PRIVATE mindspore::pybind11_module -ldl ${SECUREC_LIBRARY})
  240. else()
  241. target_link_libraries(_c_dataengine PRIVATE -ldl ${SECUREC_LIBRARY})
  242. endif()
  243. target_link_libraries(_c_dataengine PUBLIC mindspore::sentencepiece)
  244. endif()
  245. target_link_libraries(_c_dataengine PUBLIC mindspore::jpeg_turbo mindspore::turbojpeg mindspore::opencv_core
  246. mindspore::opencv_imgcodecs mindspore::opencv_imgproc mindspore::tinyxml2
  247. mindspore::sentencepiece_train ${ICU_LIB})
  248. if(ENABLE_GPUQUE)
  249. target_link_libraries(_c_dataengine PRIVATE gpu_queue
  250. ${CUDNN_LIBRARY_PATH}
  251. ${CUDA_PATH}/lib64/libcudart.so
  252. ${CUDA_PATH}/lib64/stubs/libcuda.so)
  253. endif()
  254. if(ENABLE_TDTQUE)
  255. target_link_libraries(_c_dataengine PRIVATE ${TSDCLIENT})
  256. endif()
  257. add_dependencies(_c_dataengine _c_mindrecord)
  258. if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  259. set(MINDRECORD_LINK_OBJECT
  260. ${CMAKE_BINARY_DIR}/mindspore/ccsrc/minddata/mindrecord/CMakeFiles/_c_mindrecord.dir/objects.a)
  261. target_link_libraries(_c_dataengine PRIVATE _c_mindrecord ${MINDRECORD_LINK_OBJECT} mindspore::sqlite)
  262. else()
  263. target_link_libraries(_c_dataengine PRIVATE _c_mindrecord)
  264. if(ENABLE_CPU AND (ENABLE_D OR ENABLE_GPU))
  265. target_link_libraries(_c_dataengine PRIVATE mindspore::pslite ${zeromq_DIRPATH}/zmq_install/lib/libzmq.a)
  266. if(${ENABLE_IBVERBS} STREQUAL "ON")
  267. target_link_libraries(_c_dataengine PRIVATE ibverbs rdmacm)
  268. endif()
  269. target_link_libraries(_c_dataengine PRIVATE ps_cache)
  270. endif()
  271. endif()
  272. add_dependencies(_c_dataengine mindspore_shared_lib)
  273. target_link_libraries(_c_dataengine PRIVATE mindspore_shared_lib)
  274. if(USE_GLOG)
  275. target_link_libraries(_c_dataengine PRIVATE mindspore::glog)
  276. else()
  277. if(CMAKE_SYSTEM_NAME MATCHES "Linux")
  278. target_link_options(_c_dataengine PRIVATE -Wl,-init,mindspore_log_init)
  279. elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  280. set_target_properties(_c_dataengine PROPERTIES MACOSX_RPATH ON)
  281. endif()
  282. endif()
  283. if(MS_BUILD_GRPC)
  284. target_link_libraries(_c_dataengine PRIVATE mindspore::grpc++)
  285. endif()
  286. set_target_properties(_c_dataengine PROPERTIES INSTALL_RPATH ${MINDSPORE_RPATH})