Annotation of embedaddon/curl/CMake/Macros.cmake, revision 1.1
1.1 ! misho 1: #***************************************************************************
! 2: # _ _ ____ _
! 3: # Project ___| | | | _ \| |
! 4: # / __| | | | |_) | |
! 5: # | (__| |_| | _ <| |___
! 6: # \___|\___/|_| \_\_____|
! 7: #
! 8: # Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
! 9: #
! 10: # This software is licensed as described in the file COPYING, which
! 11: # you should have received as part of this distribution. The terms
! 12: # are also available at https://curl.haxx.se/docs/copyright.html.
! 13: #
! 14: # You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 15: # copies of the Software, and permit persons to whom the Software is
! 16: # furnished to do so, under the terms of the COPYING file.
! 17: #
! 18: # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 19: # KIND, either express or implied.
! 20: #
! 21: ###########################################################################
! 22: #File defines convenience macros for available feature testing
! 23:
! 24: # This macro checks if the symbol exists in the library and if it
! 25: # does, it prepends library to the list. It is intended to be called
! 26: # multiple times with a sequence of possibly dependent libraries in
! 27: # order of least-to-most-dependent. Some libraries depend on others
! 28: # to link correctly.
! 29: macro(check_library_exists_concat LIBRARY SYMBOL VARIABLE)
! 30: check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} "${CMAKE_LIBRARY_PATH}"
! 31: ${VARIABLE})
! 32: if(${VARIABLE})
! 33: set(CURL_LIBS ${LIBRARY} ${CURL_LIBS})
! 34: endif()
! 35: endmacro()
! 36:
! 37: # Check if header file exists and add it to the list.
! 38: # This macro is intended to be called multiple times with a sequence of
! 39: # possibly dependent header files. Some headers depend on others to be
! 40: # compiled correctly.
! 41: macro(check_include_file_concat FILE VARIABLE)
! 42: check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
! 43: if(${VARIABLE})
! 44: set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
! 45: set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
! 46: endif()
! 47: endmacro()
! 48:
! 49: # For other curl specific tests, use this macro.
! 50: macro(curl_internal_test CURL_TEST)
! 51: if(NOT DEFINED "${CURL_TEST}")
! 52: set(MACRO_CHECK_FUNCTION_DEFINITIONS
! 53: "-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}")
! 54: if(CMAKE_REQUIRED_LIBRARIES)
! 55: set(CURL_TEST_ADD_LIBRARIES
! 56: "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
! 57: endif()
! 58:
! 59: message(STATUS "Performing Curl Test ${CURL_TEST}")
! 60: try_compile(${CURL_TEST}
! 61: ${CMAKE_BINARY_DIR}
! 62: ${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
! 63: CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
! 64: "${CURL_TEST_ADD_LIBRARIES}"
! 65: OUTPUT_VARIABLE OUTPUT)
! 66: if(${CURL_TEST})
! 67: set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
! 68: message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
! 69: file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
! 70: "Performing Curl Test ${CURL_TEST} passed with the following output:\n"
! 71: "${OUTPUT}\n")
! 72: else()
! 73: message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
! 74: set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
! 75: file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
! 76: "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
! 77: "${OUTPUT}\n")
! 78: endif()
! 79: endif()
! 80: endmacro()
! 81:
! 82: macro(curl_nroff_check)
! 83: find_program(NROFF NAMES gnroff nroff)
! 84: if(NROFF)
! 85: # Need a way to write to stdin, this will do
! 86: file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt" "test")
! 87: # Tests for a valid nroff option to generate a manpage
! 88: foreach(_MANOPT "-man" "-mandoc")
! 89: execute_process(COMMAND "${NROFF}" ${_MANOPT}
! 90: OUTPUT_VARIABLE NROFF_MANOPT_OUTPUT
! 91: INPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt"
! 92: ERROR_QUIET)
! 93: # Save the option if it was valid
! 94: if(NROFF_MANOPT_OUTPUT)
! 95: message("Found *nroff option: -- ${_MANOPT}")
! 96: set(NROFF_MANOPT ${_MANOPT})
! 97: set(NROFF_USEFUL ON)
! 98: break()
! 99: endif()
! 100: endforeach()
! 101: # No need for the temporary file
! 102: file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt")
! 103: if(NOT NROFF_USEFUL)
! 104: message(WARNING "Found no *nroff option to get plaintext from man pages")
! 105: endif()
! 106: else()
! 107: message(WARNING "Found no *nroff program")
! 108: endif()
! 109: endmacro()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>