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.

tensorrt.cmake 7.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. if("${TRT_ROOT_DIR}" STREQUAL "" AND NOT "$ENV{TRT_ROOT_DIR}" STREQUAL "")
  2. set(TRT_ROOT_DIR $ENV{TRT_ROOT_DIR})
  3. endif()
  4. if(MGE_CUDA_USE_STATIC)
  5. find_library(TRT_LIBRARY
  6. NAMES libnvinfer_static.a nvinfer.lib
  7. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  8. HINTS ${ALTER_LIBRARY_PATHS}
  9. PATH_SUFFIXES lib lib64
  10. DOC "TRT library." )
  11. find_library(TRT_PLUGIN_LIBRARY
  12. NAMES libnvinfer_plugin_static.a nvinfer_plugin.lib
  13. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  14. HINTS ${ALTER_LIBRARY_PATHS}
  15. PATH_SUFFIXES lib lib64
  16. DOC "TRT plugin library." )
  17. else()
  18. find_library(TRT_LIBRARY
  19. NAMES libnvinfer.so libnvinfer.dylib nvinfer.dll
  20. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  21. HINTS ${ALTER_LIBRARY_PATHS}
  22. PATH_SUFFIXES lib lib64
  23. DOC "TRT library." )
  24. find_library(TRT_PLUGIN_LIBRARY
  25. NAMES libnvinfer_plugin.so libnvinfer_plugin.dylib nvinfer_plugin.dll
  26. PATHS ${ALTER_LD_LIBRARY_PATHS} ${TRT_ROOT_DIR} ${CMAKE_INSTALL_PREFIX}
  27. HINTS ${ALTER_LIBRARY_PATHS}
  28. PATH_SUFFIXES lib lib64
  29. DOC "TRT plugin library." )
  30. endif()
  31. if(TRT_LIBRARY STREQUAL "TRT_LIBRARY-NOTFOUND")
  32. message(FATAL_ERROR "Can not find TensorRT Library, please refer to scripts/cmake-build/BUILD_README.md to init TRT env")
  33. endif()
  34. if(TRT_PLUGIN_LIBRARY STREQUAL "TRT_PLUGIN_LIBRARY-NOTFOUND")
  35. message(FATAL_ERROR "Can not find TensorRT Plugin Library, please refer to scripts/cmake-build/BUILD_README.md to init TRT env")
  36. endif()
  37. get_filename_component(__found_trt_root ${TRT_LIBRARY}/../.. REALPATH)
  38. find_path(TRT_INCLUDE_DIR
  39. NAMES NvInfer.h
  40. HINTS ${TRT_ROOT_DIR} ${CUDA_TOOLKIT_INCLUDE} ${__found_trt_root}
  41. PATH_SUFFIXES include
  42. DOC "Path to TRT include directory." )
  43. find_path(TRT_PLUGIN_INCLUDE_DIR
  44. NAMES NvInferPlugin.h
  45. HINTS ${TRT_ROOT_DIR} ${CUDA_TOOLKIT_INCLUDE} ${__found_trt_root}
  46. PATH_SUFFIXES include
  47. DOC "Path to TRT plugin include directory." )
  48. if(TRT_INCLUDE_DIR STREQUAL "TRT_INCLUDE_DIR-NOTFOUND")
  49. message(FATAL_ERROR "Can not find TensorRT INCLUDE, please refer to scripts/cmake-build/BUILD_README.md to init TRT env")
  50. endif()
  51. if(TRT_PLUGIN_INCLUDE_DIR STREQUAL "TRT_PLUGIN_INCLUDE_DIR-NOTFOUND")
  52. message(FATAL_ERROR "Can not find TensorRT Plugin INCLUDE, please refer to scripts/cmake-build/BUILD_README.md to init TRT env")
  53. endif()
  54. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_MAJOR REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$")
  55. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_MINOR REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$")
  56. file(STRINGS "${TRT_INCLUDE_DIR}/NvInfer.h" TensorRT_PATCH REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$")
  57. if (TensorRT_MAJOR STREQUAL "")
  58. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_MAJOR REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$")
  59. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_MINOR REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$")
  60. file(STRINGS "${TRT_INCLUDE_DIR}/NvInferVersion.h" TensorRT_PATCH REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$")
  61. endif()
  62. string(REGEX REPLACE "^#define NV_TENSORRT_MAJOR ([0-9]+).*$" "\\1" TensorRT_VERSION_MAJOR "${TensorRT_MAJOR}")
  63. string(REGEX REPLACE "^#define NV_TENSORRT_MINOR ([0-9]+).*$" "\\1" TensorRT_VERSION_MINOR "${TensorRT_MINOR}")
  64. string(REGEX REPLACE "^#define NV_TENSORRT_PATCH ([0-9]+).*$" "\\1" TensorRT_VERSION_PATCH "${TensorRT_PATCH}")
  65. set(TRT_VERSION_STRING "${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}")
  66. if(MGE_CUDA_USE_STATIC)
  67. add_library(libnvinfer STATIC IMPORTED)
  68. add_library(libnvinfer_plugin STATIC IMPORTED)
  69. else()
  70. add_library(libnvinfer SHARED IMPORTED)
  71. add_library(libnvinfer_plugin SHARED IMPORTED)
  72. endif()
  73. set_target_properties(libnvinfer PROPERTIES
  74. IMPORTED_LOCATION ${TRT_LIBRARY}
  75. INTERFACE_INCLUDE_DIRECTORIES ${TRT_INCLUDE_DIR}
  76. )
  77. set_target_properties(libnvinfer_plugin PROPERTIES
  78. IMPORTED_LOCATION ${TRT_PLUGIN_LIBRARY}
  79. INTERFACE_INCLUDE_DIRECTORIES ${TRT_PLUGIN_INCLUDE_DIR}
  80. )
  81. message(STATUS "Found TensorRT: ${__found_trt_root} (found version: ${TRT_VERSION_STRING})")
  82. if(TensorRT_VERSION_MAJOR GREATER_EQUAL 7)
  83. if(MGE_CUDA_USE_STATIC)
  84. find_library(LIBMYELIN_COMPILER
  85. NAMES libmyelin_compiler_static.a myelin_compiler_static.lib
  86. PATHS ${__found_trt_root}/lib
  87. )
  88. if(LIBMYELIN_COMPILER STREQUAL "LIBMYELIN_COMPILER-NOTFOUND")
  89. message(FATAL_ERROR "Can not find LIBMYELIN_COMPILER Library")
  90. else()
  91. message(STATUS "Found TensorRT myelin_compiler: ${LIBMYELIN_COMPILER}")
  92. endif()
  93. add_library(libmyelin_compiler STATIC IMPORTED)
  94. set_target_properties(libmyelin_compiler PROPERTIES
  95. IMPORTED_LOCATION ${LIBMYELIN_COMPILER}
  96. )
  97. find_library(LIBMYELIN_EXECUTOR
  98. NAMES libmyelin_executor_static.a myelin_executor_static.lib
  99. PATHS ${__found_trt_root}/lib
  100. )
  101. if(LIBMYELIN_EXECUTOR STREQUAL "LIBMYELIN_EXECUTOR-NOTFOUND")
  102. message(FATAL_ERROR "Can not find LIBMYELIN_EXECUTOR Library")
  103. else()
  104. message(STATUS "Found TensorRT libmyelin_executor: ${LIBMYELIN_EXECUTOR}")
  105. endif()
  106. add_library(libmyelin_executor STATIC IMPORTED)
  107. set_target_properties(libmyelin_executor PROPERTIES
  108. IMPORTED_LOCATION ${LIBMYELIN_EXECUTOR}
  109. )
  110. find_library(LIBMYELIN_PATTERN_RUNTIME
  111. NAMES libmyelin_pattern_runtime_static.a myelin_pattern_runtime_static.lib
  112. PATHS ${__found_trt_root}/lib
  113. )
  114. if(LIBMYELIN_PATTERN_RUNTIME STREQUAL "LIBMYELIN_PATTERN_RUNTIME-NOTFOUND")
  115. message(FATAL_ERROR "Can not find LIBMYELIN_PATTERN_RUNTIME Library")
  116. else()
  117. message(STATUS "Found TensorRT libmyelin_pattern_runtime: ${LIBMYELIN_PATTERN_RUNTIME}")
  118. endif()
  119. add_library(libmyelin_pattern_runtime STATIC IMPORTED)
  120. set_target_properties(libmyelin_pattern_runtime PROPERTIES
  121. IMPORTED_LOCATION ${LIBMYELIN_PATTERN_RUNTIME}
  122. )
  123. find_library(LIBMYELIN_PATTERN_LIBRARY
  124. NAMES libmyelin_pattern_library_static.a myelin_pattern_library_static.lib
  125. PATHS ${__found_trt_root}/lib
  126. )
  127. if(LIBMYELIN_PATTERN_LIBRARY STREQUAL "LIBMYELIN_PATTERN_LIBRARY-NOTFOUND")
  128. message(FATAL_ERROR "Can not find LIBMYELIN_PATTERN_LIBRARY Library")
  129. else()
  130. message(STATUS "Found TensorRT libmyelin_pattern_library: ${LIBMYELIN_PATTERN_LIBRARY}")
  131. endif()
  132. add_library(libmyelin_pattern_library STATIC IMPORTED)
  133. set_target_properties(libmyelin_pattern_library PROPERTIES
  134. IMPORTED_LOCATION ${LIBMYELIN_PATTERN_LIBRARY}
  135. )
  136. else()
  137. find_library(LIBMYELIN_SHARED
  138. NAMES libmyelin.so myelin.dll
  139. PATHS ${__found_trt_root}/lib
  140. )
  141. if(LIBMYELIN_SHARED STREQUAL "LIBMYELIN_SHARED-NOTFOUND")
  142. message(FATAL_ERROR "Can not find LIBMYELIN_SHARED Library")
  143. else()
  144. message(STATUS "Found TensorRT libmyelin_shared: ${LIBMYELIN_SHARED}")
  145. endif()
  146. add_library(libmyelin SHARED IMPORTED)
  147. set_target_properties(libmyelin PROPERTIES
  148. IMPORTED_LOCATION ${LIBMYELIN_SHARED}
  149. )
  150. endif()
  151. endif()