|
34 | 34 | MESSAGE(STATUS "[Note] There is an issue when running \"Debug build\" TRT EP with \"Release build\" TRT built-in parser on Windows. This build will use tensorrt oss parser instead.")
|
35 | 35 | endif()
|
36 | 36 |
|
| 37 | + find_path(TENSORRT_INCLUDE_DIR NvInfer.h |
| 38 | + HINTS ${TENSORRT_ROOT} |
| 39 | + PATH_SUFFIXES include) |
| 40 | + |
| 41 | + # TensorRT 10 GA onwards, the TensorRT libraries will have major version appended to the end on Windows, |
| 42 | + # for example, nvinfer_10.dll, nvinfer_plugin_10.dll, nvonnxparser_10.dll ... |
| 43 | + if (WIN32) |
| 44 | + file(READ ${TENSORRT_INCLUDE_DIR}/NvInferVersion.h NVINFER_VER_CONTENT) |
| 45 | + string(REGEX MATCH "define NV_TENSORRT_MAJOR * +([0-9]+)" NV_TENSORRT_MAJOR "${NVINFER_VER_CONTENT}") |
| 46 | + string(REGEX REPLACE "define NV_TENSORRT_MAJOR * +([0-9]+)" "\\1" NV_TENSORRT_MAJOR "${NV_TENSORRT_MAJOR}") |
| 47 | + string(REGEX MATCH "define NV_TENSORRT_MINOR * +([0-9]+)" NV_TENSORRT_MINOR "${NVINFER_VER_CONTENT}") |
| 48 | + string(REGEX REPLACE "define NV_TENSORRT_MINOR * +([0-9]+)" "\\1" NV_TENSORRT_MINOR "${NV_TENSORRT_MINOR}") |
| 49 | + string(REGEX MATCH "define NV_TENSORRT_PATCH * +([0-9]+)" NV_TENSORRT_PATCH "${NVINFER_VER_CONTENT}") |
| 50 | + string(REGEX REPLACE "define NV_TENSORRT_PATCH * +([0-9]+)" "\\1" NV_TENSORRT_PATCH "${NV_TENSORRT_PATCH}") |
| 51 | + math(EXPR NV_TENSORRT_MAJOR_INT "${NV_TENSORRT_MAJOR}") |
| 52 | + math(EXPR NV_TENSORRT_MINOR_INT "${NV_TENSORRT_MINOR}") |
| 53 | + math(EXPR NV_TENSORRT_PATCH_INT "${NV_TENSORRT_PATCH}") |
| 54 | + |
| 55 | + if (NV_TENSORRT_MAJOR) |
| 56 | + MESSAGE(STATUS "NV_TENSORRT_MAJOR is ${NV_TENSORRT_MAJOR}") |
| 57 | + else() |
| 58 | + MESSAGE(STATUS "Can't find NV_TENSORRT_MAJOR macro") |
| 59 | + endif() |
| 60 | + |
| 61 | + # Check TRT version >= 10.0.1.6 (Note: TRT 10 EA is 10.0.0.6 but with no major version appended to the end) |
| 62 | + if ((NV_TENSORRT_MAJOR_INT GREATER 10) OR |
| 63 | + (NV_TENSORRT_MAJOR_INT EQUAL 10 AND NV_TENSORRT_MINOR_INT GREATER 0) OR |
| 64 | + (NV_TENSORRT_MAJOR_INT EQUAL 10 AND NV_TENSORRT_PATCH_INT GREATER 0)) |
| 65 | + set(NVINFER_LIB "nvinfer_${NV_TENSORRT_MAJOR}") |
| 66 | + set(NVINFER_PLUGIN_LIB "nvinfer_plugin_${NV_TENSORRT_MAJOR}") |
| 67 | + set(PARSER_LIB "nvonnxparser_${NV_TENSORRT_MAJOR}") |
| 68 | + endif() |
| 69 | + endif() |
| 70 | + |
| 71 | + if (NOT NVINFER_LIB) |
| 72 | + set(NVINFER_LIB "nvinfer") |
| 73 | + endif() |
| 74 | + |
| 75 | + if (NOT NVINFER_PLUGIN_LIB) |
| 76 | + set(NVINFER_PLUGIN_LIB "nvinfer_plugin") |
| 77 | + endif() |
| 78 | + |
| 79 | + if (NOT PARSER_LIB) |
| 80 | + set(PARSER_LIB "nvonnxparser") |
| 81 | + endif() |
| 82 | + |
37 | 83 | if (onnxruntime_USE_TENSORRT_BUILTIN_PARSER)
|
38 | 84 | # Add TensorRT library
|
39 |
| - find_path(TENSORRT_INCLUDE_DIR NvInfer.h |
40 |
| - HINTS ${TENSORRT_ROOT} |
41 |
| - PATH_SUFFIXES include) |
42 |
| - MESSAGE(STATUS "Found TensorRT headers at ${TENSORRT_INCLUDE_DIR}") |
43 |
| - find_library(TENSORRT_LIBRARY_INFER nvinfer |
| 85 | + MESSAGE(STATUS "Search for ${NVINFER_LIB}, ${NVINFER_PLUGIN_LIB} and ${PARSER_LIB}") |
| 86 | + |
| 87 | + find_library(TENSORRT_LIBRARY_INFER ${NVINFER_LIB} |
44 | 88 | HINTS ${TENSORRT_ROOT}
|
45 | 89 | PATH_SUFFIXES lib lib64 lib/x64)
|
46 |
| - find_library(TENSORRT_LIBRARY_INFER_PLUGIN nvinfer_plugin |
| 90 | + |
| 91 | + if (NOT TENSORRT_LIBRARY_INFER) |
| 92 | + MESSAGE(STATUS "Can't find ${NVINFER_LIB}") |
| 93 | + endif() |
| 94 | + |
| 95 | + find_library(TENSORRT_LIBRARY_INFER_PLUGIN ${NVINFER_PLUGIN_LIB} |
47 | 96 | HINTS ${TENSORRT_ROOT}
|
48 | 97 | PATH_SUFFIXES lib lib64 lib/x64)
|
49 |
| - find_library(TENSORRT_LIBRARY_NVONNXPARSER nvonnxparser |
| 98 | + |
| 99 | + if (NOT TENSORRT_LIBRARY_INFER_PLUGIN) |
| 100 | + MESSAGE(STATUS "Can't find ${NVINFER_PLUGIN_LIB}") |
| 101 | + endif() |
| 102 | + |
| 103 | + find_library(TENSORRT_LIBRARY_NVONNXPARSER ${PARSER_LIB} |
50 | 104 | HINTS ${TENSORRT_ROOT}
|
51 | 105 | PATH_SUFFIXES lib lib64 lib/x64)
|
| 106 | + |
| 107 | + if (NOT TENSORRT_LIBRARY_NVONNXPARSER) |
| 108 | + MESSAGE(STATUS "Can't find ${PARSER_LIB}") |
| 109 | + endif() |
| 110 | + |
52 | 111 | set(TENSORRT_LIBRARY ${TENSORRT_LIBRARY_INFER} ${TENSORRT_LIBRARY_INFER_PLUGIN} ${TENSORRT_LIBRARY_NVONNXPARSER})
|
53 | 112 | MESSAGE(STATUS "Find TensorRT libs at ${TENSORRT_LIBRARY}")
|
54 | 113 | else()
|
|
77 | 136 | target_compile_options(nvonnxparser_static PRIVATE /FIio.h /wd4100)
|
78 | 137 | target_compile_options(nvonnxparser PRIVATE /FIio.h /wd4100)
|
79 | 138 | endif()
|
| 139 | + # Static libraries are just nvonnxparser_static on all platforms |
80 | 140 | set(onnxparser_link_libs nvonnxparser_static)
|
81 | 141 | endif()
|
82 | 142 |
|
|
0 commit comments