diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,8 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KF5DBusAddonsConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/KF5DBusAddonsConfigVersion.cmake" + "KF5DBusAddonsMacros.cmake" + "KF5dbus.service.in" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) diff --git a/KF5DBusAddonsConfig.cmake.in b/KF5DBusAddonsConfig.cmake.in --- a/KF5DBusAddonsConfig.cmake.in +++ b/KF5DBusAddonsConfig.cmake.in @@ -6,3 +6,4 @@ include("${CMAKE_CURRENT_LIST_DIR}/KF5DBusAddonsTargets.cmake") @PACKAGE_INCLUDE_QCHTARGETS@ +include("${CMAKE_CURRENT_LIST_DIR}/KF5DBusAddonsMacros.cmake") diff --git a/KF5DBusAddonsMacros.cmake b/KF5DBusAddonsMacros.cmake new file mode 100644 --- /dev/null +++ b/KF5DBusAddonsMacros.cmake @@ -0,0 +1,40 @@ +set(_KDBUSADDONSDIR ${CMAKE_CURRENT_LIST_DIR}) + +# +# kdbusaddons_generate_dbus_service_file(EXECUTABLE NAME PATH) +# +# This function generates a D-Bus service file and installs it +# into the specified destination. +# +# On Windows the path is not used because D-Bus service executables +# are always installed in the same directory as dbus-daemon. +# +# Parameters: +# +# EXECUTABLE - name of the executable +# NAME - service path in D-Bus +# PATH - path to install the service file +# +# Example: +# +# kdbusaddons_generate_dbus_service_file(kded5 org.kde.kded5 ${KDE_INSTALL_FULL_BINDIR}) +# +function(KDBUSADDONS_GENERATE_DBUS_SERVICE_FILE _executable _name _path) + set(_file ${CMAKE_CURRENT_BINARY_DIR}/${_name}.service) + set(_template ${_KDBUSADDONSDIR}/KF5dbus.service.in) + set(NAME ${_name}) + if(WIN32) + set(EXEC ${_executable}) + else() + if(IS_ABSOLUTE _path) + set(EXEC ${_path}/${_executable}) + else() + message(FATAL_ERROR "Path ${_path} is not absolute") + endif() + endif() + if(NOT EXISTS ${_file}) + message(STATUS "generating ${_file} from ${_template}") + endif() + configure_file(${_template} ${_file}) + install(FILES ${_file} DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}) +endfunction() diff --git a/KF5dbus.service.in b/KF5dbus.service.in new file mode 100644 --- /dev/null +++ b/KF5dbus.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=@NAME@ +Exec=@EXEC@