cmake_minimum_required(VERSION 3.8)
project(libmicrohttpd C)

if(MSVC)
  add_compile_options(/W3 /wd4005 /wd4996 /wd4018 -D_CRT_SECURE_NO_WARNINGS)
endif()

set(MIN_SRC contrib/libmicrohttpd)


set(SRC
  src/microhttpd/base64.c
  src/microhttpd/basicauth.c
  src/microhttpd/connection.c
  src/microhttpd/daemon.c
  src/microhttpd/digestauth.c
  src/microhttpd/internal.c
  src/microhttpd/md5.c
  src/microhttpd/memorypool.c
  src/microhttpd/mhd_mono_clock.c
  src/microhttpd/postprocessor.c
  src/microhttpd/reason_phrase.c
  src/microhttpd/response.c
  src/microhttpd/tsearch.c
  src/microhttpd/sysfdsetsize.c
  src/microhttpd/mhd_str.c
  src/microhttpd/mhd_threads.c
  src/microhttpd/mhd_sockets.c
  src/microhttpd/mhd_itc.c
  src/microhttpd/mhd_compat.c
)
set(HEADERS
  src/microhttpd/base64.h
  src/microhttpd/connection.h
  src/microhttpd/internal.h
  src/microhttpd/md5.h
  src/microhttpd/memorypool.h
  src/microhttpd/mhd_byteorder.h
  src/microhttpd/mhd_limits.h
  src/microhttpd/mhd_mono_clock.h
  src/microhttpd/response.h
  src/microhttpd/tsearch.h
  src/microhttpd/sysfdsetsize.h
  src/microhttpd/mhd_str.h
  src/microhttpd/mhd_threads.h
  src/microhttpd/mhd_locks.h
  src/microhttpd/mhd_sockets.h
  src/microhttpd/mhd_itc.h
  src/microhttpd/mhd_itc_types.h
  src/microhttpd/mhd_compat.h
)

if(BUILD_SHARED_LIBS)
  set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()

include_directories(${HEADERS} src/include w32/common)

add_library(libmicrohttpd ${SRC})

if(BUILD_SHARED_LIBS)
  target_compile_definitions(libmicrohttpd PRIVATE -DMHD_W32DLL)
else()
  target_compile_definitions(libmicrohttpd PRIVATE -DMHD_W32LIB)
endif()

 target_link_libraries(libmicrohttpd ws2_32)

install(
  TARGETS libmicrohttpd
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
)

if(NOT DISABLE_INSTALL_HEADERS)
  install(FILES   src/include/microhttpd.h DESTINATION include)
endif()
