From 50c0cb48a0cf2f6fc5c7b2c0d2bafbe26d0a7ca2 Mon Sep 17 00:00:00 2001 From: toge Date: Fri, 10 Oct 2025 05:49:20 +0900 Subject: [PATCH] [mgclient] add new port (#47699) --- ports/mgclient/export-cmake.patch | 108 ++++++++++++++++++++++++++++++ ports/mgclient/portfile.cmake | 29 ++++++++ ports/mgclient/vcpkg.json | 24 +++++++ versions/baseline.json | 4 ++ versions/m-/mgclient.json | 9 +++ 5 files changed, 174 insertions(+) create mode 100644 ports/mgclient/export-cmake.patch create mode 100644 ports/mgclient/portfile.cmake create mode 100644 ports/mgclient/vcpkg.json create mode 100644 versions/m-/mgclient.json diff --git a/ports/mgclient/export-cmake.patch b/ports/mgclient/export-cmake.patch new file mode 100644 index 0000000000..8811a4fba6 --- /dev/null +++ b/ports/mgclient/export-cmake.patch @@ -0,0 +1,108 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 92426e9..f96152a 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -16,6 +16,8 @@ add_library(project_options INTERFACE) + include(../cmake/Sanitizers.cmake) + enable_sanitizers(project_options) + ++include(GNUInstallDirs) ++ + set(mgclient_src_files + mgallocator.c + mgclient.c +@@ -50,6 +52,7 @@ else() + find_package(OpenSSL REQUIRED) + include(GenerateExportHeader) + ++ if(NOT BUILD_SHARED_LIBS) + add_library(mgclient-static STATIC ${mgclient_src_files}) + + generate_export_header(mgclient-static +@@ -62,18 +65,22 @@ else() + target_include_directories(mgclient-static + PRIVATE + "${PROJECT_SOURCE_DIR}/src" +- PUBLIC +- "${PROJECT_SOURCE_DIR}/include" + "${CMAKE_CURRENT_BINARY_DIR}" +- "${OPENSSL_INCLUDE_DIR}") ++ "${OPENSSL_INCLUDE_DIR}" ++ PUBLIC ++ $ ++ $ ++ ) + target_link_libraries(mgclient-static + PRIVATE +- ${OPENSSL_LIBRARIES} project_options project_c_warnings) +- ++ ${OPENSSL_LIBRARIES}) ++ target_compile_options(mgclient-static PRIVATE ++ $ ++ $) + if(MGCLIENT_ON_WINDOWS) + target_link_libraries(mgclient-static PUBLIC ws2_32 crypt32 gdi32) + endif() +- ++ else() + add_library(mgclient-shared SHARED ${mgclient_src_files}) + + generate_export_header(mgclient-shared +@@ -87,32 +94,44 @@ else() + target_include_directories(mgclient-shared + PRIVATE + "${PROJECT_SOURCE_DIR}/src" +- PUBLIC +- "${PROJECT_SOURCE_DIR}/include" + "${CMAKE_CURRENT_BINARY_DIR}" +- "${OPENSSL_INCLUDE_DIR}") ++ "${OPENSSL_INCLUDE_DIR}" ++ PUBLIC ++ $ ++ $ ++ ) + target_link_libraries(mgclient-shared + PRIVATE +- ${OPENSSL_LIBRARIES} project_options project_c_warnings) +- ++ ${OPENSSL_LIBRARIES}) ++ target_compile_options(mgclient-shared PRIVATE ++ $ ++ $) + if(MGCLIENT_ON_WINDOWS) + target_link_libraries(mgclient-shared PUBLIC ws2_32 crypt32 gdi32) + endif() ++ endif() + +- generate_export_header(mgclient-shared +- BASE_NAME "mgclient" +- EXPORT_FILE_NAME "mgclient-export.h") +- +- include(GNUInstallDirs) +- +- install(TARGETS mgclient-static mgclient-shared ++ if(BUILD_SHARED_LIBS) ++ install(TARGETS mgclient-shared ++ EXPORT unofficial-mgclient-export ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) ++ else() ++ install(TARGETS mgclient-static ++ EXPORT unofficial-mgclient-export + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +- RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}) ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) ++ endif() + install(DIRECTORY + "${PROJECT_SOURCE_DIR}/include/" + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/mgclient-export.h" + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) ++ install(EXPORT unofficial-mgclient-export ++ FILE unofficial-mgclient-config.cmake ++ NAMESPACE unofficial::mgclient:: ++ DESTINATION share/unofficial-mgclient) + endif() diff --git a/ports/mgclient/portfile.cmake b/ports/mgclient/portfile.cmake new file mode 100644 index 0000000000..194f3babee --- /dev/null +++ b/ports/mgclient/portfile.cmake @@ -0,0 +1,29 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO memgraph/mgclient + REF "v${VERSION}" + SHA512 67321e51255c4552a8e9a4ad55a5ed9159b92ecea87f8a667bc817b87289940558f1f1cd0dc5f99bb698739bd5e1b58d9ff3f13c4d61190f27bd009b0055a445 + HEAD_REF master + PATCHES + export-cmake.patch +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS options + FEATURES + cpp BUILD_CPP_BINDINGS +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ${options} + -DBUILD_TESTING=OFF + -DBUILD_TESTING_INTEGRATION=OFF +) + +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-mgclient) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/ports/mgclient/vcpkg.json b/ports/mgclient/vcpkg.json new file mode 100644 index 0000000000..fa7dce93cd --- /dev/null +++ b/ports/mgclient/vcpkg.json @@ -0,0 +1,24 @@ +{ + "name": "mgclient", + "version": "1.4.5", + "description": "C/C++ Memgraph Client ", + "homepage": "https://github.com/memgraph/mgclient", + "license": "Apache-2.0", + "supports": "!android", + "dependencies": [ + "openssl", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "cpp": { + "description": "build header only cpp bindings" + } + } +} diff --git a/versions/baseline.json b/versions/baseline.json index bfd41ea936..a70b2e7f83 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -6316,6 +6316,10 @@ "baseline": "1.35.1", "port-version": 5 }, + "mgclient": { + "baseline": "1.4.5", + "port-version": 0 + }, "mgnlibs": { "baseline": "2019-09-29", "port-version": 2 diff --git a/versions/m-/mgclient.json b/versions/m-/mgclient.json new file mode 100644 index 0000000000..0257dc6673 --- /dev/null +++ b/versions/m-/mgclient.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "330e70cc5a8d26aa962c53ffb33716158bc269e3", + "version": "1.4.5", + "port-version": 0 + } + ] +}