Skip to content

Commit

Permalink
[WIP][userver] new port
Browse files Browse the repository at this point in the history
  • Loading branch information
podsvirov committed Jan 13, 2025
1 parent 6f29f12 commit 706140f
Show file tree
Hide file tree
Showing 2 changed files with 229 additions and 0 deletions.
135 changes: 135 additions & 0 deletions ports/userver/portfile.cmake
Original file line number Diff line number Diff line change
@@ -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 = <C:\path\to\current\vcpkg>
# 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")
94 changes: 94 additions & 0 deletions ports/userver/vcpkg.json
Original file line number Diff line number Diff line change
@@ -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"
]
}
}
}

0 comments on commit 706140f

Please sign in to comment.