diff --git a/ports/userver/portfile.cmake b/ports/userver/portfile.cmake new file mode 100644 index 00000000000000..e06e9beafb33b8 --- /dev/null +++ b/ports/userver/portfile.cmake @@ -0,0 +1,135 @@ +# 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 ac2c144c53daf004b422cd4cb390f93090dedef2 # tag v2.6 + SHA512 403ca69cfb6fcc15cafe9b9c46db3404c57e346245bd0c96c9f5f53bbcd6842f47d2451a4a7b780b8fa0ae291e29ca115a69af6b2636eed599061c25d09de31b + HEAD_REF develop +# PATCHES +# 000_xxx.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_FEATURE_UBOOST_CORO=OFF + -DUSERVER_CHECK_PACKAGE_VERSIONS=OFF + -DUSERVER_INSTALL=ON + -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..c049968de28ef4 --- /dev/null +++ b/ports/userver/vcpkg.json @@ -0,0 +1,94 @@ +{ + "name": "userver", + "version": "2.6", + "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-stacktrace", + "boost-uuid", + "c-ares", + "cctz", + { + "name": "curl", + "features": [ + "openssl" + ] + }, + "fmt", + "gtest", + "http-parser", + "libev", + "nghttp2", + "openssl", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + "yaml-cpp" + ], + "default-features": [ + "cryptopp-base64-url" + ], + "features": { + "cryptopp-base64-url": { + "description": "Provide wrappers for Base64 URL decoding and encoding algorithms of crypto++", + "dependencies": [ + "cryptopp" + ] + }, + "postgresql": { + "description": "Provide asynchronous driver for PostgreSQL", + "dependencies": [ + "libpq" + ] + }, + "redis": { + "description": "Provide asynchronous driver for Redis", + "dependencies": [ + "boost-crc", + "boost-signals2", + "hiredis" + ] + }, + "redis-tls": { + "description": "SSL/TLS support for Redis driver", + "dependencies": [ + { + "name": "hiredis", + "features": [ + "ssl" + ] + }, + { + "name": "userver", + "features": [ + "redis" + ] + } + ] + }, + "utest": { + "description": "Provide 'utest' and 'ubench' for gtest and gbenchmark integration", + "dependencies": [ + "benchmark" + ] + } + } +}