[mysql-connector-cpp] Add new port (#25652)

* [mysql-connector-cpp] Add new port

* [mysql-connector-cpp] add version

* [mysql-connector-cpp] Fix code review suggestion

* [mysql-connector-cpp] Run x-add-version

* [mysql-connector-cpp] Quote cmake expressions; Add CMake targets

* unofficial targets

Co-authored-by: JonLiu1993 <63675417+JonLiu1993@users.noreply.github.com>

* unofficial targets

Co-authored-by: JonLiu1993 <63675417+JonLiu1993@users.noreply.github.com>

* unofficial targets

Co-authored-by: JonLiu1993 <63675417+JonLiu1993@users.noreply.github.com>

* unofficial targets

Co-authored-by: JonLiu1993 <63675417+JonLiu1993@users.noreply.github.com>

* unofficial targets

Co-authored-by: JonLiu1993 <63675417+JonLiu1993@users.noreply.github.com>

* unofficial targets

Co-authored-by: JonLiu1993 <63675417+JonLiu1993@users.noreply.github.com>

* unofficial targets

Co-authored-by: JonLiu1993 <63675417+JonLiu1993@users.noreply.github.com>

* [mysql-connector-cpp] Add unofficial targets and usage

* [mysql-connector-cpp] Run x-add-version

* [mysql-connector-cpp] Fix code review suggestion

* [mysql-connector-cpp] Run x-add-version

* Fix license and supports nitpick.

* Version DB

* Remove vcpkg-cmake-wrapper

* Version DB

Co-authored-by: JonLiu1993 <63675417+JonLiu1993@users.noreply.github.com>
Co-authored-by: Billy O'Neal <bion@microsoft.com>
This commit is contained in:
Li Xiaobin 2022-08-12 04:09:00 +08:00 committed by GitHub
parent 1370b2c88f
commit 79211d3e4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 330 additions and 0 deletions

View File

@ -0,0 +1,42 @@
find_package(libmysql REQUIRED)
set(MYSQL_INCLUDE_DIR "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/mysql")
if(NOT EXISTS "${MYSQL_INCLUDE_DIR}/mysql.h")
message(FATAL_ERROR "MYSQL_INCLUDE_DIR given, but no \"mysql.h\" in \"${MYSQL_INCLUDE_DIR}\"")
endif()
# Write the C source file that will include the MySQL headers
set(GETMYSQLVERSION_SOURCEFILE "${CMAKE_CURRENT_BINARY_DIR}/getmysqlversion.c")
file(WRITE "${GETMYSQLVERSION_SOURCEFILE}"
"#include <mysql.h>\n"
"#include <stdio.h>\n"
"int main() {\n"
" printf(\"%s\", MYSQL_SERVER_VERSION);\n"
"}\n"
)
# Compile and run the created executable, store output in MYSQL_VERSION
try_run(_run_result _compile_result
"${CMAKE_BINARY_DIR}"
"${GETMYSQLVERSION_SOURCEFILE}"
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${MYSQL_INCLUDE_DIR}"
RUN_OUTPUT_VARIABLE MYSQL_VERSION
)
if(NOT MYSQL_VERSION)
message(FATAL_ERROR "Could not determine the MySQL Server version")
endif()
# Clean up so only numeric, in case of "-alpha" or similar
string(REGEX MATCHALL "([0-9]+.[0-9]+.[0-9]+)" MYSQL_VERSION "${MYSQL_VERSION}")
# To create a fully numeric version, first normalize so N.NN.NN
string(REGEX REPLACE "[.]([0-9])[.]" ".0\\1." MYSQL_VERSION_ID "${MYSQL_VERSION}")
string(REGEX REPLACE "[.]([0-9])$" ".0\\1" MYSQL_VERSION_ID "${MYSQL_VERSION_ID}")
# Finally remove the dot
string(REGEX REPLACE "[.]" "" MYSQL_VERSION_ID "${MYSQL_VERSION_ID}")
set(MYSQL_NUM_VERSION ${MYSQL_VERSION_ID})
include_directories("${MYSQL_INCLUDE_DIR}")

View File

@ -0,0 +1,182 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c4cb920..eeb17ee 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -126,8 +126,8 @@ ENDIF()
# CPPFLAGS, CXXFLAGS and LDFLAGS from the environment
SET(FreeBSD11Up False)
-if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" AND
- ${CMAKE_SYSTEM_VERSION} GREATER "10")
+if ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD" AND
+ "${CMAKE_SYSTEM_VERSION}" GREATER "10")
SET(FreeBSD11Up True)
endif()
@@ -490,10 +490,12 @@ INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/driver/nativeapi)
ADD_SUBDIRECTORY(cppconn)
ADD_SUBDIRECTORY(driver)
ADD_SUBDIRECTORY(examples)
+IF(MYSQLCPPCONN_BUILD_TESTS)
ADD_SUBDIRECTORY(test)
ADD_SUBDIRECTORY(test/framework)
ADD_SUBDIRECTORY(test/CJUnitTestsPort)
ADD_SUBDIRECTORY(test/unit)
+ENDIF(MYSQLCPPCONN_BUILD_TESTS)
IF(DEFINED CMAKE_SYSTEM_NAME AND ${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
# see also README
diff --git a/driver/CMakeLists.txt b/driver/CMakeLists.txt
index e7136aa..740defa 100644
--- a/driver/CMakeLists.txt
+++ b/driver/CMakeLists.txt
@@ -181,9 +181,13 @@ IF(WIN32)
ENDIF(WIN32)
+IF(ENABLE_BUILD_DYNAMIC)
ADD_LIBRARY(mysqlcppconn SHARED ${MYSQLCPPCONN_SOURCES})
+ENDIF(ENABLE_BUILD_DYNAMIC)
+IF(ENABLE_BUILD_STATIC)
ADD_LIBRARY(mysqlcppconn-static STATIC ${MYSQLCPPCONN_SOURCES})
-SET(MYSQL_LIB_OBJECTS "${MYSQL_LIBRARIES}")
+ENDIF(ENABLE_BUILD_STATIC)
+SET(MYSQL_LIB_OBJECTS "")
IF(WIN32)
INCLUDE_DIRECTORIES(${MYSQL_DIR}/include)
@@ -200,8 +204,10 @@ IF(WIN32)
#Disables bunch of pretty useless warnings on win
ADD_DEFINITIONS("-D_SCL_SECURE_NO_WARNINGS")
+ IF(ENABLE_BUILD_DYNAMIC)
ADD_LIBRARY(mysqlclient STATIC IMPORTED)
SET_TARGET_PROPERTIES(mysqlclient PROPERTIES IMPORTED_LOCATION "${MYSQL_LIB}" )
+ ENDIF(ENABLE_BUILD_DYNAMIC)
IF(MYSQLCLIENT_STATIC_BINDING)
SET(MY_TARGET_LINK_LIBRARIES_DYNAMIC mysqlclient ws2_32)
@@ -240,6 +246,7 @@ ELSEIF(NOT WIN32)
FILE(TO_NATIVE_PATH ${OBJ} OBJ)
SET(MYSQL_STATIC_LIB_OBJECTS "${MYSQL_STATIC_LIB_OBJECTS} ${OBJ}")
ENDFOREACH(OBJ ${MYSQL_STATIC_OBJECTS})
+ FILE(RENAME ${CMAKE_CURRENT_BINARY_DIR}/.MYSQL_ARCHIVES ${CMAKE_CURRENT_BINARY_DIR}/../.MYSQL_ARCHIVES)
ENDIF(MYSQLCLIENT_STATIC_LINKING)
SET(MYSQL_LIB_OBJECTS "${MYSQL_STATIC_LIB_OBJECTS}")
ENDIF(WIN32)
@@ -250,24 +257,28 @@ IF(CMAKE_COMPILER_IS_GNUCC AND MYSQLCPPCONN_GCOV_ENABLE)
ENDIF(CMAKE_COMPILER_IS_GNUCC AND MYSQLCPPCONN_GCOV_ENABLE)
-TARGET_LINK_LIBRARIES(mysqlcppconn ${MY_TARGET_LINK_LIBRARIES_DYNAMIC}
+IF(ENABLE_BUILD_DYNAMIC)
+TARGET_LINK_LIBRARIES(mysqlcppconn PRIVATE ${MYSQL_LIBRARIES}
${MY_GCOV_LINK_LIBRARIES}
${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
${MYSQLCPPCONN_BOOST_THREAD_LIBS}
${MYSQLCPPCONN_EXTRA_LIBRARIES}
${MYSQLCPPCONN_ICU_LIBRARY})
+ENDIF(ENABLE_BUILD_DYNAMIC)
# Need to find way it's defined for mysqlcppconn-static only
#IF(WIN32)
# ADD_DEFINITIONS("-DCPPCONN_PUBLIC_FUNC=\"\"")
#ENDIF(WIN32)
-TARGET_LINK_LIBRARIES(mysqlcppconn-static ${MY_TARGET_LINK_LIBRARIES_STATIC}
+IF(ENABLE_BUILD_STATIC)
+TARGET_LINK_LIBRARIES(mysqlcppconn-static PRIVATE ${MYSQL_LIBRARIES}
${MY_GCOV_LINK_LIBRARIES}
${MYSQLCPPCONN_BOOST_SYSTEM_LIBS}
${MYSQLCPPCONN_BOOST_THREAD_LIBS}
${MYSQLCPPCONN_EXTRA_LIBRARIES}
${MYSQLCPPCONN_ICU_LIBRARY})
+ENDIF(ENABLE_BUILD_STATIC)
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
# We pass objects from our C client library in the
@@ -284,12 +295,15 @@ IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
SET(CMAKE_CXX_CREATE_STATIC_LIBRARY "<CMAKE_AR> cr <TARGET> <LINK_FLAGS> <OBJECTS>")
ENDIF()
+IF(ENABLE_BUILD_STATIC)
SET_TARGET_PROPERTIES(mysqlcppconn-static PROPERTIES
LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}"
COMPILE_DEFINITIONS CPPCONN_LIB_BUILD=""
STATIC_LIBRARY_FLAGS "${MYSQL_LIB_OBJECTS}")
+ENDIF(ENABLE_BUILD_STATIC)
+IF(ENABLE_BUILD_DYNAMIC)
SET_TARGET_PROPERTIES(mysqlcppconn
PROPERTIES
SOVERSION "${MYSQLCPPCONN_SOVERSION}"
@@ -298,6 +312,7 @@ SET_TARGET_PROPERTIES(mysqlcppconn
COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}"
COMPILE_DEFINITIONS CPPCONN_SO_BUILD=""
LINK_INTERFACE_LIBRARIES "")
+ENDIF(ENABLE_BUILD_DYNAMIC)
IF(WIN32)
# SET_TARGET_PROPERTIES(mysqlcppconn PROPERTIES
@@ -316,14 +331,29 @@ IF(WIN32)
# CHANGE_CRT("/MD")
# ENDIF()
- INSTALL(TARGETS mysqlcppconn mysqlcppconn-static
- RUNTIME DESTINATION lib
+ IF(ENABLE_BUILD_STATIC)
+ IF(STATIC_CRT)
+ INCLUDE(${CMAKE_SOURCE_DIR}/changeCrt.cmake)
+ CHANGE_CRT("T")
+ ENDIF(STATIC_CRT)
+ INSTALL(TARGETS mysqlcppconn-static
+ EXPORT unofficial-mysql-connector-cpp-targets
+ RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
)
+ ENDIF(ENABLE_BUILD_STATIC)
+ IF(ENABLE_BUILD_DYNAMIC)
+ INSTALL(TARGETS mysqlcppconn
+ EXPORT unofficial-mysql-connector-cpp-targets
+ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib
+ )
+ ENDIF(ENABLE_BUILD_DYNAMIC)
ELSE(WIN32)
IF(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_STATIC)
IF(ENABLE_BUILD_DYNAMIC)
INSTALL(TARGETS mysqlcppconn
+ EXPORT unofficial-mysql-connector-cpp-targets
LIBRARY DESTINATION ${INSTALL_LIBDIR}
ARCHIVE DESTINATION ${INSTALL_LIBDIR}
)
@@ -331,6 +361,7 @@ ELSE(WIN32)
IF(ENABLE_BUILD_STATIC)
INSTALL(TARGETS mysqlcppconn-static
+ EXPORT unofficial-mysql-connector-cpp-targets
LIBRARY DESTINATION ${INSTALL_LIBDIR}
ARCHIVE DESTINATION ${INSTALL_LIBDIR}
)
@@ -343,6 +374,12 @@ ELSE(WIN32)
ENDIF(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_STATIC)
ENDIF(WIN32)
+include(CMakePackageConfigHelpers)
+configure_package_config_file(
+ "${CMAKE_SOURCE_DIR}/mysql-connector-cpp-config.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/unofficial-mysql-connector-cpp-config.cmake"
+ INSTALL_DESTINATION "share/unofficial-mysql-connector-cpp"
+)
# Install some MySQL specific headers
SET(MYSQLCPPCONN_SPECIFIC_INSTALL_HEADERS
@@ -352,5 +389,7 @@ SET(MYSQLCPPCONN_SPECIFIC_INSTALL_HEADERS
INSTALL(FILES ${MYSQLCPPCONN_SPECIFIC_INSTALL_HEADERS} DESTINATION include)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-mysql-connector-cpp-config.cmake" DESTINATION "share/unofficial-mysql-connector-cpp")
+install(EXPORT unofficial-mysql-connector-cpp-targets DESTINATION share/unofficial-mysql-connector-cpp)
MESSAGE(STATUS "Configuring driver")

View File

@ -0,0 +1,9 @@
@PACKAGE_INIT@
include(CMakeFindDependencyMacro)
find_dependency(libmysql)
find_dependency(Boost)
include("${CMAKE_CURRENT_LIST_DIR}/unofficial-mysql-connector-cpp-targets.cmake")
check_required_components(mysql-connector-cpp)

View File

@ -0,0 +1,54 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO mysql/mysql-connector-cpp
REF 1.1.13
SHA512 76cf3d8c9dbaa006ccbb3c672538c540167c7a9cf3406a371313dc346598b119515f25fea2a786bb8cab12d96fd607b69f320a6d897aaeeb668eff831920fb5f
HEAD_REF master
PATCHES
fix-static-build.patch
)
file(COPY
"${CMAKE_CURRENT_LIST_DIR}/mysql-connector-cpp-config.cmake.in"
"${CMAKE_CURRENT_LIST_DIR}/FindMySQL.cmake"
DESTINATION "${SOURCE_PATH}"
)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" ENABLE_BUILD_STATIC)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" ENABLE_BUILD_DYNAMIC)
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" STATIC_CRT)
# Use mysql-connector-cpp's own build process, skipping examples and tests.
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
WINDOWS_USE_MSBUILD
OPTIONS
-DMYSQLCPPCONN_BUILD_EXAMPLES:BOOL=OFF
-DMYSQLCPPCONN_BUILD_TESTS:BOOL=OFF
-DENABLE_BUILD_DYNAMIC=${ENABLE_BUILD_DYNAMIC}
-DENABLE_BUILD_STATIC=${ENABLE_BUILD_STATIC}
-DMYSQLCLIENT_STATIC_LINKING=${ENABLE_BUILD_STATIC}
-DSTATIC_CRT=${STATIC_CRT}
MAYBE_UNUSED_VARIABLES
STATIC_CRT
MYSQLCLIENT_STATIC_LINKING
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-mysql-connector-cpp)
file(INSTALL "${CURRENT_PORT_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
file(REMOVE "${CURRENT_PACKAGES_DIR}/BUILDINFO"
"${CURRENT_PACKAGES_DIR}/LICENSE"
"${CURRENT_PACKAGES_DIR}/README"
"${CURRENT_PACKAGES_DIR}/debug/BUILDINFO"
"${CURRENT_PACKAGES_DIR}/debug/LICENSE"
"${CURRENT_PACKAGES_DIR}/debug/README"
)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
vcpkg_copy_pdbs()
# Handle copyright
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)

View File

@ -0,0 +1,9 @@
The package mysql-connector-cpp provides CMake targets:
find_package(unofficial-mysql-connector-cpp CONFIG REQUIRED)
target_link_libraries(main PRIVATE mysqlcppconn)
or
find_package(unofficial-mysql-connector-cpp CONFIG REQUIRED)
target_link_libraries(main PRIVATE mysqlcppconn-static)

View File

@ -0,0 +1,21 @@
{
"name": "mysql-connector-cpp",
"version": "1.1.13",
"description": "This is a release of MySQL Connector/C++, the C++ interface for communicating with MySQL servers.",
"homepage": "https://github.com/mysql/mysql-connector-cpp",
"license": null,
"supports": "!uwp",
"dependencies": [
"boost-date-time",
"boost-thread",
"libmysql",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}

View File

@ -4820,6 +4820,10 @@
"baseline": "3.4.1",
"port-version": 3
},
"mysql-connector-cpp": {
"baseline": "1.1.13",
"port-version": 0
},
"nameof": {
"baseline": "0.10.2",
"port-version": 0

View File

@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "9189c43b6dc73ec3c3765d025e12297fd5a79d37",
"version": "1.1.13",
"port-version": 0
}
]
}