-
Notifications
You must be signed in to change notification settings - Fork 355
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1058 from gcuendet/add-cmake-support
Add CMake support to build the libraries
- Loading branch information
Showing
36 changed files
with
1,419 additions
and
197 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
|
||
cmake_minimum_required(VERSION 3.17) | ||
project(Torch-TensorRT LANGUAGES CXX) | ||
|
||
# use c++17 | ||
set(CMAKE_CXX_STANDARD 17) | ||
|
||
# Build the libraries with -fPIC | ||
set(CMAKE_POSITION_INDEPENDENT_CODE ON) | ||
|
||
if (DEFINED CMAKE_MODULE_PATH) | ||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} CACHE PATH "Path to the folder containing finders") | ||
endif() | ||
|
||
include(cmake/build_options.cmake) | ||
include(cmake/paths.cmake) | ||
include(cmake/dependencies.cmake) | ||
if(MSVC) | ||
add_compile_options(/wd4624 /wd4067 /permissive-) | ||
# When using Ninja generator, suppress the warning D9025 | ||
string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") | ||
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") | ||
endif() | ||
# ----------------------------------------- | ||
# compilation | ||
# ----------------------------------------- | ||
add_subdirectory(core) | ||
add_subdirectory(cpp) | ||
|
||
include(CMakePackageConfigHelpers) | ||
|
||
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in | ||
"${CMAKE_CURRENT_BINARY_DIR}/torchtrtConfig.cmake" | ||
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/torchtrt | ||
) | ||
|
||
install(FILES | ||
"${CMAKE_CURRENT_BINARY_DIR}/torchtrtConfig.cmake" | ||
# "${CMAKE_CURRENT_BINARY_DIR}/torchtrtConfigVersion.cmake" | ||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/torchtrt | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
@PACKAGE_INIT@ | ||
|
||
include(CMakeFindDependencyMacro) | ||
|
||
find_dependency(Torch) | ||
find_package(TensorRT QUIET) | ||
if (NOT TensorRT_FOUND) | ||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/Modules") | ||
find_dependency(TensorRT) | ||
endif() | ||
include("${CMAKE_CURRENT_LIST_DIR}/torchtrtTargets.cmake") | ||
|
||
check_required_components(MathFunctions) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
# This module defines the following variables: | ||
# | ||
# :: | ||
# | ||
# TensorRT_INCLUDE_DIRS | ||
# TensorRT_LIBRARIES | ||
# TensorRT_FOUND | ||
# | ||
# :: | ||
# | ||
# TensorRT_VERSION_STRING - version (x.y.z) | ||
# TensorRT_VERSION_MAJOR - major version (x) | ||
# TensorRT_VERSION_MINOR - minor version (y) | ||
# TensorRT_VERSION_PATCH - patch version (z) | ||
# | ||
# Hints | ||
# ^^^^^ | ||
# A user may set ``TensorRT_ROOT`` to an installation root to tell this module where to look. | ||
# | ||
set(_TensorRT_SEARCHES) | ||
|
||
if(TensorRT_ROOT) | ||
set(_TensorRT_SEARCH_ROOT PATHS ${TensorRT_ROOT} NO_DEFAULT_PATH) | ||
list(APPEND _TensorRT_SEARCHES _TensorRT_SEARCH_ROOT) | ||
endif() | ||
|
||
# appends some common paths | ||
set(_TensorRT_SEARCH_NORMAL | ||
PATHS "/usr" | ||
) | ||
list(APPEND _TensorRT_SEARCHES _TensorRT_SEARCH_NORMAL) | ||
|
||
# Include dir | ||
foreach(search ${_TensorRT_SEARCHES}) | ||
find_path(TensorRT_INCLUDE_DIR NAMES NvInfer.h ${${search}} PATH_SUFFIXES include) | ||
endforeach() | ||
|
||
if(NOT TensorRT_LIBRARY) | ||
foreach(search ${_TensorRT_SEARCHES}) | ||
find_library(TensorRT_LIBRARY NAMES nvinfer ${${search}} PATH_SUFFIXES lib) | ||
endforeach() | ||
endif() | ||
|
||
if(NOT TensorRT_nvinfer_plugin_LIBRARY) | ||
foreach(search ${_TensorRT_SEARCHES}) | ||
find_library(TensorRT_nvinfer_plugin_LIBRARY NAMES nvinfer_plugin ${${search}} PATH_SUFFIXES lib) | ||
endforeach() | ||
endif() | ||
|
||
mark_as_advanced(TensorRT_INCLUDE_DIR) | ||
|
||
if(TensorRT_INCLUDE_DIR AND EXISTS "${TensorRT_INCLUDE_DIR}/NvInfer.h") | ||
file(STRINGS "${TensorRT_INCLUDE_DIR}/NvInfer.h" TensorRT_MAJOR REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$") | ||
file(STRINGS "${TensorRT_INCLUDE_DIR}/NvInfer.h" TensorRT_MINOR REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$") | ||
file(STRINGS "${TensorRT_INCLUDE_DIR}/NvInfer.h" TensorRT_PATCH REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$") | ||
|
||
string(REGEX REPLACE "^#define NV_TENSORRT_MAJOR ([0-9]+).*$" "\\1" TensorRT_VERSION_MAJOR "${TensorRT_MAJOR}") | ||
string(REGEX REPLACE "^#define NV_TENSORRT_MINOR ([0-9]+).*$" "\\1" TensorRT_VERSION_MINOR "${TensorRT_MINOR}") | ||
string(REGEX REPLACE "^#define NV_TENSORRT_PATCH ([0-9]+).*$" "\\1" TensorRT_VERSION_PATCH "${TensorRT_PATCH}") | ||
set(TensorRT_VERSION_STRING "${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}") | ||
endif() | ||
|
||
include(FindPackageHandleStandardArgs) | ||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TensorRT REQUIRED_VARS TensorRT_LIBRARY TensorRT_INCLUDE_DIR VERSION_VAR TensorRT_VERSION_STRING) | ||
|
||
if(TensorRT_FOUND) | ||
set(TensorRT_INCLUDE_DIRS ${TensorRT_INCLUDE_DIR}) | ||
|
||
if(NOT TensorRT_LIBRARIES) | ||
set(TensorRT_LIBRARIES ${TensorRT_LIBRARY}) | ||
if (TensorRT_nvinfer_plugin_LIBRARY) | ||
list(APPEND TensorRT_LIBRARIES ${TensorRT_nvinfer_plugin_LIBRARY}) | ||
endif() | ||
endif() | ||
|
||
if(NOT TARGET TensorRT::TensorRT) | ||
add_library(TensorRT INTERFACE IMPORTED) | ||
add_library(TensorRT::TensorRT ALIAS TensorRT) | ||
endif() | ||
|
||
if(NOT TARGET TensorRT::nvinfer) | ||
add_library(TensorRT::nvinfer SHARED IMPORTED) | ||
if (WIN32) | ||
foreach(search ${_TensorRT_SEARCHES}) | ||
find_file(TensorRT_LIBRARY_DLL | ||
NAMES nvinfer.dll | ||
PATHS ${${search}} | ||
PATH_SUFFIXES bin | ||
) | ||
endforeach() | ||
|
||
set_target_properties(TensorRT::nvinfer PROPERTIES | ||
INTERFACE_INCLUDE_DIRECTORIES "${TensorRT_INCLUDE_DIRS}" | ||
IMPORTED_LOCATION "${TensorRT_LIBRARY_DLL}" | ||
IMPORTED_IMPLIB "${TensorRT_LIBRARY}" | ||
) | ||
else() | ||
set_target_properties(TensorRT::nvinfer PROPERTIES | ||
INTERFACE_INCLUDE_DIRECTORIES "${TensorRT_INCLUDE_DIRS}" | ||
IMPORTED_LOCATION "${TensorRT_LIBRARY}" | ||
) | ||
endif() | ||
target_link_libraries(TensorRT INTERFACE TensorRT::nvinfer) | ||
endif() | ||
|
||
if(NOT TARGET TensorRT::nvinfer_plugin AND TensorRT_nvinfer_plugin_LIBRARY) | ||
add_library(TensorRT::nvinfer_plugin SHARED IMPORTED) | ||
if (WIN32) | ||
foreach(search ${_TensorRT_SEARCHES}) | ||
find_file(TensorRT_nvinfer_plugin_LIBRARY_DLL | ||
NAMES nvinfer_plugin.dll | ||
PATHS ${${search}} | ||
PATH_SUFFIXES bin | ||
) | ||
endforeach() | ||
|
||
set_target_properties(TensorRT::nvinfer_plugin PROPERTIES | ||
INTERFACE_INCLUDE_DIRECTORIES "${TensorRT_INCLUDE_DIRS}" | ||
IMPORTED_LOCATION "${TensorRT_nvinfer_plugin_LIBRARY_DLL}" | ||
IMPORTED_IMPLIB "${TensorRT_nvinfer_plugin_LIBRARY}" | ||
) | ||
else() | ||
set_target_properties(TensorRT::nvinfer_plugin PROPERTIES | ||
INTERFACE_INCLUDE_DIRECTORIES "${TensorRT_INCLUDE_DIRS}" | ||
IMPORTED_LOCATION "${TensorRT_nvinfer_plugin_LIBRARY}" | ||
) | ||
endif() | ||
target_link_libraries(TensorRT INTERFACE TensorRT::nvinfer_plugin) | ||
endif() | ||
endif() |
Oops, something went wrong.