set(BUILD_TARGET "all" CACHE STRING "Target to build")

file(GLOB subdir_entries RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*")

foreach(entry IN LISTS subdir_entries)
    if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${entry}" AND
       (BUILD_TARGET STREQUAL "all" OR BUILD_TARGET STREQUAL ${entry}) AND
       NOT entry STREQUAL "demo")
        message(STATUS "Adding subdirectory: ${entry}")
        set(EXPORT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${entry}/export")
        set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${EXPORT_DIR})
        add_subdirectory(${entry})

        get_filename_component(subdir_abs_path "${CMAKE_CURRENT_SOURCE_DIR}/${entry}" ABSOLUTE)
        get_property(subdir_targets DIRECTORY "${subdir_abs_path}" PROPERTY BUILDSYSTEM_TARGETS)
        message(STATUS "Targets in ${entry}: ${subdir_targets}")

        foreach(target IN LISTS subdir_targets)
            if(TARGET ${target})
                target_link_libraries(${target} PUBLIC krun_base)
            endif()
        endforeach()
    endif()
endforeach()