mirror of
https://github.com/MariaDB/server.git
synced 2026-05-07 07:35:32 +02:00
127 lines
4.6 KiB
CMake
127 lines
4.6 KiB
CMake
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/mariadb_connector_c.cmake)
|
|
|
|
SET(CONNECTOR_C_INSTALLDIR "${CMAKE_CURRENT_BINARY_DIR}/mariadb-connector-c/${CMAKE_CFG_INTDIR}" CACHE STRING "")
|
|
SET(CONNECTOR_C_INSTALL_PREFIX ${CONNECTOR_C_INSTALLDIR})
|
|
|
|
|
|
IF(NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".")
|
|
STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${BUILD_TYPE}" CONNECTOR_C_INSTALL_PREFIX "${CONNECTOR_C_INSTALLDIR}")
|
|
ENDIF()
|
|
|
|
SET(CONNECTOR_C_GIT_TAG "v3.0-cc-server-integ-0" CACHE STRING "Git tag or branch for connector/c")
|
|
IF(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/mariadb-connector-c)
|
|
# Building from source package
|
|
SET(CONNECTOR_C_SOURCE_DIR ${CMAKE_SOURCE_DIR}/mariadb-connector-c)
|
|
SET(GIT_PARAMS)
|
|
ELSE()
|
|
# Building from git, use git to get Connector/C
|
|
SET(GIT_PARAMS
|
|
GIT_REPOSITORY "https://github.com/MariaDB/mariadb-connector-c/"
|
|
GIT_TAG ${CONNECTOR_C_GIT_TAG}
|
|
)
|
|
SET(CONNECTOR_C_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/mariadb-connector-c-src)
|
|
ENDIF()
|
|
|
|
IF(TARGET zlib)
|
|
GET_PROPERTY(ZLIB_LIBRARY_LOCATION TARGET zlib PROPERTY LOCATION)
|
|
ELSE()
|
|
SET(ZLIB_LIBRARY_LOCATION ${ZLIB_LIBRARY})
|
|
ENDIF()
|
|
|
|
|
|
INCLUDE(ExternalProject)
|
|
ExternalProject_Add(
|
|
mariadb_connector_c
|
|
${GIT_PARAMS}
|
|
UPDATE_COMMAND ""
|
|
PATCH_COMMAND ""
|
|
SOURCE_DIR ${CONNECTOR_C_SOURCE_DIR}
|
|
INSTALL_DIR ${CONNECTOR_C_INSTALLDIR}
|
|
CMAKE_ARGS ${CC_CMAKE_OPTS}
|
|
-DCMAKE_INSTALL_PREFIX=${CONNECTOR_C_INSTALL_PREFIX}
|
|
-DWITH_EXTERNAL_ZLIB=1
|
|
-DZLIB_FOUND=1
|
|
-DZLIB_LIBRARY=${ZLIB_LIBRARY_LOCATION}
|
|
-DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIR}
|
|
-DSKIP_TESTS=1
|
|
-DMARIADB_PORT=${MYSQL_TCP_PORT}
|
|
-DMARIADB_UNIX_ADDR=${MYSQL_UNIX_ADDR}
|
|
-DSHARED_LIB_MAJOR_VERSION=${SHARED_LIB_MAJOR_VERSION}
|
|
-DPLUGINDIR=${INSTALL_PLUGINDIR}
|
|
-DFOR_SERVER=1
|
|
TEST_COMMAND ""
|
|
)
|
|
|
|
IF(TARGET zlib)
|
|
ADD_DEPENDENCIES(mariadb_connector_c zlib)
|
|
ENDIF()
|
|
|
|
SET(STATIC_LIB_LOCATION "${CONNECTOR_C_INSTALLDIR}/lib/mariadb/${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
|
|
IF(WIN32)
|
|
SET(SHARED_LIB_LOCATION "${CONNECTOR_C_INSTALLDIR}/lib/mariadb/libmysql${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
ELSE()
|
|
SET(SHARED_LIB_LOCATION "${CONNECTOR_C_INSTALLDIR}/lib/mariadb/libmysqlclient${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
ENDIF()
|
|
IF(WIN32)
|
|
# On Windows, we need to install import library. We also install PDB for debugging
|
|
STRING(REPLACE ".dll" ".lib" IMPORT_LIB_LOCATION ${SHARED_LIB_LOCATION})
|
|
STRING(REPLACE ".dll" ".pdb" PDB_LOCATION ${SHARED_LIB_LOCATION})
|
|
ENDIF()
|
|
|
|
ADD_LIBRARY(mariadbclient STATIC IMPORTED GLOBAL)
|
|
SET_TARGET_PROPERTIES(mariadbclient PROPERTIES IMPORTED_LOCATION ${STATIC_LIB_LOCATION})
|
|
ADD_DEPENDENCIES(mariadbclient mariadb_connector_c GenError)
|
|
|
|
ADD_LIBRARY(libmariadb SHARED IMPORTED GLOBAL)
|
|
SET_TARGET_PROPERTIES(libmariadb PROPERTIES IMPORTED_LOCATION ${SHARED_LIB_LOCATION})
|
|
ADD_DEPENDENCIES(libmariadb mariadb_connector_c GenError)
|
|
|
|
SET(CONNECTOR_C_LIBS ${STATIC_LIB_LOCATION} ${CC_LIBS} ${ZLIB_LIBRARY} PARENT_SCOPE)
|
|
|
|
|
|
# INSTALL Connector/C files
|
|
|
|
# For multiconfig generators (Visual Studio and Xcode)
|
|
# we need to replace CMAKE_CFG_INTDIR in filepath with CMAKE_INSTALL_CONFIG_NAME
|
|
# for cpack.
|
|
FUNCTION(GET_INSTALL_LOCATION LOC VARNAME)
|
|
SET(val ${LOC})
|
|
IF (NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".")
|
|
STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" val ${val})
|
|
ENDIF()
|
|
SET(${VARNAME} ${val} PARENT_SCOPE)
|
|
ENDFUNCTION()
|
|
|
|
GET_INSTALL_LOCATION(${STATIC_LIB_LOCATION} STATIC_LIB_INSTALL_LOCATION)
|
|
INSTALL(FILES ${STATIC_LIB_INSTALL_LOCATION} DESTINATION ${INSTALL_LIBDIR} COMPONENT Development)
|
|
|
|
IF(UNIX)
|
|
STRING(REPLACE "mysqlclient" "mysqlclient_r"
|
|
STATIC_LIB_R_INSTALL_LOCATION "${STATIC_LIB_INSTALL_LOCATION}")
|
|
INSTALL(FILES ${STATIC_LIB_R_INSTALL_LOCATION} OPTIONAL DESTINATION ${INSTALL_LIBDIR} COMPONENT Development)
|
|
ENDIF()
|
|
|
|
# Install shared library
|
|
IF(WIN32)
|
|
# On Windows, we need to install import library. We also install PDB for debugging
|
|
SET(SHARED_LIB_FILES ${SHARED_LIB_LOCATION} ${IMPLIB_LOCATION} ${PDB_LOCATION})
|
|
ELSE()
|
|
STRING(REPLACE "mysqlclient" "mysqlclient_r" SHARED_LIB_R_LOCATION ${SHARED_LIB_LOCATION})
|
|
STRING(REPLACE "mysqlclient.so" "mysqlclient.so.${SHARED_LIB_MAJOR_VERSION}"
|
|
SHARED_LIB_LINK1_LOCATION ${SHARED_LIB_LOCATION})
|
|
STRING(REPLACE "mysqlclient.so" "mysqlclient.so.${SHARED_LIB_MAJOR_VERSION}.0.0"
|
|
SHARED_LIB_LINK2_LOCATION ${SHARED_LIB_LOCATION})
|
|
|
|
SET(SHARED_LIB_FILES ${SHARED_LIB_LOCATION} ${SHARED_LIB_R_LOCATION}
|
|
${SHARED_LIB_LINK1_LOCATION} ${SHARED_LIB_LINK2_LOCATION})
|
|
LIST(REMOVE_DUPLICATES SHARED_LIB_FILES)
|
|
ENDIF()
|
|
|
|
FOREACH(file ${SHARED_LIB_FILES})
|
|
GET_INSTALL_LOCATION(${file} loc)
|
|
IF(loc)
|
|
INSTALL(FILES ${loc} DESTINATION ${INSTALL_LIBDIR} COMPONENT SharedLibraries OPTIONAL)
|
|
ENDIF()
|
|
ENDFOREACH()
|
|
|