69 lines
2.1 KiB
CMake
69 lines
2.1 KiB
CMake
cmake_minimum_required(VERSION 3.22)
|
|
project(lumen-wallpaper VERSION 0.1.0 LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
find_package(ECM 6.0.0 REQUIRED NO_MODULE)
|
|
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
|
|
include(KDEInstallDirs)
|
|
include(KDECMakeSettings)
|
|
include(KDECompilerSettings NO_POLICY_SCOPE)
|
|
|
|
find_package(Qt6 6.6 REQUIRED COMPONENTS Core Gui Qml Quick)
|
|
|
|
set(LUMEN_PACKAGE_ID dev.emil.lumen)
|
|
set(LUMEN_INSTALL_DIR "${KDE_INSTALL_DATADIR}/plasma/wallpapers/${LUMEN_PACKAGE_ID}")
|
|
set(LUMEN_RUST_LIBRARY "${CMAKE_BINARY_DIR}/cargo/release/liblumen_renderer.a")
|
|
|
|
file(GLOB_RECURSE LUMEN_RUST_SOURCES CONFIGURE_DEPENDS
|
|
"${CMAKE_SOURCE_DIR}/renderer/*.rs"
|
|
)
|
|
add_custom_command(
|
|
OUTPUT "${LUMEN_RUST_LIBRARY}"
|
|
COMMAND "${CMAKE_COMMAND}" -E env CARGO_TARGET_DIR=${CMAKE_BINARY_DIR}/cargo
|
|
cargo build --release
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
DEPENDS ${LUMEN_RUST_SOURCES}
|
|
"${CMAKE_SOURCE_DIR}/Cargo.toml"
|
|
"${CMAKE_SOURCE_DIR}/Cargo.lock"
|
|
COMMENT "Building the Rust Vulkan renderer"
|
|
VERBATIM
|
|
)
|
|
add_custom_target(lumen_renderer_build DEPENDS "${LUMEN_RUST_LIBRARY}")
|
|
add_library(lumen_renderer STATIC IMPORTED GLOBAL)
|
|
set_target_properties(lumen_renderer PROPERTIES IMPORTED_LOCATION "${LUMEN_RUST_LIBRARY}")
|
|
add_dependencies(lumen_renderer lumen_renderer_build)
|
|
|
|
add_library(lumenplugin MODULE
|
|
src/plugin.cpp
|
|
src/plugin.h
|
|
src/wallpaperitem.cpp
|
|
src/wallpaperitem.h
|
|
src/rendernode.cpp
|
|
src/rendernode.h
|
|
src/lumen_ffi.h
|
|
)
|
|
target_include_directories(lumenplugin PRIVATE "${CMAKE_SOURCE_DIR}/src")
|
|
target_link_libraries(lumenplugin PRIVATE
|
|
Qt6::Core
|
|
Qt6::Gui
|
|
Qt6::Qml
|
|
Qt6::Quick
|
|
lumen_renderer
|
|
${CMAKE_DL_LIBS}
|
|
pthread
|
|
m
|
|
)
|
|
set_target_properties(lumenplugin PROPERTIES
|
|
PREFIX "lib"
|
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/package/contents/ui/lumen"
|
|
)
|
|
|
|
install(DIRECTORY package/ DESTINATION "${LUMEN_INSTALL_DIR}")
|
|
install(TARGETS lumenplugin
|
|
LIBRARY DESTINATION "${LUMEN_INSTALL_DIR}/contents/ui/lumen"
|
|
)
|