project( corestuff )
cmake_minimum_required( VERSION 3.16 )

set( PROJECT_VERSION 5.0.0 )
set( PROJECT_VERSION_MAJOR 5 )
set( PROJECT_VERSION_MINOR 0 )
set( PROJECT_VERSION_PATCH 0 )

set( PROJECT_VERSION_MAJOR_MINOR ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} )
add_compile_definitions(VERSION_TEXT="${PROJECT_VERSION}")

set( CMAKE_CXX_STANDARD 17 )
set( CMAKE_INCLUDE_CURRENT_DIR ON )
set( CMAKE_BUILD_TYPE Release )
set( CMAKE_AUTOMOC ON )
set( CMAKE_AUTORCC ON )
set( CMAKE_AUTOUIC ON )

add_definitions ( -Wall )
if ( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
    set( CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Location for installing the project" FORCE )
endif()

if ( NOT DEFINED ADD_AUTOSTART )
    set (ADD_AUTOSTART true)
endif()

add_compile_definitions(PREFIX_PATH="${CMAKE_INSTALL_PREFIX}")

find_package( Qt6Core REQUIRED )
find_package( Qt6Gui REQUIRED )
find_package( Qt6Widgets REQUIRED )
find_package( Qt6DBus REQUIRED )
find_package( Qt6Network REQUIRED )

find_package( KF6GlobalAccel REQUIRED )

include_directories(
 activities
 apps
 home
 pins
 sessions
 tasks
 tasks/X11/Headers
 tasks/X11/Client
 tasks/X11/EventFilter
 tasks/X11/Helpers
 tasks/X11/Session
)

set( corestuff_HDRS
 button.h
 settings.h
)

set( corestuff_SRCS
 activities/pageactivites.cpp
 apps/pageapps.cpp
 button.cpp
 corestuff.cpp
 gesturehandler.cpp
 powerdlg.cpp
 home/pagehome.cpp
 main.cpp
 settings.cpp
 tasks/pagetasks.cpp
 tasks/x11tasks.cpp
 pins/pagepins.cpp
 sessions/pagesessions.cpp
 sessions/sessionsavedialog.cpp
 slidingstackedwidget.cpp
 tasks/X11/Client/DesQClientX11.cpp
 tasks/X11/EventFilter/DesQEventFilterX11.cpp
 tasks/X11/Session/DesQWMSessionX11.cpp
 tasks/X11/Helpers/X11Helpers.cpp
)

set( corestuff_MOCS
 activities/pageactivites.h
 apps/pageapps.h
 corestuff.h
 gesturehandler.h
 powerdlg.h
 home/pagehome.h
 pins/pagepins.h
 tasks/pagetasks.h
 tasks/x11tasks.h
 sessions/pagesessions.h
 sessions/sessionsavedialog.h
 slidingstackedwidget.h
 tasks/X11/Headers/DesQClient.hpp
 tasks/X11/Headers/DesQEventFilter.hpp
 tasks/X11/Headers/DesQWMSession.hpp
)

set( corestuff_UIS
 activities/pageactivites.ui
 apps/pageapps.ui
 corestuff.ui
 home/pagehome.ui
 pins/pagepins.ui
 sessions/pagesessions.ui
 sessions/sessionsavedialog.ui
 tasks/pagetasks.ui
)

add_executable( corestuff ${corestuff_SRCS} ${corestuff_MOCS} ${corestuff_UIS}  )
target_link_libraries( corestuff
 PUBLIC Qt6::Core Qt6::Gui Qt6::Widgets Qt6::DBus Qt6::Network
 KF6::GlobalAccel
 xcb xcb-ewmh xcb-icccm
 X11 Xi Xcomposite
 cprime-widgets cprime-core
 PRIVATE Qt6::CorePrivate Qt6::GuiPrivate
 csys
)

install( TARGETS corestuff DESTINATION bin )
install( FILES cc.cubocore.CoreStuff.desktop DESTINATION share/applications )
install( FILES cc.cubocore.CoreStuff.svg DESTINATION share/icons/hicolor/scalable/apps/ )
install( FILES background/default.svg DESTINATION share/coreapps/background )

if ( DEFINED ADD_AUTOSTART )
    message("INSTALLING TO AUTOSTART LOCATION")
    install( FILES cc.cubocore.CoreStuff.desktop DESTINATION /etc/xdg/autostart )
endif()
