aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libmysql/install-exports.patch
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libmysql/install-exports.patch
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/libmysql/install-exports.patch')
-rw-r--r--vcpkg/ports/libmysql/install-exports.patch124
1 files changed, 124 insertions, 0 deletions
diff --git a/vcpkg/ports/libmysql/install-exports.patch b/vcpkg/ports/libmysql/install-exports.patch
new file mode 100644
index 0000000..c5416be
--- /dev/null
+++ b/vcpkg/ports/libmysql/install-exports.patch
@@ -0,0 +1,124 @@
+diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake
+index baf49cd5..c45fda71 100644
+--- a/cmake/install_macros.cmake
++++ b/cmake/install_macros.cmake
+@@ -113,8 +113,30 @@ FUNCTION(MYSQL_INSTALL_TARGET target_arg)
+ IF(ARG_NAMELINK_SKIP)
+ SET(LIBRARY_INSTALL_ARGS NAMELINK_SKIP)
+ ENDIF()
++ if(target STREQUAL "libmysql" OR target STREQUAL "mysqlclient")
++ target_include_directories(${target} INTERFACE $<INSTALL_INTERFACE:include>)
++ if(target STREQUAL "mysqlclient")
++ set_target_properties(${target} PROPERTIES EXPORT_NAME libmysql) # uniform
++ endif()
++ FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/unofficial-libmysql-config.cmake"
++"include(CMakeFindDependencyMacro)
++find_dependency(OpenSSL)
++find_dependency(Threads)
++find_dependency(ZLIB)
++find_dependency(zstd CONFIG)
++include(\"\${CMAKE_CURRENT_LIST_DIR}/unofficial-libmysql-targets.cmake\")
++if(NOT TARGET ${target}) # legacy vcpkg
++ add_library(${target} INTERFACE IMPORTED)
++ set_target_properties(${target} PROPERTIES INTERFACE_LINK_LIBRARIES unofficial::libmysql::libmysql)
++endif()
++")
++ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-libmysql-config.cmake" DESTINATION "share/unofficial-libmysql")
++ install(EXPORT "unofficial-libmysql-targets" NAMESPACE unofficial::libmysql:: DESTINATION "share/unofficial-libmysql")
++ set(LIBRARY_EXPORT_ARGS EXPORT unofficial-libmysql-targets)
++ endif()
+ INSTALL(TARGETS ${target}
+- RUNTIME DESTINATION ${ARG_DESTINATION} ${COMP}
++ ${LIBRARY_EXPORT_ARGS}
++ RUNTIME DESTINATION bin ${COMP}
+ ARCHIVE DESTINATION ${ARG_DESTINATION} ${COMP}
+ LIBRARY DESTINATION ${ARG_DESTINATION} ${COMP} ${LIBRARY_INSTALL_ARGS})
+ SET(INSTALL_LOCATION ${ARG_DESTINATION} )
+diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake
+index a5333987..c954bfb1 100644
+--- a/cmake/libutils.cmake
++++ b/cmake/libutils.cmake
+@@ -385,8 +385,12 @@ MACRO(MERGE_LIBRARIES_SHARED TARGET_ARG)
+ IF(ARG_NAMELINK_SKIP)
+ SET(INSTALL_ARGS NAMELINK_SKIP)
+ ENDIF()
++ if(INSTALL_STATIC_LIBRARIES)
++ set_target_properties(${TARGET} PROPERTIES EXCLUDE_FROM_ALL 1)
++ else()
+ MYSQL_INSTALL_TARGET(${TARGET} DESTINATION "${DESTINATION}" ${COMP}
+ ${INSTALL_ARGS})
++ endif()
+ ENDIF()
+
+ IF(WIN32)
+@@ -563,6 +567,8 @@ MACRO(MERGE_CONVENIENCE_LIBRARIES TARGET_ARG)
+ ENDIF()
+ IF(INSTALL_STATIC_LIBRARIES)
+ MYSQL_INSTALL_TARGET(${TARGET} DESTINATION "${INSTALL_LIBDIR}" ${COMP})
++ else()
++ set_target_properties(${TARGET} PROPERTIES EXCLUDE_FROM_ALL 1)
+ ENDIF()
+ ENDIF()
+ ENDMACRO(MERGE_CONVENIENCE_LIBRARIES)
+diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt
+index c4ef5694..8e933877 100644
+--- a/scripts/CMakeLists.txt
++++ b/scripts/CMakeLists.txt
+@@ -321,6 +321,8 @@ MACRO(EXTRACT_LINK_LIBRARIES target var)
+ FOREACH(lib ${TARGET_LIB_DEPENDS})
+ IF (lib MATCHES "^\\-l")
+ SET(${var} "${${var}} ${lib} ")
++ elseif(lib MATCHES "^ext::(openssl|zlib|zstd)" AND NOT WIN32)
++ list(APPEND ext_targets "${CMAKE_MATCH_1}")
+ ELSEIF (lib MATCHES "^ext::")
+ STRING(REGEX MATCH "ext::([a-z]+)" MATCH_LIB "${lib}")
+ SET(SYSTEM_LIB ${CMAKE_MATCH_1})
+@@ -330,6 +332,8 @@ MACRO(EXTRACT_LINK_LIBRARIES target var)
+ ELSE()
+ SET(${var} "${${var}} ${SYSTEM_LINK_FLAG} ")
+ ENDIF()
++ elseif(TARGET "${lib}" AND NOT WIN32)
++ # merged or shared, not external
+ ELSEIF (lib MATCHES "^\\-L")
+ # Search directory. Test on FreeBSD: -L/usr/local/lib -lunwind
+ SET(${var} "${${var}} ${lib} ")
+@@ -365,6 +369,7 @@ IF(MSVC)
+ GET_TARGET_PROPERTY(LIBMYSQL_OS_SHLIB_VERSION mysqlclient VERSION)
+ GET_TARGET_PROPERTY(LIBMYSQL_OS_OUTPUT_NAME mysqlclient OUTPUT_NAME)
+ ELSE()
++ EXTRACT_LINK_LIBRARIES(libmysql CLIENT_LIBS)
+ GET_TARGET_PROPERTY(LIBMYSQL_OS_SHLIB_VERSION libmysql VERSION)
+ GET_TARGET_PROPERTY(LIBMYSQL_OS_OUTPUT_NAME libmysql OUTPUT_NAME)
+ ENDIF()
+@@ -384,6 +389,10 @@ IF (WITH_SSL STREQUAL "system")
+ "${CONFIG_LIBS_PRIVATE}")
+ ENDIF()
+ ENDIF()
++list(APPEND CONFIG_REQUIRES_PRIVATE ${ext_targets})
++list(REMOVE_DUPLICATES CONFIG_REQUIRES_PRIVATE)
++list(JOIN CONFIG_REQUIRES_PRIVATE " " CONFIG_REQUIRES_PRIVATE)
++string(REPLACE "zstd" "libzstd" CONFIG_REQUIRES_PRIVATE "${CONFIG_REQUIRES_PRIVATE}" )
+
+ MESSAGE(STATUS "CONFIG_CLIENT_LIBS ${CONFIG_CLIENT_LIBS}")
+ MESSAGE(STATUS "CONFIG_LIBS_PRIVATE ${CONFIG_LIBS_PRIVATE}")
+diff --git a/scripts/mysql_config.sh b/scripts/mysql_config.sh
+index 6e8520be..bf1a45af 100644
+--- a/scripts/mysql_config.sh
++++ b/scripts/mysql_config.sh
+@@ -119,6 +119,16 @@ fi
+ # Create options
+ libs="-L$pkglibdir@RPATH_OPTION@"
+ libs="$libs -l@LIBMYSQL_OS_OUTPUT_NAME@ @CONFIG_CLIENT_LIBS@"
++if test -z "${PKG_CONFIG}" ; then
++ if pkg-config --version >/dev/null 2>&1 ; then
++ PKG_CONFIG=pkg-config
++ elif pkgconf --version >/dev/null 2>&1 ; then
++ PKG_CONFIG=pkgconf
++ else
++ PKG_CONFIG=false
++ fi
++fi
++libs="$libs $(${PKG_CONFIG} --libs @CONFIG_REQUIRES_PRIVATE@)"
+
+ cflags="-I$pkgincludedir @CFLAGS@"
+ cxxflags="-I$pkgincludedir @CXXFLAGS@"