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 . 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()