File private_library.patch of Package mariadb-connector-c.19946

Author: Adam Majer <amajer@suse.de>
Date: Thu Mar 23 11:54:11 CET 2017
Summary: Build private symbols library

Some of the private symbols have very generic names and are required
by other connectors, like the ODBC connector. Instead of using
static linking, create a private shared library that simply
exports all symbols. With the exception of exported symbols, it is
identical to the regular library.

Index: mariadb-connector-c-3.1.13-src/libmariadb/CMakeLists.txt
===================================================================
--- mariadb-connector-c-3.1.13-src.orig/libmariadb/CMakeLists.txt
+++ mariadb-connector-c-3.1.13-src/libmariadb/CMakeLists.txt
@@ -414,6 +414,12 @@ IF(CMAKE_SIZEOF_VOID_P EQUAL 8 AND MSVC)
   SET_TARGET_PROPERTIES(mariadbclient PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64")
 ENDIF()
 
+ADD_LIBRARY(libmariadbprivate SHARED ${libmariadb_RC} $<TARGET_OBJECTS:mariadb_obj> ${EMPTY_FILE} ${EXPORT_LINK})
+TARGET_LINK_LIBRARIES(libmariadbprivate ${SYSTEM_LIBS})
+IF(UNIX)
+  SET_TARGET_PROPERTIES(libmariadbprivate PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}")
+ENDIF()
+
 IF(CMAKE_SYSTEM_NAME MATCHES "Linux" OR
    CMAKE_SYSTEM_NAME MATCHES "kFreeBSD" OR
    CMAKE_SYSTEM_NAME MATCHES "GNU")
@@ -421,11 +427,13 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux" OR
     TARGET_LINK_LIBRARIES (libmariadb LINK_PRIVATE "-Wl,--no-undefined")
   ENDIF()
   SET_TARGET_PROPERTIES(libmariadb PROPERTIES LINK_FLAGS "${CC_BINARY_DIR}/libmariadb/mariadbclient.def")
+  SET_TARGET_PROPERTIES(libmariadbprivate PROPERTIES LINK_FLAGS "-Wl,--no-undefined")
 ENDIF()
 
 SET_TARGET_PROPERTIES(mariadbclient PROPERTIES IMPORTED_INTERFACE_LINK_LIBRARIES "${SYSTEM_LIBS}")
 SET_TARGET_PROPERTIES(libmariadb PROPERTIES IMPORTED_INTERFACE_LINK_LIBRARIES "${SYSTEM_LIBS}")
 
+SET_TARGET_PROPERTIES(libmariadbprivate PROPERTIES PREFIX "")
 SET_TARGET_PROPERTIES(libmariadb PROPERTIES PREFIX "")
 
 #
@@ -461,7 +469,9 @@ INSTALL(TARGETS mariadbclient
 INSTALL(TARGETS libmariadb
           COMPONENT SharedLibraries
         DESTINATION ${INSTALL_LIBDIR})
-
+INSTALL(TARGETS libmariadbprivate
+          COMPONENT SharedLibraries
+          DESTINATION ${INSTALL_LIBDIR})
 
 IF(MSVC)
    # On Windows, install PDB
Index: mariadb-connector-c-3.1.13-src/mariadb_config/mariadb_config.c.in
===================================================================
--- mariadb-connector-c-3.1.13-src.orig/mariadb_config/mariadb_config.c.in
+++ mariadb-connector-c-3.1.13-src/mariadb_config/mariadb_config.c.in
@@ -30,6 +30,7 @@ static char *mariadb_progname;
 #define INCLUDE "-I%s/@INSTALL_INCLUDEDIR@ -I%s/@INSTALL_INCLUDEDIR@/mysql"
 #define LIBS    "-L%s/@INSTALL_LIBDIR@/ -lmariadb"
 #define LIBS_SYS "@extra_dynamic_LDFLAGS@"
+#define PRIVATE_LIBS "-L%s/@INSTALL_LIBDIR@ -lmariadbprivate " LIBS_SYS
 #define CFLAGS  INCLUDE
 #define VERSION "@MARIADB_CLIENT_VERSION@"
 #define CC_VERSION "@CPACK_PACKAGE_VERSION@"
@@ -65,6 +66,7 @@ static struct option long_options[]=
   {OPT_STRING_TYPE "plugindir", no_argument, 0, 'j'},
   {OPT_STRING_TYPE "tlsinfo", no_argument, 0, 'k'},
   {OPT_STRING_TYPE "variable", 2, 0, 'm'},
+  {OPT_STRING_TYPE "privatelibs", no_argument, 0, 'z'},
   {NULL, 0, 0, 0}
 };
 
@@ -92,6 +94,7 @@ static const char *values[]=
   CC_VERSION,
   SOCKET,
   PORT,
+  PRIVATE_LIBS,
   PLUGIN_DIR,
   TLS_LIBRARY_VERSION,
   "VAR  VAR is one of:"
@@ -288,6 +291,9 @@ int main(int argc, char **argv)
       }
       break;
     }
+    case 'z':
+      puts(PRIVATE_LIBS);
+      break;
     default:
       exit((c != -1));
     }
openSUSE Build Service is sponsored by