Merge pull request #25883 from CrystalP/fix-slowscan
[xbmc.git] / cmake / modules / FindMicroHttpd.cmake
blob1f2e9d69cec25e80e69e29590e6c980dde19446f
1 #.rst:
2 # FindMicroHttpd
3 # --------------
4 # Finds the MicroHttpd library
6 # This will define the following target:
8 #   ${APP_NAME_LC}::MicroHttpd   - The microhttpd library
10 if(NOT TARGET ${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME})
12   find_package(PkgConfig)
14   if(PKG_CONFIG_FOUND AND NOT (WIN32 OR WINDOWS_STORE))
15     if(MicroHttpd_FIND_VERSION)
16       if(MicroHttpd_FIND_VERSION_EXACT)
17         set(MicroHttpd_FIND_SPEC "=${MicroHttpd_FIND_VERSION_COMPLETE}")
18       else()
19         set(MicroHttpd_FIND_SPEC ">=${MicroHttpd_FIND_VERSION_COMPLETE}")
20       endif()
21     endif()
23     pkg_check_modules(MICROHTTPD libmicrohttpd${MicroHttpd_FIND_SPEC} QUIET)
25     # First item is the full path of the library file found
26     # pkg_check_modules does not populate a variable of the found library explicitly
27     list(GET MICROHTTPD_LINK_LIBRARIES 0 MICROHTTPD_LIBRARY)
29     # Add link libraries for static lib usage
30     if(${MICROHTTPD_LIBRARY} MATCHES ".+\.a$" AND MICROHTTPD_LINK_LIBRARIES)
31       # Remove duplicates
32       list(REMOVE_DUPLICATES MICROHTTPD_LINK_LIBRARIES)
34       # Remove own library - eg libmicrohttpd.a
35       list(FILTER MICROHTTPD_LINK_LIBRARIES EXCLUDE REGEX ".*microhttpd.*\.a$")
36       set(PC_MICROHTTPD_LINK_LIBRARIES ${MICROHTTPD_LINK_LIBRARIES})
37     endif()
39     # pkgconfig sets MICROHTTPD_INCLUDEDIR, map this to our "standard" variable name
40     set(MICROHTTPD_INCLUDE_DIR ${MICROHTTPD_INCLUDEDIR})
41   else()
43     find_path(MICROHTTPD_INCLUDE_DIR NAMES microhttpd.h
44                                      HINTS ${DEPENDS_PATH}/include
45                                      ${${CORE_PLATFORM_NAME_LC}_SEARCH_CONFIG})
47     find_library(MICROHTTPD_LIBRARY NAMES microhttpd libmicrohttpd
48                                     HINTS ${DEPENDS_PATH}/lib
49                                     ${${CORE_PLATFORM_NAME_LC}_SEARCH_CONFIG})
50   endif()
52   include(FindPackageHandleStandardArgs)
53   find_package_handle_standard_args(MicroHttpd
54                                     REQUIRED_VARS MICROHTTPD_LIBRARY MICROHTTPD_INCLUDE_DIR
55                                     VERSION_VAR MICROHTTPD_VERSION)
57   if(MICROHTTPD_FOUND)
58     add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} UNKNOWN IMPORTED)
59     set_target_properties(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} PROPERTIES
60                                                                      IMPORTED_LOCATION "${MICROHTTPD_LIBRARY}"
61                                                                      INTERFACE_INCLUDE_DIRECTORIES "${MICROHTTPD_INCLUDE_DIR}"
62                                                                      INTERFACE_COMPILE_DEFINITIONS "HAS_WEB_SERVER;HAS_WEB_INTERFACE")
64       # Add link libraries for static lib usage found from pkg-config
65       if(PC_MICROHTTPD_LINK_LIBRARIES)
66         set_target_properties(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} PROPERTIES
67                                                                          INTERFACE_LINK_LIBRARIES "${PC_MICROHTTPD_LINK_LIBRARIES}")
68       endif()
70     if(${MICROHTTPD_LIBRARY} MATCHES ".+\.a$" AND PC_MICROHTTPD_STATIC_LIBRARIES)
71       list(APPEND MICROHTTPD_LIBRARIES ${PC_MICROHTTPD_STATIC_LIBRARIES})
72     endif()
73   endif()
74 endif()