This is an automated email from the ASF dual-hosted git repository.

lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git


The following commit(s) were added to refs/heads/main by this push:
     new 239f75f7 fix(c/driver): hide symbols when buildling Go Flight SQL and 
Snowflake drivers (#640)
239f75f7 is described below

commit 239f75f7c64beb077a16afd7206930bbc336def0
Author: Matt Topol <[email protected]>
AuthorDate: Wed May 3 08:02:37 2023 -0400

    fix(c/driver): hide symbols when buildling Go Flight SQL and Snowflake 
drivers (#640)
    
    Fixes #635.
---
 c/cmake_modules/GoUtils.cmake | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/c/cmake_modules/GoUtils.cmake b/c/cmake_modules/GoUtils.cmake
index e12508bb..fd87e85f 100644
--- a/c/cmake_modules/GoUtils.cmake
+++ b/c/cmake_modules/GoUtils.cmake
@@ -72,7 +72,7 @@ function(add_go_lib GO_MOD_DIR GO_LIBNAME)
 
   # Go gcflags for disabling optimizations and inlining if debug
   separate_arguments(GO_BUILD_FLAGS NATIVE_COMMAND
-                     "${GO_BUILD_FLAGS} $<$<CONFIG:DEBUG>:-gcflags=\"-N -l\">")
+                     "${GO_BUILD_FLAGS} $<$<CONFIG:DEBUG>:-gcflags='-N -l'>")
 
   # if we're building debug mode then change the default CGO_CFLAGS and 
CGO_CXXFLAGS from "-g O2" to "-g3"
   set(GO_ENV_VARS
@@ -84,17 +84,29 @@ function(add_go_lib GO_MOD_DIR GO_LIBNAME)
     set(LIB_NAME_SHARED
         
"${CMAKE_SHARED_LIBRARY_PREFIX}${GO_LIBNAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
 
+    set(ADBC_VERSION_SCRIPT_LINK_FLAG
+        "-Wl,--version-script=${REPOSITORY_ROOT}/c/symbols.map")
+
+    check_linker_flag(CXX ${ADBC_VERSION_SCRIPT_LINK_FLAG}
+                      CXX_LINKER_SUPPORTS_VERSION_SCRIPT)
+    if(CXX_LINKER_SUPPORTS_VERSION_SCRIPT)
+      set(EXTLDFLAGS ",--version-script=${REPOSITORY_ROOT}/c/symbols.map")
+    endif()
+
     if(NOT APPLE)
-      set(ARG_SHARED_LINK_FLAGS
-          "${ARG_SHARED_LINK_FLAGS} -extldflags 
-Wl,-soname,${LIB_NAME_SHARED}.${ADBC_SO_VERSION}"
-      )
+      set(EXTLDFLAGS 
"${EXTLDFLAGS},-soname,${LIB_NAME_SHARED}.${ADBC_SO_VERSION}")
+    endif()
+
+    if(DEFINED EXTLDFLAGS)
+      set(EXTLDFLAGS "'-extldflags=-Wl${EXTLDFLAGS}'")
     endif()
 
     if(DEFINED ARG_SHARED_LINK_FLAGS)
       separate_arguments(ARG_SHARED_LINK_FLAGS NATIVE_COMMAND 
"${ARG_SHARED_LINK_FLAGS}")
-      set(GO_LDFLAGS "-ldflags=\"${ARG_SHARED_LINK_FLAGS}\"")
     endif()
 
+    set(GO_LDFLAGS "-ldflags;\"${ARG_SHARED_LINK_FLAGS};-a;${EXTLDFLAGS}\"")
+
     set(LIBOUT_SHARED "${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME_SHARED}")
 
     if(CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")

Reply via email to