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,403 @@
project(ECMGenerateHeadersTest)
cmake_minimum_required(VERSION 3.16)
set(CMAKE_MODULE_PATH "@MODULES_DIR@")
set(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
set(CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@")
include(ECMGenerateHeaders)
function (check_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)
list(GET CF_ORIGINALS ${i} original_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)
set (exp_contents "#include \"${original_file}\" // IWYU pragma: export")
if (NOT "${file_contents}" STREQUAL "${exp_contents}")
message(FATAL_ERROR "${generated_file} contains '${file_contents}' instead of '${exp_contents}'")
endif()
endforeach()
endfunction()
###########################################################
message(STATUS "Test 1: no optional arguments")
set(camelcase_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest2")
set(origfiles headtest1.h headtest2.h)
file(REMOVE ${expfiles})
ecm_generate_headers(
camelcase_headers
HEADER_NAMES HeadTest1 HeadTest2
)
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
###########################################################
message(STATUS "Test 2: RELATIVE")
set(camelcase_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest2"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest3")
set(origfiles headtest2.h headtest3.h)
file(REMOVE ${expfiles})
ecm_generate_headers(
camelcase_headers
HEADER_NAMES HeadTest2 HeadTest3
RELATIVE headsubdir
)
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
###########################################################
message(STATUS "Test 3: OUTPUT_DIR")
set(camelcase_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/testdir/HeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/testdir/HeadTest2")
set(origfiles headtest1.h headtest2.h)
file(REMOVE ${expfiles})
ecm_generate_headers(
camelcase_headers
HEADER_NAMES HeadTest1 HeadTest2
OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/testdir"
)
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
###########################################################
message(STATUS "Test 4: PREFIX")
set(camelcase_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/Module/HeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/Module/HeadTest2")
set(intermediatefiles module/headtest1.h module/headtest2.h)
set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
"${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
file(REMOVE ${expfiles} ${intermediatefiles})
ecm_generate_headers(
camelcase_headers
HEADER_NAMES HeadTest1 HeadTest2
PREFIX Module
)
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${intermediatefiles})
check_files(GENERATED ${expfiles}
ORIGINALS ${intermediatefiles})
###########################################################
message(STATUS "Test 5: REQUIRED_HEADERS")
set(camelcase_headers)
set(req_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest2")
set(origfiles headtest1.h headtest2.h)
set(origpaths "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
"${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
file(REMOVE ${expfiles})
ecm_generate_headers(
camelcase_headers
HEADER_NAMES HeadTest1 HeadTest2
REQUIRED_HEADERS req_headers
)
if (NOT "${origpaths}" STREQUAL "${req_headers}")
message(FATAL_ERROR "REQUIRED_HEADERS var was set to \"${req_headers}\" instead of \"${origpaths}\"")
endif()
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
###########################################################
message(STATUS "Test 6: RELATIVE and REQUIRED_HEADERS")
set(camelcase_headers)
set(req_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest2"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest3")
set(origfiles headtest2.h headtest3.h)
set(origpaths "${CMAKE_CURRENT_SOURCE_DIR}/headsubdir/headtest2.h"
"${CMAKE_CURRENT_SOURCE_DIR}/headsubdir/headtest3.h")
file(REMOVE ${expfiles})
ecm_generate_headers(
camelcase_headers
HEADER_NAMES HeadTest2 HeadTest3
RELATIVE headsubdir
REQUIRED_HEADERS req_headers
)
if (NOT "${origpaths}" STREQUAL "${req_headers}")
message(FATAL_ERROR "REQUIRED_HEADERS var was set to \"${req_headers}\" instead of \"${origpaths}\"")
endif()
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
###########################################################
message(STATUS "Test 7: OUTPUT_DIR and REQUIRED_HEADERS")
set(camelcase_headers)
set(req_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/testdir/HeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/testdir/HeadTest2")
set(origfiles headtest1.h headtest2.h)
set(origpaths "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
"${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
file(REMOVE ${expfiles})
ecm_generate_headers(
camelcase_headers
HEADER_NAMES HeadTest1 HeadTest2
OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/testdir"
REQUIRED_HEADERS req_headers
)
if (NOT "${origpaths}" STREQUAL "${req_headers}")
message(FATAL_ERROR "REQUIRED_HEADERS var was set to \"${req_headers}\" instead of \"${origpaths}\"")
endif()
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
###########################################################
message(STATUS "Test 8: PREFIX and REQUIRED_HEADERS")
set(camelcase_headers)
set(req_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/Module/HeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/Module/HeadTest2")
set(intermediatefiles module/headtest1.h module/headtest2.h)
set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
"${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
set(origpaths ${origfiles})
file(REMOVE ${expfiles} ${intermediatefiles})
ecm_generate_headers(
camelcase_headers
HEADER_NAMES HeadTest1 HeadTest2
PREFIX Module
REQUIRED_HEADERS req_headers
)
if (NOT "${origpaths}" STREQUAL "${req_headers}")
message(FATAL_ERROR "REQUIRED_HEADERS var was set to \"${req_headers}\" instead of \"${origpaths}\"")
endif()
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${intermediatefiles})
check_files(GENERATED ${expfiles}
ORIGINALS ${intermediatefiles})
###########################################################
message(STATUS "Test 9: REQUIRED_HEADERS (duplicate var)")
set(all_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest2")
set(origfiles headtest1.h headtest2.h)
set(origpaths "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
"${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
file(REMOVE ${expfiles})
ecm_generate_headers(
all_headers
HEADER_NAMES HeadTest1 HeadTest2
REQUIRED_HEADERS all_headers
)
list(SORT all_headers)
set(exp_headers ${expfiles} ${origpaths})
list(SORT exp_headers)
if (NOT "${exp_headers}" STREQUAL "${all_headers}")
message(FATAL_ERROR "combined headers var was set to \"${all_headers}\" instead of \"${exp_headers}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
###########################################################
message(STATUS "Test 10: ORIGINAL CAMELCASE")
set(forward_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/CamelCaseHeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/CamelCaseHeadTest2")
set(origfiles CamelCaseHeadTest1.h CamelCaseHeadTest2.h)
file(REMOVE ${expfiles})
ecm_generate_headers(
forward_headers
ORIGINAL CAMELCASE
HEADER_NAMES CamelCaseHeadTest1 CamelCaseHeadTest2
)
if (NOT "${expfiles}" STREQUAL "${forward_headers}")
message(FATAL_ERROR "forward_headers was set to \"${forward_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
###########################################################
message(STATUS "Test 11: PREFIX and ORIGINAL CAMELCASE")
set(forward_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/Module/CamelCaseHeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/Module/CamelCaseHeadTest2")
set(intermediatefiles Module/CamelCaseHeadTest1.h Module/CamelCaseHeadTest2.h)
set(origfiles "${CMAKE_CURRENT_SOURCE_DIR}/headtest1.h"
"${CMAKE_CURRENT_SOURCE_DIR}/headtest2.h")
file(REMOVE ${expfiles} ${intermediatefiles})
ecm_generate_headers(
forward_headers
ORIGINAL CAMELCASE
HEADER_NAMES CamelCaseHeadTest1 CamelCaseHeadTest2
PREFIX Module
)
if (NOT "${expfiles}" STREQUAL "${forward_headers}")
message(FATAL_ERROR "forward_headers was set to \"${forward_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${intermediatefiles})
check_files(GENERATED ${expfiles}
ORIGINALS ${intermediatefiles})
###########################################################
message(STATUS "Test 12: COMMON_HEADER")
set(camelcase_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest2"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest4"
"${CMAKE_CURRENT_BINARY_DIR}/CommonHeader")
set(origfiles headtest1.h headtest2.h)
file(REMOVE ${expfiles})
ecm_generate_headers(
camelcase_headers
ORIGINAL LOWERCASE
HEADER_NAMES HeadTest1 HeadTest2 HeadTest4
COMMON_HEADER CommonHeader
)
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
file(READ CommonHeader file_contents)
string(STRIP "${file_contents}" file_contents)
file(READ "${CMAKE_CURRENT_BINARY_DIR}/CommonHeader" exp_contents)
string(STRIP "${exp_contents}" exp_contents)
if (NOT "${file_contents}" STREQUAL "${exp_contents}")
message(FATAL_ERROR "${generated_file} contains '${file_contents}' instead of '${exp_contents}'")
endif()
###########################################################
message(STATUS "Test 13: multiple classes and COMMON_HEADER")
set(camelcase_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest2"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest2Add1"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest2Add2"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest4"
"${CMAKE_CURRENT_BINARY_DIR}/CommonHeader")
set(origfiles headtest1.h headtest2.h headtest4.h)
file(REMOVE ${expfiles})
ecm_generate_headers(
camelcase_headers
ORIGINAL LOWERCASE
HEADER_NAMES HeadTest1 HeadTest2,HeadTest2Add1,HeadTest2Add2 HeadTest4
COMMON_HEADER CommonHeader
)
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
file(READ CommonHeader file_contents)
string(STRIP "${file_contents}" file_contents)
file(READ "${CMAKE_CURRENT_BINARY_DIR}/CommonHeader" exp_contents)
string(STRIP "${exp_contents}" exp_contents)
if (NOT "${file_contents}" STREQUAL "${exp_contents}")
message(FATAL_ERROR "${generated_file} contains '${file_contents}' instead of '${exp_contents}'")
endif()
###########################################################
message(STATUS "Test 14: HEADER_EXTENSION")
set(camelcase_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest1"
"${CMAKE_CURRENT_BINARY_DIR}/HeadTest2")
set(origfiles headtest1.hpp headtest2.hpp)
file(REMOVE ${expfiles})
ecm_generate_headers(
camelcase_headers
HEADER_NAMES HeadTest1 HeadTest2
HEADER_EXTENSION hpp
)
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
###########################################################
message(STATUS "Test 15: Generated headers")
set(camelcase_headers)
set(expfiles "${CMAKE_CURRENT_BINARY_DIR}/HeadTest15")
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/headtest15.h"
COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}/headtest15.h
)
set(origfiles headtest15.h)
file(REMOVE ${expfiles})
file(RELATIVE_PATH rel_path ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
ecm_generate_headers(
camelcase_headers
HEADER_NAMES HeadTest15
RELATIVE ${rel_path}
)
if (NOT "${expfiles}" STREQUAL "${camelcase_headers}")
message(FATAL_ERROR "camelcase_headers was set to \"${camelcase_headers}\" instead of \"${expfiles}\"")
endif()
check_files(GENERATED ${expfiles}
ORIGINALS ${origfiles})
# vim:ft=cmake