-
Notifications
You must be signed in to change notification settings - Fork 6.4k
/
install-exports.patch
121 lines (118 loc) · 4.89 KB
/
install-exports.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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
@@ -315,10 +315,14 @@ 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})
SET(${var} "${${var}} -l${SYSTEM_LIB} ")
+ 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} ")
@@ -354,6 +358,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()
@@ -373,6 +378,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@"