diff --git a/ports/userver/001_install_core.patch b/ports/userver/001_install_core.patch new file mode 100644 index 00000000000000..39aa9743f6e82a --- /dev/null +++ b/ports/userver/001_install_core.patch @@ -0,0 +1,14 @@ +--- 590431d7d2-0ee422b08a.clean/core/CMakeLists.txt 2023-09-20 20:12:48.000000000 +0300 ++++ 590431d7d2-0ee422b08a.fixed/core/CMakeLists.txt 2023-10-20 01:10:23.312122188 +0300 +@@ -257,3 +257,11 @@ + ) + add_google_benchmark_tests(${PROJECT_NAME}-benchmark) + endif() ++ ++include(GNUInstallDirs) ++install(TARGETS userver-core ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++) ++install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/ports/userver/portfile.cmake b/ports/userver/portfile.cmake new file mode 100644 index 00000000000000..715f59f47ecc3d --- /dev/null +++ b/ports/userver/portfile.cmake @@ -0,0 +1,134 @@ +# Common Ambient Variables: +# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT} +# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET} +# CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT} +# CURRENT_INSTALLED_DIR = ${VCPKG_ROOT_DIR}\installed\${TRIPLET} +# DOWNLOADS = ${VCPKG_ROOT_DIR}\downloads +# PORT = current port name (zlib, etc) +# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc) +# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic) +# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic) +# VCPKG_ROOT_DIR = +# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm) +# VCPKG_TOOLCHAIN = ON OFF +# TRIPLET_SYSTEM_ARCH = arm x86 x64 +# BUILD_ARCH = "Win32" "x64" "ARM" +# DEBUG_CONFIG = "Debug Static" "Debug Dll" +# RELEASE_CONFIG = "Release Static"" "Release DLL" +# VCPKG_TARGET_IS_WINDOWS +# VCPKG_TARGET_IS_UWP +# VCPKG_TARGET_IS_LINUX +# VCPKG_TARGET_IS_OSX +# VCPKG_TARGET_IS_FREEBSD +# VCPKG_TARGET_IS_ANDROID +# VCPKG_TARGET_IS_MINGW +# VCPKG_TARGET_EXECUTABLE_SUFFIX +# VCPKG_TARGET_STATIC_LIBRARY_SUFFIX +# VCPKG_TARGET_SHARED_LIBRARY_SUFFIX +# +# See additional helpful variables in /docs/maintainers/vcpkg_common_definitions.md + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO userver-framework/userver + REF e1fbef56a94052f37e9fcde7d6fb91590431d7d2 # tag v1.0.0 + SHA512 faac307aaa5299448710b2520edd7954f2a7ef6464d66cedfdb9afa9e2f0de8e1c5dc98544c3d387f5e6a0eeb341b49ffb522649610991ede7ec458e076d4a5a + HEAD_REF develop + PATCHES + 001_install_core.patch +) + +# # Check if one or more features are a part of a package installation. +# # See /docs/maintainers/vcpkg_check_features.md for more details +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES +# tbb WITH_TBB + core USERVER_FEATURE_CORE + mongodb USERVER_FEATURE_MONGODB + postgresql USERVER_FEATURE_POSTGRESQL + redis USERVER_FEATURE_REDIS + clickhouse USERVER_FEATURE_CLICKHOUSE + grpc USERVER_FEATURE_GRPC + rabbitmq USERVER_FEATURE_RABBITMQ + mysql USERVER_FEATURE_MYSQL + utest USERVER_FEATURE_UTEST + cryptopp-blake2 USERVER_FEATURE_CRYPTOPP_BLAKE2 + patch-libpq USERVER_FEATURE_PATCH_LIBPQ + cryptopp-base64-url USERVER_FEATURE_CRYPTOPP_BASE64_URL + redis-hi-malloc USERVER_FEATURE_REDIS_HI_MALLOC + redis-tls USERVER_FEATURE_REDIS_TLS + stacktrace USERVER_FEATURE_STACKTRACE + jemalloc USERVER_FEATURE_JEMALLOC + dwcas USERVER_FEATURE_DWCAS + testsuite USERVER_FEATURE_TESTSUITE + grpc-channelz USERVER_FEATURE_GRPC_CHANNELZ +# INVERTED_FEATURES +# tbb ROCKSDB_IGNORE_PACKAGE_TBB +) + +message(STATUS "USERVER_FEATURE_CORE: ${USERVER_FEATURE_CORE}") +message(STATUS "USERVER_FEATURE_MONGODB: ${USERVER_FEATURE_MONGODB}") +message(STATUS "USERVER_FEATURE_POSTGRESQL: ${USERVER_FEATURE_POSTGRESQL}") +message(STATUS "USERVER_FEATURE_REDIS: ${USERVER_FEATURE_REDIS}") +message(STATUS "USERVER_FEATURE_CLICKHOUSE: ${USERVER_FEATURE_CLICKHOUSE}") +message(STATUS "USERVER_FEATURE_GRPC: ${USERVER_FEATURE_GRPC}") +message(STATUS "USERVER_FEATURE_RABBITMQ: ${USERVER_FEATURE_RABBITMQ}") +message(STATUS "USERVER_FEATURE_MYSQL: ${USERVER_FEATURE_MYSQL}") +message(STATUS "USERVER_FEATURE_UTEST: ${USERVER_FEATURE_UTEST}") +message(STATUS "USERVER_FEATURE_CRYPTOPP_BLAKE2: ${USERVER_FEATURE_CRYPTOPP_BLAKE2}") +message(STATUS "USERVER_FEATURE_PATCH_LIBPQ: ${USERVER_FEATURE_PATCH_LIBPQ}") +message(STATUS "USERVER_FEATURE_CRYPTOPP_BASE64_URL: ${USERVER_FEATURE_CRYPTOPP_BASE64_URL}") +message(STATUS "USERVER_FEATURE_REDIS_HI_MALLOC: ${USERVER_FEATURE_REDIS_HI_MALLOC}") +message(STATUS "USERVER_FEATURE_REDIS_TLS: ${USERVER_FEATURE_REDIS_TLS}") +message(STATUS "USERVER_FEATURE_STACKTRACE: ${USERVER_FEATURE_STACKTRACE}") +message(STATUS "USERVER_FEATURE_JEMALLOC: ${USERVER_FEATURE_JEMALLOC}") +message(STATUS "USERVER_FEATURE_DWCAS: ${USERVER_FEATURE_DWCAS}") +message(STATUS "USERVER_FEATURE_TESTSUITE: ${USERVER_FEATURE_TESTSUITE}") +message(STATUS "USERVER_FEATURE_GRPC_CHANNELZ: ${USERVER_FEATURE_GRPC_CHANNELZ}") +message(STATUS "LibEv_INCLUDE_DIRS: ${CURRENT_INSTALLED_DIR}/include/libev") + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + # OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2 + OPTIONS + -DUSERVER_FEATURE_CORE=${USERVER_FEATURE_CORE} + -DUSERVER_FEATURE_MONGODB=${USERVER_FEATURE_MONGODB} + -DUSERVER_FEATURE_POSTGRESQL=${USERVER_FEATURE_POSTGRESQL} + -DUSERVER_FEATURE_REDIS=${USERVER_FEATURE_REDIS} + -DUSERVER_FEATURE_CLICKHOUSE=${USERVER_FEATURE_CLICKHOUSE} + -DUSERVER_FEATURE_GRPC=${USERVER_FEATURE_GRPC} + -DUSERVER_FEATURE_RABBITMQ=${USERVER_FEATURE_RABBITMQ} + -DUSERVER_FEATURE_MYSQL=${USERVER_FEATURE_MYSQL} + -DUSERVER_FEATURE_UTEST=${USERVER_FEATURE_UTEST} + -DUSERVER_FEATURE_CRYPTOPP_BLAKE2=${USERVER_FEATURE_CRYPTOPP_BLAKE2} + -DUSERVER_FEATURE_PATCH_LIBPQ=${USERVER_FEATURE_PATCH_LIBPQ} + -DUSERVER_FEATURE_CRYPTOPP_BASE64_URL=${USERVER_FEATURE_CRYPTOPP_BASE64_URL} + -DUSERVER_FEATURE_REDIS_HI_MALLOC=${USERVER_FEATURE_REDIS_HI_MALLOC} + -DUSERVER_FEATURE_REDIS_TLS=${USERVER_FEATURE_REDIS_TLS} + -DUSERVER_FEATURE_STACKTRACE=${USERVER_FEATURE_STACKTRACE} + -DUSERVER_FEATURE_JEMALLOC=${USERVER_FEATURE_JEMALLOC} + -DUSERVER_FEATURE_DWCAS=${USERVER_FEATURE_DWCAS} + -DUSERVER_FEATURE_TESTSUITE=${USERVER_FEATURE_TESTSUITE} + -DUSERVER_FEATURE_GRPC_CHANNELZ=${USERVER_FEATURE_GRPC_CHANNELZ} + -DUSERVER_DOWNLOAD_PACKAGES=OFF + -DUSERVER_IS_THE_ROOT_PROJECT=OFF + -DUSERVER_FEATURE_UBOOST_CORO=OFF + -DLibEv_INCLUDE_DIRS_ev_h="${CURRENT_INSTALLED_DIR}/include/libev" + # OPTIONS_RELEASE -DOPTIMIZE=1 + # OPTIONS_DEBUG -DDEBUGGABLE=1 +) + +vcpkg_cmake_install() + +# # Moves all .cmake files from /debug/share/userver/ to /share/userver/ +# # See /docs/maintainers/ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.md for more details +# When you uncomment "vcpkg_cmake_config_fixup()", you need to add the following to "dependencies" vcpkg.json: +#{ +# "name": "vcpkg-cmake-config", +# "host": true +#} +# vcpkg_cmake_config_fixup() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/ports/userver/vcpkg.json b/ports/userver/vcpkg.json new file mode 100644 index 00000000000000..e5d756dc29dab8 --- /dev/null +++ b/ports/userver/vcpkg.json @@ -0,0 +1,53 @@ +{ + "name": "userver", + "version": "1.0.0", + "description": "The C++ Asynchronous Framework", + "homepage": "https://userver.tech/", + "license": "Apache-2.0", + "dependencies": [ + "amqpcpp", + "boost-context", + "boost-core", + "boost-coroutine", + "boost-coroutine2", + "boost-endian", + "boost-filesystem", + "boost-iostreams", + "boost-locale", + "boost-lockfree", + "boost-multiprecision", + "boost-program-options", + "boost-uuid", + "c-ares", + "cctz", + "cryptopp", + { + "name": "curl", + "features": [ + "openssl" + ] + }, + "fmt", + "http-parser", + "libev", + "nghttp2", + "openssl", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + "yaml-cpp" + ], + "features": { + "mongodb": { + "description": "Provide asynchronous driver for MongoDB", + "dependencies": [ + "mongo-cxx-driver" + ] + } + } +}