vcpkg/ports/libmysql/export-cmake-targets.patch
jim wang e98d2f26b7
[libmysql] Fix libmysql export static library error (#31368)
* fix no found libmysql

* update version

* fix export patch

* update version

* fix export patch

* update version
2023-05-15 14:11:20 -07:00

144 lines
5.0 KiB
Diff

diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake
index 870c9f13732..98bc3ea15e4 100644
--- a/cmake/install_macros.cmake
+++ b/cmake/install_macros.cmake
@@ -97,7 +97,7 @@ ENDFUNCTION()
FUNCTION(MYSQL_INSTALL_TARGET target_arg)
CMAKE_PARSE_ARGUMENTS(ARG
"NAMELINK_SKIP"
- "DESTINATION;COMPONENT"
+ "DESTINATION;COMPONENT;EXPORT"
""
${ARGN}
)
@@ -113,10 +113,21 @@ FUNCTION(MYSQL_INSTALL_TARGET target_arg)
IF(ARG_NAMELINK_SKIP)
SET(LIBRARY_INSTALL_ARGS NAMELINK_SKIP)
ENDIF()
- INSTALL(TARGETS ${target}
- RUNTIME DESTINATION ${ARG_DESTINATION} ${COMP}
- ARCHIVE DESTINATION ${ARG_DESTINATION} ${COMP}
- LIBRARY DESTINATION ${ARG_DESTINATION} ${COMP} ${LIBRARY_INSTALL_ARGS})
+ IF (ARG_EXPORT)
+ FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${ARG_EXPORT}-config.cmake"
+"include(CMakeFindDependencyMacro)
+find_dependency(ZLIB)
+find_dependency(OpenSSL)
+find_dependency(Threads)
+include(\"\${CMAKE_CURRENT_LIST_DIR}/${ARG_EXPORT}-targets.cmake\")
+")
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${ARG_EXPORT}-config.cmake DESTINATION share/${ARG_EXPORT})
+ set(EXPORT_ARGS EXPORT ${ARG_EXPORT}-targets)
+ ENDIF()
+ INSTALL(TARGETS ${target} ${EXPORT_ARGS} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ${COMP})
+ IF (ARG_EXPORT)
+ INSTALL(${EXPORT_ARGS} DESTINATION share/${ARG_EXPORT})
+ ENDIF()
SET(INSTALL_LOCATION ${ARG_DESTINATION} )
INSTALL_DEBUG_SYMBOLS(${target})
SET(INSTALL_LOCATION)
diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake
index 23e60ad..cc969a8 100644
--- a/cmake/libutils.cmake
+++ b/cmake/libutils.cmake
@@ -298,8 +298,9 @@ MACRO(MERGE_LIBRARIES_SHARED TARGET_ARG)
IF(ARG_NAMELINK_SKIP)
SET(INSTALL_ARGS NAMELINK_SKIP)
ENDIF()
- MYSQL_INSTALL_TARGET(${TARGET} DESTINATION "${DESTINATION}" ${COMP}
- ${INSTALL_ARGS})
+ IF(NOT INSTALL_STATIC_LIBRARIES)
+ MYSQL_INSTALL_TARGET(${TARGET} EXPORT unofficial-libmysql DESTINATION "${INSTALL_LIBDIR}" ${COMP})
+ ENDIF()
ENDIF()
IF(WIN32)
@@ -464,7 +465,7 @@ MACRO(MERGE_CONVENIENCE_LIBRARIES TARGET_ARG)
SET(COMP COMPONENT ${ARG_COMPONENT})
ENDIF()
IF(INSTALL_STATIC_LIBRARIES)
- MYSQL_INSTALL_TARGET(${TARGET} DESTINATION "${INSTALL_LIBDIR}" ${COMP})
+ MYSQL_INSTALL_TARGET(${TARGET} EXPORT unofficial-libmysql DESTINATION "${INSTALL_LIBDIR}" ${COMP})
ENDIF()
ENDIF()
ENDMACRO(MERGE_CONVENIENCE_LIBRARIES)
diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
index 2ee26bfa284..46583f4f0a3 100644
--- a/libmysql/CMakeLists.txt
+++ b/libmysql/CMakeLists.txt
@@ -277,6 +277,14 @@ ENDIF()
# LDAP authentication SASL client plug-in
ADD_SUBDIRECTORY(authentication_ldap)
+IF (BUILD_SHARED_LIBS)
+ set(INSTALL_SHARED )
+ set(INSTALL_STATIC SKIP_INSTALL)
+ELSE()
+ set(INSTALL_SHARED SKIP_INSTALL)
+ set(INSTALL_STATIC )
+ENDIF()
+
# FIDO authentication client plugin
ADD_SUBDIRECTORY(authentication_fido)
@@ -287,7 +295,7 @@ ADD_SUBDIRECTORY(authentication_kerberos)
ADD_SUBDIRECTORY(authentication_oci_client)
# Merge several convenience libraries into one big mysqlclient
-MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE}
+MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE} ${INSTALL_STATIC}
COMPONENT Development
LINK_LIBRARIES ${LIBS_TO_LINK}
)
@@ -403,6 +403,7 @@ CONFIGURE_FILE(api_test.c.in ${CMAKE_CURRENT_BINARY_DIR}/api_test.c)
# from @CLIENT_API_FUNCTIONS@ are declared by <mysql.h>. It will fail
# to run if not all of these symbols are exported by the library.
#
+IF (ENABLE_TESTING)
MYSQL_ADD_EXECUTABLE(libmysql_api_test
${CMAKE_CURRENT_BINARY_DIR}/api_test.c
LINK_LIBRARIES libmysql ${LIBRT}
@@ -410,6 +411,7 @@ MYSQL_ADD_EXECUTABLE(libmysql_api_test
)
# Clang/UBSAN needs this on some platforms.
SET_TARGET_PROPERTIES(libmysql_api_test PROPERTIES LINKER_LANGUAGE CXX)
+ENDIF()
IF(MY_COMPILER_IS_GNU)
ADD_COMPILE_FLAGS(
@@ -426,9 +428,11 @@ IF(HAS_WARN_FLAG)
)
ENDIF()
+IF (ENABLE_TESTING)
# Verify that libmysql_api_test runs OK
MY_ADD_CUSTOM_TARGET(run_libmysql_api_test ALL
DEPENDS libmysql_api_test
COMMAND libmysql_api_test
> ${CMAKE_CURRENT_BINARY_DIR}/libmysql_api_test.out
)
+ENDIF()
\ No newline at end of file
diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt
index a5fa18e..0f2e15c 100644
--- a/scripts/CMakeLists.txt
+++ b/scripts/CMakeLists.txt
@@ -329,13 +329,13 @@ MACRO(EXTRACT_LINK_LIBRARIES target var)
STRING(REGEX REPLACE "^[ ]+" "" ${var} "${${var}}")
STRING(REGEX REPLACE "[ ]+$" "" ${var} "${${var}}")
ENDMACRO()
-
+IF (NOT BUILD_SHARED_LIBS)
EXTRACT_LINK_LIBRARIES(mysqlclient CLIENT_LIBS)
-
-IF(MSVC)
+ENDIF()
+IF(MSVC AND NOT BUILD_SHARED_LIBS)
GET_TARGET_PROPERTY(LIBMYSQL_OS_SHLIB_VERSION mysqlclient VERSION)
GET_TARGET_PROPERTY(LIBMYSQL_OS_OUTPUT_NAME mysqlclient OUTPUT_NAME)
-ELSE()
+ELSEIF(BUILD_SHARED_LIBS)
GET_TARGET_PROPERTY(LIBMYSQL_OS_SHLIB_VERSION libmysql VERSION)
GET_TARGET_PROPERTY(LIBMYSQL_OS_OUTPUT_NAME libmysql OUTPUT_NAME)
ENDIF()