Files
RedBear-OS/local/recipes/kde/kf6-kpackage/source/KF6PackageMacros.cmake
T
2026-04-14 10:51:06 +01:00

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()