Skip to content

Commit a077330

Browse files
authored
[TensorRT] adapt for TRT lib name change after TRT 10 GA (#20445)
For TensorRT 10 GA onwards, the TensorRT libraries will have major version appended to the end on Windows, for example, nvinfer_10.dll, nvinfer_plugin_10.dll, nvonnxparser_10.dll ... Change cmake file accordingly.
1 parent e5947f5 commit a077330

File tree

1 file changed

+67
-7
lines changed

1 file changed

+67
-7
lines changed

cmake/onnxruntime_providers_tensorrt.cmake

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,80 @@
3434
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.")
3535
endif()
3636

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+
3783
if (onnxruntime_USE_TENSORRT_BUILTIN_PARSER)
3884
# 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}
4488
HINTS ${TENSORRT_ROOT}
4589
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}
4796
HINTS ${TENSORRT_ROOT}
4897
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}
50104
HINTS ${TENSORRT_ROOT}
51105
PATH_SUFFIXES lib lib64 lib/x64)
106+
107+
if (NOT TENSORRT_LIBRARY_NVONNXPARSER)
108+
MESSAGE(STATUS "Can't find ${PARSER_LIB}")
109+
endif()
110+
52111
set(TENSORRT_LIBRARY ${TENSORRT_LIBRARY_INFER} ${TENSORRT_LIBRARY_INFER_PLUGIN} ${TENSORRT_LIBRARY_NVONNXPARSER})
53112
MESSAGE(STATUS "Find TensorRT libs at ${TENSORRT_LIBRARY}")
54113
else()
@@ -77,6 +136,7 @@
77136
target_compile_options(nvonnxparser_static PRIVATE /FIio.h /wd4100)
78137
target_compile_options(nvonnxparser PRIVATE /FIio.h /wd4100)
79138
endif()
139+
# Static libraries are just nvonnxparser_static on all platforms
80140
set(onnxparser_link_libs nvonnxparser_static)
81141
endif()
82142

0 commit comments

Comments
 (0)