/usr/lib/x86_64-linux-gnu/cmake/KF5Package/KF5PackageMacros.cmake is in libkf5package-dev 5.28.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | find_package(ECM 1.6.0 CONFIG REQUIRED)
include(KDEInstallDirs)
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.desktop
# @arg componentname The plugin name of the component, corresponding to the
# X-KDE-PluginInfo-Name key in metadata.desktop
# @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
#
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 CMakeLists.txt EXCLUDE
PATTERN Messages.sh EXCLUDE
PATTERN dummydata EXCLUDE)
if(NOT EXISTS ${component}-metadata.json)
set(GENERATED_METADATA "${CMAKE_CURRENT_BINARY_DIR}/${component}-metadata.json")
add_custom_command(OUTPUT ${GENERATED_METADATA}
COMMAND KF5::desktoptojson -i ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/metadata.desktop -o ${GENERATED_METADATA})
add_custom_target(${component}-metadata-json ALL DEPENDS ${GENERATED_METADATA})
install(FILES ${GENERATED_METADATA} DESTINATION ${KDE_INSTALL_DATADIR}/${install_dir}/${root}/${component} RENAME metadata.json)
endif()
if (${component} MATCHES "^.+\\..+\\.") #we make sure there's at least 2 dots
get_target_property(kpackagetool_cmd KF5::kpackagetool5 LOCATION)
set(APPDATAFILE "${CMAKE_CURRENT_BINARY_DIR}/${component}.appdata.xml")
execute_process(COMMAND ${kpackagetool_cmd} --appstream-metainfo ${CMAKE_CURRENT_SOURCE_DIR}/${dir} OUTPUT_FILE ${APPDATAFILE} ERROR_VARIABLE appstreamerror RESULT_VARIABLE result)
if(appstreamerror)
message(WARNING "couldn't generate metainfo for ${component}: ${appstreamerror}")
else()
install(FILES ${APPDATAFILE} DESTINATION ${KDE_INSTALL_METAINFODIR})
endif()
else()
message(WARNING "KPackage components should be specified in reverse domain notation. Appstream information won't be generated for ${component}.")
endif()
set(newentry "${kpackagetool_cmd} --generate-index -g -p ${CMAKE_INSTALL_PREFIX}/${KDE_INSTALL_DATADIR}/${install_dir}/${root}\n")
get_directory_property(currentindex kpackageindex)
string(FIND "${currentindex}" "${newentry}" alreadyin)
if (alreadyin LESS 0)
set(regenerateindex "${currentindex}${newentry}")
set_directory_properties(PROPERTIES kpackageindex "${regenerateindex}")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/regenerateindex.sh ${regenerateindex})
endif()
endfunction()
|