xbmc/cmake/modules/FindMicroHttpd.cmake

95 lines
3.3 KiB
CMake

#.rst:
# FindMicroHttpd
# --------------
# Finds the MicroHttpd library
#
# This will define the following target:
#
# ${APP_NAME_LC}::MicroHttpd - The microhttpd library
if(NOT TARGET ${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME})
include(cmake/scripts/common/ModuleHelpers.cmake)
macro(buildmacroMicroHttpd)
if(WIN32 OR WINDOWS_STORE)
set(patches "${CMAKE_SOURCE_DIR}/tools/depends/target/${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}/01-win-cmake.patch")
generate_patchcommand("${patches}")
unset(patches)
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_DEBUG_POSTFIX _d)
set(CMAKE_ARGS -DDUMMY_ARGS=ON)
else()
# Todo: gnutls libgcrypt libgpg-error
# find_package(xxx)
if (CMAKE_HOST_SYSTEM_NAME MATCHES "(Free|Net|Open)BSD")
find_program(MAKE_EXECUTABLE gmake)
endif()
find_program(MAKE_EXECUTABLE make REQUIRED)
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
# blanket disable timespec_get use for apple platforms. timespec_get was introduced in
# __API_AVAILABLE(macosx(10.15), ios(13.0), tvos(13.0), watchos(6.0)) but older platforms
# are failing to run.
set(EXTRA_ARGS mhd_cv_func_timespec_get=no)
endif()
set(CONFIGURE_COMMAND ./configure --prefix ${DEPENDS_PATH}
--disable-shared
--disable-doc
--disable-examples
--disable-curl
--enable-https
${EXTRA_ARGS})
set(BUILD_COMMAND ${MAKE_EXECUTABLE})
set(INSTALL_COMMAND ${MAKE_EXECUTABLE} install)
set(BUILD_IN_SOURCE 1)
endif()
BUILD_DEP_TARGET()
endmacro()
set(${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC libmicrohttpd)
SETUP_BUILD_VARS()
SETUP_FIND_SPECS()
SEARCH_EXISTING_PACKAGES()
if(("${${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME}_VERSION}" VERSION_LESS ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_VER} AND ENABLE_INTERNAL_LIBMICROHTTPD) OR
((CORE_SYSTEM_NAME STREQUAL linux OR CORE_SYSTEM_NAME STREQUAL freebsd) AND ENABLE_INTERNAL_LIBMICROHTTPD))
message(STATUS "Building ${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}: \(version \"${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_VER}\"\)")
cmake_language(EVAL CODE "
buildmacro${CMAKE_FIND_PACKAGE_NAME}()
")
endif()
if(${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME}_FOUND)
if(TARGET PkgConfig::${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME} AND NOT TARGET ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_BUILD_NAME})
add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} ALIAS PkgConfig::${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME_PC})
elseif(TARGET libmicrohttpd::libmicrohttpd AND NOT TARGET ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_BUILD_NAME})
# Kodi target - windows prebuilt lib
add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} ALIAS libmicrohttpd::libmicrohttpd)
else()
SETUP_BUILD_TARGET()
add_dependencies(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_BUILD_NAME})
endif()
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_COMPILE_DEFINITIONS "HAS_WEB_SERVER;HAS_WEB_INTERFACE")
ADD_TARGET_COMPILE_DEFINITION()
ADD_MULTICONFIG_BUILDMACRO()
endif()
endif()