Browse Source
Add C/C as a submodule in libmariadb/
Add C/C as a submodule in libmariadb/
also * fix includes * rename cmake macros and targets to avoid name clashespull/223/merge
7 changed files with 49 additions and 172 deletions
-
3CMakeLists.txt
-
11client/CMakeLists.txt
-
6cmake/libutils.cmake
-
58cmake/mariadb_connector_c.cmake
-
4dbug/CMakeLists.txt
-
127libmariadb/CMakeLists.txt
-
12tests/CMakeLists.txt
@ -1,32 +1,36 @@ |
|||
# |
|||
# Configuration options for Connector/C |
|||
# |
|||
IF(WIN32) |
|||
# todo: libcurl for windows |
|||
SET(OPT CONC_) |
|||
|
|||
IF (CMAKE_BUILD_TYPE STREQUAL "Debug") |
|||
SET(CONC_WITH_RTC ON) |
|||
ENDIF() |
|||
|
|||
SET(CONC_WITH_SIGNCODE ${SIGNCODE}) |
|||
SET(SIGN_OPTIONS ${SIGNTOOL_PARAMETERS}) |
|||
|
|||
IF(TARGET zlib) |
|||
GET_PROPERTY(ZLIB_LIBRARY_LOCATION TARGET zlib PROPERTY LOCATION) |
|||
ELSE() |
|||
SET(CC_LIBS ${LIBDL} ${LIBM} ${CMAKE_THREAD_LIBS_INIT}) |
|||
FIND_PACKAGE(OpenSSL) |
|||
#FIND_PACKAGE(GnuTLS) |
|||
IF(OPENSSL_FOUND) |
|||
SET(CC_LIBS ${CC_LIBS} ${OPENSSL_LIBRARIES}) |
|||
SET(CC_CMAKE_OPTS "-DWITH_SSL=OPENSSL") |
|||
ELSEIF (GNUTLS_FOUND) |
|||
SET(CC_LIBS ${CC_LIBS} ${GNUTLS_LIBRARY}) |
|||
SET(CC_CMAKE_OPTS "-DWITH_SSL=GNUTLS") |
|||
SET(ZLIB_LIBRARY_LOCATION ${ZLIB_LIBRARY}) |
|||
ENDIF() |
|||
|
|||
IF(SSL_DEFINES MATCHES "YASSL") |
|||
IF(WIN32) |
|||
SET(CONC_WITH_SSL "SCHANNEL") |
|||
ELSE() |
|||
SET(CC_CMAKE_OPTS "-DWITH_SSL=OFF") |
|||
ENDIF() |
|||
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/iconv.cmake) |
|||
IF(ICONV_FOUND) |
|||
IF(ICONV_EXTERNAL) |
|||
IF(NOT ICONV_LIBRARIES MATCHES "libc.so") |
|||
SET(CC_LIBS ${CC_LIBS} ${ICONV_LIBRARIES}) |
|||
ENDIF() |
|||
ENDIF() |
|||
SET(CONC_WITH_SSL "GNUTLS") # that's what debian wants, right? |
|||
ENDIF() |
|||
ELSE() |
|||
SET(CONC_WITH_SSL "OPENSSL") |
|||
ENDIF() |
|||
IF(NOT TARGET zlib) |
|||
SET(CC_LIBS ${CC_LIBS} ${ZLIB_LIBRARY}) |
|||
|
|||
SET(CONC_WITH_CURL OFF) |
|||
SET(CONC_WITH_MYSQLCOMPAT ON) |
|||
|
|||
IF (INSTALL_LAYOUT STREQUAL "RPM") |
|||
SET(CONC_INSTALL_LAYOUT "RPM") |
|||
ELSE() |
|||
SET(CONC_INSTALL_LAYOUT "DEFAULT") |
|||
ENDIF() |
|||
SET(mysqlclient_LIB_DEPENDS ${CC_LIBS} CACHE INTERNAL "") |
|||
MARK_AS_ADVANCED(CC_LIBS CC_CMAKE_OPTS) |
|||
|
|||
MESSAGE("== Configuring MariaDB Connector/C") |
|||
ADD_SUBDIRECTORY(libmariadb) |
|||
@ -1,127 +0,0 @@ |
|||
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() |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue