[mgclient] add new port (#47699)

This commit is contained in:
toge 2025-10-10 05:49:20 +09:00 committed by GitHub
parent 958592be61
commit 50c0cb48a0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 174 additions and 0 deletions

View File

@ -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
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+ )
target_link_libraries(mgclient-static
PRIVATE
- ${OPENSSL_LIBRARIES} project_options project_c_warnings)
-
+ ${OPENSSL_LIBRARIES})
+ target_compile_options(mgclient-static PRIVATE
+ $<TARGET_PROPERTY:project_options,INTERFACE_COMPILE_OPTIONS>
+ $<TARGET_PROPERTY:project_c_warnings,INTERFACE_COMPILE_OPTIONS>)
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
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+ )
target_link_libraries(mgclient-shared
PRIVATE
- ${OPENSSL_LIBRARIES} project_options project_c_warnings)
-
+ ${OPENSSL_LIBRARIES})
+ target_compile_options(mgclient-shared PRIVATE
+ $<TARGET_PROPERTY:project_options,INTERFACE_COMPILE_OPTIONS>
+ $<TARGET_PROPERTY:project_c_warnings,INTERFACE_COMPILE_OPTIONS>)
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()

View File

@ -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")

24
ports/mgclient/vcpkg.json Normal file
View File

@ -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"
}
}
}

View File

@ -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

View File

@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "330e70cc5a8d26aa962c53ffb33716158bc269e3",
"version": "1.4.5",
"port-version": 0
}
]
}