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

5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
3 years ago
5 years ago
5 years ago
5 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. cmake_minimum_required(VERSION 3.14)
  2. project (Parser[CXX])
  3. set(INSTALL_BASE_DIR "")
  4. set(INSTALL_LIBRARY_DIR lib)
  5. set(INSTALL_RUNTIME_DIR bin)
  6. set(INSTALL_INCLUDE_DIR include)
  7. set(INSTALL_CONFIG_DIR cmake)
  8. include(CMakePackageConfigHelpers)
  9. set(PARSER_DIR ${CMAKE_CURRENT_LIST_DIR})
  10. if (DEFINED ENV{D_PKG_SERVER})
  11. set(PARSER_PB_PKG $ENV{D_PKG_SERVER})
  12. elseif (DEFINED ENV{MSLIBS_SERVER})
  13. set(PARSER_PB_PKG "http://$ENV{MSLIBS_SERVER}:8081")
  14. message("Download packages from MSPKG server")
  15. endif ()
  16. option(ENABLE_OPEN_SRC "Enable graphengine compile in opensource." FALSE)
  17. if (ENABLE_OPEN_SRC)
  18. set(HI_PYTHON python3)
  19. include(cmake/external_libs/protobuf_shared.cmake)
  20. include(cmake/external_libs/protoc.cmake)
  21. include(cmake/external_libs/securec.cmake)
  22. include(cmake/external_libs/json.cmake)
  23. include(cmake/FindModule.cmake)
  24. include(cmake/intf_pub_linux.cmake)
  25. if(DEFINED ENV{D_LINK_PATH})
  26. # D_LINK_PATH is set
  27. set(GE_LIB_PATH $ENV{D_LINK_PATH})
  28. set(GE_SYS_ARCH "")
  29. if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")
  30. # x86 ubuntu
  31. set(GE_SYS_ARCH "x86_64")
  32. elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
  33. # arm euleros
  34. set(GE_SYS_ARCH "aarch64")
  35. else()
  36. message(FATAL_ERROR "Running on a unsupported architecture: ${SYSTEM_TYPE}, build terminated")
  37. endif()
  38. set(GE_LIB_PATH ${GE_LIB_PATH}/${GE_SYS_ARCH})
  39. find_module(slog libalog.so ${GE_LIB_PATH})
  40. find_module(static_mmpa libmmpa.a ${GE_LIB_PATH})
  41. elseif(ENABLE_GE_COV OR ENABLE_GE_UT)
  42. message(STATUS "Runing on llt mode, no need to depend other component")
  43. elseif(ENABLE_PARSER_UT OR ENABLE_PARSER_COV OR ENABLE_PARSER_ST)
  44. include(cmake/external_libs/gtest.cmake)
  45. add_subdirectory(tests)
  46. else()
  47. if(DEFINED ENV{ASCEND_CUSTOM_PATH})
  48. set(ASCEND_DIR $ENV{ASCEND_CUSTOM_PATH})
  49. else()
  50. set(ASCEND_DIR /usr/local/Ascend)
  51. endif()
  52. set(ASCEND_COMPILER_DIR ${ASCEND_DIR}/compiler/lib64)
  53. find_module(slog libalog.so ${ASCEND_COMPILER_DIR})
  54. find_module(static_mmpa libmmpa.a ${ASCEND_COMPILER_DIR})
  55. endif()
  56. if (NOT DEFINED METADEF_DIR)
  57. set(METADEF_DIR ${CMAKE_CURRENT_LIST_DIR}/metadef)
  58. add_subdirectory(metadef)
  59. endif()
  60. else()
  61. ####工程tigong
  62. set(METADEF_DIR ${CMAKE_CURRENT_LIST_DIR}/../metadef)
  63. endif()
  64. set(PARSER_PROTO_LIST
  65. "${METADEF_DIR}/proto/onnx/ge_onnx.proto"
  66. "${METADEF_DIR}/proto/om.proto"
  67. "${METADEF_DIR}/proto/caffe/caffe.proto"
  68. "${METADEF_DIR}/proto/tensorflow/graph_library.proto"
  69. "${METADEF_DIR}/proto/tensorflow/graph.proto"
  70. "${METADEF_DIR}/proto/tensorflow/node_def.proto"
  71. "${METADEF_DIR}/proto/tensorflow/function.proto"
  72. "${METADEF_DIR}/proto/tensorflow/versions.proto"
  73. "${METADEF_DIR}/proto/tensorflow/attr_value.proto"
  74. "${METADEF_DIR}/proto/tensorflow/op_def.proto"
  75. "${METADEF_DIR}/proto/tensorflow/tensor.proto"
  76. "${METADEF_DIR}/proto/tensorflow/tensor_shape.proto"
  77. "${METADEF_DIR}/proto/tensorflow/types.proto"
  78. "${METADEF_DIR}/proto/tensorflow/resource_handle.proto"
  79. )
  80. protobuf_generate(parser_protos PARSER_PROTO_SRCS PARSER_PROTO_HDRS ${PARSER_PROTO_LIST} TARGET)
  81. add_library(parser_headers INTERFACE)
  82. target_include_directories(parser_headers INTERFACE
  83. $<BUILD_INTERFACE:${PARSER_DIR}/inc>
  84. $<BUILD_INTERFACE:${PARSER_DIR}/inc/external>
  85. $<BUILD_INTERFACE:${PARSER_DIR}/inc/external/parser>
  86. $<INSTALL_INTERFACE:include>
  87. $<INSTALL_INTERFACE:include/parser>
  88. $<INSTALL_INTERFACE:include/parser/external>
  89. $<INSTALL_INTERFACE:include/parser/external/parser>
  90. )
  91. set(PARSER_GRAPH_LIBRARY_PROTO_SRC
  92. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/graph_library.pb.cc"
  93. )
  94. set(PARSER_TENSORFLOW_PROTO_SRCS
  95. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/graph.pb.cc"
  96. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/node_def.pb.cc"
  97. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/function.pb.cc"
  98. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/versions.pb.cc"
  99. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/attr_value.pb.cc"
  100. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/op_def.pb.cc"
  101. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/tensor.pb.cc"
  102. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/tensor_shape.pb.cc"
  103. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/types.pb.cc"
  104. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/tensorflow/resource_handle.pb.cc"
  105. )
  106. set(PARSER_ONNX_PROTO_SRCS
  107. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/onnx/ge_onnx.pb.cc"
  108. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/om.pb.cc"
  109. )
  110. set(PARSER_CAFFE_PROTO_SRC
  111. "${CMAKE_BINARY_DIR}/proto/parser_protos/proto/caffe/caffe.pb.cc"
  112. )
  113. add_library(parser_graph_library_proto_obj OBJECT ${PARSER_GRAPH_LIBRARY_PROTO_SRC})
  114. add_dependencies(parser_graph_library_proto_obj parser_protos)
  115. target_include_directories(parser_graph_library_proto_obj PRIVATE
  116. #### blue zone ####
  117. ${PROTOBUF_SHARED_PKG_DIR}/include
  118. #### yellow zone ####
  119. ${ASCEND_PROTOBUF_SHARED_PKG_DIR}/include
  120. )
  121. target_compile_definitions(parser_graph_library_proto_obj PRIVATE
  122. google=ascend_private
  123. )
  124. target_link_libraries(parser_graph_library_proto_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>)
  125. target_compile_options(parser_graph_library_proto_obj PRIVATE
  126. $<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC -Wextra -Wfloat-equal>
  127. $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions>
  128. $<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-fno-common -Wextra -Wfloat-equal>
  129. $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd>
  130. $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT>
  131. )
  132. add_library(parser_tensorflow_protos_obj OBJECT ${PARSER_TENSORFLOW_PROTO_SRCS})
  133. add_dependencies(parser_tensorflow_protos_obj parser_protos)
  134. target_include_directories(parser_tensorflow_protos_obj PRIVATE
  135. #### blue zone ####
  136. ${PROTOBUF_SHARED_PKG_DIR}/include
  137. #### yellow zone ####
  138. ${ASCEND_PROTOBUF_SHARED_PKG_DIR}/include
  139. )
  140. target_compile_definitions(parser_tensorflow_protos_obj PRIVATE
  141. google=ascend_private
  142. )
  143. target_link_libraries(parser_tensorflow_protos_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>)
  144. target_compile_options(parser_tensorflow_protos_obj PRIVATE
  145. $<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC -Wextra -Wfloat-equal>
  146. $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions>
  147. $<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-fno-common -Wextra -Wfloat-equal>
  148. $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd>
  149. $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT>
  150. )
  151. add_library(parser_onnx_protos_obj OBJECT ${PARSER_ONNX_PROTO_SRCS})
  152. add_dependencies(parser_onnx_protos_obj parser_protos)
  153. target_include_directories(parser_onnx_protos_obj PRIVATE
  154. #### blue zone ####
  155. ${PROTOBUF_SHARED_PKG_DIR}/include
  156. #### yellow zone ####
  157. ${ASCEND_PROTOBUF_SHARED_PKG_DIR}/include
  158. )
  159. target_compile_definitions(parser_onnx_protos_obj PRIVATE
  160. google=ascend_private
  161. )
  162. target_link_libraries(parser_onnx_protos_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>)
  163. target_compile_options(parser_onnx_protos_obj PRIVATE
  164. $<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC -Wextra -Wfloat-equal>
  165. $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions>
  166. $<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-fno-common -Wextra -Wfloat-equal>
  167. $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd>
  168. $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT>
  169. )
  170. add_library(parser_caffe_proto_obj OBJECT ${PARSER_CAFFE_PROTO_SRC})
  171. add_dependencies(parser_caffe_proto_obj parser_protos)
  172. target_include_directories(parser_caffe_proto_obj PRIVATE
  173. #### blue zone ####
  174. ${PROTOBUF_SHARED_PKG_DIR}/include
  175. #### yellow zone ####
  176. ${ASCEND_PROTOBUF_SHARED_PKG_DIR}/include
  177. )
  178. target_compile_definitions(parser_caffe_proto_obj PRIVATE
  179. google=ascend_private
  180. )
  181. target_link_libraries(parser_caffe_proto_obj PRIVATE ascend_protobuf $<BUILD_INTERFACE:intf_pub>)
  182. target_compile_options(parser_caffe_proto_obj PRIVATE
  183. $<$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>:-O2 -fPIC -Wextra -Wfloat-equal>
  184. $<$<OR:$<STREQUAL:${PRODUCT_SIDE},host>,$<STREQUAL:${ENABLE_OPEN_SRC},True>>:-fexceptions>
  185. $<$<OR:$<STREQUAL:${TARGET_SYSTEM_NAME},Linux>,$<STREQUAL:${TARGET_SYSTEM_NAME},Android>>:-fno-common -Wextra -Wfloat-equal>
  186. $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Debug>>:/MTd>
  187. $<$<AND:$<STREQUAL:${TARGET_SYSTEM_NAME},Windows>,$<STREQUAL:${CMAKE_CONFIGURATION_TYPES},Release>>:/MT>
  188. )
  189. ############ lib_caffe_parser.so ############
  190. add_library(_caffe_parser SHARED
  191. $<TARGET_OBJECTS:parser_caffe_proto_obj>
  192. )
  193. target_compile_definitions(_caffe_parser PRIVATE
  194. google=ascend_private
  195. )
  196. target_include_directories(_caffe_parser PRIVATE
  197. ${CMAKE_CURRENT_LIST_DIR}
  198. )
  199. target_link_options(_caffe_parser PRIVATE
  200. -Wl,-Bsymbolic
  201. )
  202. target_link_libraries(_caffe_parser
  203. PRIVATE
  204. intf_pub
  205. -Wl,--no-as-needed
  206. ascend_protobuf
  207. -Wl,--as-needed
  208. PUBLIC
  209. parser_headers
  210. )
  211. add_subdirectory(parser)
  212. add_subdirectory(parser/common)
  213. add_subdirectory(parser/func_to_graph)
  214. add_subdirectory(parser/onnx)
  215. install(TARGETS _caffe_parser parser_common fmk_onnx_parser fmk_parser parser_headers
  216. EXPORT parser-targets
  217. LIBRARY DESTINATION ${INSTALL_LIBRARY_DIR} OPTIONAL COMPONENT opensdk
  218. ARCHIVE DESTINATION ${INSTALL_LIBRARY_DIR} OPTIONAL COMPONENT opensdk
  219. RUNTIME DESTINATION ${INSTALL_RUNTIME_DIR} OPTIONAL COMPONENT opensdk
  220. )
  221. install(FILES ${PARSER_DIR}/inc/external/parser/onnx_parser.h
  222. ${PARSER_DIR}/inc/external/parser/caffe_parser.h
  223. ${PARSER_DIR}/inc/external/parser/tensorflow_parser.h
  224. DESTINATION ${INSTALL_INCLUDE_DIR}/parser/external/parser COMPONENT opensdk EXCLUDE_FROM_ALL
  225. )
  226. if (PACKAGE STREQUAL "opensdk")
  227. install(EXPORT parser-targets DESTINATION ${INSTALL_CONFIG_DIR}
  228. FILE parser-targets.cmake COMPONENT opensdk EXCLUDE_FROM_ALL
  229. )
  230. set(PKG_NAME parser)
  231. configure_package_config_file(${TOP_DIR}/cmake/config/pkg_config_template.cmake.in
  232. ${CMAKE_CURRENT_BINARY_DIR}/parser-config.cmake
  233. INSTALL_DESTINATION ${INSTALL_CONFIG_DIR}
  234. PATH_VARS INSTALL_BASE_DIR INSTALL_INCLUDE_DIR INSTALL_LIBRARY_DIR INSTALL_RUNTIME_DIR INSTALL_CONFIG_DIR
  235. INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}
  236. )
  237. unset(PKG_NAME)
  238. install(FILES ${CMAKE_CURRENT_BINARY_DIR}/parser-config.cmake
  239. DESTINATION ${INSTALL_CONFIG_DIR} COMPONENT opensdk EXCLUDE_FROM_ALL
  240. )
  241. endif()