cmake_minimum_required(VERSION 3.10)
project(stethoscope
	VERSION 1.0
	LANGUAGES C)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS ON)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})

if(NOT CMAKE_BUILD_TYPE)
	set(CMAKE_BUILD_TYPE "RelWithDebInfo")
endif()

find_package(Threads REQUIRED)
find_package(PkgConfig QUIET)

add_executable(${PROJECT_NAME}
	src/main.c
	deps/inih/ini.c
	deps/vector/vector.c
)

if(PkgConfig_FOUND)
	pkg_check_modules(MICROHTTPD REQUIRED libmicrohttpd)
	pkg_check_modules(MXML REQUIRED mxml)

	target_include_directories(${PROJECT_NAME} PRIVATE
		${MICROHTTPD_INCLUDE_DIRS}
		${MXML_INCLUDE_DIRS}
	)

	target_link_libraries(${PROJECT_NAME} PRIVATE
		${MICROHTTPD_LIBRARIES}
		${MXML_LIBRARIES}
	)
else()
	find_path(MICROHTTPD_INCLUDE_DIR microhttpd.h)
	find_library(MICROHTTPD_LIBRARY NAMES microhttpd libmicrohttpd)
	if(NOT MICROHTTPD_INCLUDE_DIR OR NOT MICROHTTPD_LIBRARY)
		message(FATAL_ERROR "libmicrohttpd not found")
	endif()

	find_path(MXML_INCLUDE_DIR mxml.h)
	find_library(MXML_LIBRARY NAMES mxml libmxml mxml4)
	if(NOT MXML_INCLUDE_DIR OR NOT MXML_LIBRARY)
		message(FATAL_ERROR "mxml not found")
	endif()

	target_include_directories(${PROJECT_NAME} PRIVATE
		${MICROHTTPD_INCLUDE_DIR}
		${MXML_INCLUDE_DIR}
	)

	target_link_libraries(${PROJECT_NAME} PRIVATE
		${MICROHTTPD_LIBRARY}
		${MXML_LIBRARY}
	)
endif()

target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)

include_directories(${CMAKE_BINARY_DIR} ${PROJECT_SOURCE_DIR})

file(COPY www DESTINATION ${CMAKE_BINARY_DIR})
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)