find_package(Qt6 6.2 REQUIRED COMPONENTS Widgets)
find_package(X11 REQUIRED)
if(NOT X11_XTest_FOUND)
    message(FATAL_ERROR "Linux keyboard output needs libxtst-dev")
endif()
foreach(application configurator controller)
    string(TOUPPER "${application}" application_option)
    if(MIG_BUILD_${application_option})
        set(app_sources main.cpp canvas.cpp capture.cpp keyboard.cpp theme.cpp)
        if(application STREQUAL "controller")
            list(APPEND app_sources controller_window.cpp controller_profiles.cpp controller_runtime.cpp)
        else()
            list(APPEND app_sources window.cpp)
        endif()
        add_executable(mig-${application} ${app_sources})
        if(application STREQUAL "controller")
            target_compile_definitions(mig-${application} PRIVATE MIG_CONTROLLER)
            target_link_libraries(mig-${application} PRIVATE mig-controller-profiles)
        endif()
        target_compile_definitions(mig-${application} PRIVATE MIG_APP_NAME="${application}")
        target_link_libraries(mig-${application} PRIVATE Qt6::Widgets mig-native mig-format
            X11::X11 X11::Xtst)
        set_target_properties(mig-${application} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
        if(MIG_INSTALL)
            install(TARGETS mig-${application} RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
        endif()
    endif()
endforeach()
