Skip to content

Commit a86e033

Browse files
committed
build(cmake): add an ability to opt in only for certain CV-CUDA operators
- adds an ability to compile only CV-CUDA files that match the given pattern so the user can have binary only with selected operators (which also reduces its size) Closes CVCUDA-0 Signed-off-by: Janusz Lisiecki <[email protected]>
1 parent e4f97ee commit a86e033

File tree

3 files changed

+66
-6
lines changed

3 files changed

+66
-6
lines changed

src/cvcuda/CMakeLists.txt

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
# cvcuda private implementation
1717
add_subdirectory(priv)
1818

19-
add_library(cvcuda SHARED
19+
set(CV_CUDA_LIB_FILES Operator.cpp)
20+
21+
set(CV_CUDA_OP_FILES
2022
OpBoxBlur.cpp
2123
OpBndBox.cpp
2224
OpBrightnessContrast.cpp
@@ -57,6 +59,25 @@ add_library(cvcuda SHARED
5759
OpGaussianNoise.cpp
5860
)
5961

62+
# filter only one that matches the patern
63+
if (NOT CV_CUDA_SRC_PATERN STREQUAL "")
64+
foreach(PATTERN ${CV_CUDA_SRC_PATERN})
65+
string(TOLOWER ${PATTERN} PATTERN)
66+
foreach(FILENAME ${CV_CUDA_OP_FILES})
67+
string(TOLOWER ${FILENAME} FILENAME_LOWERCASE)
68+
if (${FILENAME_LOWERCASE} MATCHES ${PATTERN})
69+
list(APPEND CV_CUDA_LIB_FILES ${FILENAME})
70+
endif()
71+
endforeach()
72+
endforeach()
73+
else()
74+
list(APPEND CV_CUDA_LIB_FILES ${CV_CUDA_OP_FILES})
75+
endif()
76+
77+
add_library(cvcuda SHARED
78+
${CV_CUDA_LIB_FILES}
79+
)
80+
6081
target_link_libraries(cvcuda
6182
PUBLIC
6283
CUDA::cudart_static

src/cvcuda/priv/CMakeLists.txt

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@
1515

1616
add_subdirectory(legacy)
1717

18-
add_library(cvcuda_priv STATIC
19-
OpBoxBlur.cpp
18+
set(CV_CUDA_PRIV_FILES IOperator.cpp)
19+
20+
set(CV_CUDA_PRIV_OP_FILES OpBoxBlur.cpp
2021
OpBndBox.cpp
2122
OpBrightnessContrast.cu
2223
OpRemap.cu
2324
OpColorTwist.cu
2425
OpCropFlipNormalizeReformat.cu
2526
OpNonMaximumSuppression.cu
26-
IOperator.cpp
2727
OpReformat.cpp
2828
OpResize.cpp
2929
OpCustomCrop.cpp
@@ -56,6 +56,25 @@ add_library(cvcuda_priv STATIC
5656
OpGaussianNoise.cpp
5757
)
5858

59+
# filter only one that matches the patern
60+
if (NOT CV_CUDA_SRC_PATERN STREQUAL "")
61+
foreach(PATTERN ${CV_CUDA_SRC_PATERN})
62+
string(TOLOWER ${PATTERN} PATTERN)
63+
foreach(FILENAME ${CV_CUDA_PRIV_OP_FILES})
64+
string(TOLOWER ${FILENAME} FILENAME_LOWERCASE)
65+
if (${FILENAME_LOWERCASE} MATCHES ${PATTERN})
66+
list(APPEND CV_CUDA_PRIV_FILES ${FILENAME})
67+
endif()
68+
endforeach()
69+
endforeach()
70+
else()
71+
list(APPEND CV_CUDA_PRIV_FILES ${CV_CUDA_PRIV_OP_FILES})
72+
endif()
73+
74+
add_library(cvcuda_priv STATIC
75+
${CV_CUDA_PRIV_FILES}
76+
)
77+
5978
target_link_libraries(cvcuda_priv
6079
PUBLIC
6180
nvcv_types

src/cvcuda/priv/legacy/CMakeLists.txt

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
add_library(cvcuda_legacy STATIC
16+
set(CV_CUDA_PRIV_LEGACY_FILES CvCudaLegacyHelpers.cpp)
17+
18+
set(CV_CUDA_PRIV_LEGACY_OP_FILES
1719
filter_utils.cu
1820
custom_crop.cu
1921
reformat.cu
@@ -49,7 +51,6 @@ add_library(cvcuda_legacy STATIC
4951
flip.cu
5052
flip_or_copy_var_shape.cu
5153
composite_var_shape.cu
52-
CvCudaLegacyHelpers.cpp
5354
custom_crop.cu
5455
reformat.cu
5556
resize.cu
@@ -75,6 +76,25 @@ add_library(cvcuda_legacy STATIC
7576
gaussian_noise_util.cu
7677
)
7778

79+
# filter only one that matches the patern
80+
if (NOT CV_CUDA_SRC_PATERN STREQUAL "")
81+
foreach(PATTERN ${CV_CUDA_SRC_PATERN})
82+
string(TOLOWER ${PATTERN} PATTERN)
83+
foreach(FILENAME ${CV_CUDA_PRIV_LEGACY_OP_FILES})
84+
string(TOLOWER ${FILENAME} FILENAME_LOWERCASE)
85+
if (${FILENAME_LOWERCASE} MATCHES ${PATTERN})
86+
list(APPEND CV_CUDA_PRIV_LEGACY_FILES ${FILENAME})
87+
endif()
88+
endforeach()
89+
endforeach()
90+
else()
91+
list(APPEND CV_CUDA_PRIV_LEGACY_FILES ${CV_CUDA_PRIV_LEGACY_OP_FILES})
92+
endif()
93+
94+
add_library(cvcuda_legacy STATIC
95+
${CV_CUDA_PRIV_LEGACY_FILES}
96+
)
97+
7898
target_link_libraries(cvcuda_legacy
7999
PUBLIC
80100
CUDA::cudart_static

0 commit comments

Comments
 (0)