azure-sdk-for-cpp/cmake-modules/AzureTransportAdapters.cmake

76 строки
3.2 KiB
CMake

## Copyright (c) Microsoft Corporation.
## Licensed under the MIT License.
############## TRANSPORT ADAPTER BUILD ######################
# Default: If no option is explicitly added, libcurl will be used for POSIX and WinHTTP for Windows #
# Windows: Both CURL and WINHTTP can be built to be used. #
# POSIX: Only CURL is acceptable. If WINHTTP is set, generate step will fail for user #
if (BUILD_TRANSPORT_CUSTOM)
message("Using the user-defined transport adapter. Make sure `AzureSdkGetCustomHttpTransport` is implemented and linked.")
add_compile_definitions(BUILD_TRANSPORT_CUSTOM_ADAPTER)
endif()
# Defines `BUILD_TRANSPORT_WINHTTP_ADAPTER` and `BUILD_CURL_HTTP_TRANSPORT_ADAPTER` for source code
if (NO_AUTOMATIC_TRANSPORT_BUILD)
# `NO_AUTOMATIC_TRANSPORT_BUILD` is not supported to be used publicly and is only used by vcpkg manifest.
# Vcpkg needs it to be able to build azure-core-cpp[core] which should represent a core that is built without any transport.
# There's no expected scenario where SDK customers only install azure-core-cpp[core].
message("Automatic transport build option detection is disabled.")
if (BUILD_TRANSPORT_CURL)
add_compile_definitions(BUILD_CURL_HTTP_TRANSPORT_ADAPTER)
endif()
if (BUILD_TRANSPORT_WINHTTP)
add_compile_definitions(BUILD_TRANSPORT_WINHTTP_ADAPTER)
endif()
else()
# On Windows: Make sure to build WinHTTP either if it was user-requested or no transport was selected at all.
# On POSIX: Make sure to build Curl either if it was user-requested or no transport was selected at all.
if (WIN32 OR MINGW OR MSYS OR CYGWIN)
if (BUILD_TRANSPORT_CURL)
# Specified by user on CMake input Libcurl
add_compile_definitions(BUILD_CURL_HTTP_TRANSPORT_ADAPTER)
endif()
if (BUILD_TRANSPORT_WINHTTP OR (NOT BUILD_TRANSPORT_CURL AND NOT BUILD_TRANSPORT_CUSTOM))
# WinHTTP selected by user on CMake input
# OR Nothing selected by CMake input (not libcurl or custom). Then set default for Windows.
if (NOT BUILD_TRANSPORT_WINHTTP AND NOT BUILD_TRANSPORT_CUSTOM)
# No custom and No winHTTP.
message("No transport adapter was selected, using WinHTTP as the default option for Windows.")
endif()
add_compile_definitions(BUILD_TRANSPORT_WINHTTP_ADAPTER)
if (NOT BUILD_TRANSPORT_WINHTTP)
# When user did not provide the input option, we need to turn it ON as it is used to include the src code
SET(BUILD_TRANSPORT_WINHTTP ON)
endif()
endif()
elseif (UNIX)
if (BUILD_TRANSPORT_WINHTTP)
message(FATAL_ERROR "WinHTTP transport adapter is not supported for POSIX platforms.")
endif()
if (BUILD_TRANSPORT_CURL OR (NOT BUILD_TRANSPORT_CURL AND NOT BUILD_TRANSPORT_CUSTOM))
if(NOT BUILD_TRANSPORT_CURL)
message("No transport adapter was selected, using libcurl as the default option for POSIX.")
endif()
add_compile_definitions(BUILD_CURL_HTTP_TRANSPORT_ADAPTER)
SET(BUILD_TRANSPORT_CURL ON)
endif()
else()
message(FATAL_ERROR "Unsupported platform.")
endif()
endif()