diff options
Diffstat (limited to 'share/cmake-3.10/Modules/FindXMLRPC.cmake')
-rw-r--r-- | share/cmake-3.10/Modules/FindXMLRPC.cmake | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/share/cmake-3.10/Modules/FindXMLRPC.cmake b/share/cmake-3.10/Modules/FindXMLRPC.cmake new file mode 100644 index 0000000..e7ae919 --- /dev/null +++ b/share/cmake-3.10/Modules/FindXMLRPC.cmake @@ -0,0 +1,128 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#.rst: +# FindXMLRPC +# ---------- +# +# Find xmlrpc +# +# Find the native XMLRPC headers and libraries. +# +# :: +# +# XMLRPC_INCLUDE_DIRS - where to find xmlrpc.h, etc. +# XMLRPC_LIBRARIES - List of libraries when using xmlrpc. +# XMLRPC_FOUND - True if xmlrpc found. +# +# XMLRPC modules may be specified as components for this find module. +# Modules may be listed by running "xmlrpc-c-config". Modules include: +# +# :: +# +# c++ C++ wrapper code +# libwww-client libwww-based client +# cgi-server CGI-based server +# abyss-server ABYSS-based server +# +# Typical usage: +# +# :: +# +# find_package(XMLRPC REQUIRED libwww-client) + +# First find the config script from which to obtain other values. +find_program(XMLRPC_C_CONFIG NAMES xmlrpc-c-config) + +# Check whether we found anything. +if(XMLRPC_C_CONFIG) + set(XMLRPC_C_FOUND 1) +else() + set(XMLRPC_C_FOUND 0) +endif() + +# Lookup the include directories needed for the components requested. +if(XMLRPC_C_FOUND) + execute_process( + COMMAND ${XMLRPC_C_CONFIG} ${XMLRPC_FIND_COMPONENTS} --cflags + OUTPUT_VARIABLE XMLRPC_C_CONFIG_CFLAGS + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE XMLRPC_C_CONFIG_RESULT + ) + + # Parse the include flags. + if("${XMLRPC_C_CONFIG_RESULT}" STREQUAL "0") + # Convert the compile flags to a CMake list. + string(REGEX REPLACE " +" ";" + XMLRPC_C_CONFIG_CFLAGS "${XMLRPC_C_CONFIG_CFLAGS}") + + # Look for -I options. + # FIXME: Use these as hints to a find_path call to find the headers. + set(XMLRPC_INCLUDE_DIRS) + foreach(flag ${XMLRPC_C_CONFIG_CFLAGS}) + if("${flag}" MATCHES "^-I(.+)") + file(TO_CMAKE_PATH "${CMAKE_MATCH_1}" DIR) + list(APPEND XMLRPC_INCLUDE_DIRS "${DIR}") + endif() + endforeach() + else() + message("Error running ${XMLRPC_C_CONFIG}: [${XMLRPC_C_CONFIG_RESULT}]") + set(XMLRPC_C_FOUND 0) + endif() +endif() + +# Lookup the libraries needed for the components requested. +if(XMLRPC_C_FOUND) + execute_process( + COMMAND ${XMLRPC_C_CONFIG} ${XMLRPC_FIND_COMPONENTS} --libs + OUTPUT_VARIABLE XMLRPC_C_CONFIG_LIBS + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE XMLRPC_C_CONFIG_RESULT + ) + + # Parse the library names and directories. + if("${XMLRPC_C_CONFIG_RESULT}" STREQUAL "0") + string(REGEX REPLACE " +" ";" + XMLRPC_C_CONFIG_LIBS "${XMLRPC_C_CONFIG_LIBS}") + + # Look for -L flags for directories and -l flags for library names. + set(XMLRPC_LIBRARY_DIRS) + set(XMLRPC_LIBRARY_NAMES) + foreach(flag ${XMLRPC_C_CONFIG_LIBS}) + if("${flag}" MATCHES "^-L(.+)") + file(TO_CMAKE_PATH "${CMAKE_MATCH_1}" DIR) + list(APPEND XMLRPC_LIBRARY_DIRS "${DIR}") + elseif("${flag}" MATCHES "^-l(.+)") + list(APPEND XMLRPC_LIBRARY_NAMES "${CMAKE_MATCH_1}") + endif() + endforeach() + + # Search for each library needed using the directories given. + foreach(name ${XMLRPC_LIBRARY_NAMES}) + # Look for this library. + find_library(XMLRPC_${name}_LIBRARY + NAMES ${name} + HINTS ${XMLRPC_LIBRARY_DIRS} + ) + mark_as_advanced(XMLRPC_${name}_LIBRARY) + + # If any library is not found then the whole package is not found. + if(NOT XMLRPC_${name}_LIBRARY) + set(XMLRPC_C_FOUND 0) + endif() + + # Build an ordered list of all the libraries needed. + set(XMLRPC_LIBRARIES ${XMLRPC_LIBRARIES} "${XMLRPC_${name}_LIBRARY}") + endforeach() + else() + message("Error running ${XMLRPC_C_CONFIG}: [${XMLRPC_C_CONFIG_RESULT}]") + set(XMLRPC_C_FOUND 0) + endif() +endif() + +# Report the results. +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( + XMLRPC + REQUIRED_VARS XMLRPC_C_FOUND XMLRPC_LIBRARIES + FAIL_MESSAGE "XMLRPC was not found. Make sure the entries XMLRPC_* are set.") |