Files correlati : Commento : Spostamento in libraries delle librerie esterne di Campo per una maggiore pulizia e organizzazione git-svn-id: svn://10.65.10.50/branches/R_10_00@24150 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			125 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
#File defines convenience macros for available feature testing
 | 
						|
 | 
						|
# This macro checks if the symbol exists in the library and if it
 | 
						|
# does, it prepends library to the list.  It is intended to be called
 | 
						|
# multiple times with a sequence of possibly dependent libraries in
 | 
						|
# order of least-to-most-dependent.  Some libraries depend on others
 | 
						|
# to link correctly.
 | 
						|
macro(CHECK_LIBRARY_EXISTS_CONCAT LIBRARY SYMBOL VARIABLE)
 | 
						|
  check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} "${CMAKE_LIBRARY_PATH}"
 | 
						|
    ${VARIABLE})
 | 
						|
  if(${VARIABLE})
 | 
						|
    set(CURL_LIBS ${LIBRARY} ${CURL_LIBS})
 | 
						|
  endif(${VARIABLE})
 | 
						|
endmacro(CHECK_LIBRARY_EXISTS_CONCAT)
 | 
						|
 | 
						|
# Check if header file exists and add it to the list.
 | 
						|
# 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.
 | 
						|
macro(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
 | 
						|
  check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
 | 
						|
  if(${VARIABLE})
 | 
						|
    set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
 | 
						|
    set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
 | 
						|
  endif(${VARIABLE})
 | 
						|
endmacro(CHECK_INCLUDE_FILE_CONCAT)
 | 
						|
 | 
						|
# For other curl specific tests, use this macro.
 | 
						|
macro(CURL_INTERNAL_TEST CURL_TEST)
 | 
						|
  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}")
 | 
						|
    endif(CMAKE_REQUIRED_LIBRARIES)
 | 
						|
 | 
						|
    message(STATUS "Performing Curl Test ${CURL_TEST}")
 | 
						|
    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}")
 | 
						|
      message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
 | 
						|
      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
 | 
						|
        "Performing Curl Test ${CURL_TEST} passed with the following output:\n"
 | 
						|
        "${OUTPUT}\n")
 | 
						|
    else(${CURL_TEST})
 | 
						|
      message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
 | 
						|
      set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
 | 
						|
      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
 | 
						|
        "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
 | 
						|
        "${OUTPUT}\n")
 | 
						|
    endif(${CURL_TEST})
 | 
						|
  endif()
 | 
						|
endmacro(CURL_INTERNAL_TEST)
 | 
						|
 | 
						|
macro(CURL_INTERNAL_TEST_RUN CURL_TEST)
 | 
						|
  if(NOT DEFINED "${CURL_TEST}_COMPILE")
 | 
						|
    set(MACRO_CHECK_FUNCTION_DEFINITIONS
 | 
						|
      "-D${CURL_TEST} ${CMAKE_REQUIRED_FLAGS}")
 | 
						|
    if(CMAKE_REQUIRED_LIBRARIES)
 | 
						|
      set(CURL_TEST_ADD_LIBRARIES
 | 
						|
        "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
 | 
						|
    endif(CMAKE_REQUIRED_LIBRARIES)
 | 
						|
 | 
						|
    message(STATUS "Performing Curl Test ${CURL_TEST}")
 | 
						|
    try_run(${CURL_TEST} ${CURL_TEST}_COMPILE
 | 
						|
      ${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}_COMPILE AND NOT ${CURL_TEST})
 | 
						|
      set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
 | 
						|
      message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
 | 
						|
    else(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
 | 
						|
      message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
 | 
						|
      set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
 | 
						|
      file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
 | 
						|
        "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
 | 
						|
        "${OUTPUT}")
 | 
						|
      if(${CURL_TEST}_COMPILE)
 | 
						|
        file(APPEND
 | 
						|
          "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
 | 
						|
          "There was a problem running this test\n")
 | 
						|
      endif(${CURL_TEST}_COMPILE)
 | 
						|
      file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
 | 
						|
        "\n\n")
 | 
						|
    endif(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
 | 
						|
  endif()
 | 
						|
endmacro(CURL_INTERNAL_TEST_RUN)
 | 
						|
 | 
						|
macro(CURL_NROFF_CHECK)
 | 
						|
  find_program(NROFF NAMES gnroff nroff)
 | 
						|
  if(NROFF)
 | 
						|
    # Need a way to write to stdin, this will do
 | 
						|
    file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt" "test")
 | 
						|
    # Tests for a valid nroff option to generate a manpage
 | 
						|
    foreach(_MANOPT "-man" "-mandoc")
 | 
						|
      execute_process(COMMAND "${NROFF}" ${_MANOPT}
 | 
						|
        OUTPUT_VARIABLE NROFF_MANOPT_OUTPUT
 | 
						|
        INPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt"
 | 
						|
        ERROR_QUIET)
 | 
						|
      # Save the option if it was valid
 | 
						|
      if(NROFF_MANOPT_OUTPUT)
 | 
						|
        message("Found *nroff option: -- ${_MANOPT}")
 | 
						|
        set(NROFF_MANOPT ${_MANOPT})
 | 
						|
        set(NROFF_USEFUL ON)
 | 
						|
        break()
 | 
						|
      endif()
 | 
						|
    endforeach()
 | 
						|
    # No need for the temporary file
 | 
						|
    file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt")
 | 
						|
    if(NOT NROFF_USEFUL)
 | 
						|
      message(WARNING "Found no *nroff option to get plaintext from man pages")
 | 
						|
    endif()
 | 
						|
  else()
 | 
						|
    message(WARNING "Found no *nroff program")
 | 
						|
  endif()
 | 
						|
endmacro(CURL_NROFF_CHECK)
 |