repertory/cmake/libhttpserver.cmake
Scott E. Graves 3ff46723b8
Some checks failed
BlockStorage/repertory_osx/pipeline/head There was a failure building this commit
BlockStorage/repertory_windows/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
initial commit
2022-03-05 00:30:50 -06:00

60 lines
3.0 KiB
CMake

set(LIBHTTPSERVER_PROJECT_NAME libhttpserver_${LIBHTTPSERVER_VERSION})
set(LIBHTTPSERVER_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${LIBHTTPSERVER_PROJECT_NAME})
if (MSVC)
add_custom_target(libhttpserver_project DEPENDS libmicrohttpd_project)
include_directories(SYSTEM
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/glue
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/libhttpserver-${LIBHTTPSERVER_VERSION}/src
)
set(REPERTORY_HEADERS
${REPERTORY_HEADERS}
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/glue/pthread.h
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/glue/strings.h
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/glue/unistd.h
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/glue/sys/time.h
)
set(REPERTORY_SOURCES
${REPERTORY_SOURCES}
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/libhttpserver-${LIBHTTPSERVER_VERSION}/src/details/http_endpoint.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/libhttpserver-${LIBHTTPSERVER_VERSION}/src/string_utilities.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/libhttpserver-${LIBHTTPSERVER_VERSION}/src/string_response.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/libhttpserver-${LIBHTTPSERVER_VERSION}/src/http_utils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/libhttpserver-${LIBHTTPSERVER_VERSION}/src/http_resource.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/libhttpserver-${LIBHTTPSERVER_VERSION}/src/http_request.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/libhttpserver-${LIBHTTPSERVER_VERSION}/src/http_response.cpp
${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/libhttpserver-${LIBHTTPSERVER_VERSION}/src/webserver.cpp
)
add_definitions(-DHTTPSERVER_COMPILATION)
else()
set (LIBHTTPSERVER_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${EXTERNAL_BUILD_ROOT}/include")
set (LIBHTTPSERVER_LDFLAGS "-L${EXTERNAL_BUILD_ROOT}/lib")
set(LIBHTTPSERVER_MAKE make)
set(LIBHTTPSERVER_SED "sed -i -e s/have_gnutls=\"yes\"/have_gnutls=\"no\"/g ./configure")
if (MACOS)
set (LIBHTTPSERVER_CXX g++)
set (LIBHTTPSERVER_CC gcc)
set(LIBHTTPSERVER_CXX_FLAGS "${LIBHTTPSERVER_CXX_FLAGS} -fvisibility=hidden")
else()
set (LIBHTTPSERVER_CXX ${CMAKE_CXX_COMPILER})
set (LIBHTTPSERVER_CC ${CMAKE_C_COMPILER})
endif()
ExternalProject_Add(libhttpserver_project
DOWNLOAD_NO_PROGRESS 1
BUILD_IN_SOURCE 1
URL https://github.com/etr/libhttpserver/archive/${LIBHTTPSERVER_VERSION}.tar.gz
PREFIX ${LIBHTTPSERVER_BUILD_ROOT}
CONFIGURE_COMMAND ./bootstrap && sh -c "${LIBHTTPSERVER_SED}"
BUILD_COMMAND mkdir -p build && cd build && ../configure MAKE=${LIBHTTPSERVER_MAKE}
CXX=${LIBHTTPSERVER_CXX} CC=${LIBHTTPSERVER_CC} CXXFLAGS=${LIBHTTPSERVER_CXX_FLAGS}
LDFLAGS=${LIBHTTPSERVER_LDFLAGS} CPPFLAGS=-fpermissive --prefix=${EXTERNAL_BUILD_ROOT}
--enable-static=yes --enable-shared=yes --disable-examples --disable-doxygen-doc && ${LIBHTTPSERVER_MAKE}
INSTALL_COMMAND cd build && ${LIBHTTPSERVER_MAKE} install
)
set(LIBHTTPSERVER_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/libhttpserver.a)
endif()
add_dependencies(libhttpserver_project libmicrohttpd_project)