# For CONFIGURE_DEPENDS
cmake_minimum_required(VERSION 3.30)

project(winapi_utf8 CXX)
enable_testing()

if (MSVC)
    add_compile_options(/MP /W4)
else()
    add_compile_options(-Wall -Wextra)
endif()

add_compile_definitions(WIN32_LEAN_AND_MEAN NOMINMAX)

file(GLOB_RECURSE winapi_utf8_include CONFIGURE_DEPENDS "include/*.hpp")
file(GLOB winapi_utf8_src CONFIGURE_DEPENDS "src/*.cpp")
add_library(winapi_utf8 ${winapi_utf8_include} ${winapi_utf8_src})

target_include_directories(winapi_utf8 PUBLIC include)
# Vista is the lower bound (due to WC_ERR_INVALID_CHARS):
if(MINGW)
    target_compile_definitions(winapi_utf8 PRIVATE
        NTDDI_VERSION=NTDDI_VISTA
        _WIN32_WINNT=_WIN32_WINNT_VISTA)
endif()
install(TARGETS winapi_utf8 ARCHIVE DESTINATION lib)
install(DIRECTORY include/winapi DESTINATION include)

if(WINAPI_UTF8_TESTS)
    add_subdirectory(test)
endif()

install(FILES LICENSE.txt DESTINATION share)

find_package(Doxygen)
if(DOXYGEN_FOUND)
    set(DOXYGEN_INCLUDE_GRAPH NO)
    set(DOXYGEN_INCLUDED_BY_GRAPH NO)
    set(DOXYGEN_SHOW_INCLUDE_FILES NO)
    set(DOXYGEN_SORT_MEMBER_DOCS NO)
    set(DOXYGEN_SOURCE_BROWSER YES)
    set(DOXYGEN_USE_MDFILE_AS_MAINPAGE README.md)
    doxygen_add_docs(winapi_utf8_docs
        README.md
        ${winapi_utf8_include}
        ${winapi_utf8_src})
endif()
