Skip to content

Commit 2fc8e99

Browse files
[FEA] Enforce tighter link restrictions on libcuvs_c (rapidsai#1614)
This makes sure we don't leak unneeded dependencies in our `PUBLIC` target_link_libraries for cuvs_c Authors: - Robert Maynard (https://github.com/robertmaynard) Approvers: - Divye Gala (https://github.com/divyegala) - Kyle Edwards (https://github.com/KyleFromNVIDIA) URL: rapidsai#1614
1 parent 84a8a7c commit 2fc8e99

File tree

4 files changed

+26
-10
lines changed

4 files changed

+26
-10
lines changed

c/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,10 @@ target_include_directories(
155155

156156
target_link_libraries(
157157
cuvs_c
158-
PUBLIC $<IF:$<BOOL:${CUVSC_STATIC_CUVS_LIBRARY}>,cuvs::cuvs_static,cuvs::cuvs>
159-
PRIVATE raft::raft $<TARGET_NAME_IF_EXISTS:hnswlib::hnswlib>
158+
PRIVATE # we don't want any dependencies exported
159+
$<IF:$<BOOL:${CUVSC_STATIC_CUVS_LIBRARY}>,cuvs::cuvs_static,cuvs::cuvs> #
160+
$<COMPILE_ONLY:raft::raft> # enforce we shouldn't use raft symbols
161+
$<TARGET_NAME_IF_EXISTS:hnswlib::hnswlib>
160162
)
161163

162164
# ##################################################################################################

c/tests/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,12 @@ function(ConfigureTest)
4343

4444
add_executable(${TEST_NAME} ${_CUVS_TEST_PATH})
4545
target_link_libraries(
46-
${TEST_NAME} PRIVATE cuvs::c_api GTest::gtest GTest::gtest_main
47-
$<TARGET_NAME_IF_EXISTS:conda_env>
46+
${TEST_NAME}
47+
PRIVATE cuvs::c_api
48+
GTest::gtest
49+
GTest::gtest_main
50+
$<IF:$<BOOL:${CUVSC_STATIC_CUVS_LIBRARY}>,$<COMPILE_ONLY:cuvs::cuvs_static>,cuvs::cuvs>
51+
$<TARGET_NAME_IF_EXISTS:conda_env>
4852
)
4953
set_target_properties(
5054
${TEST_NAME}
@@ -90,6 +94,7 @@ endif()
9094

9195
ConfigureTest(NAME cuvs_c_headers PATH core/headers.c)
9296
ConfigureTest(NAME cuvs_c_test PATH core/c_api.c)
97+
target_link_libraries(cuvs_c_test PRIVATE CUDA::cudart)
9398
ConfigureTest(NAME cuvs_c_neighbors_test PATH neighbors/c_api.c)
9499

95100
# ##################################################################################################

ci/build_standalone_c.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ scl enable gcc-toolset-${TOOLSET_VERSION} -- \
4040
cmake -S cpp -B cpp/build/ \
4141
-DCMAKE_CUDA_HOST_COMPILER=/opt/rh/gcc-toolset-${TOOLSET_VERSION}/root/usr/bin/gcc \
4242
-DCMAKE_CUDA_ARCHITECTURES=RAPIDS \
43-
-DBUILD_SHARED_LIBS=OFF \
4443
-DCUTLASS_ENABLE_TESTS=OFF \
4544
-DDISABLE_OPENMP=OFF \
4645
-DBUILD_TESTS=OFF \

examples/c/CMakeLists.txt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,30 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror")
3232

3333
add_executable(CAGRA_C_EXAMPLE src/cagra_c_example.c)
3434
target_include_directories(CAGRA_C_EXAMPLE PUBLIC "$<BUILD_INTERFACE:${DLPACK_INCLUDE_DIR}>")
35-
target_link_libraries(CAGRA_C_EXAMPLE PRIVATE cuvs::c_api $<TARGET_NAME_IF_EXISTS:conda_env>)
35+
target_link_libraries(
36+
CAGRA_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart $<TARGET_NAME_IF_EXISTS:conda_env>
37+
)
3638

3739
add_executable(L2_C_EXAMPLE src/L2_c_example.c)
3840
target_include_directories(L2_C_EXAMPLE PUBLIC "$<BUILD_INTERFACE:${DLPACK_INCLUDE_DIR}>")
39-
target_link_libraries(L2_C_EXAMPLE PRIVATE cuvs::c_api $<TARGET_NAME_IF_EXISTS:conda_env>)
41+
target_link_libraries(
42+
L2_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart $<TARGET_NAME_IF_EXISTS:conda_env>
43+
)
4044

4145
add_executable(IVF_FLAT_C_EXAMPLE src/ivf_flat_c_example.c)
4246
target_include_directories(IVF_FLAT_C_EXAMPLE PUBLIC "$<BUILD_INTERFACE:${DLPACK_INCLUDE_DIR}>")
43-
target_link_libraries(IVF_FLAT_C_EXAMPLE PRIVATE cuvs::c_api $<TARGET_NAME_IF_EXISTS:conda_env>)
47+
target_link_libraries(
48+
IVF_FLAT_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart $<TARGET_NAME_IF_EXISTS:conda_env>
49+
)
4450

4551
add_executable(IVF_PQ_C_EXAMPLE src/ivf_pq_c_example.c)
4652
target_include_directories(IVF_PQ_C_EXAMPLE PUBLIC "$<BUILD_INTERFACE:${DLPACK_INCLUDE_DIR}>")
47-
target_link_libraries(IVF_PQ_C_EXAMPLE PRIVATE cuvs::c_api $<TARGET_NAME_IF_EXISTS:conda_env>)
53+
target_link_libraries(
54+
IVF_PQ_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart $<TARGET_NAME_IF_EXISTS:conda_env>
55+
)
4856

4957
add_executable(BRUTEFORCE_C_EXAMPLE src/bruteforce_c_example.c)
5058
target_include_directories(BRUTEFORCE_C_EXAMPLE PUBLIC "$<BUILD_INTERFACE:${DLPACK_INCLUDE_DIR}>")
51-
target_link_libraries(BRUTEFORCE_C_EXAMPLE PRIVATE cuvs::c_api $<TARGET_NAME_IF_EXISTS:conda_env>)
59+
target_link_libraries(
60+
BRUTEFORCE_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart $<TARGET_NAME_IF_EXISTS:conda_env>
61+
)

0 commit comments

Comments
 (0)