set(autotype_SOURCES
    AutoType.cpp
    AutoTypeAction.cpp
    AutoTypeMatchModel.cpp
    AutoTypeMatchView.cpp
    AutoTypeSelectDialog.cpp
    PickcharsDialog.cpp
    ShortcutWidget.cpp
    WindowSelectComboBox.cpp
)

add_library(autotype STATIC ${autotype_SOURCES})
target_link_libraries(autotype PRIVATE
    Qt6::Core
    Qt6::Core5Compat
    Qt6::Widgets
)

if(WITH_XC_AUTOTYPE)
    if(UNIX AND NOT APPLE AND NOT HAIKU)
        find_package(X11 REQUIRED COMPONENTS Xi XTest)
        if(PRINT_SUMMARY)
            add_feature_info(libXi X11_Xi_FOUND "The X11 Xi Protocol library is required for auto-type")
            add_feature_info(libXtst X11_XTest_FOUND "The X11 XTEST Protocol library is required for auto-type")
        endif()

        target_sources(autotype PRIVATE xcb/AutoTypeXCB.cpp)
        target_link_libraries(autotype PRIVATE Qt6::GuiPrivate ${X11_X11_LIB} ${X11_Xi_LIB} ${X11_XTest_LIB})
        target_include_directories(autotype SYSTEM PRIVATE ${X11_X11_INCLUDE_PATH})
    elseif(APPLE)
        target_sources(autotype PRIVATE mac/AutoTypeMac.cpp)
        set_target_properties(autotype PROPERTIES LINK_FLAGS "-framework Foundation -framework AppKit -framework Carbon -framework ScreenCaptureKit")
    elseif(WIN32)
        target_sources(autotype PRIVATE windows/AutoTypeWindows.cpp)
    endif()

    if(WITH_TESTS)
        target_sources(autotype PRIVATE test/AutoTypeTest.cpp)
        set_target_properties(autotype PROPERTIES COMPILE_DEFINITIONS WITH_TESTS)
    endif()
endif()
