cmake_minimum_required(VERSION 3.24)
project(core)

include(../3rdparty/QxOrm/QxOrm.cmake)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

find_package(Qt6 COMPONENTS
        Core
        Gui
        Widgets
        PrintSupport
        Sql
        Qml
        REQUIRED)

add_library(core SHARED
        autoform.h
        autotablemodel.h
        columndialog.cpp
        columndialog.h
        columndialog.ui
        combodata.cpp
        combodata.h
        context.h
        context.cpp
        core.h
        core_global.h
        coreplugin.cpp
        coreplugin.h
        csvimporter.cpp
        csvimporter.h
        defaultformhandler.cpp
        defaultformhandler.h
        define.h
        emptystringvalidator.cpp
        emptystringvalidator.h
        enums.h
        exprevaluator.cpp
        exprevaluator.h
        filterdialog.cpp
        filterdialog.h
        filterdialog.ui
        filterui.cpp
        filterui.h
        filterui.ui
        formbinder.h
        formdialog.cpp
        formdialog.h
        formdialog.ui
        gridform.h
        gridform.ui
        helper.cpp
        helper.h
        idashboardwidget.h
        iform.cpp
        iform.h
        igridform.cpp
        igridform.h
        iimporter.h
        iimportprogress.h
        imetadataplugin.cpp
        imetadataplugin.h
        importdialog.cpp
        importdialog.h
        importdialog.ui
        importprogress.cpp
        importprogress.h
        importprogress.ui
        iplugin.h
        iservice.cpp
        iservice.h
        itablemodel.cpp
        itablemodel.h
        ivalidator.h
        numberseriesservice.cpp
        numberseriesservice.h
        objectbinder.cpp
        objectbinder.h
        permissionevaluator.cpp
        permissionevaluator.h
        permissionservice.cpp
        permissionservice.h
        rc.qrc
        samestringvalidator.cpp
        samestringvalidator.h
        savefilterdialog.cpp
        savefilterdialog.h
        savefilterdialog.ui
        seasonservice.cpp
        seasonservice.h
        settingsform.cpp
        settingsform.h
        settingsform.ui
        settingsservice.cpp
        settingsservice.h
        data/comboitem.cpp
        data/comboitem.h
        data/core-data.h
        data/numberseries.cpp
        data/numberseries.h
        data/permission.cpp
        data/permission.h
        data/role.cpp
        data/role.h
        data/season.cpp
        data/season.h
        data/system.cpp
        data/system.h
        data/user.cpp
        data/user.h
        roles/roles.cpp
        roles/roles.h
        roles/rolesform.cpp
        roles/rolesform.h
        roles/rolesform.ui
        roles/rolestablemodel.cpp
        roles/rolestablemodel.h
        roles/rolesui.cpp
        roles/rolesui.h
        settings/globalsettings.cpp
        settings/globalsettings.h
        settings/globalsettingsform.cpp
        settings/globalsettingsform.h
        settings/globalsettingsform.ui
        settings/seasonnamedialog.cpp
        settings/seasonnamedialog.h
        settings/seasonnamedialog.ui
        users/tablemodel.cpp
        users/tablemodel.h
        users/userform.cpp
        users/userform.h
        users/userform.ui
        users/users.cpp
        users/users.h
        users/usersui.cpp
        users/usersui.h
        reporting/report.cpp
        reporting/report.h
        reporting/reportdialog.cpp
        reporting/reportdialog.h
        reporting/reportdialog.ui
        reporting/reportviewer.cpp
        reporting/reportviewer.h
        reporting/reportviewer.ui
        reporting/variablefiller.cpp
        reporting/variablefiller.h)

target_compile_definitions(core PRIVATE -DCORE_LIBRARY)

include_directories(../3rdparty/qdecimal/src ../3rdparty/LimeReport/include ../3rdparty/QxOrm/include)

target_link_libraries(core
        Qt::Core
        Qt::Gui
        Qt::Widgets
        Qt::PrintSupport
        Qt::Sql
        Qt::Qml
        qdecimal
        decnumber
        limereport-qt6
        QxOrm
        )
