diff --git a/.cmake-format.py b/.cmake-format.py new file mode 100644 index 000000000000..85f3d6ced34b --- /dev/null +++ b/.cmake-format.py @@ -0,0 +1,110 @@ +# ---------------------------------- +# Options affecting listfile parsing +# ---------------------------------- +with section("parse"): + + # Specify structure for custom cmake functions + # pargs - positional arguments + # kwargs - keyword arguments + additional_commands = { + "userver_module": { + "pargs": 1, + "kwargs": { + "SOURCE_DIR": "*", + "LINK_LIBRARIES": "*", + "LINK_LIBRARIES_PRIVATE": "*", + "UTEST_SOURCES": "*", + "UTEST_DIRS": "*", + "UTEST_LINK_LIBRARIES": "*", + "INCLUDE_DIRS": "*", + "DBTEST_SOURCES": "*", + "DBTEST_DATABASES": "*", + "DBTEST_DIRS": "*", + "DBTEST_ENV": "*", + "DBTEST_LINK_LIBRARIES": "*", + "UBENCH_DIRS": "*", + "UBENCH_DATABASES": "*", + "UBENCH_SOURCES": "*", + "UBENCH_LINK_LIBRARIES": "*", + "UBENCH_ENV": "*", + "POSTGRES_TEST_DSN": "*", + + }, + "flags": ["NO_INSTALL"], + }, + "_userver_directory_install": { + "kwargs": { + "COMPONENT": "*", + "DIRECTORY": "*", + "PROGRAMS": "*", + "FILES": "*", + "DESTINATION": "*", + }, + }, + "userver_target_generate_openapi_client": { + "pargs": 1, + "kwargs": { + "NAME": "*", + "OUTPUT_DIR": "*", + "SCHEMAS": "*", + "UTEST_LINK_LIBRARIES": "*", + }, + }, + "userver_target_generate_chaotic": { + "pargs": 1, + "kwargs": { + "ARGS": "*", + "FORMAT": "*", + "OUTPUT_DIR": "*", + "SCHEMAS": "*", + "RELATIVE_TO": "*", + }, + "flags": ["UNIQUE"], + }, + "userver_venv_setup": { + "kwargs": { + "NAME": "*", + "PYTHON_OUTPUT_VAR": "*", + "REQUIREMENTS": "*", + }, + "flags": ["UNIQUE"], + }, + "userver_add_grpc_library": { + "pargs": 1, + "kwargs": { + "PROTOS": "*", + "INCLUDE_DIRECTORIES": "*", + }, + }, + } + +# ----------------------------- +# Options affecting formatting. +# ----------------------------- +with section("format"): + + # Disable formatting entirely, making cmake-format a no-op + disable = False + + # How wide to allow formatted cmake files + line_width = 120 + + # How many spaces to tab for indent + tab_size = 4 + + # If true, lines are indented using tab characters (utf-8 0x09) instead of + # space characters (utf-8 0x20). In cases where the layout would + # require a fractional tab character, the behavior of the fractional + # indentation is governed by + use_tabchars = False + + # If is True, then the value of this variable indicates how + # fractional indentions are handled during whitespace replacement. If set to + # 'use-space', fractional indentation is left as spaces (utf-8 0x20). If set + # to `round-up` fractional indentation is replaced with a single tab character + # (utf-8 0x09) effectively shifting the column to the next tabstop + fractional_tab_policy = "use-space" + + # If a statement is wrapped to more than one line, than dangle the closing + # parenthesis on its own line. + dangle_parens = True diff --git a/CMakeLists.txt b/CMakeLists.txt index 133eb5220671..8345c6e99c3b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.14) cmake_policy(SET CMP0025 NEW) if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.15") - cmake_policy(SET CMP0093 NEW) + cmake_policy(SET CMP0093 NEW) endif() set(CMAKE_POLICY_DEFAULT_CMP0028 NEW) set(CMAKE_POLICY_DEFAULT_CMP0048 NEW) @@ -14,13 +14,9 @@ project(userver) set(USERVER_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}") -option( - USERVER_INSTALL - "Prepare build of userver to install in system" - OFF -) +option(USERVER_INSTALL "Prepare build of userver to install in system" OFF) if(CMAKE_VERSION GREATER_EQUAL 3.31) - cmake_policy(SET CMP0177 NEW) + cmake_policy(SET CMP0177 NEW) endif() set(USERVER_AVAILABLE_COMPONENTS universal) @@ -31,99 +27,93 @@ option(USERVER_FEATURE_CHAOTIC_EXPERIMENTAL "Provide chaotic-codegen for openapi set(USERVER_BUILD_PLATFORM_X86 OFF) if(CMAKE_SYSTEM_PROCESSOR MATCHES "^x86") - set(USERVER_BUILD_PLATFORM_X86 ${USERVER_FEATURE_CORE}) + set(USERVER_BUILD_PLATFORM_X86 ${USERVER_FEATURE_CORE}) endif() function(_require_userver_core FEATURE) - if (NOT USERVER_FEATURE_CORE) - message(FATAL_ERROR "'${FEATURE}' requires 'USERVER_FEATURE_CORE=ON'") - endif() + if(NOT USERVER_FEATURE_CORE) + message(FATAL_ERROR "'${FEATURE}' requires 'USERVER_FEATURE_CORE=ON'") + endif() endfunction() option(USERVER_FEATURE_UTEST "Provide 'utest' and 'ubench' for gtest and gbenchmark integration" ON) -if (USERVER_FEATURE_UTEST) - message(STATUS "Building utest with gtest and ubench with gbench") +if(USERVER_FEATURE_UTEST) + message(STATUS "Building utest with gtest and ubench with gbench") endif() -option( - USERVER_BUILD_TESTS - "Build unit tests, functional tests and benchmarks for userver itself" - OFF -) +option(USERVER_BUILD_TESTS "Build unit tests, functional tests and benchmarks for userver itself" OFF) option(USERVER_BUILD_SAMPLES "Build userver samples" OFF) if(USERVER_BUILD_TESTS AND NOT USERVER_FEATURE_UTEST) - message(FATAL_ERROR "Running unit tests for userver requires utest, disabling it is meaningless") + message(FATAL_ERROR "Running unit tests for userver requires utest, disabling it is meaningless") endif() if(USERVER_INSTALL AND (USERVER_BUILD_TESTS OR USERVER_BUILD_SAMPLES)) - message( - FATAL_ERROR - "For USERVER_INSTALL, please turn off USERVER_BUILD_TESTS and USERVER_BUILD_SAMPLES " - "to avoid accidentally installing them" - ) + message(FATAL_ERROR "For USERVER_INSTALL, please turn off USERVER_BUILD_TESTS and USERVER_BUILD_SAMPLES " + "to avoid accidentally installing them" + ) endif() -option( - USERVER_BUILD_ALL_COMPONENTS - "\ +option(USERVER_BUILD_ALL_COMPONENTS "\ Build all libraries except for those explicitly turned off by 'USERVER_FEATURE_*'\ -and except for libraries disabled for the current platform" - OFF +and except for libraries disabled for the current platform" OFF ) set(USERVER_LIB_ENABLED_DEFAULT OFF) if(USERVER_FEATURE_CORE AND USERVER_BUILD_ALL_COMPONENTS) - set(USERVER_LIB_ENABLED_DEFAULT ON) + set(USERVER_LIB_ENABLED_DEFAULT ON) endif() set(USERVER_MONGODB_DEFAULT OFF) -if(USERVER_FEATURE_CORE AND USERVER_BUILD_ALL_COMPONENTS AND NOT CMAKE_SYSTEM_NAME MATCHES "BSD") - set(USERVER_MONGODB_DEFAULT ON) +if(USERVER_FEATURE_CORE + AND USERVER_BUILD_ALL_COMPONENTS + AND NOT CMAKE_SYSTEM_NAME MATCHES "BSD" +) + set(USERVER_MONGODB_DEFAULT ON) endif() set(USERVER_YDB_DEFAULT OFF) -if(USERVER_FEATURE_CORE AND USERVER_BUILD_ALL_COMPONENTS AND - DEFINED CMAKE_CXX_STANDARD AND CMAKE_CXX_STANDARD GREATER_EQUAL 20 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(USERVER_YDB_DEFAULT ON) +if(USERVER_FEATURE_CORE + AND USERVER_BUILD_ALL_COMPONENTS + AND DEFINED CMAKE_CXX_STANDARD + AND CMAKE_CXX_STANDARD GREATER_EQUAL 20 + AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang" +) + set(USERVER_YDB_DEFAULT ON) endif() option(USERVER_CONAN "Build with Conan packages" "${CONAN_EXPORTED}") -option( - USERVER_DOWNLOAD_PACKAGES - "Download missing third party packages and use the downloaded versions" - ON -) -option( - USERVER_FORCE_DOWNLOAD_PACKAGES - "Download all possible third party packages even if a system package is available" - OFF +option(USERVER_DOWNLOAD_PACKAGES "Download missing third party packages and use the downloaded versions" ON) +option(USERVER_FORCE_DOWNLOAD_PACKAGES + "Download all possible third party packages even if a system package is available" OFF ) option(USERVER_FEATURE_CRYPTOPP_BLAKE2 "Provide wrappers for blake2 algorithms of crypto++" ON) -if (NOT USERVER_FEATURE_CRYPTOPP_BLAKE2) - add_compile_definitions("USERVER_NO_CRYPTOPP_BLAKE2=1") +if(NOT USERVER_FEATURE_CRYPTOPP_BLAKE2) + add_compile_definitions("USERVER_NO_CRYPTOPP_BLAKE2=1") endif() -option(USERVER_FEATURE_CRYPTOPP_BASE64_URL "Provide wrappers for Base64 URL decoding and encoding algorithms of crypto++" ON) -if (NOT USERVER_FEATURE_CRYPTOPP_BASE64_URL) - add_compile_definitions("USERVER_NO_CRYPTOPP_BASE64_URL=1") +option(USERVER_FEATURE_CRYPTOPP_BASE64_URL + "Provide wrappers for Base64 URL decoding and encoding algorithms of crypto++" ON +) +if(NOT USERVER_FEATURE_CRYPTOPP_BASE64_URL) + add_compile_definitions("USERVER_NO_CRYPTOPP_BASE64_URL=1") endif() if(CMAKE_SYSTEM_NAME MATCHES "BSD") - set(JEMALLOC_DEFAULT OFF) + set(JEMALLOC_DEFAULT OFF) else() - set(JEMALLOC_DEFAULT ON) + set(JEMALLOC_DEFAULT ON) endif() option(USERVER_FEATURE_JEMALLOC "Enable linkage with jemalloc memory allocator" ${JEMALLOC_DEFAULT}) option(USERVER_DISABLE_PHDR_CACHE "Disable caching of dl_phdr_info items, which interferes with dlopen" OFF) set(USERVER_DISABLE_RSEQ_DEFAULT ON) -if (USERVER_BUILD_PLATFORM_X86 AND CMAKE_SYSTEM_NAME MATCHES "Linux") - set(USERVER_DISABLE_RSEQ_DEFAULT OFF) - message(STATUS "rseq-based acceleration is enabled by default") +if(USERVER_BUILD_PLATFORM_X86 AND CMAKE_SYSTEM_NAME MATCHES "Linux") + set(USERVER_DISABLE_RSEQ_DEFAULT OFF) + message(STATUS "rseq-based acceleration is enabled by default") endif() option(USERVER_DISABLE_RSEQ_ACCELERATION "Disable rseq-based optimizations" ${USERVER_DISABLE_RSEQ_DEFAULT}) @@ -145,24 +135,27 @@ set(CMAKE_DEBUG_POSTFIX d) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") if(USERVER_CONAN AND NOT DEFINED CMAKE_FIND_PACKAGE_PREFER_CONFIG) - set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) + set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) endif() set(USERVER_USE_STATIC_LIBS_DEFAULT OFF) if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0) - set(USERVER_USE_STATIC_LIBS_DEFAULT ON) + set(USERVER_USE_STATIC_LIBS_DEFAULT ON) endif() -option(USERVER_USE_STATIC_LIBS "Tries to find all dependencies as static libraries" "${USERVER_USE_STATIC_LIBS_DEFAULT}") +option(USERVER_USE_STATIC_LIBS "Tries to find all dependencies as static libraries" + "${USERVER_USE_STATIC_LIBS_DEFAULT}" +) if(USERVER_USE_STATIC_LIBS) - if(USERVER_USE_STATIC_LIBS_DEFAULT) - set(_use_static_log_level STATUS) - else() - set(_use_static_log_level WARNING) - endif() - message( - ${_use_static_log_level} - "USERVER_USE_STATIC_LIBS turned ON, prioritized to find static libraries. Not all dependencies may be taken into account and linkage may be broken") + if(USERVER_USE_STATIC_LIBS_DEFAULT) + set(_use_static_log_level STATUS) + else() + set(_use_static_log_level WARNING) + endif() + message( + ${_use_static_log_level} + "USERVER_USE_STATIC_LIBS turned ON, prioritized to find static libraries. Not all dependencies may be taken into account and linkage may be broken" + ) endif() include(UserverPreferStaticLibs) @@ -173,7 +166,7 @@ include(PrepareInstall) include(UserverModule) if(USERVER_INSTALL) - include(GNUInstallDirs) + include(GNUInstallDirs) endif() include(ModuleHelpers) @@ -185,125 +178,128 @@ include(UserverTestsuite) include(CheckCompileFlags) include(CMakePackageConfigHelpers) -set(USERVER_THIRD_PARTY_DIRS ${USERVER_ROOT_DIR}/third_party CACHE INTERNAL "") +set(USERVER_THIRD_PARTY_DIRS + ${USERVER_ROOT_DIR}/third_party + CACHE INTERNAL "" +) init_debian_depends() include(SetupGTest) -if (USERVER_FEATURE_GRPC) - include(SetupProtobuf) +if(USERVER_FEATURE_GRPC) + include(SetupProtobuf) endif() -if (USERVER_BUILD_TESTS) - include(testsuite/SetupUserverTestsuiteEnv.cmake) - add_subdirectory(testsuite) +if(USERVER_BUILD_TESTS) + include(testsuite/SetupUserverTestsuiteEnv.cmake) + add_subdirectory(testsuite) endif() add_subdirectory(universal) -if (USERVER_FEATURE_CORE) - add_subdirectory(core) - list(APPEND USERVER_AVAILABLE_COMPONENTS core) +if(USERVER_FEATURE_CORE) + add_subdirectory(core) + list(APPEND USERVER_AVAILABLE_COMPONENTS core) endif() -if (USERVER_FEATURE_CHAOTIC) - add_subdirectory(chaotic) - list(APPEND USERVER_AVAILABLE_COMPONENTS chaotic) +if(USERVER_FEATURE_CHAOTIC) + add_subdirectory(chaotic) + list(APPEND USERVER_AVAILABLE_COMPONENTS chaotic) - if(USERVER_FEATURE_CHAOTIC_EXPERIMENTAL) - _require_userver_core(USERVER_FEATURE_CHAOTIC_EXPERIMENTAL) - add_subdirectory(chaotic-openapi) - list(APPEND USERVER_AVAILABLE_COMPONENTS chaotic-openapi) - endif() + if(USERVER_FEATURE_CHAOTIC_EXPERIMENTAL) + _require_userver_core(USERVER_FEATURE_CHAOTIC_EXPERIMENTAL) + add_subdirectory(chaotic-openapi) + list(APPEND USERVER_AVAILABLE_COMPONENTS chaotic-openapi) + endif() endif() -if (USERVER_FEATURE_MONGODB) - _require_userver_core("USERVER_FEATURE_MONGODB") - add_subdirectory(mongo) - list(APPEND USERVER_AVAILABLE_COMPONENTS mongo) +if(USERVER_FEATURE_MONGODB) + _require_userver_core("USERVER_FEATURE_MONGODB") + add_subdirectory(mongo) + list(APPEND USERVER_AVAILABLE_COMPONENTS mongo) endif() -if (USERVER_FEATURE_POSTGRESQL) - _require_userver_core("USERVER_FEATURE_POSTGRESQL") - add_subdirectory(postgresql) - list(APPEND USERVER_AVAILABLE_COMPONENTS postgresql) +if(USERVER_FEATURE_POSTGRESQL) + _require_userver_core("USERVER_FEATURE_POSTGRESQL") + add_subdirectory(postgresql) + list(APPEND USERVER_AVAILABLE_COMPONENTS postgresql) endif() -if (USERVER_FEATURE_REDIS) - _require_userver_core("USERVER_FEATURE_REDIS") - add_subdirectory(redis) - list(APPEND USERVER_AVAILABLE_COMPONENTS redis) +if(USERVER_FEATURE_REDIS) + _require_userver_core("USERVER_FEATURE_REDIS") + add_subdirectory(redis) + list(APPEND USERVER_AVAILABLE_COMPONENTS redis) endif() -if (USERVER_FEATURE_GRPC) - _require_userver_core("USERVER_FEATURE_GRPC") - add_subdirectory(grpc) - list(APPEND USERVER_AVAILABLE_COMPONENTS grpc) +if(USERVER_FEATURE_GRPC) + _require_userver_core("USERVER_FEATURE_GRPC") + add_subdirectory(grpc) + list(APPEND USERVER_AVAILABLE_COMPONENTS grpc) endif() -if (USERVER_FEATURE_OTLP) - if (NOT USERVER_FEATURE_GRPC) - message(FATAL_ERROR "'USERVER_FEATURE_OTLP' requires 'USERVER_FEATURE_GRPC=ON'") - endif() - _require_userver_core("USERVER_FEATURE_OTLP") - add_subdirectory(otlp) - list(APPEND USERVER_AVAILABLE_COMPONENTS otlp) +if(USERVER_FEATURE_OTLP) + if(NOT USERVER_FEATURE_GRPC) + message(FATAL_ERROR "'USERVER_FEATURE_OTLP' requires 'USERVER_FEATURE_GRPC=ON'") + endif() + _require_userver_core("USERVER_FEATURE_OTLP") + add_subdirectory(otlp) + list(APPEND USERVER_AVAILABLE_COMPONENTS otlp) endif() -if (USERVER_FEATURE_CLICKHOUSE) - _require_userver_core("USERVER_FEATURE_CLICKHOUSE") - add_subdirectory(clickhouse) - list(APPEND USERVER_AVAILABLE_COMPONENTS clickhouse) +if(USERVER_FEATURE_CLICKHOUSE) + _require_userver_core("USERVER_FEATURE_CLICKHOUSE") + add_subdirectory(clickhouse) + list(APPEND USERVER_AVAILABLE_COMPONENTS clickhouse) endif() -if (USERVER_FEATURE_KAFKA) - _require_userver_core("USERVER_FEATURE_KAFKA") - add_subdirectory(kafka) - list(APPEND USERVER_AVAILABLE_COMPONENTS kafka) +if(USERVER_FEATURE_KAFKA) + _require_userver_core("USERVER_FEATURE_KAFKA") + add_subdirectory(kafka) + list(APPEND USERVER_AVAILABLE_COMPONENTS kafka) endif() -if (USERVER_FEATURE_RABBITMQ) - _require_userver_core("USERVER_FEATURE_RABBITMQ") - add_subdirectory(rabbitmq) - list(APPEND USERVER_AVAILABLE_COMPONENTS rabbitmq) +if(USERVER_FEATURE_RABBITMQ) + _require_userver_core("USERVER_FEATURE_RABBITMQ") + add_subdirectory(rabbitmq) + list(APPEND USERVER_AVAILABLE_COMPONENTS rabbitmq) endif() -if (USERVER_FEATURE_MYSQL) - _require_userver_core("USERVER_FEATURE_MYSQL") - add_subdirectory(mysql) - list(APPEND USERVER_AVAILABLE_COMPONENTS mysql) +if(USERVER_FEATURE_MYSQL) + _require_userver_core("USERVER_FEATURE_MYSQL") + add_subdirectory(mysql) + list(APPEND USERVER_AVAILABLE_COMPONENTS mysql) endif() -if (USERVER_FEATURE_ROCKS) - _require_userver_core("USERVER_FEATURE_ROCKS") - add_subdirectory(rocks) +if(USERVER_FEATURE_ROCKS) + _require_userver_core("USERVER_FEATURE_ROCKS") + add_subdirectory(rocks) endif() -if (USERVER_FEATURE_YDB) - _require_userver_core("USERVER_FEATURE_YDB") - add_subdirectory(ydb) - list(APPEND USERVER_AVAILABLE_COMPONENTS ydb) +if(USERVER_FEATURE_YDB) + _require_userver_core("USERVER_FEATURE_YDB") + add_subdirectory(ydb) + list(APPEND USERVER_AVAILABLE_COMPONENTS ydb) endif() add_subdirectory(libraries) -if (USERVER_BUILD_TESTS) - add_subdirectory(scripts/gdb/tests) +if(USERVER_BUILD_TESTS) + add_subdirectory(scripts/gdb/tests) endif() _userver_export_targets() _userver_make_install_config() -if (USERVER_BUILD_SAMPLES AND USERVER_FEATURE_CORE) - add_subdirectory(samples) +if(USERVER_BUILD_SAMPLES AND USERVER_FEATURE_CORE) + add_subdirectory(samples) endif() -if (USERVER_BUILD_TESTS AND USERVER_FEATURE_CORE) - add_subdirectory(tools) +if(USERVER_BUILD_TESTS AND USERVER_FEATURE_CORE) + add_subdirectory(tools) endif() if(USERVER_INSTALL) - include(cmake/UserverPack.cmake) + include(cmake/UserverPack.cmake) endif() _userver_print_features_list() diff --git a/chaotic-openapi/CMakeLists.txt b/chaotic-openapi/CMakeLists.txt index 69748f5693d2..789b772acd7c 100644 --- a/chaotic-openapi/CMakeLists.txt +++ b/chaotic-openapi/CMakeLists.txt @@ -2,39 +2,26 @@ project(userver-chaotic-openapi CXX) include(ChaoticGen) -userver_module(chaotic-openapi +userver_module( + chaotic-openapi SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES userver-core userver-chaotic - UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" UTEST_LINK_LIBRARIES userver-core userver-chaotic ) if(USERVER_BUILD_TESTS) - # userver_venv_setup( - # NAME userver-chaotic-tests - # PYTHON_OUTPUT_VAR USERVER_CHAOTIC_PYTEST_PYTHON_BINARY - # REQUIREMENTS - # "${USERVER_ROOT_DIR}/scripts/chaotic/requirements.txt" - # "${USERVER_ROOT_DIR}/testsuite/requirements.txt" - # UNIQUE - # ) - # add_test( - # NAME chaotic-tests-pytest - # COMMAND - # env "PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR}" - # "${USERVER_CHAOTIC_PYTEST_PYTHON_BINARY}" -m pytest - # -vvs - # "${CMAKE_CURRENT_SOURCE_DIR}/tests" - # ) + # userver_venv_setup( NAME userver-chaotic-tests PYTHON_OUTPUT_VAR USERVER_CHAOTIC_PYTEST_PYTHON_BINARY REQUIREMENTS + # "${USERVER_ROOT_DIR}/scripts/chaotic/requirements.txt" "${USERVER_ROOT_DIR}/testsuite/requirements.txt" UNIQUE ) + # add_test( NAME chaotic-tests-pytest COMMAND env "PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR}" + # "${USERVER_CHAOTIC_PYTEST_PYTHON_BINARY}" -m pytest -vvs "${CMAKE_CURRENT_SOURCE_DIR}/tests" ) - # add_subdirectory(integration_tests) - add_subdirectory(golden_tests) + # add_subdirectory(integration_tests) + add_subdirectory(golden_tests) endif() -_userver_directory_install(COMPONENT chaotic-openapi - DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}/chaotic_openapi" - DESTINATION - "${CMAKE_INSTALL_LIBDIR}/userver" +_userver_directory_install( + COMPONENT chaotic-openapi + DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/chaotic_openapi" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/userver" ) diff --git a/chaotic-openapi/golden_tests/CMakeLists.txt b/chaotic-openapi/golden_tests/CMakeLists.txt index 5ba19f88ec9f..c7f80ca49104 100644 --- a/chaotic-openapi/golden_tests/CMakeLists.txt +++ b/chaotic-openapi/golden_tests/CMakeLists.txt @@ -4,30 +4,19 @@ include(GoogleTest) include(ChaoticGen) file(GLOB_RECURSE SCHEMAS "${CMAKE_CURRENT_SOURCE_DIR}/schemas/*.yaml") -userver_target_generate_openapi_client(${PROJECT_NAME}-chgen - NAME - test - OUTPUT_DIR - "${CMAKE_CURRENT_BINARY_DIR}/src" - SCHEMAS - ${SCHEMAS} +userver_target_generate_openapi_client( + ${PROJECT_NAME}-chgen + NAME test + OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/src" + SCHEMAS ${SCHEMAS} ) -add_test( - NAME - chaotic-openapi-golden - COMMAND - # Diff returns 0 if files are the same, 1 if they differ - diff -uNrpB - "${CMAKE_CURRENT_SOURCE_DIR}/output" - "${CMAKE_CURRENT_BINARY_DIR}/src" +add_test(NAME chaotic-openapi-golden + COMMAND # Diff returns 0 if files are the same, 1 if they differ + diff -uNrpB "${CMAKE_CURRENT_SOURCE_DIR}/output" "${CMAKE_CURRENT_BINARY_DIR}/src" ) add_custom_target( update-openapi-golden-tests - DEPENDS - ${PROJECT_NAME}-chgen - COMMAND - "${CMAKE_COMMAND}" -E copy_directory - "${CMAKE_CURRENT_BINARY_DIR}/src" - "${CMAKE_CURRENT_SOURCE_DIR}/output" + DEPENDS ${PROJECT_NAME}-chgen + COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_CURRENT_BINARY_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}/output" ) diff --git a/chaotic/CMakeLists.txt b/chaotic/CMakeLists.txt index f183aca1f59a..63a3fd49b94f 100644 --- a/chaotic/CMakeLists.txt +++ b/chaotic/CMakeLists.txt @@ -2,53 +2,46 @@ project(userver-chaotic CXX) include(ChaoticGen) -userver_module(chaotic +userver_module( + chaotic SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" ) if(USERVER_BUILD_TESTS) - userver_venv_setup( - NAME userver-chaotic-tests - PYTHON_OUTPUT_VAR USERVER_CHAOTIC_PYTEST_PYTHON_BINARY - REQUIREMENTS - "${USERVER_ROOT_DIR}/scripts/chaotic/requirements.txt" - "${USERVER_ROOT_DIR}/testsuite/requirements.txt" - UNIQUE - ) - add_test( - NAME chaotic-tests-pytest - COMMAND - env "PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR}" - "${USERVER_CHAOTIC_PYTEST_PYTHON_BINARY}" -m pytest - -vvs - "${CMAKE_CURRENT_SOURCE_DIR}/tests" - ) + userver_venv_setup( + NAME userver-chaotic-tests + PYTHON_OUTPUT_VAR USERVER_CHAOTIC_PYTEST_PYTHON_BINARY + REQUIREMENTS "${USERVER_ROOT_DIR}/scripts/chaotic/requirements.txt" + "${USERVER_ROOT_DIR}/testsuite/requirements.txt" + UNIQUE + ) + add_test(NAME chaotic-tests-pytest + COMMAND env "PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR}" "${USERVER_CHAOTIC_PYTEST_PYTHON_BINARY}" -m pytest + -vvs "${CMAKE_CURRENT_SOURCE_DIR}/tests" + ) - add_subdirectory(integration_tests) - add_subdirectory(golden_tests) + add_subdirectory(integration_tests) + add_subdirectory(golden_tests) endif() -_userver_directory_install(COMPONENT chaotic - DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}/chaotic" - DESTINATION - "${CMAKE_INSTALL_LIBDIR}/userver" +_userver_directory_install( + COMPONENT chaotic + DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/chaotic" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/userver" ) -_userver_directory_install(COMPONENT chaotic - PROGRAMS - "${CMAKE_CURRENT_SOURCE_DIR}/bin/chaotic-gen" - DESTINATION - "${CMAKE_INSTALL_BINDIR}" +_userver_directory_install( + COMPONENT chaotic + PROGRAMS "${CMAKE_CURRENT_SOURCE_DIR}/bin/chaotic-gen" + DESTINATION "${CMAKE_INSTALL_BINDIR}" ) -_userver_directory_install(COMPONENT chaotic - FILES - "${USERVER_ROOT_DIR}/cmake/ChaoticGen.cmake" - "${USERVER_ROOT_DIR}/cmake/install/userver-chaotic-config.cmake" - DESTINATION - "${CMAKE_INSTALL_LIBDIR}/cmake/userver" +_userver_directory_install( + COMPONENT chaotic + FILES "${USERVER_ROOT_DIR}/cmake/ChaoticGen.cmake" "${USERVER_ROOT_DIR}/cmake/install/userver-chaotic-config.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver" ) -_userver_directory_install(COMPONENT chaotic +_userver_directory_install( + COMPONENT chaotic DIRECTORY "${USERVER_ROOT_DIR}/scripts/chaotic" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver" ) diff --git a/chaotic/golden_tests/CMakeLists.txt b/chaotic/golden_tests/CMakeLists.txt index fd8356790a8c..89d52029616f 100644 --- a/chaotic/golden_tests/CMakeLists.txt +++ b/chaotic/golden_tests/CMakeLists.txt @@ -4,37 +4,27 @@ include(GoogleTest) include(ChaoticGen) file(GLOB_RECURSE SCHEMAS "${CMAKE_CURRENT_SOURCE_DIR}/schemas/*.yaml") -userver_target_generate_chaotic(${PROJECT_NAME}-chgen - ARGS - -n "/components/schemas/([^/]*)/=ns::{0}" - -I "${CMAKE_CURRENT_SOURCE_DIR}/include" - -I "${CMAKE_CURRENT_SOURCE_DIR}/../include" - --parse-extra-formats - --generate-serializers +userver_target_generate_chaotic( + ${PROJECT_NAME}-chgen + ARGS -n + "/components/schemas/([^/]*)/=ns::{0}" + -I + "${CMAKE_CURRENT_SOURCE_DIR}/include" + -I + "${CMAKE_CURRENT_SOURCE_DIR}/../include" + --parse-extra-formats + --generate-serializers FORMAT ON - OUTPUT_DIR - "${CMAKE_CURRENT_BINARY_DIR}/src" - SCHEMAS - ${SCHEMAS} - RELATIVE_TO - "${CMAKE_CURRENT_SOURCE_DIR}" + OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/src" + SCHEMAS ${SCHEMAS} + RELATIVE_TO "${CMAKE_CURRENT_SOURCE_DIR}" ) -add_test( - NAME - chaotic-golden - COMMAND - # Diff returns 0 if files are the same, 1 if they differ - diff -uNrpB - "${CMAKE_CURRENT_SOURCE_DIR}/output" - "${CMAKE_CURRENT_BINARY_DIR}/src" +add_test(NAME chaotic-golden COMMAND # Diff returns 0 if files are the same, 1 if they differ + diff -uNrpB "${CMAKE_CURRENT_SOURCE_DIR}/output" "${CMAKE_CURRENT_BINARY_DIR}/src" ) add_custom_target( update-golden-tests - DEPENDS - ${PROJECT_NAME}-chgen - COMMAND - "${CMAKE_COMMAND}" -E copy_directory - "${CMAKE_CURRENT_BINARY_DIR}/src" - "${CMAKE_CURRENT_SOURCE_DIR}/output" + DEPENDS ${PROJECT_NAME}-chgen + COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_CURRENT_BINARY_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}/output" ) diff --git a/chaotic/integration_tests/CMakeLists.txt b/chaotic/integration_tests/CMakeLists.txt index 5b7e41ea18db..a0112d7dacb8 100644 --- a/chaotic/integration_tests/CMakeLists.txt +++ b/chaotic/integration_tests/CMakeLists.txt @@ -6,26 +6,23 @@ include(ChaoticGen) file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*pp) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} - userver-chaotic - userver-universal-utest -) +target_link_libraries(${PROJECT_NAME} userver-chaotic userver-universal-utest) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) file(GLOB_RECURSE SCHEMAS ${CMAKE_CURRENT_SOURCE_DIR}/schemas/*.yaml) -userver_target_generate_chaotic(${PROJECT_NAME}-chgen - ARGS - -n "/definitions/([^/]*)/=ns::{0}" - -I ${CMAKE_CURRENT_SOURCE_DIR}/include - -I ${CMAKE_CURRENT_SOURCE_DIR}/../include - --parse-extra-formats - --generate-serializers - OUTPUT_DIR - ${CMAKE_CURRENT_BINARY_DIR}/src - SCHEMAS - ${SCHEMAS} - RELATIVE_TO - ${CMAKE_CURRENT_SOURCE_DIR} +userver_target_generate_chaotic( + ${PROJECT_NAME}-chgen + ARGS -n + "/definitions/([^/]*)/=ns::{0}" + -I + ${CMAKE_CURRENT_SOURCE_DIR}/include + -I + ${CMAKE_CURRENT_SOURCE_DIR}/../include + --parse-extra-formats + --generate-serializers + OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/src + SCHEMAS ${SCHEMAS} + RELATIVE_TO ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}-chgen) diff --git a/clickhouse/CMakeLists.txt b/clickhouse/CMakeLists.txt index 962831b56ad8..ac2096b7fb45 100644 --- a/clickhouse/CMakeLists.txt +++ b/clickhouse/CMakeLists.txt @@ -1,34 +1,35 @@ project(userver-clickhouse CXX) -if (USERVER_CONAN) - find_package(clickhouse-cpp REQUIRED) +if(USERVER_CONAN) + find_package(clickhouse-cpp REQUIRED) else() - include(SetupClickhouseCPP) + include(SetupClickhouseCPP) endif() -userver_module(clickhouse +userver_module( + clickhouse SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES_PRIVATE clickhouse-cpp-lib::clickhouse-cpp-lib - UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" DBTEST_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/src/*_chtest.cpp" - # HACK: common source between unittest and dbtest targets. - "${CMAKE_CURRENT_SOURCE_DIR}/src/storages/tests/utils_test.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/src/*_chtest.cpp" + # HACK: common source between unittest and dbtest targets. + "${CMAKE_CURRENT_SOURCE_DIR}/src/storages/tests/utils_test.cpp" DBTEST_DATABASES clickhouse ) target_compile_options(${PROJECT_NAME} PUBLIC "-Wno-error=pedantic") - -_userver_directory_install(COMPONENT clickhouse FILES - "${USERVER_ROOT_DIR}/cmake/modules/Findclickhouse-cpp.cmake" +_userver_directory_install( + COMPONENT clickhouse + FILES "${USERVER_ROOT_DIR}/cmake/modules/Findclickhouse-cpp.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules ) -if (USERVER_BUILD_TESTS) - set_tests_properties(${PROJECT_NAME}-dbtest PROPERTIES ENVIRONMENT - "TESTSUITE_CLICKHOUSE_SERVER_START_TIMEOUT=120.0") +if(USERVER_BUILD_TESTS) + set_tests_properties( + ${PROJECT_NAME}-dbtest PROPERTIES ENVIRONMENT "TESTSUITE_CLICKHOUSE_SERVER_START_TIMEOUT=120.0" + ) - add_subdirectory(functional_tests) + add_subdirectory(functional_tests) endif() diff --git a/clickhouse/functional_tests/basic_chaos/CMakeLists.txt b/clickhouse/functional_tests/basic_chaos/CMakeLists.txt index 03af64830580..4caf1793e316 100644 --- a/clickhouse/functional_tests/basic_chaos/CMakeLists.txt +++ b/clickhouse/functional_tests/basic_chaos/CMakeLists.txt @@ -3,6 +3,4 @@ project(userver-clickhouse-tests-basic-chaos CXX) add_executable(${PROJECT_NAME} "clickhouse_service.cpp") target_link_libraries(${PROJECT_NAME} userver-core userver-clickhouse) -userver_chaos_testsuite_add( - ENV "TESTSUITE_CLICKHOUSE_SERVER_START_TIMEOUT=120.0" -) +userver_chaos_testsuite_add(ENV "TESTSUITE_CLICKHOUSE_SERVER_START_TIMEOUT=120.0") diff --git a/clickhouse/functional_tests/metrics/CMakeLists.txt b/clickhouse/functional_tests/metrics/CMakeLists.txt index e92aa0899776..5c55099ad845 100644 --- a/clickhouse/functional_tests/metrics/CMakeLists.txt +++ b/clickhouse/functional_tests/metrics/CMakeLists.txt @@ -3,6 +3,4 @@ project(userver-clickhouse-tests-metrics CXX) add_executable(${PROJECT_NAME} "service.cpp") target_link_libraries(${PROJECT_NAME} userver-clickhouse) -userver_chaos_testsuite_add( - ENV "TESTSUITE_CLICKHOUSE_SERVER_START_TIMEOUT=120.0" -) +userver_chaos_testsuite_add(ENV "TESTSUITE_CLICKHOUSE_SERVER_START_TIMEOUT=120.0") diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index e20f7d75c8d9..09e53c9844ce 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -9,48 +9,34 @@ check_function_exists("pipe2" HAVE_PIPE2) set(BUILD_CONFIG ${CMAKE_CURRENT_BINARY_DIR}/build_config.hpp) if(${CMAKE_SOURCE_DIR}/.git/HEAD IS_NEWER_THAN ${BUILD_CONFIG}) - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/build_config.hpp.in - ${BUILD_CONFIG} - ESCAPE_QUOTES @ONLY) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/build_config.hpp.in ${BUILD_CONFIG} ESCAPE_QUOTES @ONLY) endif() -file(GLOB_RECURSE SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp +file( + GLOB_RECURSE + SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ) -file(GLOB_RECURSE UNIT_TEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp -) +file(GLOB_RECURSE UNIT_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp) list(REMOVE_ITEM SOURCES ${UNIT_TEST_SOURCES}) -file(GLOB_RECURSE BENCH_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/*_benchmark.cpp -) -file(GLOB_RECURSE LIBUBENCH_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/main.cpp -) -list (REMOVE_ITEM SOURCES ${BENCH_SOURCES} ${LIBUBENCH_SOURCES}) +file(GLOB_RECURSE BENCH_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*_benchmark.cpp) +file(GLOB_RECURSE LIBUBENCH_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/main.cpp) +list(REMOVE_ITEM SOURCES ${BENCH_SOURCES} ${LIBUBENCH_SOURCES}) -file(GLOB_RECURSE INTERNAL_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.hpp +file(GLOB_RECURSE INTERNAL_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.hpp ) -list (REMOVE_ITEM SOURCES ${INTERNAL_SOURCES}) +list(REMOVE_ITEM SOURCES ${INTERNAL_SOURCES}) -find_package(Boost REQUIRED CONFIG COMPONENTS - program_options - filesystem - locale - regex - iostreams -) +find_package(Boost REQUIRED CONFIG COMPONENTS program_options filesystem locale regex iostreams) find_package_required(ZLIB "zlib1g-dev") find_package(Iconv REQUIRED) @@ -61,7 +47,7 @@ find_package_required(OpenSSL "libssl-dev") find_package(libnghttp2 REQUIRED) find_package(libev REQUIRED) -if (USERVER_CONAN) +if(USERVER_CONAN) find_package(c-ares REQUIRED) find_package(CURL REQUIRED) find_package(cryptopp REQUIRED) @@ -75,43 +61,44 @@ endif() add_library(${PROJECT_NAME} STATIC ${SOURCES}) -# thread_local usage in Moodycamel is incompatible with userver scheduler -# that migrates coroutines between threads. +# thread_local usage in Moodycamel is incompatible with userver scheduler that migrates coroutines between threads. target_compile_definitions(${PROJECT_NAME} PUBLIC MOODYCAMEL_NO_THREAD_LOCAL) -if (USERVER_DISABLE_PHDR_CACHE) - target_compile_definitions(${PROJECT_NAME} PRIVATE USERVER_DISABLE_PHDR_CACHE) +if(USERVER_DISABLE_PHDR_CACHE) + target_compile_definitions(${PROJECT_NAME} PRIVATE USERVER_DISABLE_PHDR_CACHE) endif() -if (USERVER_DISABLE_RSEQ_ACCELERATION) - target_compile_definitions(${PROJECT_NAME} PRIVATE USERVER_DISABLE_RSEQ_ACCELERATION) +if(USERVER_DISABLE_RSEQ_ACCELERATION) + target_compile_definitions(${PROJECT_NAME} PRIVATE USERVER_DISABLE_RSEQ_ACCELERATION) else() - add_subdirectory(${USERVER_THIRD_PARTY_DIRS}/librseq librseq) - target_link_libraries(${PROJECT_NAME} PRIVATE userver-librseq) + add_subdirectory(${USERVER_THIRD_PARTY_DIRS}/librseq librseq) + target_link_libraries(${PROJECT_NAME} PRIVATE userver-librseq) endif() # https://github.com/jemalloc/jemalloc/issues/820 -if (USERVER_FEATURE_JEMALLOC AND NOT USERVER_SANITIZE AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin") - set_property( - SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/jemalloc.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/server/handlers/jemalloc.cpp - APPEND PROPERTY COMPILE_FLAGS -DUSERVER_FEATURE_JEMALLOC_ENABLED=1 - ) +if(USERVER_FEATURE_JEMALLOC + AND NOT USERVER_SANITIZE + AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin" +) + set_property( + SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/jemalloc.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/server/handlers/jemalloc.cpp + APPEND + PROPERTY COMPILE_FLAGS -DUSERVER_FEATURE_JEMALLOC_ENABLED=1 + ) endif() -target_link_libraries(${PROJECT_NAME} - PUBLIC - userver-universal - Boost::locale - CURL::libcurl - PRIVATE - Boost::filesystem - Boost::program_options - Boost::iostreams - Boost::regex - Iconv::Iconv - OpenSSL::Crypto - OpenSSL::SSL - ZLIB::ZLIB +target_link_libraries( + ${PROJECT_NAME} + PUBLIC userver-universal Boost::locale CURL::libcurl + PRIVATE Boost::filesystem + Boost::program_options + Boost::iostreams + Boost::regex + Iconv::Iconv + OpenSSL::Crypto + OpenSSL::SSL + ZLIB::ZLIB ) add_subdirectory(${USERVER_THIRD_PARTY_DIRS}/llhttp llhttp) @@ -122,202 +109,175 @@ target_link_libraries(${PROJECT_NAME} PRIVATE userver-http-parser userver-llhttp set(USERVER_UBOOST_CORO_DEFAULT ON) if(CMAKE_SYSTEM_NAME MATCHES "Darwin" AND CMAKE_SYSTEM_PROCESSOR MATCHES "arm64") - # Use system Boost.Context and Boost.Coroutine2 with latest patches - # for arm64, otherwise userver will crash at startup. - # - # NOTE: this makes it practically impossible to build userver with sanitizers - # on macOS, because Boost.Context and Boost.Coroutine2 will cause - # an odr violation when linking sanitized usages in userver with stock Debug - # static library. - set(USERVER_UBOOST_CORO_DEFAULT OFF) - if("${Boost_VERSION_STRING}" VERSION_LESS "1.83.0") - message(FATAL_ERROR - "Please update Boost to at least 1.83.0, it contains important fixes " - "for Boost.Context and Boost.Coroutine2") - endif() + # Use system Boost.Context and Boost.Coroutine2 with latest patches for arm64, otherwise userver will crash at + # startup. + # + # NOTE: this makes it practically impossible to build userver with sanitizers on macOS, because Boost.Context and + # Boost.Coroutine2 will cause an odr violation when linking sanitized usages in userver with stock Debug static + # library. + set(USERVER_UBOOST_CORO_DEFAULT OFF) + if("${Boost_VERSION_STRING}" VERSION_LESS "1.83.0") + message(FATAL_ERROR "Please update Boost to at least 1.83.0, it contains important fixes " + "for Boost.Context and Boost.Coroutine2" + ) + endif() endif() -option(USERVER_FEATURE_UBOOST_CORO "Use vendored boost context instead of a system one" "${USERVER_UBOOST_CORO_DEFAULT}") +option(USERVER_FEATURE_UBOOST_CORO "Use vendored boost context instead of a system one" + "${USERVER_UBOOST_CORO_DEFAULT}" +) -if (USERVER_FEATURE_UBOOST_CORO) +if(USERVER_FEATURE_UBOOST_CORO) add_subdirectory(${USERVER_THIRD_PARTY_DIRS}/uboost_coro uboost_coro_build) - target_link_libraries(${PROJECT_NAME} - PRIVATE - userver-uboost-coro - ) - target_include_directories(${PROJECT_NAME} PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/uboost_coro/include - ) + target_link_libraries(${PROJECT_NAME} PRIVATE userver-uboost-coro) + target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/uboost_coro/include) else() - find_package(Boost REQUIRED CONFIG COMPONENTS - context - coroutine - ) - target_link_libraries(${PROJECT_NAME} - PRIVATE - Boost::context - ) - target_include_directories(${PROJECT_NAME} PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/sys_coro/include - ) + find_package(Boost REQUIRED CONFIG COMPONENTS context coroutine) + target_link_libraries(${PROJECT_NAME} PRIVATE Boost::context) + target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/sys_coro/include) endif() -target_link_libraries(${PROJECT_NAME} - PUBLIC - c-ares::cares - PRIVATE - cryptopp::cryptopp - libev::libev - libnghttp2::nghttp2 +target_link_libraries( + ${PROJECT_NAME} + PUBLIC c-ares::cares + PRIVATE cryptopp::cryptopp libev::libev libnghttp2::nghttp2 ) -if (USERVER_CONAN) - target_link_libraries(${PROJECT_NAME} - PUBLIC concurrentqueue::concurrentqueue - ) +if(USERVER_CONAN) + target_link_libraries(${PROJECT_NAME} PUBLIC concurrentqueue::concurrentqueue) else() - target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - $ + target_include_directories( + ${PROJECT_NAME} SYSTEM PUBLIC $ ) - _userver_directory_install(COMPONENT core + _userver_directory_install( + COMPONENT core DIRECTORY ${USERVER_THIRD_PARTY_DIRS}/moodycamel/include/moodycamel DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/userver/third_party ) endif() -if (NOT CMAKE_SYSTEM_NAME MATCHES "Darwin" AND NOT CMAKE_SYSTEM_NAME MATCHES "BSD") - target_link_libraries(${PROJECT_NAME} PUBLIC atomic) +if(NOT CMAKE_SYSTEM_NAME MATCHES "Darwin" AND NOT CMAKE_SYSTEM_NAME MATCHES "BSD") + target_link_libraries(${PROJECT_NAME} PUBLIC atomic) endif() -target_include_directories(${PROJECT_NAME} PUBLIC - $ - $ +target_include_directories( + ${PROJECT_NAME} PUBLIC $ + $ ) -_userver_directory_install(COMPONENT core - DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR}/include - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. +_userver_directory_install( + COMPONENT core + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. ) -_userver_directory_install(COMPONENT core - DIRECTORY - ${USERVER_THIRD_PARTY_DIRS}/pfr/include/boost - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/userver/third_party +_userver_directory_install( + COMPONENT core + DIRECTORY ${USERVER_THIRD_PARTY_DIRS}/pfr/include/boost + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/userver/third_party ) -target_include_directories(${PROJECT_NAME} SYSTEM BEFORE PUBLIC - $ +target_include_directories( + ${PROJECT_NAME} SYSTEM BEFORE PUBLIC $ ) # The bug is only triggered with optimizations enabled -- TAXICOMMON-1729 set_property( - SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src/engine/errno_test.cpp - APPEND PROPERTY COMPILE_FLAGS -O2 + SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src/engine/errno_test.cpp + APPEND + PROPERTY COMPILE_FLAGS -O2 ) -target_include_directories(${PROJECT_NAME} - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/../universal/src/ - ${CMAKE_CURRENT_SOURCE_DIR}/src/ - ${CMAKE_CURRENT_BINARY_DIR} +target_include_directories( + ${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../universal/src/ ${CMAKE_CURRENT_SOURCE_DIR}/src/ + ${CMAKE_CURRENT_BINARY_DIR} ) # Must go below all the target options and definitions. _check_compile_flags(${PROJECT_NAME}) -if (USERVER_FEATURE_UTEST) - add_library(userver-core-internal OBJECT ${INTERNAL_SOURCES}) - target_compile_definitions(userver-core-internal PUBLIC $) - target_include_directories(userver-core-internal PUBLIC - $ - $ - $ - ) - target_link_libraries(userver-core-internal - PUBLIC - ${PROJECT_NAME} - ) - _userver_directory_install(COMPONENT core - DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR}/internal/include - ${CMAKE_CURRENT_SOURCE_DIR}/../universal/internal/include - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. - ) - _userver_install_targets(COMPONENT core TARGETS userver-core-internal) +if(USERVER_FEATURE_UTEST) + add_library(userver-core-internal OBJECT ${INTERNAL_SOURCES}) + target_compile_definitions(userver-core-internal PUBLIC $) + target_include_directories( + userver-core-internal + PUBLIC $ + $ + $ + ) + target_link_libraries(userver-core-internal PUBLIC ${PROJECT_NAME}) + _userver_directory_install( + COMPONENT core + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/internal/include ${CMAKE_CURRENT_SOURCE_DIR}/../universal/internal/include + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. + ) + _userver_install_targets(COMPONENT core TARGETS userver-core-internal) endif() -if (USERVER_FEATURE_UTEST) - add_subdirectory(utest) +if(USERVER_FEATURE_UTEST) + add_subdirectory(utest) endif() -if (USERVER_BUILD_TESTS) +if(USERVER_BUILD_TESTS) add_executable(${PROJECT_NAME}-unittest ${UNIT_TEST_SOURCES}) - target_include_directories (${PROJECT_NAME}-unittest PRIVATE - $ - ) - target_link_libraries(${PROJECT_NAME}-unittest PRIVATE - userver-utest - userver-core-internal - ) + target_include_directories(${PROJECT_NAME}-unittest PRIVATE $) + target_link_libraries(${PROJECT_NAME}-unittest PRIVATE userver-utest userver-core-internal) add_google_tests(${PROJECT_NAME}-unittest) add_subdirectory(functional_tests) endif() -if (USERVER_FEATURE_UTEST) +if(USERVER_FEATURE_UTEST) add_library(userver-ubench ${LIBUBENCH_SOURCES}) target_include_directories(userver-ubench PUBLIC $) target_compile_definitions(userver-ubench PUBLIC $) - target_link_libraries(userver-ubench - PUBLIC - ${PROJECT_NAME} - userver-universal-internal-ubench - PRIVATE - userver-core-internal + target_link_libraries( + userver-ubench + PUBLIC ${PROJECT_NAME} userver-universal-internal-ubench + PRIVATE userver-core-internal ) _userver_install_targets(COMPONENT core TARGETS userver-ubench userver-universal-internal-ubench) endif() -if (USERVER_BUILD_TESTS) +if(USERVER_BUILD_TESTS) add_executable(${PROJECT_NAME}-benchmark ${BENCH_SOURCES}) - target_link_libraries(${PROJECT_NAME}-benchmark - PUBLIC - userver-ubench - PRIVATE - userver-core-internal + target_link_libraries( + ${PROJECT_NAME}-benchmark + PUBLIC userver-ubench + PRIVATE userver-core-internal ) add_google_benchmark_tests(${PROJECT_NAME}-benchmark) endif() _userver_install_targets(COMPONENT core TARGETS ${PROJECT_NAME}) -_userver_directory_install(COMPONENT core FILES - "${USERVER_ROOT_DIR}/cmake/UserverTestsuite.cmake" - "${USERVER_ROOT_DIR}/cmake/install/userver-core-config.cmake" +_userver_directory_install( + COMPONENT core + FILES "${USERVER_ROOT_DIR}/cmake/UserverTestsuite.cmake" + "${USERVER_ROOT_DIR}/cmake/install/userver-core-config.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver ) -_userver_directory_install(COMPONENT core FILES - "${USERVER_ROOT_DIR}/cmake/modules/Findc-ares.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/Findlibnghttp2.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/Findlibev.cmake" +_userver_directory_install( + COMPONENT core + FILES "${USERVER_ROOT_DIR}/cmake/modules/Findc-ares.cmake" "${USERVER_ROOT_DIR}/cmake/modules/Findlibnghttp2.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/Findlibev.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules ) -file(GLOB_RECURSE TESTSUITE_INSTALL_FILES - "${USERVER_ROOT_DIR}/testsuite/*.txt" - "${USERVER_ROOT_DIR}/testsuite/*.py" -) +file(GLOB_RECURSE TESTSUITE_INSTALL_FILES "${USERVER_ROOT_DIR}/testsuite/*.txt" "${USERVER_ROOT_DIR}/testsuite/*.py") -_userver_directory_install(COMPONENT core +_userver_directory_install( + COMPONENT core FILES ${TESTSUITE_INSTALL_FILES} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/testsuite ) -_userver_directory_install(COMPONENT core +_userver_directory_install( + COMPONENT core PROGRAMS "${USERVER_ROOT_DIR}/testsuite/env.in" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/testsuite ) -_userver_directory_install(COMPONENT core DIRECTORY - "${USERVER_ROOT_DIR}/testsuite/pytest_plugins/" +_userver_directory_install( + COMPONENT core + DIRECTORY "${USERVER_ROOT_DIR}/testsuite/pytest_plugins/" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/testsuite/pytest_plugins/ ) diff --git a/core/utest/CMakeLists.txt b/core/utest/CMakeLists.txt index 69ce9ae225d1..ce310d5a3fe1 100644 --- a/core/utest/CMakeLists.txt +++ b/core/utest/CMakeLists.txt @@ -1,50 +1,35 @@ project(userver-utest CXX) -file(GLOB_RECURSE UNIT_TEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp -) -file(GLOB_RECURSE SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp +file(GLOB_RECURSE UNIT_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp) +file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ) list(REMOVE_ITEM SOURCES ${UNIT_TEST_SOURCES}) -add_library(userver-utest STATIC - ${SOURCES} - ${CMAKE_CURRENT_SOURCE_DIR}/main/main.cpp -) -target_compile_definitions(userver-utest PUBLIC - $ -) -target_link_libraries(userver-utest - PUBLIC - userver-core - userver-universal-utest-base - PRIVATE - userver-core-internal - Boost::program_options -) -target_include_directories(userver-utest - PUBLIC - $ - PRIVATE - $ - ${CMAKE_CURRENT_SOURCE_DIR}/src -) -_userver_directory_install(COMPONENT core +add_library(userver-utest STATIC ${SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/main/main.cpp) +target_compile_definitions(userver-utest PUBLIC $) +target_link_libraries( + userver-utest + PUBLIC userver-core userver-universal-utest-base + PRIVATE userver-core-internal Boost::program_options +) +target_include_directories( + userver-utest + PUBLIC $ + PRIVATE $ ${CMAKE_CURRENT_SOURCE_DIR}/src +) +_userver_directory_install( + COMPONENT core DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. ) -_userver_install_targets(COMPONENT core - TARGETS userver-utest -) +_userver_install_targets(COMPONENT core TARGETS userver-utest) if(USERVER_BUILD_TESTS) - add_executable(${PROJECT_NAME}-unittest ${UNIT_TEST_SOURCES}) - target_include_directories(${PROJECT_NAME}-unittest SYSTEM PRIVATE - $ - ) - target_link_libraries(${PROJECT_NAME}-unittest PUBLIC ${PROJECT_NAME}) - add_google_tests(${PROJECT_NAME}-unittest) + add_executable(${PROJECT_NAME}-unittest ${UNIT_TEST_SOURCES}) + target_include_directories( + ${PROJECT_NAME}-unittest SYSTEM PRIVATE $ + ) + target_link_libraries(${PROJECT_NAME}-unittest PUBLIC ${PROJECT_NAME}) + add_google_tests(${PROJECT_NAME}-unittest) endif() diff --git a/grpc/CMakeLists.txt b/grpc/CMakeLists.txt index fe4a0233972f..1c18c4bb7934 100644 --- a/grpc/CMakeLists.txt +++ b/grpc/CMakeLists.txt @@ -4,117 +4,99 @@ include(UserverGrpcTargets) add_library(${PROJECT_NAME}-deps INTERFACE) target_include_directories(${PROJECT_NAME}-deps INTERFACE $) -target_link_libraries(${PROJECT_NAME}-deps INTERFACE - protobuf::libprotobuf gRPC::grpc++ -) +target_link_libraries(${PROJECT_NAME}-deps INTERFACE protobuf::libprotobuf gRPC::grpc++) if(USERVER_CONAN AND "${gRPC_VERSION}" VERSION_GREATER_EQUAL "1.41") - target_link_libraries( - ${PROJECT_NAME}-deps INTERFACE - absl::base absl::synchronization - ) + target_link_libraries(${PROJECT_NAME}-deps INTERFACE absl::base absl::synchronization) endif() if("${gRPC_VERSION}" VERSION_GREATER_EQUAL "1.66") - message( - FATAL_ERROR - "userver currently does not support gRPC >= 1.66 due to a breaking " - "change in grpc-core that requires a fix in userver " - "https://github.com/grpc/grpc/pull/37321/files" - ) + message( + FATAL_ERROR + "userver currently does not support gRPC >= 1.66 due to a breaking " + "change in grpc-core that requires a fix in userver " "https://github.com/grpc/grpc/pull/37321/files" + ) endif() if(NOT TARGET userver-api-common-protos) - include(SetupGoogleProtoApis) + include(SetupGoogleProtoApis) endif() if(NOT TARGET userver-grpc-proto-contrib) - include(SetupGrpcProto) + include(SetupGrpcProto) endif() -file(GLOB_RECURSE SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/include/*pp - ${CMAKE_CURRENT_SOURCE_DIR}/src/*pp) +file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/include/*pp ${CMAKE_CURRENT_SOURCE_DIR}/src/*pp) -file(GLOB_RECURSE UNIT_TEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/tests/*pp - ${CMAKE_CURRENT_SOURCE_DIR}/utest/src/*_test.cpp +file(GLOB_RECURSE UNIT_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tests/*pp + ${CMAKE_CURRENT_SOURCE_DIR}/utest/src/*_test.cpp ) list(REMOVE_ITEM SOURCES ${UNIT_TEST_SOURCES}) -file(GLOB_RECURSE LIBUTEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/utest/include/*pp - ${CMAKE_CURRENT_SOURCE_DIR}/utest/src/*pp +file(GLOB_RECURSE LIBUTEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/utest/include/*pp + ${CMAKE_CURRENT_SOURCE_DIR}/utest/src/*pp ) list(REMOVE_ITEM LIBUTEST_SOURCES ${UNIT_TEST_SOURCES}) list(REMOVE_ITEM SOURCES ${LIBUTEST_SOURCES}) -file(GLOB_RECURSE BENCH_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/*.hpp +file(GLOB_RECURSE BENCH_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/*.hpp ) -if (api-common-proto_USRV_SOURCES) - list(APPEND SOURCES ${api-common-proto_USRV_SOURCES}) +if(api-common-proto_USRV_SOURCES) + list(APPEND SOURCES ${api-common-proto_USRV_SOURCES}) endif() add_library(${PROJECT_NAME}-internal STATIC ${SOURCES}) -if (NOT USERVER_GPRC_BUILD_FROM_SOURCE) - target_compile_definitions(${PROJECT_NAME}-internal PUBLIC GRPC_ASAN_SUPPRESSED GRPC_TSAN_SUPPRESSED) +if(NOT USERVER_GPRC_BUILD_FROM_SOURCE) + target_compile_definitions(${PROJECT_NAME}-internal PUBLIC GRPC_ASAN_SUPPRESSED GRPC_TSAN_SUPPRESSED) endif() set_target_properties(${PROJECT_NAME}-internal PROPERTIES LINKER_LANGUAGE CXX) -target_include_directories(${PROJECT_NAME}-internal - PUBLIC - $ - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/src +target_include_directories( + ${PROJECT_NAME}-internal + PUBLIC $ + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) -_userver_directory_install(COMPONENT grpc - DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. +_userver_directory_install( + COMPONENT grpc + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. ) if(DEFINED api-common-proto_LIBRARY) - target_link_libraries(${PROJECT_NAME}-internal PUBLIC ${api-common-proto_LIBRARY}) - _userver_install_targets(COMPONENT grpc TARGETS ${api-common-proto_LIBRARY}) + target_link_libraries(${PROJECT_NAME}-internal PUBLIC ${api-common-proto_LIBRARY}) + _userver_install_targets(COMPONENT grpc TARGETS ${api-common-proto_LIBRARY}) endif() if(DEFINED grpc-proto_LIBRARY) - target_link_libraries(${PROJECT_NAME}-internal PUBLIC ${grpc-proto_LIBRARY}) - _userver_install_targets(COMPONENT grpc TARGETS ${grpc-proto_LIBRARY}) + target_link_libraries(${PROJECT_NAME}-internal PUBLIC ${grpc-proto_LIBRARY}) + _userver_install_targets(COMPONENT grpc TARGETS ${grpc-proto_LIBRARY}) endif() userver_generate_grpc_files( - PROTOS userver/field_options.proto - GENERATED_INCLUDES proto_include_paths - CPP_FILES generated_proto_sources + PROTOS userver/field_options.proto GENERATED_INCLUDES proto_include_paths CPP_FILES generated_proto_sources ) add_library(${PROJECT_NAME}-proto STATIC ${generated_proto_sources}) target_link_libraries(${PROJECT_NAME}-proto PUBLIC ${PROJECT_NAME}-deps) target_include_directories(${PROJECT_NAME}-proto SYSTEM PUBLIC $) _userver_install_targets(COMPONENT grpc TARGETS ${PROJECT_NAME}-proto) -target_link_libraries(${PROJECT_NAME}-internal PUBLIC - userver-core - ${PROJECT_NAME}-proto -) +target_link_libraries(${PROJECT_NAME}-internal PUBLIC userver-core ${PROJECT_NAME}-proto) set(CHANNELZ_MIN_VERSION "1.17.0") -if(${gRPC_VERSION} VERSION_GREATER_EQUAL ${CHANNELZ_MIN_VERSION} AND - NOT GRPC_USE_SYSTEM_PACKAGE) - set(HAS_CHANNELZ TRUE) +if(${gRPC_VERSION} VERSION_GREATER_EQUAL ${CHANNELZ_MIN_VERSION} AND NOT GRPC_USE_SYSTEM_PACKAGE) + set(HAS_CHANNELZ TRUE) else() - set(HAS_CHANNELZ FALSE) + set(HAS_CHANNELZ FALSE) endif() option(USERVER_FEATURE_GRPC_CHANNELZ "Enable Channelz for gRPC" ${HAS_CHANNELZ}) if(${USERVER_FEATURE_GRPC_CHANNELZ} AND NOT ${HAS_CHANNELZ}) - message(FATAL_ERROR - "For Channelz, install gRPC >= ${CHANNELZ_MIN_VERSION}" - "(found: ${gRPC_VERSION}); gRPC must be installed with CMake bindings") + message(FATAL_ERROR "For Channelz, install gRPC >= ${CHANNELZ_MIN_VERSION}" + "(found: ${gRPC_VERSION}); gRPC must be installed with CMake bindings" + ) endif() -if (USERVER_FEATURE_GRPC_CHANNELZ) +if(USERVER_FEATURE_GRPC_CHANNELZ) message(STATUS "gRPC Channelz enabled") if(GRPC_USE_SYSTEM_PACKAGE) find_package(GrpcChannelz REQUIRED) @@ -125,86 +107,73 @@ if (USERVER_FEATURE_GRPC_CHANNELZ) target_link_libraries(${PROJECT_NAME}-internal PUBLIC gRPC::grpcpp_channelz) else() message(STATUS "gRPC Channelz disabled, install gRPC >= ${CHANNELZ_MIN_VERSION} to enable") - target_compile_definitions(${PROJECT_NAME}-internal PRIVATE - "USERVER_DISABLE_GRPC_CHANNELZ=1" - ) + target_compile_definitions(${PROJECT_NAME}-internal PRIVATE "USERVER_DISABLE_GRPC_CHANNELZ=1") endif() target_link_libraries(${PROJECT_NAME}-internal PUBLIC ${PROJECT_NAME}-deps) _userver_install_targets(COMPONENT grpc TARGETS ${PROJECT_NAME}-internal ${PROJECT_NAME}-deps) -if (Protobuf_VERSION VERSION_GREATER_EQUAL 4.23.0) - target_link_libraries(${PROJECT_NAME}-internal PUBLIC - absl::log_globals - absl::log_internal_globals - absl::log_internal_check_op +if(Protobuf_VERSION VERSION_GREATER_EQUAL 4.23.0) + target_link_libraries( + ${PROJECT_NAME}-internal PUBLIC absl::log_globals absl::log_internal_globals absl::log_internal_check_op ) endif() -if (USERVER_FEATURE_UTEST) - add_library(${PROJECT_NAME}-utest STATIC ${LIBUTEST_SOURCES}) - - target_link_libraries(${PROJECT_NAME}-utest - PUBLIC - ${PROJECT_NAME}-internal - userver::utest - ) - - target_include_directories(${PROJECT_NAME}-utest PUBLIC - $ - ) - target_include_directories(${PROJECT_NAME}-utest PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/src/ - ${CMAKE_CURRENT_SOURCE_DIR}/utest/src/ - ) - _userver_install_targets(COMPONENT grpc TARGETS ${PROJECT_NAME}-utest) - _userver_directory_install(COMPONENT grpc - DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/utest/include - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. - ) +if(USERVER_FEATURE_UTEST) + add_library(${PROJECT_NAME}-utest STATIC ${LIBUTEST_SOURCES}) + + target_link_libraries(${PROJECT_NAME}-utest PUBLIC ${PROJECT_NAME}-internal userver::utest) + + target_include_directories( + ${PROJECT_NAME}-utest PUBLIC $ + ) + target_include_directories( + ${PROJECT_NAME}-utest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/ ${CMAKE_CURRENT_SOURCE_DIR}/utest/src/ + ) + _userver_install_targets(COMPONENT grpc TARGETS ${PROJECT_NAME}-utest) + _userver_directory_install( + COMPONENT grpc + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/utest/include + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. + ) endif() -if (USERVER_BUILD_TESTS) - userver_add_grpc_library(${PROJECT_NAME}-unittest-proto - PROTOS - # Absolute paths are allowed - ${CMAKE_CURRENT_SOURCE_DIR}/proto/tests/unit_test.proto - # As well as paths relative to CMAKE_CURRENT_SOURCE_DIR - tests/messages.proto - tests/protobuf.proto - tests/same_service_and_method_name.proto - tests/global_package.proto - tests/repeating_word_in_package_name.proto - tests/secret_fields.proto - INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/proto - ) - - add_executable(${PROJECT_NAME}-unittest ${UNIT_TEST_SOURCES}) - target_include_directories(${PROJECT_NAME}-unittest PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/src - ${CMAKE_CURRENT_SOURCE_DIR}/tests - ) - target_link_libraries(${PROJECT_NAME}-unittest - PUBLIC - ${PROJECT_NAME}-internal - ${PROJECT_NAME}-utest - PRIVATE - ${PROJECT_NAME}-unittest-proto - ) - add_google_tests(${PROJECT_NAME}-unittest) - - add_executable(${PROJECT_NAME}-benchmark ${BENCH_SOURCES}) - target_link_libraries(${PROJECT_NAME}-benchmark - ${PROJECT_NAME}-internal - userver-ubench - ${PROJECT_NAME}-unittest-proto - ) - target_include_directories(${PROJECT_NAME}-benchmark PRIVATE - $ - ) - add_google_benchmark_tests(${PROJECT_NAME}-benchmark) - - add_subdirectory(functional_tests) +if(USERVER_BUILD_TESTS) + userver_add_grpc_library( + ${PROJECT_NAME}-unittest-proto + PROTOS # Absolute paths are allowed + ${CMAKE_CURRENT_SOURCE_DIR}/proto/tests/unit_test.proto + # As well as paths relative to CMAKE_CURRENT_SOURCE_DIR + tests/messages.proto + tests/protobuf.proto + tests/same_service_and_method_name.proto + tests/global_package.proto + tests/repeating_word_in_package_name.proto + tests/secret_fields.proto + INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/proto + ) + + add_executable(${PROJECT_NAME}-unittest ${UNIT_TEST_SOURCES}) + target_include_directories( + ${PROJECT_NAME}-unittest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/tests + ) + target_link_libraries( + ${PROJECT_NAME}-unittest + PUBLIC ${PROJECT_NAME}-internal ${PROJECT_NAME}-utest + PRIVATE ${PROJECT_NAME}-unittest-proto + ) + add_google_tests(${PROJECT_NAME}-unittest) + + add_executable(${PROJECT_NAME}-benchmark ${BENCH_SOURCES}) + target_link_libraries( + ${PROJECT_NAME}-benchmark ${PROJECT_NAME}-internal userver-ubench ${PROJECT_NAME}-unittest-proto + ) + target_include_directories( + ${PROJECT_NAME}-benchmark PRIVATE $ + ) + add_google_benchmark_tests(${PROJECT_NAME}-benchmark) + + add_subdirectory(functional_tests) endif() add_subdirectory(handlers) @@ -215,16 +184,16 @@ target_link_libraries(${PROJECT_NAME} INTERFACE ${PROJECT_NAME}-internal) _userver_install_targets(COMPONENT grpc TARGETS ${PROJECT_NAME}) -_userver_directory_install(COMPONENT grpc FILES - "${USERVER_ROOT_DIR}/cmake/SetupProtobuf.cmake" - "${USERVER_ROOT_DIR}/cmake/SetupGrpc.cmake" - "${USERVER_ROOT_DIR}/cmake/UserverGrpcTargets.cmake" - "${USERVER_ROOT_DIR}/cmake/install/userver-grpc-config.cmake" - DIRECTORY - "${USERVER_ROOT_DIR}/scripts/grpc" +_userver_directory_install( + COMPONENT grpc + FILES "${USERVER_ROOT_DIR}/cmake/SetupProtobuf.cmake" "${USERVER_ROOT_DIR}/cmake/SetupGrpc.cmake" + "${USERVER_ROOT_DIR}/cmake/UserverGrpcTargets.cmake" + "${USERVER_ROOT_DIR}/cmake/install/userver-grpc-config.cmake" + DIRECTORY "${USERVER_ROOT_DIR}/scripts/grpc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver ) -_userver_directory_install(COMPONENT grpc FILES - "${USERVER_ROOT_DIR}/cmake/modules/FindUserverGrpc.cmake" +_userver_directory_install( + COMPONENT grpc + FILES "${USERVER_ROOT_DIR}/cmake/modules/FindUserverGrpc.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules ) diff --git a/grpc/functional_tests/basic_chaos/CMakeLists.txt b/grpc/functional_tests/basic_chaos/CMakeLists.txt index 89f5247da170..f5b2b044243f 100644 --- a/grpc/functional_tests/basic_chaos/CMakeLists.txt +++ b/grpc/functional_tests/basic_chaos/CMakeLists.txt @@ -6,10 +6,6 @@ include(UserverGrpcTargets) userver_add_grpc_library(${PROJECT_NAME}-proto PROTOS samples/greeter.proto) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}-proto) -userver_chaos_testsuite_add( - TESTS_DIRECTORY tests-grpcserver -) +userver_chaos_testsuite_add(TESTS_DIRECTORY tests-grpcserver) -userver_chaos_testsuite_add( - TESTS_DIRECTORY tests-grpcclient -) +userver_chaos_testsuite_add(TESTS_DIRECTORY tests-grpcclient) diff --git a/grpc/functional_tests/basic_server/CMakeLists.txt b/grpc/functional_tests/basic_server/CMakeLists.txt index 7f8cd081b61e..8d73ddcf0353 100644 --- a/grpc/functional_tests/basic_server/CMakeLists.txt +++ b/grpc/functional_tests/basic_server/CMakeLists.txt @@ -7,6 +7,4 @@ include(UserverGrpcTargets) userver_add_grpc_library(${PROJECT_NAME}-proto PROTOS samples/greeter.proto) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}-proto) -userver_chaos_testsuite_add( - TESTS_DIRECTORY tests-unix-socket -) +userver_chaos_testsuite_add(TESTS_DIRECTORY tests-unix-socket) diff --git a/grpc/functional_tests/metrics/CMakeLists.txt b/grpc/functional_tests/metrics/CMakeLists.txt index 9a8c01109421..7da3e4bff114 100644 --- a/grpc/functional_tests/metrics/CMakeLists.txt +++ b/grpc/functional_tests/metrics/CMakeLists.txt @@ -6,6 +6,4 @@ include(UserverGrpcTargets) userver_add_grpc_library(${PROJECT_NAME}-proto PROTOS samples/greeter.proto) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}-proto) -userver_chaos_testsuite_add( - TESTS_DIRECTORY tests -) +userver_chaos_testsuite_add(TESTS_DIRECTORY tests) diff --git a/grpc/functional_tests/middleware_server/CMakeLists.txt b/grpc/functional_tests/middleware_server/CMakeLists.txt index 038b8b2dc562..54880b890596 100644 --- a/grpc/functional_tests/middleware_server/CMakeLists.txt +++ b/grpc/functional_tests/middleware_server/CMakeLists.txt @@ -8,6 +8,4 @@ include(UserverGrpcTargets) userver_add_grpc_library(${PROJECT_NAME}-proto PROTOS samples/greeter.proto) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}-proto) -userver_chaos_testsuite_add( - TESTS_DIRECTORY tests -) +userver_chaos_testsuite_add(TESTS_DIRECTORY tests) diff --git a/grpc/handlers/CMakeLists.txt b/grpc/handlers/CMakeLists.txt index 71ed2dc45c59..4ba1d39fb06e 100644 --- a/grpc/handlers/CMakeLists.txt +++ b/grpc/handlers/CMakeLists.txt @@ -1,23 +1,18 @@ project(userver-grpc-handlers CXX) -file(GLOB_RECURSE SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/include/*pp - ${CMAKE_CURRENT_SOURCE_DIR}/src/*pp) +file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/include/*pp ${CMAKE_CURRENT_SOURCE_DIR}/src/*pp) -file(GLOB_RECURSE UNIT_TEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/*_test.cpp -) +file(GLOB_RECURSE UNIT_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*_test.cpp) list(REMOVE_ITEM SOURCES ${UNIT_TEST_SOURCES}) add_library(${PROJECT_NAME} STATIC ${SOURCES}) set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX) -target_include_directories(${PROJECT_NAME} - PUBLIC - $ - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/src +target_include_directories( + ${PROJECT_NAME} + PUBLIC $ + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) target_link_libraries(${PROJECT_NAME} PUBLIC userver-core) @@ -26,23 +21,19 @@ target_link_libraries(${PROJECT_NAME} PUBLIC userver-grpc-internal) userver_add_grpc_library(${PROJECT_NAME}-proto PROTOS healthchecking/healthchecking.proto) target_link_libraries(${PROJECT_NAME} PUBLIC ${PROJECT_NAME}-proto) -if (USERVER_BUILD_TESTS) +if(USERVER_BUILD_TESTS) add_executable(${PROJECT_NAME}-unittest ${UNIT_TEST_SOURCES}) - target_include_directories(${PROJECT_NAME}-unittest PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/include - ${CMAKE_CURRENT_SOURCE_DIR}/src - ) - target_link_libraries(${PROJECT_NAME}-unittest - PUBLIC - ${PROJECT_NAME} - userver-utest + target_include_directories( + ${PROJECT_NAME}-unittest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/src ) + target_link_libraries(${PROJECT_NAME}-unittest PUBLIC ${PROJECT_NAME} userver-utest) add_google_tests(${PROJECT_NAME}-unittest) add_subdirectory(functional_tests) endif() _userver_install_targets(COMPONENT grpc TARGETS ${PROJECT_NAME} ${PROJECT_NAME}-proto) -_userver_directory_install(COMPONENT grpc - DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. +_userver_directory_install( + COMPONENT grpc + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. ) diff --git a/grpc/handlers/functional_tests/health/CMakeLists.txt b/grpc/handlers/functional_tests/health/CMakeLists.txt index c8ba1c66d1a5..175110e6eefa 100644 --- a/grpc/handlers/functional_tests/health/CMakeLists.txt +++ b/grpc/handlers/functional_tests/health/CMakeLists.txt @@ -5,6 +5,4 @@ target_link_libraries(${PROJECT_NAME} userver-grpc-handlers) include(UserverGrpcTargets) -userver_chaos_testsuite_add( - PYTHONPATH "${CMAKE_CURRENT_BINARY_DIR}/../../proto" -) +userver_chaos_testsuite_add(PYTHONPATH "${CMAKE_CURRENT_BINARY_DIR}/../../proto") diff --git a/kafka/CMakeLists.txt b/kafka/CMakeLists.txt index 2171472cb540..30826613a4d6 100644 --- a/kafka/CMakeLists.txt +++ b/kafka/CMakeLists.txt @@ -1,52 +1,48 @@ project(userver-kafka CXX) if(USERVER_CONAN) - find_package(RdKafka REQUIRED) + find_package(RdKafka REQUIRED) else() - include(SetupRdKafka) + include(SetupRdKafka) endif() -userver_module(kafka - SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" - LINK_LIBRARIES_PRIVATE RdKafka::rdkafka - DBTEST_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests" - DBTEST_LINK_LIBRARIES userver::kafka-utest - DBTEST_DATABASES kafka - DBTEST_ENV - "TESTSUITE_KAFKA_SERVER_START_TIMEOUT=120.0" - "TESTSUITE_KAFKA_SERVER_HOST=[::1]" - "TESTSUITE_KAFKA_SERVER_PORT=8099" - "TESTSUITE_KAFKA_CONTROLLER_PORT=8100" - "TESTSUITE_KAFKA_CUSTOM_TOPICS=bt:4,lt-1:4,lt-2:4,tt-1:1,tt-2:1,tt-3:1,tt-4:1,tt-5:1,tt-6:1,tt-7:1,tt-8:1" +userver_module( + kafka + SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" + LINK_LIBRARIES_PRIVATE RdKafka::rdkafka + DBTEST_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests" + DBTEST_LINK_LIBRARIES userver::kafka-utest + DBTEST_DATABASES kafka + DBTEST_ENV + "TESTSUITE_KAFKA_SERVER_START_TIMEOUT=120.0" "TESTSUITE_KAFKA_SERVER_HOST=[::1]" + "TESTSUITE_KAFKA_SERVER_PORT=8099" "TESTSUITE_KAFKA_CONTROLLER_PORT=8100" + "TESTSUITE_KAFKA_CUSTOM_TOPICS=bt:4,lt-1:4,lt-2:4,tt-1:1,tt-2:1,tt-3:1,tt-4:1,tt-5:1,tt-6:1,tt-7:1,tt-8:1" ) target_compile_options(${PROJECT_NAME} PRIVATE "-Wno-ignored-qualifiers") if(KAFKA_CPM) - message(STATUS "Including from wrapper ${CMAKE_CURRENT_SOURCE_DIR}/wrapper/include") - target_include_directories(${PROJECT_NAME} - PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/wrapper/include" - ) + message(STATUS "Including from wrapper ${CMAKE_CURRENT_SOURCE_DIR}/wrapper/include") + target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/wrapper/include") endif() -_userver_directory_install(COMPONENT kafka - FILES - "${USERVER_ROOT_DIR}/cmake/SetupRdKafka.cmake" +_userver_directory_install( + COMPONENT kafka + FILES "${USERVER_ROOT_DIR}/cmake/SetupRdKafka.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver" ) -_userver_directory_install(COMPONENT kafka - FILES - "${USERVER_ROOT_DIR}/cmake/modules/FindRdKafka.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/Findlz4.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/FindSASL2.cmake" +_userver_directory_install( + COMPONENT kafka + FILES "${USERVER_ROOT_DIR}/cmake/modules/FindRdKafka.cmake" "${USERVER_ROOT_DIR}/cmake/modules/Findlz4.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/FindSASL2.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules" ) if(USERVER_FEATURE_UTEST) - add_subdirectory(utest) + add_subdirectory(utest) endif() if(USERVER_BUILD_TESTS) - add_subdirectory(functional_tests) + add_subdirectory(functional_tests) endif() diff --git a/kafka/functional_tests/balanced_consumer_groups/CMakeLists.txt b/kafka/functional_tests/balanced_consumer_groups/CMakeLists.txt index 017a268e64a9..f66ea94348eb 100644 --- a/kafka/functional_tests/balanced_consumer_groups/CMakeLists.txt +++ b/kafka/functional_tests/balanced_consumer_groups/CMakeLists.txt @@ -4,10 +4,7 @@ add_executable(${PROJECT_NAME} "kafka_service.cpp") target_link_libraries(${PROJECT_NAME} userver::core userver::kafka) userver_chaos_testsuite_add( - ENV - "TESTSUITE_KAFKA_SERVER_START_TIMEOUT=120.0" - "TESTSUITE_KAFKA_SERVER_HOST=[::1]" - "TESTSUITE_KAFKA_SERVER_PORT=8099" - "TESTSUITE_KAFKA_CONTROLLER_PORT=8100" - "TESTSUITE_KAFKA_CUSTOM_TOPICS=test-topic:2" + ENV "TESTSUITE_KAFKA_SERVER_START_TIMEOUT=120.0" "TESTSUITE_KAFKA_SERVER_HOST=[::1]" + "TESTSUITE_KAFKA_SERVER_PORT=8099" "TESTSUITE_KAFKA_CONTROLLER_PORT=8100" + "TESTSUITE_KAFKA_CUSTOM_TOPICS=test-topic:2" ) diff --git a/kafka/functional_tests/integrational_tests/CMakeLists.txt b/kafka/functional_tests/integrational_tests/CMakeLists.txt index 74ed26116993..461f1b88b71e 100644 --- a/kafka/functional_tests/integrational_tests/CMakeLists.txt +++ b/kafka/functional_tests/integrational_tests/CMakeLists.txt @@ -4,10 +4,10 @@ add_executable(${PROJECT_NAME} "kafka_service.cpp") target_link_libraries(${PROJECT_NAME} userver::core userver::kafka) userver_chaos_testsuite_add( - ENV - "TESTSUITE_KAFKA_SERVER_START_TIMEOUT=120.0" - "TESTSUITE_KAFKA_SERVER_HOST=[::1]" - "TESTSUITE_KAFKA_SERVER_PORT=8099" - "TESTSUITE_KAFKA_CONTROLLER_PORT=8100" - "TESTSUITE_KAFKA_CUSTOM_TOPICS=test-topic-send:1,test-topic-consume-1:1,test-topic-consume-2:1,test-topic-consume-produced-1:1,test-topic-consume-produced-2:1" + ENV + "TESTSUITE_KAFKA_SERVER_START_TIMEOUT=120.0" + "TESTSUITE_KAFKA_SERVER_HOST=[::1]" + "TESTSUITE_KAFKA_SERVER_PORT=8099" + "TESTSUITE_KAFKA_CONTROLLER_PORT=8100" + "TESTSUITE_KAFKA_CUSTOM_TOPICS=test-topic-send:1,test-topic-consume-1:1,test-topic-consume-2:1,test-topic-consume-produced-1:1,test-topic-consume-produced-2:1" ) diff --git a/kafka/utest/CMakeLists.txt b/kafka/utest/CMakeLists.txt index 3b51913cf484..d873439ade48 100644 --- a/kafka/utest/CMakeLists.txt +++ b/kafka/utest/CMakeLists.txt @@ -1,24 +1,17 @@ project(userver-kafka-utest) -file(GLOB_RECURSE KAFKA_LIB_UTEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) +file(GLOB_RECURSE KAFKA_LIB_UTEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) add_library(${PROJECT_NAME} STATIC ${KAFKA_LIB_UTEST_SOURCES}) -target_link_libraries(${PROJECT_NAME} - PUBLIC userver::kafka userver::utest -) -target_include_directories(${PROJECT_NAME} - PUBLIC $ -) +target_link_libraries(${PROJECT_NAME} PUBLIC userver::kafka userver::utest) +target_include_directories(${PROJECT_NAME} PUBLIC $) if(KAFKA_CPM) - target_include_directories(${PROJECT_NAME} - PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../wrapper/include - ) + target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../wrapper/include) endif() -_userver_directory_install(COMPONENT kafka +_userver_directory_install( + COMPONENT kafka DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/.." ) diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index b26f1ce10073..06fa9bc01a34 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -2,20 +2,20 @@ option(USERVER_FEATURE_EASY "Build easy HTTP server library" "${USERVER_LIB_ENAB option(USERVER_FEATURE_S3API "Build S3 api client library" "${USERVER_LIB_ENABLED_DEFAULT}") option(USERVER_FEATURE_GRPC_REFLECTION "Build grpc reflection library" "${USERVER_LIB_ENABLED_DEFAULT}") -if (USERVER_FEATURE_S3API) - add_subdirectory(s3api) +if(USERVER_FEATURE_S3API) + add_subdirectory(s3api) endif() -if (USERVER_FEATURE_EASY) - if (NOT USERVER_FEATURE_POSTGRESQL) - message(FATAL_ERROR "'USERVER_FEATURE_EASY' requires 'USERVER_FEATURE_POSTGRESQL=ON'") - endif() - add_subdirectory(easy) +if(USERVER_FEATURE_EASY) + if(NOT USERVER_FEATURE_POSTGRESQL) + message(FATAL_ERROR "'USERVER_FEATURE_EASY' requires 'USERVER_FEATURE_POSTGRESQL=ON'") + endif() + add_subdirectory(easy) endif() -if (USERVER_FEATURE_GRPC_REFLECTION) - if (NOT USERVER_FEATURE_GRPC) - message(FATAL_ERROR "'USERVER_FEATURE_GRPC_REFLECTION' requires 'USERVER_FEATURE_GRPC=ON'") - endif() - add_subdirectory(grpc-reflection) +if(USERVER_FEATURE_GRPC_REFLECTION) + if(NOT USERVER_FEATURE_GRPC) + message(FATAL_ERROR "'USERVER_FEATURE_GRPC_REFLECTION' requires 'USERVER_FEATURE_GRPC=ON'") + endif() + add_subdirectory(grpc-reflection) endif() diff --git a/libraries/easy/CMakeLists.txt b/libraries/easy/CMakeLists.txt index 2a1b45623a5e..33f6da209c43 100644 --- a/libraries/easy/CMakeLists.txt +++ b/libraries/easy/CMakeLists.txt @@ -1,11 +1,12 @@ project(userver-easy CXX) -userver_module(easy +userver_module( + easy SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES userver::postgresql UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" ) if(USERVER_BUILD_SAMPLES) - add_subdirectory(samples) + add_subdirectory(samples) endif() diff --git a/libraries/easy/samples/0_hello_world/CMakeLists.txt b/libraries/easy/samples/0_hello_world/CMakeLists.txt index 39a8285359c2..5377a5a42467 100644 --- a/libraries/easy/samples/0_hello_world/CMakeLists.txt +++ b/libraries/easy/samples/0_hello_world/CMakeLists.txt @@ -1,6 +1,10 @@ project(userver-easy-samples-hello-world CXX) -find_package(userver COMPONENTS easy REQUIRED) +find_package( + userver + COMPONENTS easy + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::easy) diff --git a/libraries/easy/samples/1_hi/CMakeLists.txt b/libraries/easy/samples/1_hi/CMakeLists.txt index 53d9b7225124..22c7c33f7f2f 100644 --- a/libraries/easy/samples/1_hi/CMakeLists.txt +++ b/libraries/easy/samples/1_hi/CMakeLists.txt @@ -1,6 +1,10 @@ project(userver-easy-samples-hi CXX) -find_package(userver COMPONENTS easy REQUIRED) +find_package( + userver + COMPONENTS easy + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::easy) diff --git a/libraries/easy/samples/2_key_value/CMakeLists.txt b/libraries/easy/samples/2_key_value/CMakeLists.txt index 93837712c8fa..ffec95b2145d 100644 --- a/libraries/easy/samples/2_key_value/CMakeLists.txt +++ b/libraries/easy/samples/2_key_value/CMakeLists.txt @@ -1,6 +1,10 @@ project(userver-easy-samples-key-value CXX) -find_package(userver COMPONENTS easy REQUIRED) +find_package( + userver + COMPONENTS easy + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::easy) diff --git a/libraries/easy/samples/3_json/CMakeLists.txt b/libraries/easy/samples/3_json/CMakeLists.txt index bd05254a05a2..e3cf268cc0a8 100644 --- a/libraries/easy/samples/3_json/CMakeLists.txt +++ b/libraries/easy/samples/3_json/CMakeLists.txt @@ -1,21 +1,21 @@ cmake_minimum_required(VERSION 3.14) project(userver-easy-samples-json CXX) -find_package(userver COMPONENTS easy chaotic REQUIRED) +find_package( + userver + COMPONENTS easy chaotic + REQUIRED +) file(GLOB_RECURSE SCHEMAS ${CMAKE_CURRENT_SOURCE_DIR}/schemas/*.yaml) -userver_target_generate_chaotic(${PROJECT_NAME}-chgen - ARGS - # Map '/components/schemas/*' JSONSchema types to C++ types in 'schemas' namespace - -n "/components/schemas/([^/]*)/=schemas::{0}" - # Generate serializers for responses - --generate-serializers - OUTPUT_DIR - ${CMAKE_CURRENT_BINARY_DIR}/src - SCHEMAS - ${SCHEMAS} - RELATIVE_TO - ${CMAKE_CURRENT_SOURCE_DIR} +userver_target_generate_chaotic( + ${PROJECT_NAME}-chgen + ARGS # Map '/components/schemas/*' JSONSchema types to C++ types in 'schemas' namespace + -n "/components/schemas/([^/]*)/=schemas::{0}" # Generate serializers for responses + --generate-serializers + OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/src + SCHEMAS ${SCHEMAS} + RELATIVE_TO ${CMAKE_CURRENT_SOURCE_DIR} ) add_executable(${PROJECT_NAME} "main.cpp") diff --git a/libraries/easy/samples/4_custom_dependency/CMakeLists.txt b/libraries/easy/samples/4_custom_dependency/CMakeLists.txt index da04939594bb..c11a4a235020 100644 --- a/libraries/easy/samples/4_custom_dependency/CMakeLists.txt +++ b/libraries/easy/samples/4_custom_dependency/CMakeLists.txt @@ -1,6 +1,10 @@ project(userver-easy-samples-custom-dependency CXX) -find_package(userver COMPONENTS easy REQUIRED) +find_package( + userver + COMPONENTS easy + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::easy) diff --git a/libraries/easy/samples/5_pg_service_template/CMakeLists.txt b/libraries/easy/samples/5_pg_service_template/CMakeLists.txt index c20900c6f64d..943cd9d85726 100644 --- a/libraries/easy/samples/5_pg_service_template/CMakeLists.txt +++ b/libraries/easy/samples/5_pg_service_template/CMakeLists.txt @@ -1,6 +1,10 @@ project(userver-easy-samples-pg-service-template CXX) -find_package(userver COMPONENTS easy REQUIRED) +find_package( + userver + COMPONENTS easy + REQUIRED +) add_executable(${PROJECT_NAME} "src/main.cpp") target_link_libraries(${PROJECT_NAME} userver::easy) diff --git a/libraries/easy/samples/6_pg_service_template_no_http_with/CMakeLists.txt b/libraries/easy/samples/6_pg_service_template_no_http_with/CMakeLists.txt index 56fa35a49e79..8e76cebf74bc 100644 --- a/libraries/easy/samples/6_pg_service_template_no_http_with/CMakeLists.txt +++ b/libraries/easy/samples/6_pg_service_template_no_http_with/CMakeLists.txt @@ -1,6 +1,10 @@ project(userver-easy-samples-pg-service-template-no-http-with CXX) -find_package(userver COMPONENTS easy REQUIRED) +find_package( + userver + COMPONENTS easy + REQUIRED +) add_executable(${PROJECT_NAME} "src/main.cpp") target_link_libraries(${PROJECT_NAME} userver::easy) diff --git a/libraries/easy/samples/CMakeLists.txt b/libraries/easy/samples/CMakeLists.txt index e0949179cd7b..ce2e034ce281 100644 --- a/libraries/easy/samples/CMakeLists.txt +++ b/libraries/easy/samples/CMakeLists.txt @@ -3,7 +3,7 @@ project(userver-easy-samples CXX) add_custom_target(${PROJECT_NAME}) # Imitate an installed userver in samples. -file(WRITE "${CMAKE_BINARY_DIR}/package_stubs/userverConfig.cmake") +file(WRITE "${CMAKE_BINARY_DIR}/package_stubs/userverConfig.cmake" ) add_subdirectory(0_hello_world) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-hello-world) @@ -26,6 +26,5 @@ add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-pg-service-template) add_subdirectory(6_pg_service_template_no_http_with) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-pg-service-template-no-http-with) -# Clean up fake userver installation above to avoid messing -# with find_package(userver) in the parent project. +# Clean up fake userver installation above to avoid messing with find_package(userver) in the parent project. file(REMOVE "${CMAKE_BINARY_DIR}/package_stubs/userverConfig.cmake") diff --git a/libraries/grpc-reflection/CMakeLists.txt b/libraries/grpc-reflection/CMakeLists.txt index 02e0b6b44a6a..dfac35d21cc6 100644 --- a/libraries/grpc-reflection/CMakeLists.txt +++ b/libraries/grpc-reflection/CMakeLists.txt @@ -4,12 +4,13 @@ userver_add_grpc_library(${PROJECT_NAME}-proto PROTOS reflection.proto) _userver_install_targets(COMPONENT grpc-reflection TARGETS ${PROJECT_NAME}-proto) -userver_module(grpc-reflection +userver_module( + grpc-reflection SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES ${PROJECT_NAME}-proto userver::grpc UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" ) if(USERVER_BUILD_TESTS) - add_subdirectory(functional_tests) + add_subdirectory(functional_tests) endif() diff --git a/libraries/s3api/CMakeLists.txt b/libraries/s3api/CMakeLists.txt index 79502e3ffaa9..87359ab8009a 100644 --- a/libraries/s3api/CMakeLists.txt +++ b/libraries/s3api/CMakeLists.txt @@ -2,17 +2,19 @@ project(userver-s3api CXX) find_package(pugixml REQUIRED) -userver_module(s3api +userver_module( + s3api SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES_PRIVATE pugixml::pugixml UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" ) -_userver_directory_install(COMPONENT s3api FILES - "${USERVER_ROOT_DIR}/cmake/modules/Findpugixml.cmake" +_userver_directory_install( + COMPONENT s3api + FILES "${USERVER_ROOT_DIR}/cmake/modules/Findpugixml.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules" ) if(USERVER_FEATURE_UTEST) - add_subdirectory(utest) + add_subdirectory(utest) endif() diff --git a/libraries/s3api/utest/CMakeLists.txt b/libraries/s3api/utest/CMakeLists.txt index a4fc687a78bb..56f62403df19 100644 --- a/libraries/s3api/utest/CMakeLists.txt +++ b/libraries/s3api/utest/CMakeLists.txt @@ -1,20 +1,14 @@ project(userver-s3api-utest) -file(GLOB_RECURSE S3API_LIB_UTEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) +file(GLOB_RECURSE S3API_LIB_UTEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) add_library(${PROJECT_NAME} STATIC ${S3API_LIB_UTEST_SOURCES}) -target_link_libraries(${PROJECT_NAME} - PUBLIC userver::s3api userver::utest -) -target_include_directories(${PROJECT_NAME} - PUBLIC $ -) +target_link_libraries(${PROJECT_NAME} PUBLIC userver::s3api userver::utest) +target_include_directories(${PROJECT_NAME} PUBLIC $) -_userver_directory_install(COMPONENT s3api +_userver_directory_install( + COMPONENT s3api DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/.." ) _userver_install_targets(COMPONENT s3api TARGETS ${PROJECT_NAME}) - diff --git a/mongo/CMakeLists.txt b/mongo/CMakeLists.txt index e992a30a19f7..537e827ec162 100644 --- a/mongo/CMakeLists.txt +++ b/mongo/CMakeLists.txt @@ -1,43 +1,42 @@ project(userver-mongo CXX) -if (USERVER_CONAN) - find_package(mongoc-1.0 REQUIRED) +if(USERVER_CONAN) + find_package(mongoc-1.0 REQUIRED) else() - include(SetupMongoDeps) + include(SetupMongoDeps) endif() -userver_module(mongo +userver_module( + mongo SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES mongo::bson_static LINK_LIBRARIES_PRIVATE mongo::mongoc_static - UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" DBTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_mongotest.cpp" DBTEST_DATABASES mongo - # Tests that use IsCollectionWriteConcernTimeout require multi-instance mongo + # Tests that use IsCollectionWriteConcernTimeout require multi-instance mongo DBTEST_ENV TESTSUITE_MONGO_RS_INSTANCE_COUNT=5 UBENCH_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_benchmark.cpp" ) -_userver_directory_install(COMPONENT mongo FILES - "${USERVER_ROOT_DIR}/cmake/SetupMongoDeps.cmake" +_userver_directory_install( + COMPONENT mongo + FILES "${USERVER_ROOT_DIR}/cmake/SetupMongoDeps.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver ) -_userver_directory_install(COMPONENT mongo FILES - "${USERVER_ROOT_DIR}/cmake/modules/Findmongoc.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/Findbson.cmake" +_userver_directory_install( + COMPONENT mongo + FILES "${USERVER_ROOT_DIR}/cmake/modules/Findmongoc.cmake" "${USERVER_ROOT_DIR}/cmake/modules/Findbson.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules ) -if (USERVER_BUILD_TESTS) - target_include_directories(${PROJECT_NAME}-unittest PRIVATE - # TODO: hack, expose formats/common/merge_test.hpp as public API - $ - ) - target_compile_definitions(${PROJECT_NAME}-unittest PRIVATE - -DUSERVER_FEATURE_NO_PATCHED_BSON=1 - ) +if(USERVER_BUILD_TESTS) + target_include_directories( + ${PROJECT_NAME}-unittest PRIVATE # TODO: hack, expose formats/common/merge_test.hpp as public API + $ + ) + target_compile_definitions(${PROJECT_NAME}-unittest PRIVATE -DUSERVER_FEATURE_NO_PATCHED_BSON=1) - add_subdirectory(functional_tests) + add_subdirectory(functional_tests) endif() diff --git a/mysql/CMakeLists.txt b/mysql/CMakeLists.txt index 8dc6ee5ed6e6..be0eb8237b9c 100644 --- a/mysql/CMakeLists.txt +++ b/mysql/CMakeLists.txt @@ -4,10 +4,10 @@ find_package(OpenSSL REQUIRED) find_package(ZLIB REQUIRED) find_package(libmariadb REQUIRED) -userver_module(mysql +userver_module( + mysql SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES_PRIVATE libmariadb ZLIB::ZLIB OpenSSL::SSL OpenSSL::Crypto - DBTEST_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests" UTEST_LINK_LIBRARIES libmariadb DBTEST_DATABASES mysql @@ -16,21 +16,22 @@ userver_module(mysql UBENCH_DATABASES mysql ) -if (USERVER_MYSQL_ALLOW_BUGGY_LIBMARIADB) - target_compile_definitions(${PROJECT_NAME} PRIVATE -DUSERVER_MYSQL_ALLOW_BUGGY_LIBMARIADB) +if(USERVER_MYSQL_ALLOW_BUGGY_LIBMARIADB) + target_compile_definitions(${PROJECT_NAME} PRIVATE -DUSERVER_MYSQL_ALLOW_BUGGY_LIBMARIADB) endif() if(USERVER_MYSQL_OLD_INCLUDE) - target_compile_definitions(${PROJECT_NAME} PRIVATE -DUSERVER_MYSQL_OLD_INCLUDE=1) - if(USERVER_BUILD_TESTS) - target_compile_definitions(${PROJECT_NAME}-dbtest PRIVATE -DUSERVER_MYSQL_OLD_INCLUDE=1) - endif() + target_compile_definitions(${PROJECT_NAME} PRIVATE -DUSERVER_MYSQL_OLD_INCLUDE=1) + if(USERVER_BUILD_TESTS) + target_compile_definitions(${PROJECT_NAME}-dbtest PRIVATE -DUSERVER_MYSQL_OLD_INCLUDE=1) + endif() endif() -_userver_directory_install(COMPONENT mysql FILES - "${USERVER_ROOT_DIR}/cmake/modules/Findlibmariadb.cmake" +_userver_directory_install( + COMPONENT mysql + FILES "${USERVER_ROOT_DIR}/cmake/modules/Findlibmariadb.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules" ) -if (USERVER_BUILD_TESTS) - add_subdirectory(functional_tests) +if(USERVER_BUILD_TESTS) + add_subdirectory(functional_tests) endif() diff --git a/mysql/functional_tests/basic_chaos/CMakeLists.txt b/mysql/functional_tests/basic_chaos/CMakeLists.txt index e0864ac582d9..c56aa8c491b6 100644 --- a/mysql/functional_tests/basic_chaos/CMakeLists.txt +++ b/mysql/functional_tests/basic_chaos/CMakeLists.txt @@ -3,6 +3,4 @@ project(userver-mysql-tests-basic-chaos CXX) add_executable(${PROJECT_NAME} "mysql_service.cpp") target_link_libraries(${PROJECT_NAME} userver::mysql) -userver_chaos_testsuite_add( - ENV "TESTSUITE_MYSQL_SERVER_START_TIMEOUT=120.0" -) +userver_chaos_testsuite_add(ENV "TESTSUITE_MYSQL_SERVER_START_TIMEOUT=120.0") diff --git a/otlp/CMakeLists.txt b/otlp/CMakeLists.txt index aa21c1d9a071..598eac75caf4 100644 --- a/otlp/CMakeLists.txt +++ b/otlp/CMakeLists.txt @@ -3,10 +3,10 @@ project(userver-otlp CXX) include(UserverGrpcTargets) include(SetupOpentelemetryProto) -userver_module(otlp +userver_module( + otlp SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES userver-otlp-proto - UTEST_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests" UTEST_LINK_LIBRARIES userver-grpc-utest ) diff --git a/postgresql/CMakeLists.txt b/postgresql/CMakeLists.txt index 90644bc5fd69..0fb16eae2375 100644 --- a/postgresql/CMakeLists.txt +++ b/postgresql/CMakeLists.txt @@ -2,32 +2,30 @@ project(userver-postgresql CXX) option(USERVER_FEATURE_PATCH_LIBPQ "Apply patches to the libpq (add portals support)" ON) add_library(userver-libpq INTERFACE) -if (USERVER_FEATURE_PATCH_LIBPQ) - add_subdirectory(pq-extra) - target_link_libraries(userver-libpq INTERFACE userver-pq-extra) +if(USERVER_FEATURE_PATCH_LIBPQ) + add_subdirectory(pq-extra) + target_link_libraries(userver-libpq INTERFACE userver-pq-extra) else() - set_source_files_properties( - ${CMAKE_CURRENT_SOURCE_DIR}/src/storages/postgres/detail/pg_connection_wrapper.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/storages/postgres/portal.cpp - PROPERTIES COMPILE_FLAGS -DUSERVER_NO_LIBPQ_PATCHES=1 - ) + set_source_files_properties( + ${CMAKE_CURRENT_SOURCE_DIR}/src/storages/postgres/detail/pg_connection_wrapper.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/storages/postgres/portal.cpp PROPERTIES COMPILE_FLAGS + -DUSERVER_NO_LIBPQ_PATCHES=1 + ) - if(USERVER_CONAN) - find_package(PostgreSQL REQUIRED) - else() - find_library(PostgreSQL_LIBRARY NAMES libpq.so libpq.dylib REQUIRED) - find_package(PostgreSQL REQUIRED) - endif() - target_link_libraries(userver-libpq INTERFACE PostgreSQL::PostgreSQL) + if(USERVER_CONAN) + find_package(PostgreSQL REQUIRED) + else() + find_library(PostgreSQL_LIBRARY NAMES libpq.so libpq.dylib REQUIRED) + find_package(PostgreSQL REQUIRED) + endif() + target_link_libraries(userver-libpq INTERFACE PostgreSQL::PostgreSQL) endif() -# Versions of postgresql-server and libpq may diverge "in the wild", -# and we'd like to still be able to build userver postgres in such environments. -# When using APIs of libpq, we sometimes need its version as a macro to know -# which features are available. PG_VERSION_NUM is not suitable, because it is -# provided by postgresql-server, not by libpq. There is PQlibVersion function, -# but no version macro in libpq itself. Workaround: run a simple program -# at build time that calls PQlibVersion. +# Versions of postgresql-server and libpq may diverge "in the wild", and we'd like to still be able to build userver +# postgres in such environments. When using APIs of libpq, we sometimes need its version as a macro to know which +# features are available. PG_VERSION_NUM is not suitable, because it is provided by postgresql-server, not by libpq. +# There is PQlibVersion function, but no version macro in libpq itself. Workaround: run a simple program at build time +# that calls PQlibVersion. add_subdirectory(libpq-version-generator) set(LIBPQ_VERSION_DIR "${CMAKE_CURRENT_BINARY_DIR}/libpq_version") add_custom_command( @@ -38,10 +36,10 @@ add_custom_command( COMMENT "Running gRPC C++ protocol buffer compiler for ${root_path}" ) -userver_module(postgresql +userver_module( + postgresql SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" - LINK_LIBRARIES_PRIVATE userver-libpq - INCLUDE_DIRS_PRIVATE "${LIBPQ_VERSION_DIR}" + LINK_LIBRARIES_PRIVATE userver-libpq INCLUDE_DIRS_PRIVATE "${LIBPQ_VERSION_DIR}" UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" DBTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_pgtest.cpp" DBTEST_DATABASES postgresql @@ -55,17 +53,19 @@ userver_module(postgresql target_sources(${PROJECT_NAME} PRIVATE "${LIBPQ_VERSION_DIR}/userver_libpq_version.hpp") _userver_install_targets(COMPONENT postgres TARGETS userver-libpq) -_userver_directory_install(COMPONENT postgres FILES - "${USERVER_ROOT_DIR}/cmake/UserverSql.cmake" +_userver_directory_install( + COMPONENT postgres + FILES "${USERVER_ROOT_DIR}/cmake/UserverSql.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver" ) -_userver_directory_install(COMPONENT postgres +_userver_directory_install( + COMPONENT postgres DIRECTORY "${USERVER_ROOT_DIR}/scripts/sql" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver/scripts" ) -if (USERVER_BUILD_TESTS) - add_subdirectory(functional_tests) +if(USERVER_BUILD_TESTS) + add_subdirectory(functional_tests) endif() set(USERVER_DIR "${USERVER_ROOT_DIR}") diff --git a/postgresql/pq-extra/CMakeLists.txt b/postgresql/pq-extra/CMakeLists.txt index c44dd37b5ed1..b5bd233d956a 100644 --- a/postgresql/pq-extra/CMakeLists.txt +++ b/postgresql/pq-extra/CMakeLists.txt @@ -2,61 +2,51 @@ project(userver-pq-extra) include(SetupPostgresqlDeps) -set(PQ_EXTRA_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/pq_portal_funcs.c - ${CMAKE_CURRENT_SOURCE_DIR}/pq_workaround.c -) +set(PQ_EXTRA_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/pq_portal_funcs.c ${CMAKE_CURRENT_SOURCE_DIR}/pq_workaround.c) add_library(${PROJECT_NAME} STATIC ${PQ_EXTRA_SOURCES}) -target_include_directories(${PROJECT_NAME} - PUBLIC $ -) +target_include_directories(${PROJECT_NAME} PUBLIC $) -target_link_libraries(${PROJECT_NAME} - PUBLIC - PostgreSQLInternal - userver-internal-compile-options -) +target_link_libraries(${PROJECT_NAME} PUBLIC PostgreSQLInternal userver-internal-compile-options) -target_compile_options( - ${PROJECT_NAME} PUBLIC -Wno-ignored-attributes -Wno-pedantic) +target_compile_options(${PROJECT_NAME} PUBLIC -Wno-ignored-attributes -Wno-pedantic) # Make try_compile honor parent CMAKE_C_STANDARD cmake_policy(SET CMP0067 NEW) try_compile( - COMPILE_RESULT - ${CMAKE_CURRENT_BINARY_DIR}/require_pq_extra - SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/check_main.c - ${PQ_EXTRA_SOURCES} - LINK_LIBRARIES - PostgreSQLInternal - OUTPUT_VARIABLE COMPILE_OUTPUT + COMPILE_RESULT ${CMAKE_CURRENT_BINARY_DIR}/require_pq_extra + SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/check_main.c ${PQ_EXTRA_SOURCES} + LINK_LIBRARIES PostgreSQLInternal + OUTPUT_VARIABLE COMPILE_OUTPUT ) if(NOT "${COMPILE_RESULT}") - message(FATAL_ERROR "Error while compiling libpq patch:\n" - "${COMPILE_OUTPUT}\n" - "If there are errors up above then the versions of libpq, " - "libpgport and libpgcommon diverged: ${PQ_EXTRA_INITIAL_LIBRARIES_LIST}\n" - "Install the same versions of PostgreSQL client and server libraries, " - "use USERVER_PG_SERVER_INCLUDE_DIR, USERVER_PG_SERVER_LIBRARY_DIR, " - "USERVER_PG_INCLUDE_DIR and USERVER_PG_LIBRARY_DIR CMake options " - "if needed; or disable libpq patching via " - "CMake flag -DUSERVER_FEATURE_PATCH_LIBPQ=OFF." - ) + message( + FATAL_ERROR + "Error while compiling libpq patch:\n" + "${COMPILE_OUTPUT}\n" + "If there are errors up above then the versions of libpq, " + "libpgport and libpgcommon diverged: ${PQ_EXTRA_INITIAL_LIBRARIES_LIST}\n" + "Install the same versions of PostgreSQL client and server libraries, " + "use USERVER_PG_SERVER_INCLUDE_DIR, USERVER_PG_SERVER_LIBRARY_DIR, " + "USERVER_PG_INCLUDE_DIR and USERVER_PG_LIBRARY_DIR CMake options " + "if needed; or disable libpq patching via " + "CMake flag -DUSERVER_FEATURE_PATCH_LIBPQ=OFF." + ) endif() _userver_install_targets(COMPONENT postgres TARGETS ${PROJECT_NAME}) -_userver_directory_install(COMPONENT postgres FILES - "${USERVER_ROOT_DIR}/cmake/SetupPostgresqlDeps.cmake" +_userver_directory_install( + COMPONENT postgres + FILES "${USERVER_ROOT_DIR}/cmake/SetupPostgresqlDeps.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver ) -_userver_directory_install(COMPONENT postgres FILES - "${USERVER_ROOT_DIR}/cmake/modules/FindPostgreSQLInternal.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/FindGssApi.cmake" +_userver_directory_install( + COMPONENT postgres + FILES "${USERVER_ROOT_DIR}/cmake/modules/FindPostgreSQLInternal.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/FindGssApi.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules ) diff --git a/rabbitmq/CMakeLists.txt b/rabbitmq/CMakeLists.txt index 511bf90cb1ab..5d7829d85ddb 100644 --- a/rabbitmq/CMakeLists.txt +++ b/rabbitmq/CMakeLists.txt @@ -1,15 +1,15 @@ project(userver-rabbitmq CXX) -if (USERVER_CONAN) - find_package(amqpcpp REQUIRED) +if(USERVER_CONAN) + find_package(amqpcpp REQUIRED) else() - include(SetupAmqpCPP) + include(SetupAmqpCPP) endif() -userver_module(rabbitmq +userver_module( + rabbitmq SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES_PRIVATE amqpcpp - DBTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_rmqtest.cpp" DBTEST_DATABASES rabbitmq ) @@ -20,9 +20,8 @@ _userver_directory_install( DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules" ) -if (USERVER_BUILD_TESTS) - set_tests_properties(${PROJECT_NAME}-dbtest PROPERTIES ENVIRONMENT - "TESTSUITE_RABBITMQ_SERVER_START_TIMEOUT=120.0") +if(USERVER_BUILD_TESTS) + set_tests_properties(${PROJECT_NAME}-dbtest PROPERTIES ENVIRONMENT "TESTSUITE_RABBITMQ_SERVER_START_TIMEOUT=120.0") - add_subdirectory(functional_tests) + add_subdirectory(functional_tests) endif() diff --git a/rabbitmq/functional_tests/basic_chaos/CMakeLists.txt b/rabbitmq/functional_tests/basic_chaos/CMakeLists.txt index f969a4462eed..e34bb654cb72 100644 --- a/rabbitmq/functional_tests/basic_chaos/CMakeLists.txt +++ b/rabbitmq/functional_tests/basic_chaos/CMakeLists.txt @@ -3,6 +3,4 @@ project(userver-rabbitmq-tests-basic-chaos CXX) add_executable(${PROJECT_NAME} "rabbitmq_service.cpp") target_link_libraries(${PROJECT_NAME} userver-rabbitmq) -userver_chaos_testsuite_add( - ENV "TESTSUITE_RABBITMQ_SERVER_START_TIMEOUT=120.0" -) +userver_chaos_testsuite_add(ENV "TESTSUITE_RABBITMQ_SERVER_START_TIMEOUT=120.0") diff --git a/rabbitmq/functional_tests/metrics/CMakeLists.txt b/rabbitmq/functional_tests/metrics/CMakeLists.txt index 620158c525dc..8ebc3c3ceca7 100644 --- a/rabbitmq/functional_tests/metrics/CMakeLists.txt +++ b/rabbitmq/functional_tests/metrics/CMakeLists.txt @@ -3,6 +3,4 @@ project(userver-rabbitmq-tests-metrics CXX) add_executable(${PROJECT_NAME} "rabbitmq_service.cpp") target_link_libraries(${PROJECT_NAME} userver-rabbitmq) -userver_chaos_testsuite_add( - ENV "TESTSUITE_RABBITMQ_SERVER_START_TIMEOUT=120.0" -) +userver_chaos_testsuite_add(ENV "TESTSUITE_RABBITMQ_SERVER_START_TIMEOUT=120.0") diff --git a/redis/CMakeLists.txt b/redis/CMakeLists.txt index f197ece2d607..9212fb884ad1 100644 --- a/redis/CMakeLists.txt +++ b/redis/CMakeLists.txt @@ -2,7 +2,8 @@ project(userver-redis CXX) find_package(hiredis REQUIRED) -userver_module(redis +userver_module( + redis SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES hiredis::hiredis UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" @@ -21,39 +22,41 @@ set_source_files_properties( ${CMAKE_CURRENT_SOURCE_DIR}/src/storages/redis/impl/ev_thread/thread.cpp PROPERTIES COMPILE_FLAGS -fno-strict-aliasing ) -target_compile_options (${PROJECT_NAME} PRIVATE -Wno-old-style-cast) - -option(USERVER_FEATURE_REDIS_HI_MALLOC "Provide 'hi_malloc(unsigned long)' function to workaround https://bugs.launchpad.net/ubuntu/+source/hiredis/+bug/1888025" OFF) -if (USERVER_FEATURE_REDIS_HI_MALLOC) - set_source_files_properties( - ${CMAKE_CURRENT_SOURCE_DIR}/src/storages/redis/impl/hi_malloc.cpp - PROPERTIES COMPILE_FLAGS -DUSERVER_FEATURE_REDIS_HI_MALLOC=1 - ) +target_compile_options(${PROJECT_NAME} PRIVATE -Wno-old-style-cast) + +option( + USERVER_FEATURE_REDIS_HI_MALLOC + "Provide 'hi_malloc(unsigned long)' function to workaround https://bugs.launchpad.net/ubuntu/+source/hiredis/+bug/1888025" + OFF +) +if(USERVER_FEATURE_REDIS_HI_MALLOC) + set_source_files_properties( + ${CMAKE_CURRENT_SOURCE_DIR}/src/storages/redis/impl/hi_malloc.cpp + PROPERTIES COMPILE_FLAGS -DUSERVER_FEATURE_REDIS_HI_MALLOC=1 + ) endif() option(USERVER_FEATURE_REDIS_TLS "SSL/TLS support for Redis driver" OFF) if(USERVER_FEATURE_REDIS_TLS) - add_compile_definitions(USERVER_FEATURE_REDIS_TLS=1) + add_compile_definitions(USERVER_FEATURE_REDIS_TLS=1) endif() -if (USERVER_FEATURE_REDIS_TLS) - target_link_libraries(${PROJECT_NAME} PUBLIC hiredis_ssl) +if(USERVER_FEATURE_REDIS_TLS) + target_link_libraries(${PROJECT_NAME} PUBLIC hiredis_ssl) endif() -target_include_directories(${PROJECT_NAME} PRIVATE - $ -) +target_include_directories(${PROJECT_NAME} PRIVATE $) -_userver_directory_install(COMPONENT redis FILES - "${USERVER_ROOT_DIR}/cmake/modules/Findhiredis.cmake" +_userver_directory_install( + COMPONENT redis + FILES "${USERVER_ROOT_DIR}/cmake/modules/Findhiredis.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules ) -# Helper library for testing user code with redis. Provides mock_client_base.hpp -# and other helper headers -if (USERVER_FEATURE_UTEST) - add_subdirectory(testing) +# Helper library for testing user code with redis. Provides mock_client_base.hpp and other helper headers +if(USERVER_FEATURE_UTEST) + add_subdirectory(testing) endif() -if (USERVER_BUILD_TESTS) - add_subdirectory(functional_tests) +if(USERVER_BUILD_TESTS) + add_subdirectory(functional_tests) endif() diff --git a/redis/testing/CMakeLists.txt b/redis/testing/CMakeLists.txt index 55aef5d6f217..ec4d48bb5df7 100644 --- a/redis/testing/CMakeLists.txt +++ b/redis/testing/CMakeLists.txt @@ -1,21 +1,12 @@ project(userver-redis-utest) -file(GLOB_RECURSE UTESTLIB_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp" -) +file(GLOB_RECURSE UTESTLIB_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp") add_library(${PROJECT_NAME} STATIC ${UTESTLIB_SOURCES}) -target_include_directories( - ${PROJECT_NAME} - PUBLIC - $ -) -target_link_libraries(${PROJECT_NAME} PUBLIC - userver-utest - userver-redis -) -_userver_directory_install(COMPONENT redis +target_include_directories(${PROJECT_NAME} PUBLIC $) +target_link_libraries(${PROJECT_NAME} PUBLIC userver-utest userver-redis) +_userver_directory_install( + COMPONENT redis DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/.." ) diff --git a/rocks/CMakeLists.txt b/rocks/CMakeLists.txt index 6d7206073508..b89624d917df 100644 --- a/rocks/CMakeLists.txt +++ b/rocks/CMakeLists.txt @@ -2,7 +2,8 @@ project(userver-rocks CXX) include(SetupRocksDB) -userver_module(rocks +userver_module( + rocks SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES RocksDB::rocksdb UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 4f745e9279f3..54d8af82242d 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -3,7 +3,7 @@ project(userver-samples CXX) add_custom_target(${PROJECT_NAME}) # Imitate an installed userver in samples. -file(WRITE "${CMAKE_BINARY_DIR}/package_stubs/userverConfig.cmake") +file(WRITE "${CMAKE_BINARY_DIR}/package_stubs/userverConfig.cmake" ) add_subdirectory(config_service) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-config_service) @@ -11,30 +11,30 @@ add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-config_service) add_subdirectory(testsuite-support) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-testsuite-support) -if (USERVER_FEATURE_CHAOTIC) - add_subdirectory(chaotic_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-chaotic_service) +if(USERVER_FEATURE_CHAOTIC) + add_subdirectory(chaotic_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-chaotic_service) - if(USERVER_FEATURE_CHAOTIC_EXPERIMENTAL) - add_subdirectory(chaotic_openapi_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-chaotic-openapi_service) - endif() + if(USERVER_FEATURE_CHAOTIC_EXPERIMENTAL) + add_subdirectory(chaotic_openapi_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-chaotic-openapi_service) + endif() endif() -if (USERVER_FEATURE_OTLP) - add_subdirectory(otlp_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-otlp_service) +if(USERVER_FEATURE_OTLP) + add_subdirectory(otlp_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-otlp_service) endif() -if (USERVER_FEATURE_GRPC) - add_subdirectory(grpc-generic-proxy) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-grpc-generic-proxy) +if(USERVER_FEATURE_GRPC) + add_subdirectory(grpc-generic-proxy) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-grpc-generic-proxy) - add_subdirectory(grpc_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-grpc_service) + add_subdirectory(grpc_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-grpc_service) - add_subdirectory(grpc_middleware_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-grpc_middleware_service) + add_subdirectory(grpc_middleware_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-grpc_middleware_service) endif() add_subdirectory(json2yaml) @@ -64,29 +64,29 @@ add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-tcp_service) add_subdirectory(tcp_full_duplex_service) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-tcp_full_duplex_service) -if (USERVER_FEATURE_MONGODB) - add_subdirectory(http_caching) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-http_caching) +if(USERVER_FEATURE_MONGODB) + add_subdirectory(http_caching) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-http_caching) - add_subdirectory(mongo_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-mongo_service) + add_subdirectory(mongo_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-mongo_service) - add_subdirectory(mongo-support) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-mongo-support) + add_subdirectory(mongo-support) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-mongo-support) endif() -if (USERVER_FEATURE_POSTGRESQL) - add_subdirectory(postgres_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-postgres_service) +if(USERVER_FEATURE_POSTGRESQL) + add_subdirectory(postgres_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-postgres_service) - add_subdirectory(postgres_auth) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-postgres_auth) + add_subdirectory(postgres_auth) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-postgres_auth) - add_subdirectory(digest_auth_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-digest_auth) + add_subdirectory(digest_auth_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-digest_auth) - add_subdirectory(postgres-support) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-postgres-support) + add_subdirectory(postgres-support) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-postgres-support) endif() add_subdirectory(production_service) @@ -95,41 +95,40 @@ add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-production_service) add_subdirectory(static_service) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-static_service) -if (USERVER_FEATURE_REDIS) - add_subdirectory(redis_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-redis_service) +if(USERVER_FEATURE_REDIS) + add_subdirectory(redis_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-redis_service) endif() -if (USERVER_FEATURE_CLICKHOUSE) - add_subdirectory(clickhouse_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-clickhouse_service) +if(USERVER_FEATURE_CLICKHOUSE) + add_subdirectory(clickhouse_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-clickhouse_service) endif() -if (USERVER_FEATURE_RABBITMQ) - add_subdirectory(rabbitmq_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-rabbitmq_service) +if(USERVER_FEATURE_RABBITMQ) + add_subdirectory(rabbitmq_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-rabbitmq_service) endif() -if (USERVER_FEATURE_KAFKA) - add_subdirectory(kafka_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-kafka_service) +if(USERVER_FEATURE_KAFKA) + add_subdirectory(kafka_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-kafka_service) endif() -if (USERVER_FEATURE_MYSQL) - add_subdirectory(mysql_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-mysql_service) +if(USERVER_FEATURE_MYSQL) + add_subdirectory(mysql_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-mysql_service) endif() -if (USERVER_FEATURE_YDB AND USERVER_FEATURE_MONGODB) - add_subdirectory(ydb_service) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-ydb_service) +if(USERVER_FEATURE_YDB AND USERVER_FEATURE_MONGODB) + add_subdirectory(ydb_service) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-ydb_service) endif() -if (USERVER_FEATURE_S3API) - add_subdirectory(s3api) - add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-s3api) +if(USERVER_FEATURE_S3API) + add_subdirectory(s3api) + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-s3api) endif() -# Clean up fake userver installation above to avoid messing -# with find_package(userver) in the parent project. +# Clean up fake userver installation above to avoid messing with find_package(userver) in the parent project. file(REMOVE "${CMAKE_BINARY_DIR}/package_stubs/userverConfig.cmake") diff --git a/samples/chaotic_openapi_service/CMakeLists.txt b/samples/chaotic_openapi_service/CMakeLists.txt index bf50b8c6f440..c9482c79944c 100644 --- a/samples/chaotic_openapi_service/CMakeLists.txt +++ b/samples/chaotic_openapi_service/CMakeLists.txt @@ -1,30 +1,25 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-chaotic-openapi_service CXX) -find_package(userver COMPONENTS core chaotic REQUIRED) - -add_library(${PROJECT_NAME}_objs OBJECT - src/say_hello.hpp - src/say_hello.cpp - src/hello_handler.hpp - src/hello_handler.cpp +find_package( + userver + COMPONENTS core chaotic + REQUIRED ) + +add_library(${PROJECT_NAME}_objs OBJECT src/say_hello.hpp src/say_hello.cpp src/hello_handler.hpp src/hello_handler.cpp) target_link_libraries(${PROJECT_NAME}_objs userver::core) target_include_directories(${PROJECT_NAME}_objs PUBLIC src) add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_objs) -# /// [chaotic] -# cmake +# /// [chaotic] cmake userver_target_generate_openapi_client( ${PROJECT_NAME}-client-test_objs - NAME - test - OUTPUT_DIR - "${CMAKE_CURRENT_BINARY_DIR}/client/test" - SCHEMAS - ${CMAKE_CURRENT_SOURCE_DIR}/clients/test.yaml + NAME test + OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/client/test" + SCHEMAS ${CMAKE_CURRENT_SOURCE_DIR}/clients/test.yaml ) target_link_libraries(${PROJECT_NAME}_objs ${PROJECT_NAME}-client-test_objs) # /// [chaotic] diff --git a/samples/chaotic_service/CMakeLists.txt b/samples/chaotic_service/CMakeLists.txt index 1c779c663b6b..ed5ed31d40ae 100644 --- a/samples/chaotic_service/CMakeLists.txt +++ b/samples/chaotic_service/CMakeLists.txt @@ -2,42 +2,34 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-chaotic_service CXX) # /// [find_userver] -find_package(userver COMPONENTS core chaotic REQUIRED) -# Note: If userver was added via add_subdirectory(path/to/userver), then -# the userver_setup_environment() should be called here. -# /// [find_userver] +find_package( + userver + COMPONENTS core chaotic + REQUIRED +) +# Note: If userver was added via add_subdirectory(path/to/userver), then the userver_setup_environment() should be +# called here. /// [find_userver] # /// [objects] -add_library(${PROJECT_NAME}_objs OBJECT - src/say_hello.hpp - src/say_hello.cpp - src/hello_service.hpp - src/hello_service.cpp -) +add_library(${PROJECT_NAME}_objs OBJECT src/say_hello.hpp src/say_hello.cpp src/hello_service.hpp src/hello_service.cpp) target_link_libraries(${PROJECT_NAME}_objs userver::core) target_include_directories(${PROJECT_NAME}_objs PUBLIC src) # /// [objects] -# /// [chaotic] -# cmake +# /// [chaotic] cmake file(GLOB_RECURSE SCHEMAS ${CMAKE_CURRENT_SOURCE_DIR}/schemas/*.yaml) -userver_target_generate_chaotic(${PROJECT_NAME}-chgen - ARGS - # Map '/components/schemas/*' JSONSchema types to C++ types in 'samples::hello' namespace - -n "/components/schemas/([^/]*)/=samples::hello::{0}" - # Generate serializers for responses - --generate-serializers - OUTPUT_DIR - ${CMAKE_CURRENT_BINARY_DIR}/src - SCHEMAS - ${SCHEMAS} - RELATIVE_TO - ${CMAKE_CURRENT_SOURCE_DIR} +userver_target_generate_chaotic( + ${PROJECT_NAME}-chgen + ARGS # Map '/components/schemas/*' JSONSchema types to C++ types in 'samples::hello' namespace + -n "/components/schemas/([^/]*)/=samples::hello::{0}" # Generate serializers for responses + --generate-serializers + OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/src + SCHEMAS ${SCHEMAS} + RELATIVE_TO ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(${PROJECT_NAME}_objs ${PROJECT_NAME}-chgen) # /// [chaotic] - # /// [executable] add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_objs) @@ -55,7 +47,6 @@ target_link_libraries(${PROJECT_NAME}_benchmark ${PROJECT_NAME}_objs userver::ub add_google_benchmark_tests(${PROJECT_NAME}_benchmark) # /// [benchmarks] -# /// [testsuite] -# Makes a virtualenv suitable for running pytests from `test` directory and integrates with `ctest`. +# /// [testsuite] Makes a virtualenv suitable for running pytests from `test` directory and integrates with `ctest`. userver_testsuite_add_simple() # /// [testsuite] diff --git a/samples/clickhouse_service/CMakeLists.txt b/samples/clickhouse_service/CMakeLists.txt index 42c1222a25e9..f3516ac6c1af 100644 --- a/samples/clickhouse_service/CMakeLists.txt +++ b/samples/clickhouse_service/CMakeLists.txt @@ -1,11 +1,13 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-clickhouse_service CXX) -find_package(userver COMPONENTS clickhouse REQUIRED) +find_package( + userver + COMPONENTS clickhouse + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::clickhouse) -userver_testsuite_add_simple( - TEST_ENV "TESTSUITE_CLICKHOUSE_SERVER_START_TIMEOUT=120.0" -) +userver_testsuite_add_simple(TEST_ENV "TESTSUITE_CLICKHOUSE_SERVER_START_TIMEOUT=120.0") diff --git a/samples/config_service/CMakeLists.txt b/samples/config_service/CMakeLists.txt index 70c818d628d0..cde58afae54f 100644 --- a/samples/config_service/CMakeLists.txt +++ b/samples/config_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-config_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::core) diff --git a/samples/digest_auth_service/CMakeLists.txt b/samples/digest_auth_service/CMakeLists.txt index 8edc4d97e616..6b0d72e93580 100644 --- a/samples/digest_auth_service/CMakeLists.txt +++ b/samples/digest_auth_service/CMakeLists.txt @@ -1,12 +1,18 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-digest_auth CXX) -find_package(userver COMPONENTS postgresql REQUIRED) +find_package( + userver + COMPONENTS postgresql + REQUIRED +) add_executable(${PROJECT_NAME} main.cpp auth_digest.cpp) target_link_libraries(${PROJECT_NAME} userver::postgresql) userver_testsuite_add_simple() -set_tests_properties(testsuite-${PROJECT_NAME} PROPERTIES ENVIRONMENT - "SERVER_DIGEST_AUTH_SECRET={\"http_server_digest_auth_secret\": \"some-private-key\"}") +set_tests_properties( + testsuite-${PROJECT_NAME} + PROPERTIES ENVIRONMENT "SERVER_DIGEST_AUTH_SECRET={\"http_server_digest_auth_secret\": \"some-private-key\"}" +) diff --git a/samples/embedded_files/CMakeLists.txt b/samples/embedded_files/CMakeLists.txt index 6985db1586cc..158a1db3ad45 100644 --- a/samples/embedded_files/CMakeLists.txt +++ b/samples/embedded_files/CMakeLists.txt @@ -1,14 +1,13 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-embedded_files CXX) -find_package(userver COMPONENTS core REQUIRED) - -add_library(${PROJECT_NAME}_objs OBJECT - src/say_hello.hpp - src/say_hello.cpp - src/hello_handler.hpp - src/hello_handler.cpp +find_package( + userver + COMPONENTS core + REQUIRED ) + +add_library(${PROJECT_NAME}_objs OBJECT src/say_hello.hpp src/say_hello.cpp src/hello_handler.hpp src/hello_handler.cpp) target_link_libraries(${PROJECT_NAME}_objs userver::core) target_include_directories(${PROJECT_NAME}_objs PUBLIC src) @@ -16,10 +15,7 @@ add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_objs) # /// [embedded] -userver_embed_file(${PROJECT_NAME}_config - NAME static_config_yaml - FILEPATH static_config.yaml -) +userver_embed_file(${PROJECT_NAME}_config NAME static_config_yaml FILEPATH static_config.yaml) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_config) # /// [embedded] diff --git a/samples/flatbuf_service/CMakeLists.txt b/samples/flatbuf_service/CMakeLists.txt index 2208f70e3486..e2229b96a847 100644 --- a/samples/flatbuf_service/CMakeLists.txt +++ b/samples/flatbuf_service/CMakeLists.txt @@ -1,18 +1,19 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-flatbuf_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) set(FLATC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/flatbuffer_schema.fbs.h") add_custom_command( - COMMENT "Generating FlatBuffer header flatbuffer_schema.fbs.h" - COMMAND flatc - ARGS - --cpp --gen-object-api --filename-suffix '.fbs' - -o "${CMAKE_CURRENT_BINARY_DIR}" - "${CMAKE_CURRENT_SOURCE_DIR}/flatbuffer_schema.fbs" - OUTPUT "${FLATC_OUTPUT}" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/flatbuffer_schema.fbs" + COMMENT "Generating FlatBuffer header flatbuffer_schema.fbs.h" + COMMAND flatc ARGS --cpp --gen-object-api --filename-suffix '.fbs' -o "${CMAKE_CURRENT_BINARY_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/flatbuffer_schema.fbs" + OUTPUT "${FLATC_OUTPUT}" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/flatbuffer_schema.fbs" ) add_executable(${PROJECT_NAME} main.cpp "${FLATC_OUTPUT}") diff --git a/samples/grpc-generic-proxy/CMakeLists.txt b/samples/grpc-generic-proxy/CMakeLists.txt index 433fee87208b..ee04c1ea7c32 100644 --- a/samples/grpc-generic-proxy/CMakeLists.txt +++ b/samples/grpc-generic-proxy/CMakeLists.txt @@ -1,19 +1,19 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-grpc-generic-proxy CXX) -find_package(userver COMPONENTS grpc REQUIRED) - -add_executable(${PROJECT_NAME} - main.cpp - src/proxy_service.cpp +find_package( + userver + COMPONENTS grpc + REQUIRED ) +add_executable(${PROJECT_NAME} main.cpp src/proxy_service.cpp) + target_include_directories(${PROJECT_NAME} PRIVATE src) target_link_libraries(${PROJECT_NAME} PRIVATE userver::grpc) -# Actually unused in the service, only needed for testsuite tests. -# We could generate just the Python bindings, but this approach is currently -# not implemented in userver_add_grpc_library. +# Actually unused in the service, only needed for testsuite tests. We could generate just the Python bindings, but this +# approach is currently not implemented in userver_add_grpc_library. userver_add_grpc_library(${PROJECT_NAME}-proto PROTOS samples/greeter.proto) add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-proto) diff --git a/samples/grpc_middleware_service/CMakeLists.txt b/samples/grpc_middleware_service/CMakeLists.txt index fcb3337f3d91..b174e0c8e477 100644 --- a/samples/grpc_middleware_service/CMakeLists.txt +++ b/samples/grpc_middleware_service/CMakeLists.txt @@ -1,17 +1,24 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-grpc_middleware_service CXX) -find_package(userver COMPONENTS grpc REQUIRED) +find_package( + userver + COMPONENTS grpc + REQUIRED +) -add_executable(${PROJECT_NAME} main.cpp - src/client/view.cpp - src/http_handlers/say-hello/view.cpp - src/service/view.cpp - src/middlewares/client/component.cpp - src/middlewares/client/middleware.cpp - src/middlewares/server/component.cpp - src/middlewares/server/middleware.cpp - src/middlewares/auth.cpp) +add_executable( + ${PROJECT_NAME} + main.cpp + src/client/view.cpp + src/http_handlers/say-hello/view.cpp + src/service/view.cpp + src/middlewares/client/component.cpp + src/middlewares/client/middleware.cpp + src/middlewares/server/component.cpp + src/middlewares/server/middleware.cpp + src/middlewares/auth.cpp +) target_include_directories(${PROJECT_NAME} PRIVATE src) diff --git a/samples/grpc_service/CMakeLists.txt b/samples/grpc_service/CMakeLists.txt index a1e35f935f64..57f30477882d 100644 --- a/samples/grpc_service/CMakeLists.txt +++ b/samples/grpc_service/CMakeLists.txt @@ -2,13 +2,18 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-grpc_service CXX) # /// [ugrpc] -find_package(userver COMPONENTS grpc REQUIRED) +find_package( + userver + COMPONENTS grpc + REQUIRED +) -add_library(${PROJECT_NAME}_objs OBJECT - # Note: it's nonsense to have the same client and service in the same executable. +add_library( + ${PROJECT_NAME}_objs OBJECT + # Note: it's nonsense to have the same client and service in the same + # executable. # For test and demonstration purposes only. - src/greeter_client.cpp - src/greeter_service.cpp + src/greeter_client.cpp src/greeter_service.cpp ) target_link_libraries(${PROJECT_NAME}_objs PUBLIC userver::grpc) target_include_directories(${PROJECT_NAME}_objs PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src) @@ -24,11 +29,7 @@ target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_objs) # /// [gtest] add_executable(${PROJECT_NAME}-unittest unittests/greeter_service_test.cpp) -target_link_libraries(${PROJECT_NAME}-unittest - ${PROJECT_NAME}_objs - userver::utest - userver::grpc-utest -) +target_link_libraries(${PROJECT_NAME}-unittest ${PROJECT_NAME}_objs userver::utest userver::grpc-utest) add_google_tests(${PROJECT_NAME}-unittest) # /// [gtest] diff --git a/samples/hello_service/CMakeLists.txt b/samples/hello_service/CMakeLists.txt index 1eedf97ec9d9..2947f7d3e4c5 100644 --- a/samples/hello_service/CMakeLists.txt +++ b/samples/hello_service/CMakeLists.txt @@ -2,18 +2,16 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-hello_service CXX) # /// [find_userver] -find_package(userver COMPONENTS core REQUIRED) -# Note: If userver was added via add_subdirectory(path/to/userver), then -# the userver_setup_environment() should be called here. -# /// [find_userver] +find_package( + userver + COMPONENTS core + REQUIRED +) +# Note: If userver was added via add_subdirectory(path/to/userver), then the userver_setup_environment() should be +# called here. /// [find_userver] # /// [objects] -add_library(${PROJECT_NAME}_objs OBJECT - src/say_hello.hpp - src/say_hello.cpp - src/hello_handler.hpp - src/hello_handler.cpp -) +add_library(${PROJECT_NAME}_objs OBJECT src/say_hello.hpp src/say_hello.cpp src/hello_handler.hpp src/hello_handler.cpp) target_link_libraries(${PROJECT_NAME}_objs userver::core) target_include_directories(${PROJECT_NAME}_objs PUBLIC src) # /// [objects] @@ -35,7 +33,6 @@ target_link_libraries(${PROJECT_NAME}_benchmark ${PROJECT_NAME}_objs userver::ub add_google_benchmark_tests(${PROJECT_NAME}_benchmark) # /// [benchmarks] -# /// [testsuite] -# Makes a virtualenv suitable for running pytests from `test` directory and integrates with `ctest`. +# /// [testsuite] Makes a virtualenv suitable for running pytests from `test` directory and integrates with `ctest`. userver_testsuite_add_simple() # /// [testsuite] diff --git a/samples/http_caching/CMakeLists.txt b/samples/http_caching/CMakeLists.txt index c804592087cf..1c5067f2b9e1 100644 --- a/samples/http_caching/CMakeLists.txt +++ b/samples/http_caching/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-http_caching CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::core) diff --git a/samples/http_middleware_service/CMakeLists.txt b/samples/http_middleware_service/CMakeLists.txt index 448d7683ae8e..a458ab6b5c42 100644 --- a/samples/http_middleware_service/CMakeLists.txt +++ b/samples/http_middleware_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-http_middleware_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::core) diff --git a/samples/https_service/CMakeLists.txt b/samples/https_service/CMakeLists.txt index b2aa832d08a7..859db63d2965 100644 --- a/samples/https_service/CMakeLists.txt +++ b/samples/https_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-https_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::core) diff --git a/samples/json2yaml/CMakeLists.txt b/samples/json2yaml/CMakeLists.txt index 18dd7ddb4476..7dca0c28bf95 100644 --- a/samples/json2yaml/CMakeLists.txt +++ b/samples/json2yaml/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-json2yaml CXX) -find_package(userver COMPONENTS universal REQUIRED) +find_package( + userver + COMPONENTS universal + REQUIRED +) add_library(${PROJECT_NAME}-lib STATIC src/json2yaml.cpp) target_include_directories(${PROJECT_NAME}-lib PUBLIC src) @@ -12,24 +16,17 @@ target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}-lib) # /// [add_unit_test] add_executable(${PROJECT_NAME}-unittest unittests/json2yaml_test.cpp) -target_link_libraries(${PROJECT_NAME}-unittest - ${PROJECT_NAME}-lib - userver::universal-utest -) +target_link_libraries(${PROJECT_NAME}-unittest ${PROJECT_NAME}-lib userver::universal-utest) add_google_tests(${PROJECT_NAME}-unittest) # /// [add_unit_test] # /// [add_test] -userver_venv_setup( - REQUIREMENTS ${CMAKE_CURRENT_SOURCE_DIR}/requirements.txt - PYTHON_OUTPUT_VAR json2yaml_venv -) +userver_venv_setup(REQUIREMENTS ${CMAKE_CURRENT_SOURCE_DIR}/requirements.txt PYTHON_OUTPUT_VAR json2yaml_venv) add_test( - NAME "${PROJECT_NAME}-pytest" - COMMAND "${json2yaml_venv}" -m pytest - "--test-binary=${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}" - "-c /dev/null" # Do not search for pytest.ini - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + NAME "${PROJECT_NAME}-pytest" + COMMAND "${json2yaml_venv}" -m pytest "--test-binary=${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}" + "-c /dev/null" # Do not search for pytest.ini + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) # /// [add_test] diff --git a/samples/kafka_service/CMakeLists.txt b/samples/kafka_service/CMakeLists.txt index 8cf77c65843c..90aa70c2e6ec 100644 --- a/samples/kafka_service/CMakeLists.txt +++ b/samples/kafka_service/CMakeLists.txt @@ -1,9 +1,14 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-kafka_service CXX) -find_package(userver COMPONENTS core kafka REQUIRED) +find_package( + userver + COMPONENTS core kafka + REQUIRED +) -add_library(${PROJECT_NAME}_objs OBJECT +add_library( + ${PROJECT_NAME}_objs OBJECT src/consume.hpp src/consume.cpp src/produce.hpp @@ -21,11 +26,12 @@ target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_objs) # /// [Kafka service sample - kafka unit test cmake] add_executable(${PROJECT_NAME}-unittest "unittest/kafka_test.cpp") -target_link_libraries(${PROJECT_NAME}-unittest - PRIVATE ${PROJECT_NAME}_objs userver::kafka-utest) +target_link_libraries(${PROJECT_NAME}-unittest PRIVATE ${PROJECT_NAME}_objs userver::kafka-utest) userver_add_utest( - NAME ${PROJECT_NAME}-unittest - DATABASES kafka + NAME + ${PROJECT_NAME}-unittest + DATABASES + kafka TEST_ENV "TESTSUITE_KAFKA_SERVER_START_TIMEOUT=120.0" "TESTSUITE_KAFKA_SERVER_HOST=[::1]" @@ -36,9 +42,7 @@ userver_add_utest( # /// [Kafka service sample - kafka functional test cmake] userver_testsuite_add_simple( - TEST_ENV - "TESTSUITE_KAFKA_SERVER_START_TIMEOUT=120.0" - "TESTSUITE_KAFKA_SERVER_HOST=[::1]" + TEST_ENV "TESTSUITE_KAFKA_SERVER_START_TIMEOUT=120.0" "TESTSUITE_KAFKA_SERVER_HOST=[::1]" "TESTSUITE_KAFKA_CUSTOM_TOPICS=test-topic-1:1,test-topic-2:1" ) diff --git a/samples/mongo-support/CMakeLists.txt b/samples/mongo-support/CMakeLists.txt index 5e8513bec3f7..637da5d119b3 100644 --- a/samples/mongo-support/CMakeLists.txt +++ b/samples/mongo-support/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-mongo-support CXX) -find_package(userver COMPONENTS mongo REQUIRED) +find_package( + userver + COMPONENTS mongo + REQUIRED +) file(GLOB_RECURSE SOURCES main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) diff --git a/samples/mongo_service/CMakeLists.txt b/samples/mongo_service/CMakeLists.txt index 22c6037da753..59ea2390ba2c 100644 --- a/samples/mongo_service/CMakeLists.txt +++ b/samples/mongo_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-mongo_service CXX) -find_package(userver COMPONENTS mongo REQUIRED) +find_package( + userver + COMPONENTS mongo + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::mongo) diff --git a/samples/multipart_service/CMakeLists.txt b/samples/multipart_service/CMakeLists.txt index 560336bac0f6..b8e24617d107 100644 --- a/samples/multipart_service/CMakeLists.txt +++ b/samples/multipart_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-multipart_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} userver::core) diff --git a/samples/mysql_service/CMakeLists.txt b/samples/mysql_service/CMakeLists.txt index 3b0ba1e253b2..46817836a40f 100644 --- a/samples/mysql_service/CMakeLists.txt +++ b/samples/mysql_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-mysql_service CXX) -find_package(userver COMPONENTS mysql REQUIRED) +find_package( + userver + COMPONENTS mysql + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::mysql) diff --git a/samples/otlp_service/CMakeLists.txt b/samples/otlp_service/CMakeLists.txt index 30d15cdf39ef..47b01130548f 100644 --- a/samples/otlp_service/CMakeLists.txt +++ b/samples/otlp_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-otlp_service CXX) -find_package(userver COMPONENTS otlp REQUIRED) +find_package( + userver + COMPONENTS otlp + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::otlp) diff --git a/samples/postgres-support/CMakeLists.txt b/samples/postgres-support/CMakeLists.txt index 667b06619052..b2e91e9ee2f3 100644 --- a/samples/postgres-support/CMakeLists.txt +++ b/samples/postgres-support/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-postgres-support CXX) -find_package(userver COMPONENTS postgresql REQUIRED) +find_package( + userver + COMPONENTS postgresql + REQUIRED +) file(GLOB_RECURSE SOURCES main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) diff --git a/samples/postgres_auth/CMakeLists.txt b/samples/postgres_auth/CMakeLists.txt index ae8e874b0e4f..df2040b89c74 100644 --- a/samples/postgres_auth/CMakeLists.txt +++ b/samples/postgres_auth/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-postgres_auth CXX) -find_package(userver COMPONENTS postgresql REQUIRED) +find_package( + userver + COMPONENTS postgresql + REQUIRED +) add_executable(${PROJECT_NAME} postgres_service.cpp auth_bearer.cpp) target_link_libraries(${PROJECT_NAME} userver::postgresql) diff --git a/samples/postgres_service/CMakeLists.txt b/samples/postgres_service/CMakeLists.txt index 464fe8fb28fd..f7fe6e4b0bc2 100644 --- a/samples/postgres_service/CMakeLists.txt +++ b/samples/postgres_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-postgres_service CXX) -find_package(userver COMPONENTS postgresql REQUIRED) +find_package( + userver + COMPONENTS postgresql + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::postgresql) @@ -9,9 +13,12 @@ target_link_libraries(${PROJECT_NAME} userver::postgresql) # /// [Postgres service sample - CMakeLists.txt] userver_add_sql_library( ${PROJECT_NAME}_sql - NAMESPACE samples_postgres_service - OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} - SQL_FILES *.sql + NAMESPACE + samples_postgres_service + OUTPUT_DIR + ${CMAKE_CURRENT_BINARY_DIR} + SQL_FILES + *.sql ) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_sql) # /// [Postgres service sample - CMakeLists.txt] diff --git a/samples/production_service/CMakeLists.txt b/samples/production_service/CMakeLists.txt index a78cd0544675..79a1bc64cc08 100644 --- a/samples/production_service/CMakeLists.txt +++ b/samples/production_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-production_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::core) diff --git a/samples/rabbitmq_service/CMakeLists.txt b/samples/rabbitmq_service/CMakeLists.txt index 25b4a10849ad..39a2e6a4defd 100644 --- a/samples/rabbitmq_service/CMakeLists.txt +++ b/samples/rabbitmq_service/CMakeLists.txt @@ -1,11 +1,13 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-rabbitmq_service CXX) -find_package(userver COMPONENTS rabbitmq REQUIRED) +find_package( + userver + COMPONENTS rabbitmq + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::rabbitmq) -userver_testsuite_add_simple( - TEST_ENV "TESTSUITE_RABBITMQ_SERVER_START_TIMEOUT=120.0" -) +userver_testsuite_add_simple(TEST_ENV "TESTSUITE_RABBITMQ_SERVER_START_TIMEOUT=120.0") diff --git a/samples/redis_service/CMakeLists.txt b/samples/redis_service/CMakeLists.txt index 8980dd0a2218..60061f604806 100644 --- a/samples/redis_service/CMakeLists.txt +++ b/samples/redis_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-redis_service CXX) -find_package(userver COMPONENTS redis REQUIRED) +find_package( + userver + COMPONENTS redis + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::redis) diff --git a/samples/s3api/CMakeLists.txt b/samples/s3api/CMakeLists.txt index a98d504ef873..ca0ed0c001cc 100644 --- a/samples/s3api/CMakeLists.txt +++ b/samples/s3api/CMakeLists.txt @@ -1,13 +1,14 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-s3api CXX) -# /// [s3api] -# cmake -find_package(userver COMPONENTS core s3api REQUIRED) - -add_library(${PROJECT_NAME}_objs OBJECT - src/s3api_client.cpp +# /// [s3api] cmake +find_package( + userver + COMPONENTS core s3api + REQUIRED ) + +add_library(${PROJECT_NAME}_objs OBJECT src/s3api_client.cpp) target_link_libraries(${PROJECT_NAME}_objs PUBLIC userver::s3api) target_include_directories(${PROJECT_NAME}_objs PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src) # /// [s3api] @@ -15,14 +16,8 @@ target_include_directories(${PROJECT_NAME}_objs PUBLIC ${CMAKE_CURRENT_SOURCE_DI add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_objs) -# /// [gtest] -# cmake +# /// [gtest] cmake add_executable(${PROJECT_NAME}-unittest unittests/client_test.cpp) -target_link_libraries(${PROJECT_NAME}-unittest - ${PROJECT_NAME}_objs - userver::utest - userver::s3api-utest -) +target_link_libraries(${PROJECT_NAME}-unittest ${PROJECT_NAME}_objs userver::utest userver::s3api-utest) add_google_tests(${PROJECT_NAME}-unittest) # /// [gtest] - diff --git a/samples/static_service/CMakeLists.txt b/samples/static_service/CMakeLists.txt index c42d23f2eb2e..baeea2193a96 100644 --- a/samples/static_service/CMakeLists.txt +++ b/samples/static_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-static_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::core) diff --git a/samples/tcp_full_duplex_service/CMakeLists.txt b/samples/tcp_full_duplex_service/CMakeLists.txt index 37bc84a9de86..b6b428c6fba8 100644 --- a/samples/tcp_full_duplex_service/CMakeLists.txt +++ b/samples/tcp_full_duplex_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-tcp_full_duplex_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::core) diff --git a/samples/tcp_service/CMakeLists.txt b/samples/tcp_service/CMakeLists.txt index 53f44dad45d0..9a58acb77c1d 100644 --- a/samples/tcp_service/CMakeLists.txt +++ b/samples/tcp_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-tcp_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::core) diff --git a/samples/testsuite-support/CMakeLists.txt b/samples/testsuite-support/CMakeLists.txt index f3c717f42e93..b6a603e1c4ff 100644 --- a/samples/testsuite-support/CMakeLists.txt +++ b/samples/testsuite-support/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-testsuite-support CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) file(GLOB_RECURSE SOURCES main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) @@ -10,12 +14,15 @@ target_link_libraries(${PROJECT_NAME} userver::core) # /// [testsuite - cmake] userver_testsuite_add( - SERVICE_TARGET ${PROJECT_NAME} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests - PYTHON_BINARY ${TESTSUITE_PYTHON_BINARY} - PYTEST_ARGS - --service-config=${CMAKE_CURRENT_SOURCE_DIR}/static_config.yaml - --service-binary=${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} - --service-config-vars=${CMAKE_CURRENT_SOURCE_DIR}/config_vars.yaml + SERVICE_TARGET + ${PROJECT_NAME} + WORKING_DIRECTORY + ${CMAKE_CURRENT_SOURCE_DIR}/tests + PYTHON_BINARY + ${TESTSUITE_PYTHON_BINARY} + PYTEST_ARGS + --service-config=${CMAKE_CURRENT_SOURCE_DIR}/static_config.yaml + --service-binary=${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} + --service-config-vars=${CMAKE_CURRENT_SOURCE_DIR}/config_vars.yaml ) # /// [testsuite - cmake] diff --git a/samples/websocket_service/CMakeLists.txt b/samples/websocket_service/CMakeLists.txt index 3a1a529e6d64..98ea2dc2e53f 100644 --- a/samples/websocket_service/CMakeLists.txt +++ b/samples/websocket_service/CMakeLists.txt @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-websocket_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) add_executable(${PROJECT_NAME} "main.cpp") target_link_libraries(${PROJECT_NAME} userver::core) diff --git a/samples/ydb_service/CMakeLists.txt b/samples/ydb_service/CMakeLists.txt index 223f60e36817..19a20018121a 100644 --- a/samples/ydb_service/CMakeLists.txt +++ b/samples/ydb_service/CMakeLists.txt @@ -1,22 +1,24 @@ cmake_minimum_required(VERSION 3.14) project(userver-samples-ydb_service CXX) -find_package(userver COMPONENTS core REQUIRED) +find_package( + userver + COMPONENTS core + REQUIRED +) -add_executable(${PROJECT_NAME} - "main.cpp" - "views/bson-reading/post/view.cpp" - "views/bson-upserting/post/view.cpp" - "views/select-rows/post/view.cpp" - "views/upsert-rows/post/view.cpp" - "views/upsert-2rows/post/view.cpp" - "views/upsert-row/post/view.cpp" - "components/topic_reader.cpp" +add_executable( + ${PROJECT_NAME} + "main.cpp" + "views/bson-reading/post/view.cpp" + "views/bson-upserting/post/view.cpp" + "views/select-rows/post/view.cpp" + "views/upsert-rows/post/view.cpp" + "views/upsert-2rows/post/view.cpp" + "views/upsert-row/post/view.cpp" + "components/topic_reader.cpp" ) target_link_libraries(${PROJECT_NAME} userver::mongo userver-ydb) -target_include_directories(${PROJECT_NAME} - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} -) +target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) userver_testsuite_add_simple() diff --git a/scripts/gdb/tests/CMakeLists.txt b/scripts/gdb/tests/CMakeLists.txt index fc50617d8bdb..4f1ac704067e 100644 --- a/scripts/gdb/tests/CMakeLists.txt +++ b/scripts/gdb/tests/CMakeLists.txt @@ -1,15 +1,15 @@ -if (NOT (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "Test")) - return() +if(NOT (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "Test")) + return() endif() -if (CMAKE_SYSTEM_NAME MATCHES "Darwin") - # There is not GDB for MacOS - return() +if(CMAKE_SYSTEM_NAME MATCHES "Darwin") + # There is not GDB for MacOS + return() endif() find_program(GDB_EXECUTABLE gdb DOC "GDB executable") -if ("${GDB_EXECUTABLE}" STREQUAL GDB_EXECUTABLE-NOTFOUND) - message(WARNING "GDB executable not found") - return() +if("${GDB_EXECUTABLE}" STREQUAL GDB_EXECUTABLE-NOTFOUND) + message(WARNING "GDB executable not found") + return() endif() project(userver-gdb-tests) @@ -18,27 +18,33 @@ set(GDB_TESTS_DIR ${CMAKE_CURRENT_LIST_DIR}) set_directory_properties(PROPERTIES TEST_PROGRAMS "" TEST_SOURCES "") macro(add_gdb_test_program NAME SOURCE DEPS) - project(userver-gdb-test-${NAME}) + project(userver-gdb-test-${NAME}) - add_executable(${PROJECT_NAME} "${SOURCE}") - target_link_libraries(${PROJECT_NAME} ${DEPS}) - target_include_directories(${PROJECT_NAME} PRIVATE "${USERVER_ROOT_DIR}/scripts/gdb/tests/include") + add_executable(${PROJECT_NAME} "${SOURCE}") + target_link_libraries(${PROJECT_NAME} ${DEPS}) + target_include_directories(${PROJECT_NAME} PRIVATE "${USERVER_ROOT_DIR}/scripts/gdb/tests/include") - get_directory_property(TEST_PROGRAMS DIRECTORY "${GDB_TESTS_DIR}" TEST_PROGRAMS) - get_directory_property(TEST_SOURCES DIRECTORY "${GDB_TESTS_DIR}" TEST_SOURCES) + get_directory_property(TEST_PROGRAMS DIRECTORY "${GDB_TESTS_DIR}" TEST_PROGRAMS) + get_directory_property(TEST_SOURCES DIRECTORY "${GDB_TESTS_DIR}" TEST_SOURCES) - set_property(DIRECTORY "${GDB_TESTS_DIR}" PROPERTY TEST_PROGRAMS "${TEST_PROGRAMS}:$") - set_property(DIRECTORY "${GDB_TESTS_DIR}" PROPERTY TEST_SOURCES "${TEST_SOURCES}:${CMAKE_CURRENT_LIST_DIR}/${SOURCE}") + set_property(DIRECTORY "${GDB_TESTS_DIR}" PROPERTY TEST_PROGRAMS "${TEST_PROGRAMS}:$") + set_property( + DIRECTORY "${GDB_TESTS_DIR}" PROPERTY TEST_SOURCES "${TEST_SOURCES}:${CMAKE_CURRENT_LIST_DIR}/${SOURCE}" + ) endmacro() add_subdirectory(src) -add_test(NAME ${PROJECT_NAME} - COMMAND "${TESTSUITE_PYTHON_BINARY}" -m pytest - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" +add_test( + NAME ${PROJECT_NAME} + COMMAND "${TESTSUITE_PYTHON_BINARY}" -m pytest + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) get_directory_property(TEST_PROGRAMS TEST_PROGRAMS) get_directory_property(TEST_SOURCES TEST_SOURCES) -set_tests_properties(${PROJECT_NAME} PROPERTIES ENVIRONMENT "TEST_PROGRAMS=${TEST_PROGRAMS};TEST_SOURCES=${TEST_SOURCES};GDB_BIN=${GDB_EXECUTABLE}") +set_tests_properties( + ${PROJECT_NAME} PROPERTIES ENVIRONMENT + "TEST_PROGRAMS=${TEST_PROGRAMS};TEST_SOURCES=${TEST_SOURCES};GDB_BIN=${GDB_EXECUTABLE}" +) diff --git a/testsuite/CMakeLists.txt b/testsuite/CMakeLists.txt index 8a8404809dc6..2ca2876eb646 100644 --- a/testsuite/CMakeLists.txt +++ b/testsuite/CMakeLists.txt @@ -1,3 +1,3 @@ -if (USERVER_BUILD_TESTS) +if(USERVER_BUILD_TESTS) add_subdirectory(tests) endif() diff --git a/testsuite/tests/CMakeLists.txt b/testsuite/tests/CMakeLists.txt index 00f45b419bdc..986cc36822ff 100644 --- a/testsuite/tests/CMakeLists.txt +++ b/testsuite/tests/CMakeLists.txt @@ -1,8 +1,9 @@ project(userver-testsuite-tests) -add_test(NAME ${PROJECT_NAME} - COMMAND "${TESTSUITE_PYTHON_BINARY}" -m pytest "${CMAKE_CURRENT_SOURCE_DIR}" - WORKING_DIRECTORY "${USERVER_ROOT_DIR}/testsuite/pytest_plugins" +add_test( + NAME ${PROJECT_NAME} + COMMAND "${TESTSUITE_PYTHON_BINARY}" -m pytest "${CMAKE_CURRENT_SOURCE_DIR}" + WORKING_DIRECTORY "${USERVER_ROOT_DIR}/testsuite/pytest_plugins" ) set_tests_properties(${PROJECT_NAME} PROPERTIES TIMEOUT 600) diff --git a/third_party/compiler-rt/CMakeLists.txt b/third_party/compiler-rt/CMakeLists.txt index 7a1ec60ffb65..fe51938ee9e4 100644 --- a/third_party/compiler-rt/CMakeLists.txt +++ b/third_party/compiler-rt/CMakeLists.txt @@ -1,9 +1,9 @@ project(userver-compiler-rt-parts) if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(SOURCES lib/builtins/muloti4.c) - add_library(${PROJECT_NAME} OBJECT ${SOURCES}) + set(SOURCES lib/builtins/muloti4.c) + add_library(${PROJECT_NAME} OBJECT ${SOURCES}) else() - add_library(${PROJECT_NAME} INTERFACE) + add_library(${PROJECT_NAME} INTERFACE) endif() _userver_install_targets(COMPONENT universal TARGETS ${PROJECT_NAME}) diff --git a/third_party/http-parser/CMakeLists.txt b/third_party/http-parser/CMakeLists.txt index cfb73fd4210f..b5708c3c3af0 100644 --- a/third_party/http-parser/CMakeLists.txt +++ b/third_party/http-parser/CMakeLists.txt @@ -3,13 +3,9 @@ project(userver-http-parser VERSION 2.9.4) set(CMAKE_C_STANDARD 99) # Source code -set(HTTP_PARSER_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/http_parser.c -) +set(HTTP_PARSER_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/http_parser.c) add_library(${PROJECT_NAME} OBJECT ${HTTP_PARSER_SOURCES}) -target_include_directories(${PROJECT_NAME} PUBLIC - $ -) +target_include_directories(${PROJECT_NAME} PUBLIC $) _userver_install_targets(COMPONENT universal TARGETS ${PROJECT_NAME}) diff --git a/third_party/librseq/CMakeLists.txt b/third_party/librseq/CMakeLists.txt index a25627344924..af92e01d161a 100644 --- a/third_party/librseq/CMakeLists.txt +++ b/third_party/librseq/CMakeLists.txt @@ -1,16 +1,10 @@ project(userver-librseq C) -SET(SOURCES - src/rseq.c - src/rseq-mempool.c - src/smp.c -) +set(SOURCES src/rseq.c src/rseq-mempool.c src/smp.c) add_library(${PROJECT_NAME} OBJECT ${SOURCES}) -target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - $ -) +target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC $) target_compile_options(${PROJECT_NAME} PRIVATE -Wno-implicit-function-declaration) target_compile_definitions(${PROJECT_NAME} PRIVATE _GNU_SOURCE) set_target_properties(${PROJECT_NAME} PROPERTIES C_EXTENSIONS ON) diff --git a/third_party/llhttp/CMakeLists.txt b/third_party/llhttp/CMakeLists.txt index 30b946167fd5..581312cd014e 100644 --- a/third_party/llhttp/CMakeLists.txt +++ b/third_party/llhttp/CMakeLists.txt @@ -3,15 +3,11 @@ project(userver-llhttp VERSION 9.2.0) set(CMAKE_C_STANDARD 99) # Source code -set(LLHTTP_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/llhttp.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/http.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/api.c +set(LLHTTP_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/llhttp.c ${CMAKE_CURRENT_SOURCE_DIR}/src/http.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/api.c ) add_library(${PROJECT_NAME} OBJECT ${LLHTTP_SOURCES}) -target_include_directories(${PROJECT_NAME} PUBLIC - $ -) +target_include_directories(${PROJECT_NAME} PUBLIC $) _userver_install_targets(COMPONENT universal TARGETS ${PROJECT_NAME}) diff --git a/third_party/uboost_coro/CMakeLists.txt b/third_party/uboost_coro/CMakeLists.txt index 0da3da20ce0d..ba7bc4c58b76 100644 --- a/third_party/uboost_coro/CMakeLists.txt +++ b/third_party/uboost_coro/CMakeLists.txt @@ -1,82 +1,71 @@ project(userver-uboost-coro) include(CMakeDependentOption) -CMAKE_DEPENDENT_OPTION(UBOOST_CORO_USE_UCONTEXT - "Use ucontext for context switching" - OFF "NOT USERVER_SANITIZE" - ON # forced on USERVER_SANITIZE +cmake_dependent_option( + UBOOST_CORO_USE_UCONTEXT "Use ucontext for context switching" OFF "NOT USERVER_SANITIZE" ON # forced on + # USERVER_SANITIZE ) if(UBOOST_CORO_USE_UCONTEXT) - message(STATUS "Context impl: ucontext") + message(STATUS "Context impl: ucontext") else() - message(STATUS "Context impl: fcontext") + message(STATUS "Context impl: fcontext") endif() -set(SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/posix/stack_traits.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/fcontext.cpp +set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/context/posix/stack_traits.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/fcontext.cpp ) enable_language(ASM) if(APPLE) - if (CMAKE_SYSTEM_PROCESSOR MATCHES "^x86" OR CMAKE_SYSTEM_PROCESSOR MATCHES "^amd64") - list(APPEND SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_x86_64_sysv_macho_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_x86_64_sysv_macho_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_x86_64_sysv_macho_gas.S - ) - else() - list(APPEND SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_arm64_aapcs_macho_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_arm64_aapcs_macho_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_arm64_aapcs_macho_gas.S - ) - endif() -else() # Unix - if (CMAKE_SYSTEM_PROCESSOR MATCHES "^x86" OR CMAKE_SYSTEM_PROCESSOR MATCHES "^amd64") - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - list(APPEND SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_i386_sysv_elf_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_i386_sysv_elf_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_i386_sysv_elf_gas.S - ) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "^x86" OR CMAKE_SYSTEM_PROCESSOR MATCHES "^amd64") + list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_x86_64_sysv_macho_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_x86_64_sysv_macho_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_x86_64_sysv_macho_gas.S + ) else() - list(APPEND SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_x86_64_sysv_elf_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_x86_64_sysv_elf_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_x86_64_sysv_elf_gas.S - ) + list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_arm64_aapcs_macho_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_arm64_aapcs_macho_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_arm64_aapcs_macho_gas.S + ) endif() - else() - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - list(APPEND SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_arm_aapcs_elf_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_arm_aapcs_elf_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_arm_aapcs_elf_gas.S - ) +else() # Unix + if(CMAKE_SYSTEM_PROCESSOR MATCHES "^x86" OR CMAKE_SYSTEM_PROCESSOR MATCHES "^amd64") + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_i386_sysv_elf_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_i386_sysv_elf_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_i386_sysv_elf_gas.S + ) + else() + list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_x86_64_sysv_elf_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_x86_64_sysv_elf_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_x86_64_sysv_elf_gas.S + ) + endif() else() - list(APPEND SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_arm64_aapcs_elf_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_arm64_aapcs_elf_gas.S - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_arm64_aapcs_elf_gas.S - ) + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_arm_aapcs_elf_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_arm_aapcs_elf_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_arm_aapcs_elf_gas.S + ) + else() + list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/jump_arm64_aapcs_elf_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/make_arm64_aapcs_elf_gas.S + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/asm/ontop_arm64_aapcs_elf_gas.S + ) + endif() endif() - endif() endif() if(UBOOST_CORO_USE_UCONTEXT) - list(APPEND SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/continuation.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/context/fiber.cpp - ) + list(APPEND SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/context/continuation.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/context/fiber.cpp + ) endif() add_library(${PROJECT_NAME} OBJECT ${SOURCES}) set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX) -target_include_directories(${PROJECT_NAME} PUBLIC - $ -) +target_include_directories(${PROJECT_NAME} PUBLIC $) target_compile_options(${PROJECT_NAME} PRIVATE "-w") # no warnings target_compile_definitions(${PROJECT_NAME} PRIVATE "BOOST_CONTEXT_SOURCE") @@ -84,24 +73,24 @@ target_compile_definitions(${PROJECT_NAME} PRIVATE "BOOST_CONTEXT_SOURCE") include(Sanitizers) _userver_get_sanitize_options(SANITIZERS_LIST SANITIZE_COMPILE_FLAGS SANITIZE_LINK_FLAGS) -if ("addr" IN_LIST SANITIZERS_LIST) - target_compile_definitions(${PROJECT_NAME} PUBLIC "BOOST_USE_ASAN") +if("addr" IN_LIST SANITIZERS_LIST) + target_compile_definitions(${PROJECT_NAME} PUBLIC "BOOST_USE_ASAN") endif() -if ("thread" IN_LIST SANITIZERS_LIST) - target_compile_definitions(${PROJECT_NAME} PUBLIC "BOOST_USE_TSAN") +if("thread" IN_LIST SANITIZERS_LIST) + target_compile_definitions(${PROJECT_NAME} PUBLIC "BOOST_USE_TSAN") endif() if(UBOOST_CORO_USE_UCONTEXT) - target_compile_definitions(${PROJECT_NAME} PUBLIC "BOOST_USE_UCONTEXT") - if(MACOS) - # *context functions are deprecated on macos - target_compile_options(${PROJECT_NAME} PUBLIC "-Wno-error=deprecated-declarations") - # for full ucontext definition - target_compile_definitions(${PROJECT_NAME} PUBLIC "_XOPEN_SOURCE=600") - # to retain non-POSIX extensions - target_compile_definitions(${PROJECT_NAME} PUBLIC "_DARWIN_C_SOURCE") - endif() + target_compile_definitions(${PROJECT_NAME} PUBLIC "BOOST_USE_UCONTEXT") + if(MACOS) + # *context functions are deprecated on macos + target_compile_options(${PROJECT_NAME} PUBLIC "-Wno-error=deprecated-declarations") + # for full ucontext definition + target_compile_definitions(${PROJECT_NAME} PUBLIC "_XOPEN_SOURCE=600") + # to retain non-POSIX extensions + target_compile_definitions(${PROJECT_NAME} PUBLIC "_DARWIN_C_SOURCE") + endif() endif() find_package(Boost REQUIRED CONFIG) diff --git a/tools/congestion-control-emulator/CMakeLists.txt b/tools/congestion-control-emulator/CMakeLists.txt index 2507bc42c9a4..1546bb89ec07 100644 --- a/tools/congestion-control-emulator/CMakeLists.txt +++ b/tools/congestion-control-emulator/CMakeLists.txt @@ -5,7 +5,4 @@ file(GLOB_RECURSE SOURCES *.cpp) find_package(Boost REQUIRED CONFIG COMPONENTS program_options) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} - userver-core - Boost::program_options -) +target_link_libraries(${PROJECT_NAME} userver-core Boost::program_options) diff --git a/tools/dns-resolver/CMakeLists.txt b/tools/dns-resolver/CMakeLists.txt index 777b47827590..e799a5b168f0 100644 --- a/tools/dns-resolver/CMakeLists.txt +++ b/tools/dns-resolver/CMakeLists.txt @@ -5,13 +5,7 @@ file(GLOB_RECURSE SOURCES *.cpp) find_package(Boost REQUIRED CONFIG COMPONENTS program_options) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} - userver-core - Boost::program_options -) +target_link_libraries(${PROJECT_NAME} userver-core Boost::program_options) -# Include directories marked SYSTEM so that includes from external projects -# do not generate warnings treated as errors -target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE - $ -) +# Include directories marked SYSTEM so that includes from external projects do not generate warnings treated as errors +target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE $) diff --git a/tools/engine-perf/CMakeLists.txt b/tools/engine-perf/CMakeLists.txt index 502c3ce70bf8..13cf5f220889 100644 --- a/tools/engine-perf/CMakeLists.txt +++ b/tools/engine-perf/CMakeLists.txt @@ -5,7 +5,4 @@ file(GLOB_RECURSE SOURCES *.cpp) find_package(Boost REQUIRED CONFIG COMPONENTS program_options) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} - userver-core - Boost::program_options -) +target_link_libraries(${PROJECT_NAME} userver-core Boost::program_options) diff --git a/tools/http-client-perf/CMakeLists.txt b/tools/http-client-perf/CMakeLists.txt index 40304bfdd091..8c8841b6ecc7 100644 --- a/tools/http-client-perf/CMakeLists.txt +++ b/tools/http-client-perf/CMakeLists.txt @@ -5,7 +5,4 @@ file(GLOB_RECURSE SOURCES *.cpp) find_package(Boost REQUIRED CONFIG COMPONENTS program_options) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} - userver-core - Boost::program_options -) +target_link_libraries(${PROJECT_NAME} userver-core Boost::program_options) diff --git a/tools/netcat/CMakeLists.txt b/tools/netcat/CMakeLists.txt index 844025731554..b30e6be624fd 100644 --- a/tools/netcat/CMakeLists.txt +++ b/tools/netcat/CMakeLists.txt @@ -5,7 +5,4 @@ file(GLOB_RECURSE SOURCES *.cpp) find_package(Boost REQUIRED CONFIG COMPONENTS program_options) add_executable(${PROJECT_NAME} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} - userver-core - Boost::program_options -) +target_link_libraries(${PROJECT_NAME} userver-core Boost::program_options) diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index cc535636c438..aac0b60fc624 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -1,56 +1,48 @@ project(userver-universal CXX) -if (NOT USERVER_ROOT_DIR) - message(FATAL_ERROR "Include userver project rather than the userver/universal") +if(NOT USERVER_ROOT_DIR) + message(FATAL_ERROR "Include userver project rather than the userver/universal") endif() -if (TARGET userver-core) - message(FATAL_ERROR "userver-core should be included after userver-universal") +if(TARGET userver-core) + message(FATAL_ERROR "userver-core should be included after userver-universal") endif() include(Sanitizers) _userver_make_sanitize_target() -file(GLOB_RECURSE SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp +file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ) -file(GLOB_RECURSE UNIT_TEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp -) -file(GLOB_RECURSE BENCH_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/*_benchmark.cpp -) -file(GLOB_RECURSE INTERNAL_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.hpp +file(GLOB_RECURSE UNIT_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp) +file(GLOB_RECURSE BENCH_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*_benchmark.cpp) +file(GLOB_RECURSE INTERNAL_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/internal/*.hpp ) list(REMOVE_ITEM SOURCES ${UNIT_TEST_SOURCES} ${BENCH_SOURCES} ${INTERNAL_SOURCES}) set(CMAKE_THREAD_PREFER_PTHREAD ON) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) -find_package(Boost REQUIRED CONFIG - COMPONENTS - program_options - filesystem - regex - stacktrace_basic - OPTIONAL_COMPONENTS - stacktrace_backtrace +find_package( + Boost REQUIRED CONFIG + COMPONENTS program_options filesystem regex stacktrace_basic + OPTIONAL_COMPONENTS stacktrace_backtrace ) -include(UserverRequireDWCAS) # Should be called after `find_package(Boost)` +include(UserverRequireDWCAS) # Should be called after `find_package(Boost)` message(STATUS "boost: ${Boost_VERSION_STRING}") -if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - if (CMAKE_SYSTEM_NAME MATCHES "Darwin" AND Boost_FOUND) - # requires Boost_FOUND to make a valid expression - if ("${Boost_VERSION_STRING}" VERSION_LESS "1.68.0") - message(FATAL_ERROR "Boost Locale version less that 1.68 uses features deleted from standard. Please update your boost distribution.") +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + if(CMAKE_SYSTEM_NAME MATCHES "Darwin" AND Boost_FOUND) + # requires Boost_FOUND to make a valid expression + if("${Boost_VERSION_STRING}" VERSION_LESS "1.68.0") + message( + FATAL_ERROR + "Boost Locale version less that 1.68 uses features deleted from standard. Please update your boost distribution." + ) + endif() endif() - endif() endif() find_package_required(OpenSSL "libssl-dev") @@ -58,48 +50,50 @@ find_package_required(OpenSSL "libssl-dev") find_package(yaml-cpp REQUIRED) find_package(zstd REQUIRED) -if (USERVER_CONAN) - find_package(cryptopp REQUIRED) - find_package(fmt REQUIRED) - find_package(cctz REQUIRED) +if(USERVER_CONAN) + find_package(cryptopp REQUIRED) + find_package(fmt REQUIRED) + find_package(cctz REQUIRED) - find_package(RapidJSON REQUIRED) - target_compile_definitions(rapidjson INTERFACE RAPIDJSON_HAS_STDSTRING) + find_package(RapidJSON REQUIRED) + target_compile_definitions(rapidjson INTERFACE RAPIDJSON_HAS_STDSTRING) else() - include(SetupCryptoPP) - include(SetupFmt) - include(SetupCCTZ) + include(SetupCryptoPP) + include(SetupFmt) + include(SetupCCTZ) endif() -# Compiler flags for userver code. Flags for all the code -# including third_party are in cmake/UserverSetupEnvironment.cmake +# Compiler flags for userver code. Flags for all the code including third_party are in +# cmake/UserverSetupEnvironment.cmake add_library(userver-internal-compile-options INTERFACE) userver_target_require_dwcas(userver-internal-compile-options INTERFACE) target_compile_features(userver-internal-compile-options INTERFACE cxx_std_17) -target_compile_options(userver-internal-compile-options INTERFACE - "-Wall" "-Wextra" "-Wpedantic" -) +target_compile_options(userver-internal-compile-options INTERFACE "-Wall" "-Wextra" "-Wpedantic") include(UserverCxxCompileOptionsIfSupported) -userver_target_cxx_compile_options_if_supported(userver-internal-compile-options INTERFACE - "-ftemplate-backtrace-limit=0" - - # -Wall and -Wextra do not enable these - "-Wdisabled-optimization" "-Winvalid-pch" "-Wimplicit-fallthrough" - "-Wlogical-op" "-Wformat=2" "-Wno-error=deprecated-declarations" - - # This warning is unavoidable in generic code with templates - "-Wno-useless-cast" - - # Starting from C++20, passing zero arguments to a variadic macro parameter is allowed - "-Wno-gnu-zero-variadic-macro-arguments" +userver_target_cxx_compile_options_if_supported( + userver-internal-compile-options + INTERFACE + "-ftemplate-backtrace-limit=0" + # -Wall and -Wextra do not enable these + "-Wdisabled-optimization" + "-Winvalid-pch" + "-Wimplicit-fallthrough" + "-Wlogical-op" + "-Wformat=2" + "-Wno-error=deprecated-declarations" + # This warning is unavoidable in generic code with templates + "-Wno-useless-cast" + # Starting from C++20, passing zero arguments to a variadic macro parameter is allowed + "-Wno-gnu-zero-variadic-macro-arguments" ) # Gives false positives -if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" - AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12 - AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13) - target_compile_options(userver-internal-compile-options INTERFACE "-Wno-range-loop-analysis") +if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" + AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12 + AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13 +) + target_compile_options(userver-internal-compile-options INTERFACE "-Wno-range-loop-analysis") endif() # Trimming filename prefixes @@ -108,317 +102,289 @@ file(TO_NATIVE_PATH "${CMAKE_SOURCE_DIR}/" SRC_LOG_PATH_BASE) file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/" BIN_LOG_PATH_BASE) # Depending on OS and CMake version the path may or may not have a trailing '/' -if (NOT SRC_LOG_PATH_BASE MATCHES ".*/$") - set(SRC_LOG_PATH_BASE "${SRC_LOG_PATH_BASE}/") +if(NOT SRC_LOG_PATH_BASE MATCHES ".*/$") + set(SRC_LOG_PATH_BASE "${SRC_LOG_PATH_BASE}/") endif() -if (NOT BIN_LOG_PATH_BASE MATCHES ".*/$") - set(BIN_LOG_PATH_BASE "${BIN_LOG_PATH_BASE}/") +if(NOT BIN_LOG_PATH_BASE MATCHES ".*/$") + set(BIN_LOG_PATH_BASE "${BIN_LOG_PATH_BASE}/") endif() -if (NOT BASE_PREFIX STREQUAL "/" AND NOT BASE_PREFIX MATCHES ".*/$") - set(BASE_PREFIX "${BASE_PREFIX}/") +if(NOT BASE_PREFIX STREQUAL "/" AND NOT BASE_PREFIX MATCHES ".*/$") + set(BASE_PREFIX "${BASE_PREFIX}/") endif() userver_is_cxx_compile_option_supported(USERVER_COMPILER_HAS_MACRO_PREFIX_MAP "-fmacro-prefix-map=a=b") -if (USERVER_COMPILER_HAS_MACRO_PREFIX_MAP) - target_compile_options(userver-internal-compile-options INTERFACE - -fmacro-prefix-map=${BIN_LOG_PATH_BASE}= - -fmacro-prefix-map=${BASE_PREFIX}= - ) - string(FIND "${SRC_LOG_PATH_BASE}" "${BASE_PREFIX}" _base_prefix_pos) - if (NOT _base_prefix_pos EQUAL 0 OR NOT "${USERVER_ROOT_DIR}" MATCHES [=[/userver$]=]) - target_compile_options(userver-internal-compile-options INTERFACE - -fmacro-prefix-map=${SRC_LOG_PATH_BASE}= +if(USERVER_COMPILER_HAS_MACRO_PREFIX_MAP) + target_compile_options( + userver-internal-compile-options INTERFACE -fmacro-prefix-map=${BIN_LOG_PATH_BASE}= + -fmacro-prefix-map=${BASE_PREFIX}= ) - endif() + string(FIND "${SRC_LOG_PATH_BASE}" "${BASE_PREFIX}" _base_prefix_pos) + if(NOT _base_prefix_pos EQUAL 0 OR NOT "${USERVER_ROOT_DIR}" MATCHES [=[/userver$]=]) + target_compile_options(userver-internal-compile-options INTERFACE -fmacro-prefix-map=${SRC_LOG_PATH_BASE}=) + endif() else() - target_compile_definitions(userver-internal-compile-options INTERFACE - USERVER_LOG_SOURCE_PATH_BASE=${SRC_LOG_PATH_BASE} - USERVER_LOG_BUILD_PATH_BASE=${BIN_LOG_PATH_BASE} - USERVER_LOG_PREFIX_PATH_BASE=${BASE_PREFIX} - ) + target_compile_definitions( + userver-internal-compile-options + INTERFACE USERVER_LOG_SOURCE_PATH_BASE=${SRC_LOG_PATH_BASE} USERVER_LOG_BUILD_PATH_BASE=${BIN_LOG_PATH_BASE} + USERVER_LOG_PREFIX_PATH_BASE=${BASE_PREFIX} + ) endif() # Check stdlib is recent enough include(CheckIncludeFileCXX) check_include_file_cxx(variant HAS_CXX17_VARIANT) if(NOT HAS_CXX17_VARIANT) - message(FATAL_ERROR "You have an outdated standard C++ library") + message(FATAL_ERROR "You have an outdated standard C++ library") endif() option(USERVER_NO_WERROR "Do not treat warnings as errors" ON) -if (NOT USERVER_NO_WERROR) - message(STATUS "Forcing warnings as errors!") - target_compile_options(userver-internal-compile-options INTERFACE "-Werror") +if(NOT USERVER_NO_WERROR) + message(STATUS "Forcing warnings as errors!") + target_compile_options(userver-internal-compile-options INTERFACE "-Werror") endif() -_userver_install_targets(COMPONENT universal - TARGETS userver-internal-sanitize-options userver-internal-compile-options) +_userver_install_targets(COMPONENT universal TARGETS userver-internal-sanitize-options userver-internal-compile-options) # The library itself add_library(${PROJECT_NAME} STATIC ${SOURCES}) include(GetUserverVersion) -set(USERVER_NAMESPACE "userver" CACHE STRING "C++ namespace to use") +set(USERVER_NAMESPACE + "userver" + CACHE STRING "C++ namespace to use" +) if(NOT "${USERVER_NAMESPACE}" STREQUAL "") - set(USERVER_NAMESPACE_BEGIN "namespace ${USERVER_NAMESPACE} { inline namespace ${USERVER_VERSION_STR} { " CACHE STRING "Open C++ namespace to use") - set(USERVER_NAMESPACE_END "} }" CACHE STRING "Close C++ namespace to use") + set(USERVER_NAMESPACE_BEGIN + "namespace ${USERVER_NAMESPACE} { inline namespace ${USERVER_VERSION_STR} { " + CACHE STRING "Open C++ namespace to use" + ) + set(USERVER_NAMESPACE_END + "} }" + CACHE STRING "Close C++ namespace to use" + ) endif() -message(STATUS "Putting userver into namespace '${USERVER_NAMESPACE}': ${USERVER_NAMESPACE_BEGIN} ${USERVER_NAMESPACE_END}") -target_compile_definitions(${PROJECT_NAME} PUBLIC - "USERVER_NAMESPACE=${USERVER_NAMESPACE}" - "USERVER_NAMESPACE_BEGIN=${USERVER_NAMESPACE_BEGIN}" - "USERVER_NAMESPACE_END=${USERVER_NAMESPACE_END}" - "USERVER=1" +message( + STATUS "Putting userver into namespace '${USERVER_NAMESPACE}': ${USERVER_NAMESPACE_BEGIN} ${USERVER_NAMESPACE_END}" +) +target_compile_definitions( + ${PROJECT_NAME} + PUBLIC "USERVER_NAMESPACE=${USERVER_NAMESPACE}" "USERVER_NAMESPACE_BEGIN=${USERVER_NAMESPACE_BEGIN}" + "USERVER_NAMESPACE_END=${USERVER_NAMESPACE_END}" "USERVER=1" ) # https://github.com/jemalloc/jemalloc/issues/820 -if (USERVER_FEATURE_JEMALLOC AND NOT USERVER_SANITIZE AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin") - find_package(jemalloc REQUIRED) - target_link_libraries(${PROJECT_NAME} PUBLIC jemalloc::jemalloc) +if(USERVER_FEATURE_JEMALLOC + AND NOT USERVER_SANITIZE + AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin" +) + find_package(jemalloc REQUIRED) + target_link_libraries(${PROJECT_NAME} PUBLIC jemalloc::jemalloc) endif() if(NOT USERVER_CONAN) - _userver_macos_set_default_dir(ICU_ROOT "brew;--prefix;icu4c") - if(CMAKE_SYSTEM_NAME MATCHES "Darwin") - set(ICU_INCLUDE_DIR "${USERVER_BREW_PREFIX}/include" CACHE PATH "" FORCE) - endif() + _userver_macos_set_default_dir(ICU_ROOT "brew;--prefix;icu4c") + if(CMAKE_SYSTEM_NAME MATCHES "Darwin") + set(ICU_INCLUDE_DIR + "${USERVER_BREW_PREFIX}/include" + CACHE PATH "" FORCE + ) + endif() endif() if(USERVER_CONAN) - find_package(re2 REQUIRED) + find_package(re2 REQUIRED) else() - include(SetupRe2) + include(SetupRe2) endif() target_link_libraries(${PROJECT_NAME} PRIVATE re2::re2) -target_compile_definitions(${PROJECT_NAME} PRIVATE - CRYPTOPP_ENABLE_NAMESPACE_WEAK=1 -) +target_compile_definitions(${PROJECT_NAME} PRIVATE CRYPTOPP_ENABLE_NAMESPACE_WEAK=1) set(USERVER_LOG_LEVEL_ENUM "trace, info, debug, warning, error") set(USERVER_FEATURE_ERASE_LOG_WITH_LEVEL_DEFAULT "") -set(USERVER_FEATURE_ERASE_LOG_WITH_LEVEL ${USERVER_FEATURE_ERASE_LOG_WITH_LEVEL_DEFAULT} CACHE STRING "Logs of this and below levels are removed from binary, possible values: ${USERVER_LOG_LEVEL_ENUM}") +set(USERVER_FEATURE_ERASE_LOG_WITH_LEVEL + ${USERVER_FEATURE_ERASE_LOG_WITH_LEVEL_DEFAULT} + CACHE STRING "Logs of this and below levels are removed from binary, possible values: ${USERVER_LOG_LEVEL_ENUM}" +) set(USERVER_ERASE_LOG_WITH_LEVEL_PENDING ${USERVER_FEATURE_ERASE_LOG_WITH_LEVEL}) separate_arguments(USERVER_ERASE_LOG_WITH_LEVEL_PENDING) list(REMOVE_DUPLICATES USERVER_ERASE_LOG_WITH_LEVEL_PENDING) if("error" IN_LIST USERVER_ERASE_LOG_WITH_LEVEL_PENDING) - target_compile_definitions(${PROJECT_NAME} PUBLIC - "USERVER_FEATURE_ERASE_LOG_WITH_LEVEL=4" - ) + target_compile_definitions(${PROJECT_NAME} PUBLIC "USERVER_FEATURE_ERASE_LOG_WITH_LEVEL=4") elseif("warning" IN_LIST USERVER_ERASE_LOG_WITH_LEVEL_PENDING) - target_compile_definitions(${PROJECT_NAME} PUBLIC - "USERVER_FEATURE_ERASE_LOG_WITH_LEVEL=3" - ) + target_compile_definitions(${PROJECT_NAME} PUBLIC "USERVER_FEATURE_ERASE_LOG_WITH_LEVEL=3") elseif("info" IN_LIST USERVER_ERASE_LOG_WITH_LEVEL_PENDING) - target_compile_definitions(${PROJECT_NAME} PUBLIC - "USERVER_FEATURE_ERASE_LOG_WITH_LEVEL=2" - ) + target_compile_definitions(${PROJECT_NAME} PUBLIC "USERVER_FEATURE_ERASE_LOG_WITH_LEVEL=2") elseif("debug" IN_LIST USERVER_ERASE_LOG_WITH_LEVEL_PENDING) - target_compile_definitions(${PROJECT_NAME} PUBLIC - "USERVER_FEATURE_ERASE_LOG_WITH_LEVEL=1" - ) + target_compile_definitions(${PROJECT_NAME} PUBLIC "USERVER_FEATURE_ERASE_LOG_WITH_LEVEL=1") elseif("trace" IN_LIST USERVER_ERASE_LOG_WITH_LEVEL_PENDING) - target_compile_definitions(${PROJECT_NAME} PUBLIC - "USERVER_FEATURE_ERASE_LOG_WITH_LEVEL=0" - ) + target_compile_definitions(${PROJECT_NAME} PUBLIC "USERVER_FEATURE_ERASE_LOG_WITH_LEVEL=0") endif() # Suppress OpenSSL 3 warnings: we still primarily support OpenSSL 1.1.x target_compile_definitions(${PROJECT_NAME} PRIVATE OPENSSL_SUPPRESS_DEPRECATED=) # https://bugs.llvm.org/show_bug.cgi?id=16404 -if (USERVER_SANITIZE AND NOT CMAKE_BUILD_TYPE MATCHES "^Rel") - add_subdirectory("${USERVER_THIRD_PARTY_DIRS}/compiler-rt" compiler_rt_build) - target_link_libraries(${PROJECT_NAME} PUBLIC userver-compiler-rt-parts) +if(USERVER_SANITIZE AND NOT CMAKE_BUILD_TYPE MATCHES "^Rel") + add_subdirectory("${USERVER_THIRD_PARTY_DIRS}/compiler-rt" compiler_rt_build) + target_link_libraries(${PROJECT_NAME} PUBLIC userver-compiler-rt-parts) endif() -target_link_libraries(${PROJECT_NAME} - PUBLIC - Threads::Threads - userver-internal-sanitize-options - userver-internal-compile-options - PRIVATE - Boost::filesystem - Boost::program_options - Boost::regex - OpenSSL::Crypto - OpenSSL::SSL +target_link_libraries( + ${PROJECT_NAME} + PUBLIC Threads::Threads userver-internal-sanitize-options userver-internal-compile-options + PRIVATE Boost::filesystem Boost::program_options Boost::regex OpenSSL::Crypto OpenSSL::SSL ) -if (USERVER_CONAN) - target_link_libraries(${PROJECT_NAME} - PUBLIC - fmt::fmt - cctz::cctz - Boost::stacktrace - PRIVATE - yaml-cpp - cryptopp::cryptopp - rapidjson - zstd::libzstd_static - ) +if(USERVER_CONAN) + target_link_libraries( + ${PROJECT_NAME} + PUBLIC fmt::fmt cctz::cctz Boost::stacktrace + PRIVATE yaml-cpp cryptopp::cryptopp rapidjson zstd::libzstd_static + ) else() - include(Stacktrace) - _make_stacktrace_target(userver-stacktrace "${Boost_VERSION_STRING}") - _userver_install_targets(COMPONENT universal TARGETS userver-stacktrace) - - target_link_libraries(${PROJECT_NAME} - PUBLIC - fmt - cctz - userver-stacktrace - PRIVATE - yaml-cpp - zstd::zstd - cryptopp::cryptopp - ) - - if(Boost_USE_STATIC_LIBS AND Boost_FOUND AND Boost_VERSION VERSION_LESS 1.75) - # https://github.com/boostorg/locale/issues/156 - find_package(ICU COMPONENTS uc i18n data REQUIRED) - target_link_libraries(${PROJECT_NAME} PRIVATE ICU::uc ICU::i18n ICU::data) - endif() + include(Stacktrace) + _make_stacktrace_target(userver-stacktrace "${Boost_VERSION_STRING}") + _userver_install_targets(COMPONENT universal TARGETS userver-stacktrace) + + target_link_libraries( + ${PROJECT_NAME} + PUBLIC fmt cctz userver-stacktrace + PRIVATE yaml-cpp zstd::zstd cryptopp::cryptopp + ) + + if(Boost_USE_STATIC_LIBS + AND Boost_FOUND + AND Boost_VERSION VERSION_LESS 1.75 + ) + # https://github.com/boostorg/locale/issues/156 + find_package( + ICU + COMPONENTS uc i18n data + REQUIRED + ) + target_link_libraries(${PROJECT_NAME} PRIVATE ICU::uc ICU::i18n ICU::data) + endif() endif() -target_include_directories(${PROJECT_NAME} - PUBLIC - $ - $ - $ - $ - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/src/ - ${CMAKE_CURRENT_BINARY_DIR} -) -target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE - ${USERVER_THIRD_PARTY_DIRS}/rapidjson/include +target_include_directories( + ${PROJECT_NAME} + PUBLIC $ + $ + $ + $ + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/ ${CMAKE_CURRENT_BINARY_DIR} ) +target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${USERVER_THIRD_PARTY_DIRS}/rapidjson/include) include(GenGdbPrinters) gen_gdb_printers(${PROJECT_NAME} "formats/json") -# gen_gdb_printers(${PROJECT_NAME} "formats/yaml") -# gen_gdb_printers(${PROJECT_NAME} "utils/fast_pimpl") - -_userver_directory_install(COMPONENT universal - DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR}/include - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. - PATTERN "*pp" # ignore .gitignore in userver/third_party +# gen_gdb_printers(${PROJECT_NAME} "formats/yaml") gen_gdb_printers(${PROJECT_NAME} "utils/fast_pimpl") + +_userver_directory_install( + COMPONENT universal + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. PATTERN "*pp" # ignore .gitignore in userver/third_party ) -_userver_directory_install(COMPONENT universal - DIRECTORY - ${USERVER_THIRD_PARTY_DIRS}/date/include/date - ${USERVER_THIRD_PARTY_DIRS}/function_backports/include/function_backports - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/userver/third_party/ +_userver_directory_install( + COMPONENT universal + DIRECTORY ${USERVER_THIRD_PARTY_DIRS}/date/include/date + ${USERVER_THIRD_PARTY_DIRS}/function_backports/include/function_backports + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/userver/third_party/ ) _userver_install_targets(COMPONENT universal TARGETS ${PROJECT_NAME}) -if (USERVER_FEATURE_UTEST) - add_subdirectory(utest) - - add_library(${PROJECT_NAME}-internal-ubench INTERFACE) - if (USERVER_CONAN) - find_package(benchmark REQUIRED) - set(_benchmark_target benchmark::benchmark_main) - else() - include(SetupGBench) - set(_benchmark_target benchmark::benchmark) - endif() - target_link_libraries(${PROJECT_NAME}-internal-ubench - INTERFACE - ${_benchmark_target} - ${PROJECT_NAME} - ) +if(USERVER_FEATURE_UTEST) + add_subdirectory(utest) + + add_library(${PROJECT_NAME}-internal-ubench INTERFACE) + if(USERVER_CONAN) + find_package(benchmark REQUIRED) + set(_benchmark_target benchmark::benchmark_main) + else() + include(SetupGBench) + set(_benchmark_target benchmark::benchmark) + endif() + target_link_libraries(${PROJECT_NAME}-internal-ubench INTERFACE ${_benchmark_target} ${PROJECT_NAME}) endif() -if (USERVER_BUILD_TESTS) +if(USERVER_BUILD_TESTS) add_library(${PROJECT_NAME}-internal OBJECT ${INTERNAL_SOURCES}) - target_compile_definitions(${PROJECT_NAME}-internal PUBLIC - $ - ) - target_include_directories(${PROJECT_NAME}-internal PUBLIC - $ - ${CMAKE_CURRENT_SOURCE_DIR}/internal/include - ) - target_link_libraries(${PROJECT_NAME}-internal - PUBLIC - ${PROJECT_NAME} + target_compile_definitions(${PROJECT_NAME}-internal PUBLIC $) + target_include_directories( + ${PROJECT_NAME}-internal PUBLIC $ + ${CMAKE_CURRENT_SOURCE_DIR}/internal/include ) + target_link_libraries(${PROJECT_NAME}-internal PUBLIC ${PROJECT_NAME}) add_executable(${PROJECT_NAME}-unittest ${UNIT_TEST_SOURCES}) - target_include_directories (${PROJECT_NAME}-unittest SYSTEM PRIVATE - $ + target_include_directories( + ${PROJECT_NAME}-unittest SYSTEM PRIVATE $ ) - target_link_libraries(${PROJECT_NAME}-unittest - PUBLIC - ${PROJECT_NAME} - PRIVATE - Boost::program_options - ${PROJECT_NAME}-internal - ${PROJECT_NAME}-utest + target_link_libraries( + ${PROJECT_NAME}-unittest + PUBLIC ${PROJECT_NAME} + PRIVATE Boost::program_options ${PROJECT_NAME}-internal ${PROJECT_NAME}-utest ) add_google_tests(${PROJECT_NAME}-unittest) - add_executable(${PROJECT_NAME}-benchmark - ${BENCH_SOURCES} - "${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/main.cpp" + add_executable(${PROJECT_NAME}-benchmark ${BENCH_SOURCES} "${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/main.cpp") + target_include_directories( + ${PROJECT_NAME}-benchmark SYSTEM PRIVATE $ ) - target_include_directories (${PROJECT_NAME}-benchmark SYSTEM PRIVATE - $ + target_link_libraries( + ${PROJECT_NAME}-benchmark PUBLIC ${PROJECT_NAME} ${PROJECT_NAME}-internal ${PROJECT_NAME}-internal-ubench ) - target_link_libraries(${PROJECT_NAME}-benchmark - PUBLIC ${PROJECT_NAME} - ${PROJECT_NAME}-internal - ${PROJECT_NAME}-internal-ubench - ) option(USERVER_HEADER_MAP_AGAINST_OTHERS_BENCHMARK "build HeaderMap benchmarks against abseil and boost" OFF) - if (USERVER_HEADER_MAP_AGAINST_OTHERS_BENCHMARK) - find_package(absl REQUIRED) - target_link_libraries(${PROJECT_NAME}-benchmark PRIVATE absl::raw_hash_set) - target_compile_definitions(${PROJECT_NAME}-benchmark PRIVATE HEADER_MAP_AGAINST_OTHERS_BENCHMARK) + if(USERVER_HEADER_MAP_AGAINST_OTHERS_BENCHMARK) + find_package(absl REQUIRED) + target_link_libraries(${PROJECT_NAME}-benchmark PRIVATE absl::raw_hash_set) + target_compile_definitions(${PROJECT_NAME}-benchmark PRIVATE HEADER_MAP_AGAINST_OTHERS_BENCHMARK) endif() add_google_benchmark_tests(${PROJECT_NAME}-benchmark) endif() -_userver_directory_install(COMPONENT universal FILES - "${USERVER_ROOT_DIR}/cmake/ModuleHelpers.cmake" - "${USERVER_ROOT_DIR}/cmake/SetupCURL.cmake" - "${USERVER_ROOT_DIR}/cmake/SetupGTest.cmake" - "${USERVER_ROOT_DIR}/cmake/SetupGBench.cmake" - "${USERVER_ROOT_DIR}/cmake/SetupRe2.cmake" - "${USERVER_ROOT_DIR}/cmake/sanitize.blacklist.txt" - "${USERVER_ROOT_DIR}/cmake/sanitize-macos.blacklist.txt" - "${USERVER_ROOT_DIR}/cmake/RequireLTO.cmake" - "${USERVER_ROOT_DIR}/cmake/SetupLTO.cmake" - "${USERVER_ROOT_DIR}/cmake/SetupPGO.cmake" - "${USERVER_ROOT_DIR}/cmake/SetupLinker.cmake" - "${USERVER_ROOT_DIR}/cmake/SetupDebugInfoCompression.cmake" - "${USERVER_ROOT_DIR}/cmake/SetupHomebrew.cmake" - "${USERVER_ROOT_DIR}/cmake/Sanitizers.cmake" - "${USERVER_ROOT_DIR}/cmake/UserverCxxCompileOptionsIfSupported.cmake" - "${USERVER_ROOT_DIR}/cmake/AddGoogleTests.cmake" - "${USERVER_ROOT_DIR}/cmake/DetectVersion.cmake" - "${USERVER_ROOT_DIR}/cmake/UserverSetupEnvironment.cmake" - "${USERVER_ROOT_DIR}/cmake/UserverVenv.cmake" - "${USERVER_ROOT_DIR}/cmake/UserverEmbedFile.cmake" - "${USERVER_ROOT_DIR}/cmake/UserverPreferStaticLibs.cmake" - "${USERVER_ROOT_DIR}/cmake/embedded_config.cmake" - "${USERVER_ROOT_DIR}/cmake/install/userver-universal-config.cmake" +_userver_directory_install( + COMPONENT universal + FILES "${USERVER_ROOT_DIR}/cmake/ModuleHelpers.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupCURL.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupGTest.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupGBench.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupRe2.cmake" + "${USERVER_ROOT_DIR}/cmake/sanitize.blacklist.txt" + "${USERVER_ROOT_DIR}/cmake/sanitize-macos.blacklist.txt" + "${USERVER_ROOT_DIR}/cmake/RequireLTO.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupLTO.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupPGO.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupLinker.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupDebugInfoCompression.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupHomebrew.cmake" + "${USERVER_ROOT_DIR}/cmake/Sanitizers.cmake" + "${USERVER_ROOT_DIR}/cmake/UserverCxxCompileOptionsIfSupported.cmake" + "${USERVER_ROOT_DIR}/cmake/AddGoogleTests.cmake" + "${USERVER_ROOT_DIR}/cmake/DetectVersion.cmake" + "${USERVER_ROOT_DIR}/cmake/UserverSetupEnvironment.cmake" + "${USERVER_ROOT_DIR}/cmake/UserverVenv.cmake" + "${USERVER_ROOT_DIR}/cmake/UserverEmbedFile.cmake" + "${USERVER_ROOT_DIR}/cmake/UserverPreferStaticLibs.cmake" + "${USERVER_ROOT_DIR}/cmake/embedded_config.cmake" + "${USERVER_ROOT_DIR}/cmake/install/userver-universal-config.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver ) -_userver_directory_install(COMPONENT universal FILES - "${USERVER_ROOT_DIR}/cmake/modules/Findcryptopp.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/Findyaml-cpp.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/Findzstd.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/Findcctz.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/Findre2.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/Findfmt.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/Findjemalloc.cmake" - "${USERVER_ROOT_DIR}/cmake/modules/FindUserverGBench.cmake" +_userver_directory_install( + COMPONENT universal + FILES "${USERVER_ROOT_DIR}/cmake/modules/Findcryptopp.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/Findyaml-cpp.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/Findzstd.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/Findcctz.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/Findre2.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/Findfmt.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/Findjemalloc.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/FindUserverGBench.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules ) diff --git a/universal/utest/CMakeLists.txt b/universal/utest/CMakeLists.txt index e1b6614c3179..64d335ac966d 100644 --- a/universal/utest/CMakeLists.txt +++ b/universal/utest/CMakeLists.txt @@ -1,56 +1,38 @@ project(userver-universal-utest CXX) if(USERVER_CONAN) - find_package(GTest REQUIRED) + find_package(GTest REQUIRED) else() - include(SetupGTest) + include(SetupGTest) endif() -file(GLOB_RECURSE UNIT_TEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/*_test.cpp -) -file(GLOB_RECURSE SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp -) +file(GLOB_RECURSE UNIT_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*_test.cpp) +file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) list(REMOVE_ITEM SOURCES ${UNIT_TEST_SOURCES}) add_library(userver-universal-utest-base STATIC ${SOURCES}) -target_link_libraries(userver-universal-utest-base - PUBLIC - userver-universal - GTest::gtest - GTest::gmock -) -target_include_directories(userver-universal-utest-base - PUBLIC - $ - PRIVATE - $ - ${CMAKE_CURRENT_SOURCE_DIR}/src +target_link_libraries(userver-universal-utest-base PUBLIC userver-universal GTest::gtest GTest::gmock) +target_include_directories( + userver-universal-utest-base + PUBLIC $ + PRIVATE $ ${CMAKE_CURRENT_SOURCE_DIR}/src ) -_userver_directory_install(COMPONENT universal +_userver_directory_install( + COMPONENT universal DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/.. ) -_userver_install_targets(COMPONENT universal - TARGETS userver-universal-utest-base -) +_userver_install_targets(COMPONENT universal TARGETS userver-universal-utest-base) add_library(userver-universal-utest INTERFACE) -target_link_libraries(userver-universal-utest INTERFACE - userver-universal-utest-base - GTest::gmock_main -) -_userver_install_targets(COMPONENT universal - TARGETS userver-universal-utest -) +target_link_libraries(userver-universal-utest INTERFACE userver-universal-utest-base GTest::gmock_main) +_userver_install_targets(COMPONENT universal TARGETS userver-universal-utest) if(USERVER_BUILD_TESTS) - add_executable(${PROJECT_NAME}-unittest ${UNIT_TEST_SOURCES}) - target_include_directories(${PROJECT_NAME}-unittest SYSTEM PRIVATE - $ - ) - target_link_libraries(${PROJECT_NAME}-unittest PUBLIC ${PROJECT_NAME}) - add_google_tests(${PROJECT_NAME}-unittest) + add_executable(${PROJECT_NAME}-unittest ${UNIT_TEST_SOURCES}) + target_include_directories( + ${PROJECT_NAME}-unittest SYSTEM PRIVATE $ + ) + target_link_libraries(${PROJECT_NAME}-unittest PUBLIC ${PROJECT_NAME}) + add_google_tests(${PROJECT_NAME}-unittest) endif() diff --git a/ydb/CMakeLists.txt b/ydb/CMakeLists.txt index 6bfcf782a579..2aa380f0c4aa 100644 --- a/ydb/CMakeLists.txt +++ b/ydb/CMakeLists.txt @@ -15,25 +15,27 @@ set(YDB_LIBRARIES YDB-CPP-SDK::Types ) -userver_module(ydb +userver_module( + ydb SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" LINK_LIBRARIES ${YDB_LIBRARIES} INCLUDE_DIRS ${ydb-cpp-sdk_INCLUDE_DIRS} UTEST_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests" - NO_INSTALL # TODO + NO_INSTALL # TODO ) # Enforce that userver-ydb requires C++20 target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20) -if (CMAKE_CXX_STANDARD LESS 20) - message(FATAL_ERROR "YDB driver requires CMAKE_CXX_STANDARD >= 20 (got: ${CMAKE_CXX_STANDARD})") +if(CMAKE_CXX_STANDARD LESS 20) + message(FATAL_ERROR "YDB driver requires CMAKE_CXX_STANDARD >= 20 (got: ${CMAKE_CXX_STANDARD})") endif() -_userver_directory_install(COMPONENT ydb +_userver_directory_install( + COMPONENT ydb FILES "${USERVER_ROOT_DIR}/cmake/SetupYdbCPPSDK.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver" ) -if (USERVER_BUILD_TESTS) - add_subdirectory(functional_tests) +if(USERVER_BUILD_TESTS) + add_subdirectory(functional_tests) endif() diff --git a/ydb/functional_tests/basic/CMakeLists.txt b/ydb/functional_tests/basic/CMakeLists.txt index 9f89ce39627a..e41a4c1619c4 100644 --- a/ydb/functional_tests/basic/CMakeLists.txt +++ b/ydb/functional_tests/basic/CMakeLists.txt @@ -1,17 +1,11 @@ project(userver-ydb-tests-basic CXX) -add_executable(${PROJECT_NAME} - "ydb_service.cpp" - "views/describe-table/post/view.cpp" - "views/select-list/post/view.cpp" - "views/select-rows/post/view.cpp" - "views/upsert-row/post/view.cpp" +add_executable( + ${PROJECT_NAME} "ydb_service.cpp" "views/describe-table/post/view.cpp" "views/select-list/post/view.cpp" + "views/select-rows/post/view.cpp" "views/upsert-row/post/view.cpp" ) target_link_libraries(${PROJECT_NAME} userver-ydb) -target_include_directories(${PROJECT_NAME} - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} -) +target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) userver_chaos_testsuite_add(TESTS_DIRECTORY tests) userver_chaos_testsuite_add(TESTS_DIRECTORY tests-metrics)