project (qtquickcontrols2surustyleplugin)
set (PLUGIN_URI "QtQuick.Controls.Suru")
set (PLUGIN_VERSION "2.2")

list (APPEND QML_IMPL
    impl/CheckIndicator.qml
    impl/CursorDelegate.qml
    qml-qt${QT_MAJOR_VERSION}/impl/ElevationEffect.qml
    impl/HighlightFocusRectangle.qml
    impl/RadioIndicator.qml
    impl/SwitchIndicator.qml
)

list (APPEND QML_MAIN
    ApplicationWindow.qml
    BusyIndicator.qml
    Button.qml
    CheckBox.qml
    CheckDelegate.qml
    ComboBox.qml
    DelayButton.qml
    Dial.qml
    Dialog.qml
    DialogButtonBox.qml
    Drawer.qml
    Frame.qml
    GroupBox.qml
    ItemDelegate.qml
    Label.qml
    Menu.qml
    MenuItem.qml
    MenuSeparator.qml
    Page.qml
    PageIndicator.qml
    Pane.qml
    Popup.qml
    ProgressBar.qml
    RadioButton.qml
    RadioDelegate.qml
    RangeSlider.qml
    RoundButton.qml
    ScrollBar.qml
    ScrollIndicator.qml
    Slider.qml
    SpinBox.qml
    StackView.qml
    SwipeDelegate.qml
    SwitchDelegate.qml
    Switch.qml
    TabBar.qml
    TabButton.qml
    TextArea.qml
    TextField.qml
    ToolBar.qml
    ToolButton.qml
    ToolSeparator.qml
    ToolTip.qml
    Tumbler.qml
)

list (APPEND PLUGIN_HEADERS
    qquicksurustyle_p.h
    qquicksurutheme_p.h
    qquicksuruanimations.h
    qquicksuruunits.h
)

list (APPEND PLUGIN_SOURCES
    qquicksurustyle.cpp
    qquicksurutheme.cpp
    qquicksuruanimations.cpp
    qquicksuruunits.cpp
)

list (APPEND PLUGIN_PUBLIC_QT_LINK_TARGETS
    Qt::Gui
    Qt::QuickControls2
    Qt::QuickTemplates2
)
if (QT_VERSION VERSION_GREATER_EQUAL "6.2.0")
    list (APPEND PLUGIN_PUBLIC_QT_LINK_TARGETS
        Qt::GuiPrivate
        Qt::QuickControls2Impl
        Qt::QuickControls2ImplPrivate
        Qt::QuickControls2Private
        Qt::QuickTemplates2Private
    )
endif()

string (REPLACE "." "/" PLUGIN_IMPORT_PATH "${PLUGIN_URI}")

qt_add_qml_module(${PROJECT_NAME}
    URI ${PLUGIN_URI}
    VERSION ${PLUGIN_VERSION}
    CLASS_NAME QtQuickControls2SuruStylePlugin
    PLUGIN_TARGET ${PROJECT_NAME}
    NO_GENERATE_PLUGIN_SOURCE
    NO_PLUGIN_OPTIONAL
    DEPENDENCIES
        QtQuick.Controls/${PLUGIN_VERSION}
    OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_IMPORT_PATH}
    SOURCES ${PLUGIN_SOURCES} ${PLUGIN_HEADERS}
    QML_FILES ${QML_MAIN} ${QML_IMPL}
    RESOURCES ${PROJECT_NAME}.qrc
)

target_sources (${PROJECT_NAME}
    PRIVATE
    qtquickcontrols2surustyleplugin.cpp
)

target_compile_definitions(${PROJECT_NAME}
    PRIVATE
    QT_NO_CAST_FROM_ASCII
    QT_NO_CAST_TO_ASCII
)

target_link_libraries (${PROJECT_NAME}
    PUBLIC
    ${PLUGIN_PUBLIC_QT_LINK_TARGETS}
)

install (TARGETS ${PROJECT_NAME}
    LIBRARY DESTINATION ${QT_IMPORTS_DIR}/${PLUGIN_IMPORT_PATH}
)

install (FILES
    ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_IMPORT_PATH}/qmldir
    ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_IMPORT_PATH}/${PROJECT_NAME}.qmltypes
    DESTINATION ${QT_IMPORTS_DIR}/${PLUGIN_IMPORT_PATH}
)

install (FILES
    ${QML_MAIN}
    DESTINATION ${QT_IMPORTS_DIR}/${PLUGIN_IMPORT_PATH}
)

install (FILES
    ${QML_IMPL}
    DESTINATION ${QT_IMPORTS_DIR}/${PLUGIN_IMPORT_PATH}/impl
)

install (DIRECTORY assets
    DESTINATION ${QT_IMPORTS_DIR}/${PLUGIN_IMPORT_PATH}/assets
)
