cmake/Utilities/cmcurl/CMake/Macros.cmake

81 lines
3.2 KiB
CMake
Raw Normal View History

2020-08-30 11:54:41 +02:00
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
2023-07-02 19:51:09 +02:00
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
2020-08-30 11:54:41 +02:00
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
2021-09-14 00:13:48 +02:00
# are also available at https://curl.se/docs/copyright.html.
2020-08-30 11:54:41 +02:00
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
2022-11-16 20:14:03 +01:00
# SPDX-License-Identifier: curl
#
2020-08-30 11:54:41 +02:00
###########################################################################
2015-04-27 22:25:09 +02:00
#File defines convenience macros for available feature testing
# Check if header file exists and add it to the list.
2015-11-17 17:22:37 +01:00
# This macro is intended to be called multiple times with a sequence of
# possibly dependent header files. Some headers depend on others to be
# compiled correctly.
2018-10-28 12:09:07 +01:00
macro(check_include_file_concat FILE VARIABLE)
2015-04-27 22:25:09 +02:00
check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
if(${VARIABLE})
set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
2018-10-28 12:09:07 +01:00
endif()
endmacro()
2015-04-27 22:25:09 +02:00
# For other curl specific tests, use this macro.
2018-10-28 12:09:07 +01:00
macro(curl_internal_test CURL_TEST)
2015-04-27 22:25:09 +02:00
if(NOT DEFINED "${CURL_TEST}")
set(MACRO_CHECK_FUNCTION_DEFINITIONS
"-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}")
if(CMAKE_REQUIRED_LIBRARIES)
set(CURL_TEST_ADD_LIBRARIES
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
2018-10-28 12:09:07 +01:00
endif()
2015-04-27 22:25:09 +02:00
2024-04-14 22:45:38 +02:00
message(STATUS "Performing Test ${CURL_TEST}")
2015-04-27 22:25:09 +02:00
try_compile(${CURL_TEST}
${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
"${CURL_TEST_ADD_LIBRARIES}"
OUTPUT_VARIABLE OUTPUT)
if(${CURL_TEST})
set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
2024-04-14 22:45:38 +02:00
message(STATUS "Performing Test ${CURL_TEST} - Success")
2015-04-27 22:25:09 +02:00
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
2024-04-14 22:45:38 +02:00
"Performing Test ${CURL_TEST} passed with the following output:\n"
2015-04-27 22:25:09 +02:00
"${OUTPUT}\n")
2018-10-28 12:09:07 +01:00
else()
2024-04-14 22:45:38 +02:00
message(STATUS "Performing Test ${CURL_TEST} - Failed")
2015-04-27 22:25:09 +02:00
set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
2024-04-14 22:45:38 +02:00
"Performing Test ${CURL_TEST} failed with the following output:\n"
2015-04-27 22:25:09 +02:00
"${OUTPUT}\n")
2018-10-28 12:09:07 +01:00
endif()
2015-04-27 22:25:09 +02:00
endif()
2018-10-28 12:09:07 +01:00
endmacro()
2018-01-26 17:06:56 +01:00
2021-09-14 00:13:48 +02:00
macro(optional_dependency DEPENDENCY)
set(CURL_${DEPENDENCY} AUTO CACHE STRING "Build curl with ${DEPENDENCY} support (AUTO, ON or OFF)")
set_property(CACHE CURL_${DEPENDENCY} PROPERTY STRINGS AUTO ON OFF)
if(CURL_${DEPENDENCY} STREQUAL AUTO)
find_package(${DEPENDENCY})
elseif(CURL_${DEPENDENCY})
find_package(${DEPENDENCY} REQUIRED)
endif()
endmacro()