124 lines
4.5 KiB
Diff
124 lines
4.5 KiB
Diff
|
diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake
|
||
|
index c3a05ec..0d44ef2 100644
|
||
|
--- a/cmake/install_macros.cmake
|
||
|
+++ b/cmake/install_macros.cmake
|
||
|
@@ -100,7 +100,7 @@ ENDFUNCTION()
|
||
|
|
||
|
FUNCTION(MYSQL_INSTALL_TARGETS)
|
||
|
MYSQL_PARSE_ARGUMENTS(ARG
|
||
|
- "DESTINATION;COMPONENT"
|
||
|
+ "DESTINATION;COMPONENT;EXPORT"
|
||
|
""
|
||
|
${ARGN}
|
||
|
)
|
||
|
@@ -115,7 +115,20 @@ FUNCTION(MYSQL_INSTALL_TARGETS)
|
||
|
IF(ARG_COMPONENT)
|
||
|
SET(COMP COMPONENT ${ARG_COMPONENT})
|
||
|
ENDIF()
|
||
|
- INSTALL(TARGETS ${TARGETS} DESTINATION ${ARG_DESTINATION} ${COMP})
|
||
|
+ IF (ARG_EXPORT)
|
||
|
+ FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${ARG_EXPORT}-config.cmake"
|
||
|
+"include(CMakeFindDependencyMacro)
|
||
|
+find_dependency(ZLIB)
|
||
|
+find_dependency(OpenSSL)
|
||
|
+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 ${TARGETS} ${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("${TARGETS}")
|
||
|
SET(INSTALL_LOCATION)
|
||
|
diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake
|
||
|
index 5481fae..3fa58da 100644
|
||
|
--- a/cmake/libutils.cmake
|
||
|
+++ b/cmake/libutils.cmake
|
||
|
@@ -237,7 +237,7 @@ MACRO(MERGE_LIBRARIES_SHARED)
|
||
|
IF(ARG_COMPONENT)
|
||
|
SET(COMP COMPONENT ${ARG_COMPONENT})
|
||
|
ENDIF()
|
||
|
- MYSQL_INSTALL_TARGETS(${TARGET} DESTINATION "${INSTALL_LIBDIR}" ${COMP})
|
||
|
+ MYSQL_INSTALL_TARGETS(${TARGET} EXPORT unofficial-libmysql DESTINATION "${INSTALL_LIBDIR}" ${COMP})
|
||
|
ENDIF()
|
||
|
ENDMACRO()
|
||
|
|
||
|
@@ -372,7 +372,7 @@ MACRO(MERGE_CONVENIENCE_LIBRARIES)
|
||
|
SET(COMP COMPONENT ${ARG_COMPONENT})
|
||
|
ENDIF()
|
||
|
IF(INSTALL_STATIC_LIBRARIES)
|
||
|
- MYSQL_INSTALL_TARGETS(${TARGET} DESTINATION "${INSTALL_LIBDIR}" ${COMP})
|
||
|
+ MYSQL_INSTALL_TARGETS(${TARGET} EXPORT unofficial-libmysql DESTINATION "${INSTALL_LIBDIR}" ${COMP})
|
||
|
ENDIF()
|
||
|
ENDIF()
|
||
|
ENDMACRO()
|
||
|
diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
|
||
|
index 605288d..c5d0f5d 100644
|
||
|
--- a/libmysql/CMakeLists.txt
|
||
|
+++ b/libmysql/CMakeLists.txt
|
||
|
@@ -245,8 +245,16 @@ ENDIF()
|
||
|
# LDAP authentication SASL client plugin
|
||
|
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()
|
||
|
+
|
||
|
# Merge several convenience libraries into one big mysqlclient
|
||
|
-MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE} COMPONENT Development)
|
||
|
+MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE} ${INSTALL_STATIC} COMPONENT Development)
|
||
|
TARGET_LINK_LIBRARIES(mysqlclient PRIVATE ${LIBS_TO_LINK})
|
||
|
|
||
|
# Visual Studio users need debug static library for debug projects
|
||
|
@@ -283,6 +291,7 @@ ENDIF()
|
||
|
# Merge several convenience libraries into one big mysqlclient
|
||
|
# and link them together into shared library.
|
||
|
MERGE_LIBRARIES_SHARED(libmysql ${LIBS_TO_MERGE}
|
||
|
+ ${INSTALL_SHARED}
|
||
|
EXPORTS
|
||
|
${CLIENT_API_FUNCTIONS}
|
||
|
${CLIENT_API_FUNCTIONS_UNDOCUMENTED}
|
||
|
@@ -370,6 +379,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}
|
||
|
@@ -398,3 +408,4 @@ ADD_CUSTOM_COMMAND(TARGET libmysql_api_test POST_BUILD
|
||
|
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()
|