@@ -13,24 +13,11 @@ set(MODULE_NAME "cudaq-qec-trt-decoder")
1313project (${MODULE_NAME} )
1414
1515# Set default TensorRT root if not provided
16- if (NOT DEFINED TENSORRT_ROOT)
17- message (STATUS "TENSORRT_ROOT not provided, using default: ${TENSORRT_ROOT} " )
18- else ()
16+ if (DEFINED TENSORRT_ROOT)
1917 message (STATUS "Using TENSORRT_ROOT: ${TENSORRT_ROOT} " )
2018endif ()
2119
22- # Specify the source file for the plugin
23- set (PLUGIN_SRC
24- trt_decoder.cpp
25- # Add additional source files here as needed
26- )
27-
28- find_package (CUDAToolkit REQUIRED)
29-
30- # Create the shared library
31- add_library (${MODULE_NAME} SHARED ${PLUGIN_SRC} )
32-
33- # Check for TensorRT availability
20+ # Check for TensorRT availability first
3421find_path (TENSORRT_INCLUDE_DIR NvInfer.h
3522 PATHS
3623 ${TENSORRT_ROOT} /include
@@ -46,6 +33,7 @@ find_library(TENSORRT_LIBRARY nvinfer
4633 PATHS
4734 ${TENSORRT_ROOT} /lib
4835 /usr/lib/x86_64-linux-gnu
36+ /usr/lib/aarch64-linux-gnu
4937 /usr/local/cuda/lib64
5038 /usr/local/tensorrt/lib
5139 /opt/tensorrt/lib
@@ -56,89 +44,101 @@ find_library(TENSORRT_ONNX_LIBRARY nvonnxparser
5644 PATHS
5745 ${TENSORRT_ROOT} /lib
5846 /usr/lib/x86_64-linux-gnu
47+ /usr/lib/aarch64-linux-gnu
5948 /usr/local/cuda/lib64
6049 /usr/local/tensorrt/lib
6150 /opt/tensorrt/lib
6251 NO_DEFAULT_PATH
6352)
6453
54+ # Only build the module if TensorRT is found
6555if (TENSORRT_INCLUDE_DIR AND TENSORRT_LIBRARY AND TENSORRT_ONNX_LIBRARY)
6656 message (STATUS "TensorRT found: ${TENSORRT_INCLUDE_DIR} " )
6757 message (STATUS "TensorRT library: ${TENSORRT_LIBRARY} " )
6858 message (STATUS "TensorRT ONNX parser: ${TENSORRT_ONNX_LIBRARY} " )
69- target_compile_definitions (${MODULE_NAME} PRIVATE TENSORRT_AVAILABLE)
70- else ()
71- message (WARNING "TensorRT not found. Building decoder without TensorRT support." )
72- message (WARNING "TENSORRT_INCLUDE_DIR: ${TENSORRT_INCLUDE_DIR} " )
73- message (WARNING "TENSORRT_LIBRARY: ${TENSORRT_LIBRARY} " )
74- message (WARNING "TENSORRT_ONNX_LIBRARY: ${TENSORRT_ONNX_LIBRARY} " )
75- endif ()
7659
77- # Set the include directories for dependencies
78- target_include_directories (${MODULE_NAME}
79- PUBLIC
80- ${CMAKE_SOURCE_DIR} /libs/qec/include
81- ${CMAKE_SOURCE_DIR} /libs/core/include
82- )
60+ # Specify the source file for the plugin
61+ set (PLUGIN_SRC
62+ trt_decoder.cpp
63+ # Add additional source files here as needed
64+ )
65+
66+ find_package (CUDAToolkit REQUIRED)
8367
84- # Add TensorRT include directory if found
85- if (TENSORRT_INCLUDE_DIR)
86- target_include_directories (${MODULE_NAME} PRIVATE
68+ # Create the shared library
69+ add_library (${MODULE_NAME} SHARED ${PLUGIN_SRC} )
70+
71+ # Set compile definitions
72+ target_compile_definitions (${MODULE_NAME} PRIVATE TENSORRT_AVAILABLE)
73+
74+ # Set the include directories for dependencies
75+ target_include_directories (${MODULE_NAME}
76+ PUBLIC
77+ ${CMAKE_SOURCE_DIR} /libs/qec/include
78+ ${CMAKE_SOURCE_DIR} /libs/core/include
79+ PRIVATE
8780 ${TENSORRT_INCLUDE_DIR}
8881 ${CUDAToolkit_INCLUDE_DIRS}
8982 )
90- endif ()
91-
92- # Link with required libraries
93- target_link_libraries (${MODULE_NAME}
94- PUBLIC
95- cudaqx-core
96- cudaq::cudaq-operator
97- PRIVATE
98- cudaq::cudaq-common
99- cudaq-qec
100- )
10183
102- # Conditionally link TensorRT libraries
103- if (TENSORRT_LIBRARY AND TENSORRT_ONNX_LIBRARY)
104- target_link_libraries (${MODULE_NAME} PRIVATE
84+ # Link with required libraries
85+ target_link_libraries (${MODULE_NAME}
86+ PUBLIC
87+ cudaqx-core
88+ cudaq::cudaq-operator
89+ PRIVATE
90+ cudaq::cudaq-common
91+ cudaq-qec
10592 ${TENSORRT_LIBRARY}
10693 ${TENSORRT_ONNX_LIBRARY}
10794 CUDA::cudart
10895 )
109- endif ()
110-
111- set_target_properties (${MODULE_NAME} PROPERTIES
112- LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib/decoder-plugins
113- )
11496
115- # RPATH configuration
116- # ==============================================================================
97+ set_target_properties (${MODULE_NAME} PROPERTIES
98+ LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib/decoder-plugins
99+ )
117100
118- if (NOT SKBUILD)
119- set_target_properties (${MODULE_NAME} PROPERTIES
120- BUILD_RPATH "$ORIGIN:${TENSORRT_ROOT} /lib"
121- INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib:$ORIGIN/../../../tensorrt_libs"
122- )
101+ # RPATH configuration
102+ # ==============================================================================
103+
104+ if (NOT SKBUILD)
105+ if (DEFINED TENSORRT_ROOT)
106+ set (TENSORRT_BUILD_RPATH "$ORIGIN:${TENSORRT_ROOT} /lib" )
107+ set (TENSORRT_INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib:${TENSORRT_ROOT} /lib" )
108+ else ()
109+ set (TENSORRT_BUILD_RPATH "$ORIGIN" )
110+ set (TENSORRT_INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib:$ORIGIN/../../../tensorrt_libs" )
111+ endif ()
112+ set_target_properties (${MODULE_NAME} PROPERTIES
113+ BUILD_RPATH "${TENSORRT_BUILD_RPATH} "
114+ INSTALL_RPATH "${TENSORRT_INSTALL_RPATH} "
115+ )
116+
117+ # Let CMake automatically add paths of linked libraries to the RPATH:
118+ set_target_properties (${MODULE_NAME} PROPERTIES
119+ INSTALL_RPATH_USE_LINK_PATH TRUE )
120+ else ()
121+ # CUDA-Q install its libraries in site-packages/lib (or dist-packages/lib)
122+ # Thus, we need the $ORIGIN/../lib
123+ set_target_properties (${MODULE_NAME} PROPERTIES
124+ INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib:$ORIGIN/../../../tensorrt_libs"
125+ )
126+ endif ()
127+
128+ # Install
129+ # ==============================================================================
130+
131+ install (TARGETS ${MODULE_NAME}
132+ COMPONENT qec-lib-plugins
133+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} /decoder-plugins
134+ )
123135
124- # Let CMake automatically add paths of linked libraries to the RPATH:
125- set_target_properties (${MODULE_NAME} PROPERTIES
126- INSTALL_RPATH_USE_LINK_PATH TRUE )
127136else ()
128- # CUDA-Q install its libraries in site-packages/lib (or dist-packages/lib)
129- # Thus, we need the $ORIGIN/../lib
130- set_target_properties (${MODULE_NAME} PROPERTIES
131- INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib:$ORIGIN/../../../tensorrt_libs"
132- )
137+ message (WARNING "TensorRT not found. Skipping ${MODULE_NAME} build." )
138+ message (WARNING "TENSORRT_INCLUDE_DIR: ${TENSORRT_INCLUDE_DIR} " )
139+ message (WARNING "TENSORRT_LIBRARY: ${TENSORRT_LIBRARY} " )
140+ message (WARNING "TENSORRT_ONNX_LIBRARY: ${TENSORRT_ONNX_LIBRARY} " )
133141endif ()
134142
135- # Install
136- # ==============================================================================
137-
138- install (TARGETS ${MODULE_NAME}
139- COMPONENT qec-lib-plugins
140- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} /decoder-plugins
141- )
142-
143143
144144
0 commit comments