aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libmariadb
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/libmariadb')
-rw-r--r--vcpkg/ports/libmariadb/cmake-export.diff27
-rw-r--r--vcpkg/ports/libmariadb/compiler-flags.diff13
-rw-r--r--vcpkg/ports/libmariadb/dependencies.diff110
-rw-r--r--vcpkg/ports/libmariadb/disable-mariadb_config.diff15
-rw-r--r--vcpkg/ports/libmariadb/library-linkage.diff61
-rw-r--r--vcpkg/ports/libmariadb/no-abs-path.diff13
-rw-r--r--vcpkg/ports/libmariadb/portfile.cmake107
-rw-r--r--vcpkg/ports/libmariadb/vcpkg.json56
8 files changed, 402 insertions, 0 deletions
diff --git a/vcpkg/ports/libmariadb/cmake-export.diff b/vcpkg/ports/libmariadb/cmake-export.diff
new file mode 100644
index 0000000..e452d19
--- /dev/null
+++ b/vcpkg/ports/libmariadb/cmake-export.diff
@@ -0,0 +1,27 @@
+diff --git a/libmariadb/CMakeLists.txt b/libmariadb/CMakeLists.txt
+index bbad89a..71662d3 100644
+--- a/libmariadb/CMakeLists.txt
++++ b/libmariadb/CMakeLists.txt
+@@ -547,3 +547,22 @@ IF(0)
+ CONFIGURATIONS Debug RelWithDebInfo
+ COMPONENT Development)
+ ENDIF()
++
++set_target_properties(mariadbclient PROPERTIES EXPORT_NAME libmariadb)
++
++install(EXPORT unofficial-libmariadb-targets
++ NAMESPACE unofficial::
++ DESTINATION share/unofficial-libmariadb
++)
++
++file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/unofficial-libmariadb-config.cmake.in" [[
++if(NOT "@BUILD_SHARED_LIBS@")
++ include(CMakeFindDependencyMacro)
++ if("@WITH_ZSTD@")
++ find_dependency(zstd CONFIG)
++ endif()
++endif()
++include("${CMAKE_CURRENT_LIST_DIR}/unofficial-libmariadb-targets.cmake")
++]])
++configure_file("${CMAKE_CURRENT_BINARY_DIR}/unofficial-libmariadb-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/unofficial-libmariadb-config.cmake" @ONLY)
++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-libmariadb-config.cmake" DESTINATION share/unofficial-libmariadb)
diff --git a/vcpkg/ports/libmariadb/compiler-flags.diff b/vcpkg/ports/libmariadb/compiler-flags.diff
new file mode 100644
index 0000000..21133cf
--- /dev/null
+++ b/vcpkg/ports/libmariadb/compiler-flags.diff
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8994119..9ccfacb 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -113,8 +113,6 @@ IF(MSVC)
+ ENDIF()
+ ENDIF()
+ STRING(REPLACE "/Zi" "/Z7" COMPILER_FLAGS ${COMPILER_FLAGS})
+- MESSAGE (STATUS "CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE}= ${COMPILER_FLAGS}")
+- SET(CMAKE_${COMPILER}_FLAGS_${BUILD_TYPE} ${COMPILER_FLAGS})
+ ENDIF()
+ ENDFOREACH()
+ ENDFOREACH()
diff --git a/vcpkg/ports/libmariadb/dependencies.diff b/vcpkg/ports/libmariadb/dependencies.diff
new file mode 100644
index 0000000..5b98361
--- /dev/null
+++ b/vcpkg/ports/libmariadb/dependencies.diff
@@ -0,0 +1,110 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9ccfacb..4e28b38 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -219,7 +219,12 @@ INCLUDE(${CC_SOURCE_DIR}/cmake/SearchLibrary.cmake)
+
+ # Compression plugins: ZSTD, ZLIB
+
+-INCLUDE(${CC_SOURCE_DIR}/cmake/FindZStd.cmake)
++if(WITH_ZSTD)
++ find_package(ZSTD NAMES zstd REQUIRED)
++ set(ZSTD_LIBRARIES zstd::libzstd)
++else()
++ set(ZSTD_FOUND 0)
++endif()
+
+ IF(WITH_EXTERNAL_ZLIB)
+ IF(NOT ZLIB_FOUND)
+@@ -250,7 +255,7 @@ IF(UNIX)
+ SEARCH_LIBRARY(LIBNSL gethostbyname_r "nsl_r;nsl")
+ SEARCH_LIBRARY(LIBSOCKET setsockopt socket)
+ FIND_PACKAGE(Threads)
+- SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LIBNSL} ${LIBBIND} ${LIBICONV} ${ZLIB_LIBRARY}
++ SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LIBNSL} ${LIBBIND} ${LIBICONV} ${ZLIB_LIBRARIES}
+ ${LIBSOCKET} ${CMAKE_DL_LIBS} ${LIBM} ${LIBPTHREAD})
+ SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBNSL} ${LIBBIND} ${LIBICONV}
+ ${LIBSOCKET} ${CMAKE_DL_LIBS} ${LIBM} ${LIBPTHREAD})
+@@ -307,7 +312,7 @@ IF(NOT WITH_SSL STREQUAL "OFF")
+ ADD_DEFINITIONS(-DHAVE_OPENSSL -DHAVE_TLS)
+ SET(SSL_SOURCES "${CC_SOURCE_DIR}/libmariadb/secure/openssl.c"
+ "${CC_SOURCE_DIR}/libmariadb/secure/openssl_crypt.c")
+- SET(SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
++ SET(SSL_LIBRARIES ${OPENSSL_LIBRARIES})
+ IF(WIN32 AND EXISTS ${OPENSSL_INCLUDE_DIR}/openssl/applink.c)
+ SET(HAVE_OPENSSL_APPLINK_C 1)
+ ENDIF()
+@@ -371,7 +376,12 @@ ENDIF()
+
+ IF(WITH_ICONV)
+ IF(NOT WIN32)
+- INCLUDE(${CC_SOURCE_DIR}/cmake/FindIconv.cmake)
++ find_package(Iconv REQUIRED)
++ include_directories(${Iconv_INCLUDE_DIRS})
++ set(ICONV_LIBRARIES "${Iconv_LIBRARIES}")
++ if(NOT Iconv_IS_BUILT_IN)
++ set(ICONV_EXTERNAL 1)
++ endif()
+ ENDIF()
+ ENDIF()
+
+@@ -431,7 +441,7 @@ ENDIF()
+ INCLUDE(${CC_SOURCE_DIR}/plugins/CMakeLists.txt)
+ ADD_SUBDIRECTORY(include)
+ ADD_SUBDIRECTORY(libmariadb)
+-IF((NOT WIN32) OR CYGWIN)
++IF(1)
+ ADD_SUBDIRECTORY(mariadb_config)
+ ENDIF()
+
+diff --git a/libmariadb/CMakeLists.txt b/libmariadb/CMakeLists.txt
+index 852be8d..61ad0a6 100644
+--- a/libmariadb/CMakeLists.txt
++++ b/libmariadb/CMakeLists.txt
+@@ -293,7 +293,7 @@ SET(MARIADB_NONBLOCK_SYMBOLS
+
+ # handle static plugins
+ SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES} ${LIBMARIADB_PLUGIN_SOURCES})
+-SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBMARIADB_PLUGIN_LIBS} ${ZSTD_LIBRARY} ${ZLIB_LIBRARY})
++SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBMARIADB_PLUGIN_LIBS} ${ZSTD_LIBRARIES} ${ZLIB_LIBRARIES})
+ MESSAGE(STATUS "SYSTEM_LIBS: ${SYSTEM_LIBS}")
+ INCLUDE_DIRECTORIES(${LIBMARIADB_PLUGIN_INCLUDES})
+ ADD_DEFINITIONS(${LIBMARIADB_PLUGIN_DEFS})
+diff --git a/mariadb_config/CMakeLists.txt b/mariadb_config/CMakeLists.txt
+index 4cb0ba9..c15838a 100644
+--- a/mariadb_config/CMakeLists.txt
++++ b/mariadb_config/CMakeLists.txt
+@@ -30,6 +30,22 @@ IF(${rllength} GREATER 0)
+ LIST(REMOVE_DUPLICATES SYSTEM_LIBS)
+ ENDIF()
+
++set(REQUIRES_PRIVATE "" CACHE STRING "")
++list(REMOVE_ITEM SYSTEM_LIBS ${ZLIB_LIBRARIES})
++string(APPEND REQUIRES_PRIVATE " zlib")
++if(LIBM)
++ list(REMOVE_ITEM SYSTEM_LIBS ${LIBM})
++ list(APPEND SYSTEM_LIBS "m")
++endif()
++if(WITH_SSL STREQUAL "OPENSSL")
++ list(REMOVE_ITEM SYSTEM_LIBS ${SSL_LIBRARIES})
++ string(APPEND REQUIRES_PRIVATE " openssl")
++endif()
++if(WITH_ZSTD)
++ list(REMOVE_ITEM SYSTEM_LIBS ${ZSTD_LIBRARIES})
++ string(APPEND REQUIRES_PRIVATE " libzstd")
++endif()
++
+ FOREACH (LIB_NAME ${SYSTEM_LIBS})
+ GET_LIB_NAME(${LIB_NAME} LIB_OUT)
+ SET(extra_dynamic_LDFLAGS "${extra_dynamic_LDFLAGS} ${LIB_OUT}")
+diff --git a/mariadb_config/libmariadb.pc.in b/mariadb_config/libmariadb.pc.in
+index 968181a..3f0410d 100644
+--- a/mariadb_config/libmariadb.pc.in
++++ b/mariadb_config/libmariadb.pc.in
+@@ -16,5 +16,6 @@ Description: MariaDB Connector/C dynamic library
+ Cflags: -I${includedir}
+ Libs: -L${libdir} -lmariadb
+ Libs.private: @extra_dynamic_LDFLAGS@
++Requires.private: @REQUIRES_PRIVATE@
+
+
diff --git a/vcpkg/ports/libmariadb/disable-mariadb_config.diff b/vcpkg/ports/libmariadb/disable-mariadb_config.diff
new file mode 100644
index 0000000..d48bc85
--- /dev/null
+++ b/vcpkg/ports/libmariadb/disable-mariadb_config.diff
@@ -0,0 +1,15 @@
+diff --git a/mariadb_config/CMakeLists.txt b/mariadb_config/CMakeLists.txt
+index 0a32343..4cb0ba9 100644
+--- a/mariadb_config/CMakeLists.txt
++++ b/mariadb_config/CMakeLists.txt
+@@ -58,9 +58,7 @@ ENDIF()
+
+ # Installation
+ #
+-INSTALL(TARGETS mariadb_config
+- DESTINATION "${INSTALL_BINDIR}"
+- COMPONENT Development)
++set_target_properties(mariadb_config PROPERTIES EXCLUDE_FROM_ALL 1) # not portable
+
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libmariadb.pc
+ DESTINATION "${INSTALL_PCDIR}"
diff --git a/vcpkg/ports/libmariadb/library-linkage.diff b/vcpkg/ports/libmariadb/library-linkage.diff
new file mode 100644
index 0000000..696fa7b
--- /dev/null
+++ b/vcpkg/ports/libmariadb/library-linkage.diff
@@ -0,0 +1,61 @@
+diff --git a/libmariadb/CMakeLists.txt b/libmariadb/CMakeLists.txt
+index 61ad0a6..bbad89a 100644
+--- a/libmariadb/CMakeLists.txt
++++ b/libmariadb/CMakeLists.txt
+@@ -494,7 +494,9 @@ IF(WITH_MYSQLCOMPAT)
+ ENDIF()
+ ENDIF()
+
++if(NOT BUILD_SHARED_LIBS)
+ create_symlink(libmariadb${CMAKE_STATIC_LIBRARY_SUFFIX} mariadbclient ${INSTALL_LIBDIR})
++endif()
+
+ SET_TARGET_PROPERTIES(libmariadb PROPERTIES VERSION
+ ${CPACK_PACKAGE_VERSION_MAJOR}
+@@ -502,27 +504,44 @@ SET_TARGET_PROPERTIES(libmariadb PROPERTIES VERSION
+
+ IF(NOT WIN32)
+ SET_TARGET_PROPERTIES(mariadbclient PROPERTIES OUTPUT_NAME "${LIBMARIADB_STATIC_NAME}")
++elseif(MINGW)
++ set_target_properties(libmariadb PROPERTIES IMPORT_PREFIX "")
+ ENDIF()
+
++if(NOT BUILD_SHARED_LIBS)
++set_target_properties(libmariadb PROPERTIES EXCLUDE_FROM_ALL 1)
++target_include_directories(mariadbclient PUBLIC $<INSTALL_INTERFACE:include/mysql>)
+ INSTALL(TARGETS mariadbclient
++ EXPORT unofficial-libmariadb-targets
+ COMPONENT Development
++ ARCHIVE
+ DESTINATION ${INSTALL_LIBDIR})
++else()
++set_target_properties(mariadbclient PROPERTIES EXCLUDE_FROM_ALL 1)
++target_include_directories(libmariadb PUBLIC $<INSTALL_INTERFACE:include/mysql>)
+ IF(WIN32)
+ INSTALL(TARGETS libmariadb
++ EXPORT unofficial-libmariadb-targets
+ COMPONENT SharedLibraries
++ RUNTIME DESTINATION ${INSTALL_BINDIR}
++ LIBRARY DESTINATION ${INSTALL_LIBDIR}
++ ARCHIVE
+ DESTINATION ${INSTALL_LIBDIR})
+ ELSE()
+ # in cmake 3.12+ we can use
+ #INSTALL(TARGETS libmariadb LIBRARY DESTINATION ${INSTALL_LIBDIR}
+ # COMPONENT SharedLibraries NAMELINK_COMPONENT Development)
+ # but as long as we build on CentOS 7 with its cmake 2.8.12.2 we have to use
+-INSTALL(TARGETS libmariadb LIBRARY DESTINATION ${INSTALL_LIBDIR}
++INSTALL(TARGETS libmariadb
++ EXPORT unofficial-libmariadb-targets
++ LIBRARY DESTINATION ${INSTALL_LIBDIR}
+ COMPONENT SharedLibraries NAMELINK_SKIP)
+ INSTALL(TARGETS libmariadb LIBRARY DESTINATION ${INSTALL_LIBDIR}
+ COMPONENT Development NAMELINK_ONLY)
+ ENDIF()
++endif()
+
+-IF(MSVC)
++IF(0)
+ # On Windows, install PDB
+ INSTALL(FILES $<TARGET_PDB_FILE:libmariadb> DESTINATION "${INSTALL_LIBDIR}"
+ CONFIGURATIONS Debug RelWithDebInfo
diff --git a/vcpkg/ports/libmariadb/no-abs-path.diff b/vcpkg/ports/libmariadb/no-abs-path.diff
new file mode 100644
index 0000000..c87a30b
--- /dev/null
+++ b/vcpkg/ports/libmariadb/no-abs-path.diff
@@ -0,0 +1,13 @@
+diff --git a/include/mariadb_version.h.in b/include/mariadb_version.h.in
+index a82dbb7..e9005fa 100644
+--- a/include/mariadb_version.h.in
++++ b/include/mariadb_version.h.in
+@@ -30,7 +30,7 @@
+ #define MARIADB_PACKAGE_VERSION_ID @MARIADB_PACKAGE_VERSION_ID@
+ #define MARIADB_SYSTEM_TYPE "@CMAKE_SYSTEM_NAME@"
+ #define MARIADB_MACHINE_TYPE "@CMAKE_SYSTEM_PROCESSOR@"
+-#define MARIADB_PLUGINDIR "@CMAKE_INSTALL_PREFIX@/@INSTALL_PLUGINDIR@"
++#define MARIADB_PLUGINDIR "../@INSTALL_PLUGINDIR@"
+
+ /* mysqld compile time options */
+ #ifndef MYSQL_CHARSET
diff --git a/vcpkg/ports/libmariadb/portfile.cmake b/vcpkg/ports/libmariadb/portfile.cmake
new file mode 100644
index 0000000..f71ba0b
--- /dev/null
+++ b/vcpkg/ports/libmariadb/portfile.cmake
@@ -0,0 +1,107 @@
+if(EXISTS "${CURRENT_INSTALLED_DIR}/share/libmysql")
+ message(FATAL_ERROR "FATAL ERROR: libmysql and libmariadb are incompatible.")
+endif()
+
+if(VCPKG_TARGET_IS_WINDOWS AND "openssl" IN_LIST FEATURES)
+ message(WARNING "Using OpenSSL instead of schannel.")
+endif()
+
+vcpkg_download_distfile(fp_is_not_const_patch
+ URLS https://github.com/mariadb-corporation/mariadb-connector-c/commit/0ca807a210befe9c159d6b9a2c1d5de8f26869ad.diff?full_index=1
+ FILENAME mariadb-corporation-mariadb-connector-c-fp_is_not_const-0ca807a.diff
+ SHA512 1695ae5408fd54b148315aaa47806371e7db5f0001fc98bc480914aeaa41d48c0841ff64e99266b6c0ea1262ac65983507faf46306d98292c87926f74900fee2
+)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO mariadb-corporation/mariadb-connector-c
+ REF v${VERSION}
+ SHA512 0e06452539fcea4e21c3922b58b7079aa5d467e2ac704fe586fcd83563f69c4e0536d40e0020170f7670320cc71cd9de2a110f3f4c6ed52233aa329c3e495fd5
+ HEAD_REF 3.4
+ PATCHES
+ compiler-flags.diff
+ dependencies.diff
+ disable-mariadb_config.diff
+ library-linkage.diff
+ cmake-export.diff
+ no-abs-path.diff
+ ${fp_is_not_const_patch}
+)
+file(REMOVE_RECURSE
+ "${SOURCE_PATH}/cmake/FindIconv.cmake"
+ "${SOURCE_PATH}/external/zlib"
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ iconv WITH_ICONV
+ zstd WITH_ZSTD
+)
+
+string(TOUPPER "${VCPKG_LIBRARY_LINKAGE}" plugin_type)
+
+set(zstd_plugin_type OFF)
+if("zstd" IN_LIST FEATURES)
+ set(zstd_plugin_type ${plugin_type})
+endif()
+
+if("openssl" IN_LIST FEATURES)
+ set(WITH_SSL OPENSSL)
+else()
+ set(WITH_SSL SCHANNEL)
+endif()
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF
+ -DINSTALL_INCLUDEDIR=include/mysql # legacy port decision
+ -DINSTALL_LIBDIR=lib
+ -DINSTALL_PLUGINDIR=plugins/${PORT}
+ -DWITH_CURL=OFF
+ -DWITH_EXTERNAL_ZLIB=ON
+ -DWITH_SSL=${WITH_SSL}
+ -DWITH_UNIT_TESTS=OFF
+ # plugins/auth
+ -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF
+ -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=${plugin_type}
+ -DCLIENT_PLUGIN_CLIENT_ED25519=DYNAMIC # want ${plugin_type}, but STATIC fails
+ -DCLIENT_PLUGIN_DIALOG=${plugin_type}
+ -DCLIENT_PLUGIN_PARSEC=OFF
+ -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=${plugin_type}
+ -DCLIENT_PLUGIN_MYSQL_OLD_PASSWORD=OFF
+ -DCLIENT_PLUGIN_SHA256_PASSWORD=${plugin_type}
+ # plugins/compress
+ -DCLIENT_PLUGIN_ZSTD=${zstd_plugin_type}
+ # don't add system include dirs
+ -DAUTH_GSSAPI_PLUGIN_TYPE=OFF
+ -DREMOTEIO_PLUGIN_TYPE=OFF
+ MAYBE_UNUSED_VARIABLES
+ AUTH_GSSAPI_PLUGIN_TYPE
+ CLIENT_PLUGIN_AUTH_GSSAPI_CLIENT
+ CLIENT_PLUGIN_PARSEC
+ CLIENT_PLUGIN_ZSTD
+)
+
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-libmariadb)
+vcpkg_fixup_pkgconfig()
+
+set(link_lib " -lmariadb")
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ set(link_lib " -llibmariadb")
+endif()
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ string(APPEND link_lib "client")
+endif()
+if(NOT link_lib STREQUAL " -lmariadb")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libmariadb.pc" " -lmariadb" "${link_lib}")
+ if(NOT VCPKG_BUILD_TYPE)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libmariadb.pc" " -lmariadb" "${link_lib}")
+ endif()
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING.LIB")
diff --git a/vcpkg/ports/libmariadb/vcpkg.json b/vcpkg/ports/libmariadb/vcpkg.json
new file mode 100644
index 0000000..5ffd9a5
--- /dev/null
+++ b/vcpkg/ports/libmariadb/vcpkg.json
@@ -0,0 +1,56 @@
+{
+ "name": "libmariadb",
+ "version-semver": "3.4.7",
+ "description": "MariaDB Connector/C is used to connect C/C++ applications to MariaDB and MySQL databases",
+ "homepage": "https://github.com/mariadb-corporation/mariadb-connector-c",
+ "license": "LGPL-2.1-or-later",
+ "supports": "!uwp & !xbox",
+ "dependencies": [
+ {
+ "name": "libmariadb",
+ "features": [
+ "iconv"
+ ],
+ "platform": "windows"
+ },
+ {
+ "name": "libmariadb",
+ "features": [
+ "openssl"
+ ],
+ "platform": "!windows"
+ },
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "features": {
+ "iconv": {
+ "description": "Enables character set conversion",
+ "dependencies": [
+ {
+ "name": "libiconv",
+ "platform": "!windows"
+ }
+ ]
+ },
+ "openssl": {
+ "description": "Use OpenSSL",
+ "dependencies": [
+ "openssl"
+ ]
+ },
+ "zstd": {
+ "description": "Build zstd compression plugin.",
+ "dependencies": [
+ "zstd"
+ ]
+ }
+ }
+}