mirror of
https://github.com/NVIDIA/TensorRT-LLM.git
synced 2026-01-14 06:27:45 +08:00
191 lines
6.6 KiB
CMake
191 lines
6.6 KiB
CMake
#
|
|
# SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION &
|
|
# AFFILIATES. All rights reserved. SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
# use this file except in compliance with the License. You may obtain a copy of
|
|
# the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations under
|
|
# the License.
|
|
#
|
|
|
|
# TensorRT install path in docker image
|
|
set(TensorRT_WELL_KNOWN_ROOT /usr/local/tensorrt)
|
|
|
|
find_path(
|
|
TensorRT_INCLUDE_DIR
|
|
NAMES NvInfer.h
|
|
PATHS ${TensorRT_WELL_KNOWN_ROOT}/include)
|
|
|
|
function(_tensorrt_get_version)
|
|
unset(TensorRT_VERSION_STRING PARENT_SCOPE)
|
|
set(_hdr_file "${TensorRT_INCLUDE_DIR}/NvInferVersion.h")
|
|
|
|
if(NOT EXISTS "${_hdr_file}")
|
|
return()
|
|
endif()
|
|
|
|
file(STRINGS "${_hdr_file}" IS_10_11_NEW_MACRO REGEX "TRT_MAJOR_ENTERPRISE")
|
|
if(IS_10_11_NEW_MACRO)
|
|
file(STRINGS "${_hdr_file}" VERSION_STRINGS
|
|
REGEX "#define TRT_.+_ENTERPRISE.*")
|
|
foreach(TYPE MAJOR MINOR PATCH BUILD)
|
|
string(REGEX MATCH "TRT_${TYPE}_ENTERPRISE [0-9]+" TRT_TYPE_STRING
|
|
${VERSION_STRINGS})
|
|
string(REGEX MATCH "[0-9]+" TensorRT_VERSION_${TYPE} ${TRT_TYPE_STRING})
|
|
endforeach(TYPE)
|
|
else()
|
|
file(STRINGS "${_hdr_file}" VERSION_STRINGS REGEX "#define NV_TENSORRT_.*")
|
|
foreach(TYPE MAJOR MINOR PATCH BUILD)
|
|
string(REGEX MATCH "NV_TENSORRT_${TYPE} [0-9]+" TRT_TYPE_STRING
|
|
${VERSION_STRINGS})
|
|
string(REGEX MATCH "[0-9]+" TensorRT_VERSION_${TYPE} ${TRT_TYPE_STRING})
|
|
endforeach(TYPE)
|
|
endif()
|
|
|
|
set(TensorRT_VERSION_MAJOR
|
|
${TensorRT_VERSION_MAJOR}
|
|
PARENT_SCOPE)
|
|
set(TensorRT_VERSION_STRING
|
|
"${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}.${TensorRT_VERSION_BUILD}"
|
|
PARENT_SCOPE)
|
|
endfunction(_tensorrt_get_version)
|
|
|
|
_tensorrt_get_version()
|
|
|
|
macro(_tensorrt_find_dll VAR)
|
|
find_file(
|
|
${VAR}
|
|
NAMES ${ARGN}
|
|
HINTS ${TensorRT_ROOT}
|
|
PATH_SUFFIXES bin)
|
|
endmacro(_tensorrt_find_dll)
|
|
|
|
find_library(
|
|
TensorRT_LIBRARY
|
|
NAMES "nvinfer_${TensorRT_VERSION_MAJOR}" nvinfer
|
|
PATHS ${TensorRT_WELL_KNOWN_ROOT}/lib)
|
|
|
|
if(WIN32)
|
|
_tensorrt_find_dll(TensorRT_DLL "nvinfer_${TensorRT_VERSION_MAJOR}.dll"
|
|
nvinfer.dll)
|
|
endif()
|
|
|
|
if(TensorRT_LIBRARY)
|
|
set(TensorRT_LIBRARIES ${TensorRT_LIBRARIES} ${TensorRT_LIBRARY})
|
|
endif(TensorRT_LIBRARY)
|
|
|
|
if(TensorRT_FIND_COMPONENTS)
|
|
list(REMOVE_ITEM TensorRT_FIND_COMPONENTS "nvinfer")
|
|
|
|
if("OnnxParser" IN_LIST TensorRT_FIND_COMPONENTS)
|
|
find_path(
|
|
TensorRT_OnnxParser_INCLUDE_DIR
|
|
NAMES NvOnnxParser.h
|
|
PATHS ${TensorRT_WELL_KNOWN_ROOT}/include)
|
|
|
|
find_library(
|
|
TensorRT_OnnxParser_LIBRARY
|
|
NAMES "nvonnxparser_${TensorRT_VERSION_MAJOR}" nvonnxparser
|
|
PATHS ${TensorRT_WELL_KNOWN_ROOT}/lib)
|
|
if(TensorRT_OnnxParser_LIBRARY AND TensorRT_LIBRARIES)
|
|
set(TensorRT_LIBRARIES ${TensorRT_LIBRARIES}
|
|
${TensorRT_OnnxParser_LIBRARY})
|
|
set(TensorRT_OnnxParser_FOUND TRUE)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
_tensorrt_find_dll(
|
|
TensorRT_OnnxParser_DLL "nvonnxparser_${TensorRT_VERSION_MAJOR}.dll"
|
|
nvonnxparser.dll)
|
|
endif()
|
|
endif()
|
|
|
|
if("Plugin" IN_LIST TensorRT_FIND_COMPONENTS)
|
|
find_path(
|
|
TensorRT_Plugin_INCLUDE_DIR
|
|
NAMES NvInferPlugin.h
|
|
PATHS ${TensorRT_WELL_KNOWN_ROOT}/include)
|
|
|
|
find_library(
|
|
TensorRT_Plugin_LIBRARY
|
|
NAMES "nvinfer_plugin_${TensorRT_VERSION_MAJOR}" nvinfer_plugin
|
|
PATHS ${TensorRT_WELL_KNOWN_ROOT}/lib)
|
|
|
|
if(TensorRT_Plugin_LIBRARY AND TensorRT_LIBRARIES)
|
|
set(TensorRT_LIBRARIES ${TensorRT_LIBRARIES} ${TensorRT_Plugin_LIBRARY})
|
|
set(TensorRT_Plugin_FOUND TRUE)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
_tensorrt_find_dll(
|
|
TensorRT_Plugin_DLL "nvinfer_plugin_${TensorRT_VERSION_MAJOR}.dll"
|
|
nvinfer_plugin.dll)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(
|
|
TensorRT
|
|
FOUND_VAR TensorRT_FOUND
|
|
REQUIRED_VARS TensorRT_LIBRARY TensorRT_LIBRARIES TensorRT_INCLUDE_DIR
|
|
VERSION_VAR TensorRT_VERSION_STRING
|
|
HANDLE_COMPONENTS)
|
|
|
|
if(NOT TARGET TensorRT::NvInfer)
|
|
add_library(TensorRT::NvInfer SHARED IMPORTED)
|
|
target_include_directories(TensorRT::NvInfer SYSTEM
|
|
INTERFACE "${TensorRT_INCLUDE_DIR}")
|
|
if(WIN32)
|
|
set_property(TARGET TensorRT::NvInfer PROPERTY IMPORTED_LOCATION
|
|
"${TensorRT_DLL}")
|
|
set_property(TARGET TensorRT::NvInfer PROPERTY IMPORTED_IMPLIB
|
|
"${TensorRT_LIBRARY}")
|
|
else()
|
|
set_property(TARGET TensorRT::NvInfer PROPERTY IMPORTED_LOCATION
|
|
"${TensorRT_LIBRARY}")
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT TARGET TensorRT::OnnxParser AND "OnnxParser" IN_LIST
|
|
TensorRT_FIND_COMPONENTS)
|
|
add_library(TensorRT::OnnxParser SHARED IMPORTED)
|
|
target_include_directories(TensorRT::OnnxParser SYSTEM
|
|
INTERFACE "${TensorRT_OnnxParser_INCLUDE_DIR}")
|
|
target_link_libraries(TensorRT::OnnxParser INTERFACE TensorRT::NvInfer)
|
|
if(WIN32)
|
|
set_property(TARGET TensorRT::OnnxParser
|
|
PROPERTY IMPORTED_LOCATION "${TensorRT_OnnxParser_DLL}")
|
|
set_property(TARGET TensorRT::OnnxParser
|
|
PROPERTY IMPORTED_IMPLIB "${TensorRT_OnnxParser_LIBRARY}")
|
|
else()
|
|
set_property(TARGET TensorRT::OnnxParser
|
|
PROPERTY IMPORTED_LOCATION "${TensorRT_OnnxParser_LIBRARY}")
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT TARGET TensorRT::Plugin AND "Plugin" IN_LIST TensorRT_FIND_COMPONENTS)
|
|
add_library(TensorRT::Plugin SHARED IMPORTED)
|
|
target_include_directories(TensorRT::Plugin SYSTEM
|
|
INTERFACE "${TensorRT_Plugin_INCLUDE_DIR}")
|
|
target_link_libraries(TensorRT::Plugin INTERFACE TensorRT::NvInfer)
|
|
if(WIN32)
|
|
set_property(TARGET TensorRT::Plugin PROPERTY IMPORTED_LOCATION
|
|
"${TensorRT_Plugin_DLL}")
|
|
set_property(TARGET TensorRT::Plugin PROPERTY IMPORTED_IMPLIB
|
|
"${TensorRT_Plugin_LIBRARY}")
|
|
else()
|
|
set_property(TARGET TensorRT::Plugin PROPERTY IMPORTED_LOCATION
|
|
"${TensorRT_Plugin_LIBRARY}")
|
|
endif()
|
|
endif()
|
|
|
|
mark_as_advanced(TensorRT_INCLUDE_DIR TensorRT_LIBRARY TensorRT_LIBRARIES)
|