blob: 1f6b299d4d84ea63dab94dabc51bd69f7d626ff8 (
plain)
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
122
123
124
125
126
127
|
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()
|