diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libmariadb | |
Diffstat (limited to 'vcpkg/ports/libmariadb')
| -rw-r--r-- | vcpkg/ports/libmariadb/cmake-export.diff | 27 | ||||
| -rw-r--r-- | vcpkg/ports/libmariadb/compiler-flags.diff | 13 | ||||
| -rw-r--r-- | vcpkg/ports/libmariadb/dependencies.diff | 110 | ||||
| -rw-r--r-- | vcpkg/ports/libmariadb/disable-mariadb_config.diff | 15 | ||||
| -rw-r--r-- | vcpkg/ports/libmariadb/library-linkage.diff | 61 | ||||
| -rw-r--r-- | vcpkg/ports/libmariadb/no-abs-path.diff | 13 | ||||
| -rw-r--r-- | vcpkg/ports/libmariadb/portfile.cmake | 107 | ||||
| -rw-r--r-- | vcpkg/ports/libmariadb/vcpkg.json | 56 |
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" + ] + } + } +} |