@@ -62,6 +62,7 @@ option(BUILD_TESTS "Configure CMake to build tests" OFF)
6262option (BUILD_BENCHMARKS "Configure CMake to build (google) benchmarks" OFF )
6363option (BUILD_FAULTINJ "Configure CMake to build fault injection" ON )
6464option (BUILD_PROFILER "Configure CMake to build profiler" ON )
65+ option (HIDE_PRIVATE_CUDA_SYMBOLS "Hide private symbols from static CUDA compiler libraries" ON )
6566
6667message (
6768 VERBOSE "SPARK_RAPIDS_JNI: Build with per-thread default stream:
@@ -70,6 +71,9 @@ message(
7071message (VERBOSE "SPARK_RAPIDS_JNI: Configure CMake to build tests: ${BUILD_TESTS} " )
7172message (VERBOSE "SPARK_RAPIDS_JNI: Configure CMake to build (nvbench) benchmarks: ${BUILD_BENCHMARKS} " )
7273message (VERBOSE "SPARK_RAPIDS_JNI: Configure CMake to build fault injection: ${BUILD_FAULTINJ} " )
74+ message (VERBOSE
75+ "SPARK_RAPIDS_JNI: Hide private static CUDA compiler symbols: ${HIDE_PRIVATE_CUDA_SYMBOLS} "
76+ )
7377
7478set (SPARK_RAPIDS_JNI_BUILD_TESTS ${BUILD_TESTS} )
7579set (SPARK_RAPIDS_JNI_BUILD_BENCHMARKS ${BUILD_BENCHMARKS} )
@@ -349,6 +353,18 @@ target_link_libraries(
349353 ${PARQUET_LIB}
350354 ${THRIFT_LIB}
351355)
356+ if (HIDE_PRIVATE_CUDA_SYMBOLS)
357+ # These toolkit implementation symbols are not part of the cuDF or JNI ABI. Localizing them keeps
358+ # the regular ELF symbol table for diagnostics while removing them from the dynamic export table.
359+ target_link_options (
360+ spark_rapids_jni
361+ PRIVATE "LINKER:--exclude-libs,libnvrtc_static.a"
362+ "LINKER:--exclude-libs,libnvrtc-builtins_static.a"
363+ "LINKER:--exclude-libs,libnvptxcompiler_static.a"
364+ "LINKER:--exclude-libs,libnvJitLink_static.a"
365+ "LINKER:--exclude-libs,libnvcomp_static.a"
366+ )
367+ endif ()
352368rapids_cuda_set_runtime (spark_rapids_jni USE_STATIC ON )
353369set_target_properties (spark_rapids_jni PROPERTIES LINK_LANGUAGE "CXX" )
354370# For backwards-compatibility with the cudf Java bindings and RAPIDS accelerated UDFs,
0 commit comments