cf12defd28
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
65 lines
2.8 KiB
CMake
65 lines
2.8 KiB
CMake
# To not mess up the ECM_FIND_VERSION we only include ECM if the required variables are not set
|
|
if (NOT KDE_INSTALL_DATADIR OR NOT KDE_INSTALL_METAINFODIR)
|
|
find_package(ECM 5.83.0 CONFIG REQUIRED)
|
|
include(${ECM_KDE_MODULE_DIR}/KDEInstallDirs.cmake)
|
|
endif()
|
|
set(KPACKAGE_RELATIVE_DATA_INSTALL_DIR "kpackage")
|
|
|
|
# kpackage_install_package(path componentname [root] [install_dir])
|
|
#
|
|
# Installs a package to the system path
|
|
# @arg path The source path to install from, location of metadata.json
|
|
# @arg componentname The plugin id of the component, corresponding to the
|
|
# Id key of the KPlugin object in metadata.json
|
|
# @arg root The subdirectory to install to, default: packages
|
|
# @arg install_dir the path where to install packages,
|
|
# such as myapp, that would go under prefix/share/myapp:
|
|
# default ${KPACKAGE_RELATIVE_DATA_INSTALL_DIR}
|
|
#
|
|
# Examples:
|
|
# kpackage_install_package(mywidget org.kde.plasma.mywidget plasmoids) # installs an applet
|
|
# kpackage_install_package(declarativetoolbox org.kde.toolbox packages) # installs a generic package
|
|
# kpackage_install_package(declarativetoolbox org.kde.toolbox) # installs a generic package
|
|
#
|
|
|
|
set(kpackagedir ${CMAKE_CURRENT_LIST_DIR})
|
|
function(kpackage_install_package dir component)
|
|
set(root ${ARGV2})
|
|
set(install_dir ${ARGV3})
|
|
if(NOT root)
|
|
set(root packages)
|
|
endif()
|
|
if(NOT install_dir)
|
|
set(install_dir ${KPACKAGE_RELATIVE_DATA_INSTALL_DIR})
|
|
endif()
|
|
|
|
install(DIRECTORY ${dir}/ DESTINATION ${KDE_INSTALL_DATADIR}/${install_dir}/${root}/${component}
|
|
PATTERN .svn EXCLUDE
|
|
PATTERN *.qmlc EXCLUDE
|
|
PATTERN CMakeLists.txt EXCLUDE
|
|
PATTERN Messages.sh EXCLUDE
|
|
PATTERN dummydata EXCLUDE)
|
|
|
|
get_target_property(kpackagetool_cmd KF6::kpackagetool6 LOCATION)
|
|
if (${component} MATCHES "^.+\\..+\\.") #we make sure there's at least 2 dots
|
|
set(APPDATAFILE "${CMAKE_CURRENT_BINARY_DIR}/${component}.appdata.xml")
|
|
|
|
execute_process(
|
|
COMMAND ${kpackagetool_cmd} --appstream-metainfo ${CMAKE_CURRENT_SOURCE_DIR}/${dir} --appstream-metainfo-output ${APPDATAFILE}
|
|
ERROR_VARIABLE appstreamerror
|
|
RESULT_VARIABLE result)
|
|
if (NOT result EQUAL 0)
|
|
message(WARNING "couldn't generate metainfo for ${component}: ${appstreamerror}")
|
|
else()
|
|
if(appstreamerror)
|
|
message(WARNING "warnings during generation of metainfo for ${component}: ${appstreamerror}")
|
|
endif()
|
|
|
|
# OPTIONAL because json files can be NoDisplay so they render no XML
|
|
install(FILES ${APPDATAFILE} DESTINATION ${KDE_INSTALL_METAINFODIR} OPTIONAL)
|
|
endif()
|
|
else()
|
|
message(DEBUG "KPackage components should be specified in reverse domain notation. Appstream information won't be generated for ${component}.")
|
|
endif()
|
|
endfunction()
|