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 QUIET)
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}")
19 set(MicroHttpd_FIND_SPEC ">=${MicroHttpd_FIND_VERSION_COMPLETE}")
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)
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})
39 # pkgconfig sets MICROHTTPD_INCLUDEDIR, map this to our "standard" variable name
40 set(MICROHTTPD_INCLUDE_DIR ${MICROHTTPD_INCLUDEDIR})
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})
52 include(FindPackageHandleStandardArgs)
53 find_package_handle_standard_args(MicroHttpd
54 REQUIRED_VARS MICROHTTPD_LIBRARY MICROHTTPD_INCLUDE_DIR
55 VERSION_VAR MICROHTTPD_VERSION)
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}")
70 if(${MICROHTTPD_LIBRARY} MATCHES ".+\.a$" AND PC_MICROHTTPD_STATIC_LIBRARIES)
71 list(APPEND MICROHTTPD_LIBRARIES ${PC_MICROHTTPD_STATIC_LIBRARIES})