File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / CMake / Macros.cmake
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:16 2020 UTC (5 years ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    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>