Advance Wayland and KDE package bring-up

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-04-14 10:51:06 +01:00
parent 51f3c21121
commit cf12defd28
15214 changed files with 20594243 additions and 269 deletions
@@ -0,0 +1,9 @@
set(MODULES_DIR "${ECM_SOURCE_DIR}/modules")
configure_file(run_test.cmake.config "${CMAKE_CURRENT_BINARY_DIR}/run_test.cmake" @ONLY)
add_test(
NAME ECMGeneratePkgConfigFile
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/run_test.cmake")
add_subdirectory(test_imported_targets)
add_subdirectory(test_no_interface_include_dirs)
@@ -0,0 +1,13 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include/KF5CoreAddons
Name: KF5CoreAddons
Description: KF5CoreAddons test
URL: https://www.kde.org/
Version: 5.43
Libs: -L${prefix}/lib -lKF5CoreAddons
Cflags: -I${prefix}/include/KF5CoreAddons
Requires: Qt5Core
@@ -0,0 +1,13 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=/usr/KCoreAddons
Name: KF5CoreAddons2
Description: Addons to QtCore
URL: https://www.kde.org/
Version: 5.43
Libs: -L${prefix}/lib -lKF5CoreAddons2
Cflags: -I/usr/KCoreAddons
Requires: Qt5Core
@@ -0,0 +1,13 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=/usr/KCoreAddons
Name: KF5CoreAddons3
Description: KF5CoreAddons3 library.
URL: https://www.kde.org/
Version: 5.43
Libs: -L${prefix}/lib -lKF5CoreAddons3
Cflags: -I/usr/KCoreAddons
Requires: Qt5Core
@@ -0,0 +1,14 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=/usr/KCoreAddons
Name: KF5CoreAddons4
Description: KF5CoreAddons4 library.
URL: https://www.kde.org/
Version: 5.43
Libs: -L${prefix}/lib -lKF5CoreAddons4
Cflags: -I/usr/KCoreAddons
Requires: Public1 Public2
Requires.private: Private1 Private2
@@ -0,0 +1,13 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=/usr/KCoreAddons
Name: KF5CoreAddons5
Description: KF5CoreAddons test
URL: https://www.example.org/
Version: 5.43
Libs: -L${prefix}/lib -lKF5CoreAddons5
Cflags: -I/usr/KCoreAddons
Requires: Qt5Core
@@ -0,0 +1,12 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=/usr/include/Attica
Name: KF6Attica
Description: Qt library to access Open Collaboration Services
URL: https://www.kde.org/
Version: 6.7.0
Libs: -L${prefix}/lib -lKF6Attica
Cflags: -I/usr/include/Attica -I${prefix}/include/foo -I${prefix}/include/bar
Requires: Qt6Core Qt6Network
@@ -0,0 +1,21 @@
maintainer: mpyne
description: Addons to QtCore
tier: 1
type: functional
platforms:
- name: Linux
- name: FreeBSD
- name: Windows
- name: MacOSX
- name: Android
portingAid: false
deprecated: false
release: true
libraries:
- qmake: KCoreAddons
cmake: "KF5::CoreAddons"
cmakename: KF5CoreAddons
public_lib: true
group: Frameworks
subgroup: Tier 1
@@ -0,0 +1,21 @@
maintainer: mpyne
description:
tier: 1
type: functional
platforms:
- name: Linux
- name: FreeBSD
- name: Windows
- name: MacOSX
- name: Android
portingAid: false
deprecated: false
release: true
libraries:
- qmake: KCoreAddons
cmake: "KF5::CoreAddons"
cmakename: KF5CoreAddons
public_lib: true
group: Frameworks
subgroup: Tier 1
@@ -0,0 +1,20 @@
maintainer: mpyne
tier: 1
type: functional
platforms:
- name: Linux
- name: FreeBSD
- name: Windows
- name: MacOSX
- name: Android
portingAid: false
deprecated: false
release: true
libraries:
- qmake: KCoreAddons
cmake: "KF5::CoreAddons"
cmakename: KF5CoreAddons
public_lib: true
group: Frameworks
subgroup: Tier 1
@@ -0,0 +1,161 @@
set(CMAKE_MODULE_PATH "@MODULES_DIR@")
set(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
set(CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@")
set(CMAKE_INSTALL_PREFIX "/usr")
include(ECMGeneratePkgConfigFile)
include(ECMSetupVersion)
function (compare_files)
set(options)
set(oneValueArgs GENERATED ORIGINALS)
set(multiValueArgs)
cmake_parse_arguments(CF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
list(LENGTH CF_GENERATED count)
math(EXPR last "${count}-1")
foreach(i RANGE ${last})
list(GET CF_GENERATED ${i} generated_file)
if (NOT EXISTS "${generated_file}")
message(FATAL_ERROR "${generated_file} was not generated")
endif()
file(READ "${generated_file}" file_contents)
string(STRIP "${file_contents}" file_contents)
list(GET CF_ORIGINALS ${i} original_file)
if (NOT EXISTS "${original_file}")
message(FATAL_ERROR "Original ${original_file} was not found")
endif()
file(READ "${original_file}" original_contents)
string(STRIP "${original_contents}" original_contents)
if(NOT original_contents STREQUAL file_contents)
message(FATAL_ERROR "Different files: ${original_file} ${generated_file}")
endif()
endforeach()
endfunction()
###########################################################
ecm_setup_version(5.43 VARIABLE_PREFIX KCOREADDONS
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kcoreaddons_version.h"
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5CoreAddonsConfigVersion.cmake"
SOVERSION 5)
message(STATUS "Test 1: no optional arguments")
set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/KF5CoreAddons.pc")
ecm_generate_pkgconfig_file(BASE_NAME KF5CoreAddons
DESCRIPTION "KF5CoreAddons test"
DEPS Qt5Core
FILENAME_VAR OutputFile)
compare_files(GENERATED ${OutputFile}
ORIGINALS ${origfiles})
file(REMOVE ${OutputFile})
message(STATUS "Test2: no description parameter, metainfo.yaml with description found")
set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/KF5CoreAddons2.pc")
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/metainfo_with_description.yaml
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/metainfo_with_description.yaml ${CMAKE_CURRENT_BINARY_DIR}/metainfo.yaml)
ecm_generate_pkgconfig_file(BASE_NAME KF5CoreAddons2
DEPS Qt5Core
INCLUDE_INSTALL_DIR /usr/KCoreAddons
FILENAME_VAR OutputFile)
compare_files(GENERATED ${OutputFile}
ORIGINALS ${origfiles})
file(REMOVE ${OutputFile})
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/metainfo.yaml)
message(STATUS "Test3: no description parameter, metainfo.yaml with empty description found")
set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/KF5CoreAddons3.pc")
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/metainfo_with_empty_description.yaml
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/metainfo_with_empty_description.yaml ${CMAKE_CURRENT_BINARY_DIR}/metainfo.yaml)
ecm_generate_pkgconfig_file(BASE_NAME KF5CoreAddons3
DEPS Qt5Core
INCLUDE_INSTALL_DIR /usr/KCoreAddons
FILENAME_VAR OutputFile)
compare_files(GENERATED ${OutputFile}
ORIGINALS ${origfiles})
file(REMOVE ${OutputFile})
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/metainfo.yaml)
message(STATUS "Test4: no description parameter, metainfo.yaml without description")
set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/KF5CoreAddons3.pc")
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/metainfo_without_description.yaml
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/metainfo_without_description.yaml ${CMAKE_CURRENT_BINARY_DIR}/metainfo.yaml)
ecm_generate_pkgconfig_file(BASE_NAME KF5CoreAddons3
DEPS Qt5Core
INCLUDE_INSTALL_DIR /usr/KCoreAddons
FILENAME_VAR OutputFile)
compare_files(GENERATED ${OutputFile}
ORIGINALS ${origfiles})
file(REMOVE ${OutputFile})
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/metainfo.yaml)
message(STATUS "Test5: with public and private dependencies")
set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/KF5CoreAddons4.pc")
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/metainfo_without_description.yaml
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/metainfo_without_description.yaml ${CMAKE_CURRENT_BINARY_DIR}/metainfo.yaml)
ecm_generate_pkgconfig_file(BASE_NAME KF5CoreAddons4
DEPS Public1 PRIVATE Private1 Private2 PUBLIC Public2
INCLUDE_INSTALL_DIR /usr/KCoreAddons
FILENAME_VAR OutputFile)
compare_files(GENERATED ${OutputFile}
ORIGINALS ${origfiles})
file(REMOVE ${OutputFile})
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/metainfo.yaml)
message(STATUS "Test 6: with an URL parameter")
set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/KF5CoreAddons5.pc")
ecm_generate_pkgconfig_file(BASE_NAME KF5CoreAddons5
DESCRIPTION "KF5CoreAddons test"
URL "https://www.example.org/"
DEPS Qt5Core
INCLUDE_INSTALL_DIR /usr/KCoreAddons
FILENAME_VAR OutputFile)
compare_files(GENERATED ${OutputFile}
ORIGINALS ${origfiles})
file(REMOVE ${OutputFile})
message(STATUS "Test7: Custom defines")
set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/KF6Attica.pc")
set(prefix "/usr")
ecm_setup_version(6.7.0 VARIABLE_PREFIX ATTICA
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/attica_version.h"
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6AtticaConfigVersion.cmake"
SOVERSION 6)
ecm_generate_pkgconfig_file(BASE_NAME KF6Attica
DESCRIPTION "Qt library to access Open Collaboration Services"
LIB_NAME KF6Attica
INCLUDE_INSTALL_DIR /usr/include/Attica
DEFINES -I\${prefix}/include/foo -I\${prefix}/include/bar
DEPS Qt6Core Qt6Network
FILENAME_VAR OutputFile
)
compare_files(GENERATED ${OutputFile}
ORIGINALS ${origfiles})
file(REMOVE ${OutputFile})
@@ -0,0 +1,45 @@
cmake_minimum_required(VERSION 3.16)
project(ECMGeneratePkgConfigFile_imported_vars VERSION 0.1)
set(ECM_MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../modules")
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../modules;${CMAKE_CURRENT_SOURCE_DIR}/../../../kde-modules")
enable_language(CXX)
include(ECMGeneratePkgConfigFile)
include(ECMSetupVersion)
# KDEInstallDirs can't be used
set(EGPF_KDE_INSTALL_INCLUDEDIR_KF "include/KF6")
set(InputFile "${CMAKE_CURRENT_SOURCE_DIR}/EGPF_imported_include_dirs_control.pc")
set(CMAKE_INSTALL_PREFIX "/usr")
set(CMAKE_INSTALL_LIBDIR "lib")
ecm_setup_version(0.1 VARIABLE_PREFIX EGPF_lib
SOVERSION 0)
add_library(EGPF_lib)
target_sources(EGPF_lib PRIVATE main.cpp)
set_target_properties(EGPF_lib PROPERTIES
VERSION 0.1
SOVERSION 0
EXPORT_NAME "EGPF_lib"
)
target_include_directories(EGPF_lib INTERFACE "$<INSTALL_INTERFACE:${EGPF_KDE_INSTALL_INCLUDEDIR_KF}/Attica;${EGPF_KDE_INSTALL_INCLUDEDIR_KF}/EGPF_lib;${EGPF_KDE_INSTALL_INCLUDEDIR_KF}/other_dir>"
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../:${CMAKE_CURRENT_BINARY_DIR}/..>"
)
ecm_generate_pkgconfig_file(BASE_NAME EGPF_lib
DESCRIPTION "Testing additional include dirs in Cflags"
INCLUDE_INSTALL_DIR ${EGPF_KDE_INSTALL_INCLUDEDIR_KF}/Attica/
FILENAME_VAR OutputFile
)
add_test(
NAME ECMGeneratePkgConfigFileTest.imported_include_dirs
COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol "${InputFile}" "${OutputFile}"
)
@@ -0,0 +1,13 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include/KF6/Attica/
Name: EGPF_lib
Description: Testing additional include dirs in Cflags
URL: https://www.kde.org/
Version: 0.1
Libs: -L${prefix}/lib -lEGPF_lib
Cflags: -I${prefix}/include/KF6/Attica -I${prefix}/include/KF6/EGPF_lib -I${prefix}/include/KF6/other_dir
Requires:
@@ -0,0 +1,4 @@
int main(int, char**)
{
return 0;
}
@@ -0,0 +1,39 @@
cmake_minimum_required(VERSION 3.16)
project(ECMGeneratePkgConfigFile_no_interface_include_directories VERSION 0.1)
set(ECM_MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../modules")
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../modules;${CMAKE_CURRENT_SOURCE_DIR}/../../../kde-modules")
enable_language(CXX)
include(ECMGeneratePkgConfigFile)
include(ECMSetupVersion)
# KDEInstallDirs can't be used
set(EGPF_KDE_INSTALL_INCLUDEDIR_KF "include/KF6")
set(InputFile "${CMAKE_CURRENT_SOURCE_DIR}/EGPF_no_interface_include_directories.pc")
set(CMAKE_INSTALL_PREFIX "/usr")
set(CMAKE_INSTALL_LIBDIR "lib")
ecm_setup_version(0.1 VARIABLE_PREFIX EGPF_lib_without_interface
SOVERSION 0)
add_library(EGPF_lib_without_interface)
target_sources(EGPF_lib_without_interface PRIVATE main.cpp)
set_target_properties(EGPF_lib_without_interface PROPERTIES
VERSION 0.1
SOVERSION 0
)
ecm_generate_pkgconfig_file(BASE_NAME EGPF_lib_without_interface
DESCRIPTION "Testing generated pkgconfig file without interface_include_directories"
INCLUDE_INSTALL_DIR ${EGPF_KDE_INSTALL_INCLUDEDIR_KF}
FILENAME_VAR OutputFile
)
add_test(
NAME ECMGeneratePkgConfigFileTest.no_interface_include_directories
COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol "${InputFile}" "${OutputFile}"
)
@@ -0,0 +1,13 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include/KF6
Name: EGPF_lib_without_interface
Description: Testing generated pkgconfig file without interface_include_directories
URL: https://www.kde.org/
Version: 0.1
Libs: -L${prefix}/lib -lEGPF_lib_without_interface
Cflags: -I${prefix}/include/KF6
Requires: