mirror of https://github.com/microsoft/vcpkg.git
[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:
parent
1370b2c88f
commit
79211d3e4a
|
|
@ -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}")
|
||||
|
|
@ -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")
|
||||
|
|
@ -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)
|
||||
|
|
@ -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)
|
||||
|
|
@ -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)
|
||||
|
|
@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "9189c43b6dc73ec3c3765d025e12297fd5a79d37",
|
||||
"version": "1.1.13",
|
||||
"port-version": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue