Annotation of embedaddon/curl/CMake/Macros.cmake, revision 1.1.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>