diff --git a/CMakeLists.txt b/CMakeLists.txt index 31ebc9e..d595d53 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,15 +3,75 @@ 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/vector/vector.c +) + +if(PkgConfig_FOUND) + pkg_check_modules(INIH REQUIRED inih) + pkg_check_modules(MICROHTTPD REQUIRED libmicrohttpd) + pkg_check_modules(MXML REQUIRED mxml) + + target_include_directories(${PROJECT_NAME} PRIVATE + ${INIH_INCLUDE_DIRS} + ${MICROHTTPD_INCLUDE_DIRS} + ${MXML_INCLUDE_DIRS} + ) + + target_link_libraries(${PROJECT_NAME} PRIVATE + ${INIH_LIBRARIES} + ${MICROHTTPD_LIBRARIES} + ${MXML_LIBRARIES} + ) +else() + find_path(INIH_INCLUDE_DIR ini.h) + find_library(INIH_LIBRARY NAMES inih libinih) + if(NOT INIH_INCLUDE_DIR OR NOT INIH_LIBRARY) + message(FATAL_ERROR "inih not found") + endif() + + 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 + ${INIH_INCLUDE_DIR} + ${MICROHTTPD_INCLUDE_DIR} + ${MXML_INCLUDE_DIR} + ) + + target_link_libraries(${PROJECT_NAME} PRIVATE + ${INIH_LIBRARY} + ${MICROHTTPD_LIBRARY} + ${MXML_LIBRARY} + ) +endif() + +target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads) + include_directories(${CMAKE_BINARY_DIR} ${PROJECT_SOURCE_DIR}) -add_subdirectory(src) - -#file(COPY resources DESTINATION ${CMAKE_BINARY_DIR}) +file(COPY www DESTINATION ${CMAKE_BINARY_DIR}) install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index 2df0b89..0000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -add_executable(${PROJECT_NAME} - main.c - ../deps/vector/vector.c -) -target_link_libraries(${PROJECT_NAME} PUBLIC microhttpd pthread inih mxml) \ No newline at end of file