project(libhtmlpp CXX)
cmake_minimum_required(VERSION 3.23)
enable_testing ()

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

include(GNUInstallDirs)

set(LIBV "1.0.0")
set(Upstream_VERSION 1.0.0)

find_package(Doxygen QUIET)
if (DOXYGEN_FOUND)
    set(DOXYFILE_IN  ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
    set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
    set(DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/libhtmlpp/html")

    # Allow @LIBV@ substitution from your existing variable
    configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY)

    add_custom_target(docs ALL
        COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT}
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
        COMMENT "Generating API documentation with Doxygen (sources: ${CMAKE_SOURCE_DIR}/src)"
        VERBATIM)

   install(
        DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/docs/html/"
        DESTINATION "${DOC_INSTALL_DIR}"
        COMPONENT docs
   )

else()
    message(STATUS "Doxygen not found; 'docs' target will not be available.")
endif()

if(NOT ${CMAKE_CXX_COMPILER} MATCHES "MSVC" AND NOT ${CMAKE_HOST_WIN32} )
set(CMAKE_CXX_FLAGS "-fPIC -Wall")
endif()

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)


configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)

include_directories(${CMAKE_CURRENT_BINARY_DIR})

install(
    FILES
        "${CMAKE_CURRENT_BINARY_DIR}/config.h"
    DESTINATION
        ${CMAKE_INSTALL_INCLUDEDIR}/htmlpp
)

#add_subdirectory(doc)
add_subdirectory(src)
add_subdirectory(test)
