git-svn-id: svn://10.65.10.50/branches/R_10_00@23289 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			96 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			4.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)
 |