# Copyright (c) 2018-2024 Jean-Louis Leroy
# Distributed under the Boost Software License, Version 1.0.
# See accompanying file LICENSE_1_0.txt
# or copy at http://www.boost.org/LICENSE_1_0.txt)

set(code_deps "${CMAKE_SOURCE_DIR}/dev/code2md;${CMAKE_SOURCE_DIR}/dev/md2md;${CMAKE_SOURCE_DIR}/dev/mdgen.py")
file(GLOB cpps "*.cpp")
set(entries "")

foreach(cpp ${cpps})
    cmake_path(REMOVE_EXTENSION cpp LAST_ONLY OUTPUT_VARIABLE md)

    if(${YOMM2_ENABLE_DOC})
        set(md "${md}.md")
        string(REPLACE "docs.in" "docs" md_out "${md}")
        add_custom_command(
            OUTPUT "${md_out}"
            COMMAND ${CMAKE_SOURCE_DIR}/dev/code2md "${cpp}" "${md_out}"
            DEPENDS "${cpp};${code_deps}")
        list(APPEND entries "${md_out}")
    endif()

    cmake_path(GET cpp STEM exe)
    set(exe "ref_${exe}")
    add_executable("${exe}" "${cpp}")
    add_compile_definitions(YOMM2_CODE)
    target_link_libraries("${exe}" YOMM2::yomm2)
    add_test(NAME "${exe}" COMMAND "${exe}")
endforeach()

if(${YOMM2_ENABLE_DOC})
    file(GLOB_RECURSE MDs "*.md")

    foreach(MD ${MDs})
        string(REPLACE "docs.in" "docs" MD_out "${MD}")
        add_custom_command(
            OUTPUT "${MD_out}"
            COMMAND ${CMAKE_SOURCE_DIR}/dev/md2md "${MD}" "${MD_out}"
            DEPENDS "${MD};${code_deps}")
        list(APPEND entries "${MD_out}")
        endforeach()

    add_custom_target(reference ALL DEPENDS "${entries}")
endif()
