find_package(Qt6 REQUIRED COMPONENTS ShaderTools Core Qml Gui Quick QuickControls2 Concurrent Sql Network DBus) find_package(PkgConfig REQUIRED) pkg_check_modules(Qalculate IMPORTED_TARGET libqalculate REQUIRED) pkg_check_modules(Pipewire IMPORTED_TARGET libpipewire-0.3 REQUIRED) pkg_check_modules(Aubio IMPORTED_TARGET aubio REQUIRED) pkg_check_modules(Cava IMPORTED_TARGET libcava QUIET) if(NOT Cava_FOUND) pkg_check_modules(Cava IMPORTED_TARGET cava REQUIRED) endif() find_library(SENSORS_LIBRARY NAMES sensors REQUIRED) find_path(SENSORS_INCLUDE_DIR NAMES sensors/sensors.h REQUIRED) if(NOT TARGET Sensors::Sensors) add_library(Sensors::Sensors UNKNOWN IMPORTED) set_target_properties(Sensors::Sensors PROPERTIES IMPORTED_LOCATION "${SENSORS_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${SENSORS_INCLUDE_DIR}" ) endif() set(QT_QML_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/qml") qt_standard_project_setup(REQUIRES 6.9) function(qml_module arg_TARGET) cmake_parse_arguments(PARSE_ARGV 1 arg "" "URI" "SOURCES;QML_FILES;LIBRARIES") qt_add_qml_module(${arg_TARGET} URI ${arg_URI} VERSION ${VERSION} SOURCES ${arg_SOURCES} QML_FILES ${arg_QML_FILES} ) qt_query_qml_module(${arg_TARGET} URI module_uri VERSION module_version PLUGIN_TARGET module_plugin_target TARGET_PATH module_target_path QMLDIR module_qmldir TYPEINFO module_typeinfo ) message(STATUS "Created QML module ${module_uri}, version ${module_version}") set(module_dir "${INSTALL_QMLDIR}/${module_target_path}") install(TARGETS ${arg_TARGET} LIBRARY DESTINATION "${module_dir}" RUNTIME DESTINATION "${module_dir}") install(TARGETS "${module_plugin_target}" LIBRARY DESTINATION "${module_dir}" RUNTIME DESTINATION "${module_dir}") install(FILES "${module_qmldir}" DESTINATION "${module_dir}") install(FILES "${module_typeinfo}" DESTINATION "${module_dir}") target_link_libraries(${arg_TARGET} PRIVATE caelestia-pch Qt::Core Qt::Qml ${arg_LIBRARIES}) endfunction() add_library(caelestia-pch INTERFACE) target_precompile_headers(caelestia-pch INTERFACE ) qml_module(caelestia URI Caelestia SOURCES cutils.hpp cutils.cpp qalculator.hpp qalculator.cpp appdb.hpp appdb.cpp requests.hpp requests.cpp toaster.hpp toaster.cpp imageanalyser.hpp imageanalyser.cpp LIBRARIES Qt::Gui Qt::Quick Qt::Concurrent Qt::Sql PkgConfig::Qalculate ) add_subdirectory(Components) add_subdirectory(Config) add_subdirectory(Internal) add_subdirectory(Models) add_subdirectory(Services) add_subdirectory(Blobs) add_subdirectory(Images)