You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
4.6 KiB

  1. INCLUDE(${CMAKE_SOURCE_DIR}/cmake/mariadb_connector_c.cmake)
  2. SET(CONNECTOR_C_INSTALLDIR "${CMAKE_CURRENT_BINARY_DIR}/mariadb-connector-c/${CMAKE_CFG_INTDIR}" CACHE STRING "")
  3. SET(CONNECTOR_C_INSTALL_PREFIX ${CONNECTOR_C_INSTALLDIR})
  4. IF(NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".")
  5. STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${BUILD_TYPE}" CONNECTOR_C_INSTALL_PREFIX "${CONNECTOR_C_INSTALLDIR}")
  6. ENDIF()
  7. SET(CONNECTOR_C_GIT_TAG "v3.0-cc-server-integ-0" CACHE STRING "Git tag or branch for connector/c")
  8. IF(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/mariadb-connector-c)
  9. # Building from source package
  10. SET(CONNECTOR_C_SOURCE_DIR ${CMAKE_SOURCE_DIR}/mariadb-connector-c)
  11. SET(GIT_PARAMS)
  12. ELSE()
  13. # Building from git, use git to get Connector/C
  14. SET(GIT_PARAMS
  15. GIT_REPOSITORY "https://github.com/MariaDB/mariadb-connector-c/"
  16. GIT_TAG ${CONNECTOR_C_GIT_TAG}
  17. )
  18. SET(CONNECTOR_C_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/mariadb-connector-c-src)
  19. ENDIF()
  20. IF(TARGET zlib)
  21. GET_PROPERTY(ZLIB_LIBRARY_LOCATION TARGET zlib PROPERTY LOCATION)
  22. ELSE()
  23. SET(ZLIB_LIBRARY_LOCATION ${ZLIB_LIBRARY})
  24. ENDIF()
  25. INCLUDE(ExternalProject)
  26. ExternalProject_Add(
  27. mariadb_connector_c
  28. ${GIT_PARAMS}
  29. UPDATE_COMMAND ""
  30. PATCH_COMMAND ""
  31. SOURCE_DIR ${CONNECTOR_C_SOURCE_DIR}
  32. INSTALL_DIR ${CONNECTOR_C_INSTALLDIR}
  33. CMAKE_ARGS ${CC_CMAKE_OPTS}
  34. -DCMAKE_INSTALL_PREFIX=${CONNECTOR_C_INSTALL_PREFIX}
  35. -DWITH_EXTERNAL_ZLIB=1
  36. -DZLIB_FOUND=1
  37. -DZLIB_LIBRARY=${ZLIB_LIBRARY_LOCATION}
  38. -DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIR}
  39. -DSKIP_TESTS=1
  40. -DMARIADB_PORT=${MYSQL_TCP_PORT}
  41. -DMARIADB_UNIX_ADDR=${MYSQL_UNIX_ADDR}
  42. -DSHARED_LIB_MAJOR_VERSION=${SHARED_LIB_MAJOR_VERSION}
  43. -DPLUGINDIR=${INSTALL_PLUGINDIR}
  44. -DFOR_SERVER=1
  45. TEST_COMMAND ""
  46. )
  47. IF(TARGET zlib)
  48. ADD_DEPENDENCIES(mariadb_connector_c zlib)
  49. ENDIF()
  50. SET(STATIC_LIB_LOCATION "${CONNECTOR_C_INSTALLDIR}/lib/mariadb/${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient${CMAKE_STATIC_LIBRARY_SUFFIX}")
  51. IF(WIN32)
  52. SET(SHARED_LIB_LOCATION "${CONNECTOR_C_INSTALLDIR}/lib/mariadb/libmysql${CMAKE_SHARED_LIBRARY_SUFFIX}")
  53. ELSE()
  54. SET(SHARED_LIB_LOCATION "${CONNECTOR_C_INSTALLDIR}/lib/mariadb/libmysqlclient${CMAKE_SHARED_LIBRARY_SUFFIX}")
  55. ENDIF()
  56. IF(WIN32)
  57. # On Windows, we need to install import library. We also install PDB for debugging
  58. STRING(REPLACE ".dll" ".lib" IMPORT_LIB_LOCATION ${SHARED_LIB_LOCATION})
  59. STRING(REPLACE ".dll" ".pdb" PDB_LOCATION ${SHARED_LIB_LOCATION})
  60. ENDIF()
  61. ADD_LIBRARY(mariadbclient STATIC IMPORTED GLOBAL)
  62. SET_TARGET_PROPERTIES(mariadbclient PROPERTIES IMPORTED_LOCATION ${STATIC_LIB_LOCATION})
  63. ADD_DEPENDENCIES(mariadbclient mariadb_connector_c GenError)
  64. ADD_LIBRARY(libmariadb SHARED IMPORTED GLOBAL)
  65. SET_TARGET_PROPERTIES(libmariadb PROPERTIES IMPORTED_LOCATION ${SHARED_LIB_LOCATION})
  66. ADD_DEPENDENCIES(libmariadb mariadb_connector_c GenError)
  67. SET(CONNECTOR_C_LIBS ${STATIC_LIB_LOCATION} ${CC_LIBS} ${ZLIB_LIBRARY} PARENT_SCOPE)
  68. # INSTALL Connector/C files
  69. # For multiconfig generators (Visual Studio and Xcode)
  70. # we need to replace CMAKE_CFG_INTDIR in filepath with CMAKE_INSTALL_CONFIG_NAME
  71. # for cpack.
  72. FUNCTION(GET_INSTALL_LOCATION LOC VARNAME)
  73. SET(val ${LOC})
  74. IF (NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".")
  75. STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" val ${val})
  76. ENDIF()
  77. SET(${VARNAME} ${val} PARENT_SCOPE)
  78. ENDFUNCTION()
  79. GET_INSTALL_LOCATION(${STATIC_LIB_LOCATION} STATIC_LIB_INSTALL_LOCATION)
  80. INSTALL(FILES ${STATIC_LIB_INSTALL_LOCATION} DESTINATION ${INSTALL_LIBDIR} COMPONENT Development)
  81. IF(UNIX)
  82. STRING(REPLACE "mysqlclient" "mysqlclient_r"
  83. STATIC_LIB_R_INSTALL_LOCATION "${STATIC_LIB_INSTALL_LOCATION}")
  84. INSTALL(FILES ${STATIC_LIB_R_INSTALL_LOCATION} OPTIONAL DESTINATION ${INSTALL_LIBDIR} COMPONENT Development)
  85. ENDIF()
  86. # Install shared library
  87. IF(WIN32)
  88. # On Windows, we need to install import library. We also install PDB for debugging
  89. SET(SHARED_LIB_FILES ${SHARED_LIB_LOCATION} ${IMPLIB_LOCATION} ${PDB_LOCATION})
  90. ELSE()
  91. STRING(REPLACE "mysqlclient" "mysqlclient_r" SHARED_LIB_R_LOCATION ${SHARED_LIB_LOCATION})
  92. STRING(REPLACE "mysqlclient.so" "mysqlclient.so.${SHARED_LIB_MAJOR_VERSION}"
  93. SHARED_LIB_LINK1_LOCATION ${SHARED_LIB_LOCATION})
  94. STRING(REPLACE "mysqlclient.so" "mysqlclient.so.${SHARED_LIB_MAJOR_VERSION}.0.0"
  95. SHARED_LIB_LINK2_LOCATION ${SHARED_LIB_LOCATION})
  96. SET(SHARED_LIB_FILES ${SHARED_LIB_LOCATION} ${SHARED_LIB_R_LOCATION}
  97. ${SHARED_LIB_LINK1_LOCATION} ${SHARED_LIB_LINK2_LOCATION})
  98. LIST(REMOVE_DUPLICATES SHARED_LIB_FILES)
  99. ENDIF()
  100. FOREACH(file ${SHARED_LIB_FILES})
  101. GET_INSTALL_LOCATION(${file} loc)
  102. IF(loc)
  103. INSTALL(FILES ${loc} DESTINATION ${INSTALL_LIBDIR} COMPONENT SharedLibraries OPTIONAL)
  104. ENDIF()
  105. ENDFOREACH()