Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kf6-extra-cmake-modules for 
openSUSE:Factory checked in at 2026-07-15 16:26:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kf6-extra-cmake-modules (Old)
 and      /work/SRC/openSUSE:Factory/.kf6-extra-cmake-modules.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kf6-extra-cmake-modules"

Wed Jul 15 16:26:36 2026 rev:29 rq:1365082 version:6.28.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/kf6-extra-cmake-modules/kf6-extra-cmake-modules.changes
  2026-06-16 13:59:18.231964465 +0200
+++ 
/work/SRC/openSUSE:Factory/.kf6-extra-cmake-modules.new.1991/kf6-extra-cmake-modules.changes
        2026-07-15 16:34:12.919388185 +0200
@@ -1,0 +2,13 @@
+Fri Jul 10 12:15:39 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 6.28.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/6/6.28.0
+- Changes since 6.27.0:
+  * Match build and install file system layout for generate templates
+  * Fix some typos in comments, docs and UI texts
+  * ECMGenerateExportHeader: add option DEPRECATED_ATTRIBUTE_TYPE
+  * Update version to 6.28.0
+
+-------------------------------------------------------------------

Old:
----
  extra-cmake-modules-6.27.0.tar.xz
  extra-cmake-modules-6.27.0.tar.xz.sig

New:
----
  extra-cmake-modules-6.28.0.tar.xz
  extra-cmake-modules-6.28.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kf6-extra-cmake-modules.spec ++++++
--- /var/tmp/diff_new_pack.d0tXTI/_old  2026-07-15 16:34:14.883455100 +0200
+++ /var/tmp/diff_new_pack.d0tXTI/_new  2026-07-15 16:34:14.895455509 +0200
@@ -23,12 +23,12 @@
 
 %define rname extra-cmake-modules
 
-# Full KF6 version (e.g. 6.27.0)
+# Full KF6 version (e.g. 6.28.0)
 %{!?_kf6_version: %global _kf6_version %{version}}
 %bcond_without doc
 %bcond_without released
 Name:           kf6-extra-cmake-modules%{?pkg_suffix}
-Version:        6.27.0
+Version:        6.28.0
 Release:        0
 Summary:        CMake modules
 License:        BSD-3-Clause

++++++ extra-cmake-modules-6.27.0.tar.xz -> extra-cmake-modules-6.28.0.tar.xz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/extra-cmake-modules-6.27.0/CMakeLists.txt 
new/extra-cmake-modules-6.28.0/CMakeLists.txt
--- old/extra-cmake-modules-6.27.0/CMakeLists.txt       2026-06-05 
17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/CMakeLists.txt       2026-07-03 
12:51:08.000000000 +0200
@@ -11,7 +11,7 @@
 # Preliminary setup
 #
 
-set(VERSION "6.27.0") # handled by release scripts
+set(VERSION "6.28.0") # handled by release scripts
 
 project(ECM
     VERSION "${VERSION}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/find-modules/FindFFmpeg.cmake 
new/extra-cmake-modules-6.28.0/find-modules/FindFFmpeg.cmake
--- old/extra-cmake-modules-6.27.0/find-modules/FindFFmpeg.cmake        
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/find-modules/FindFFmpeg.cmake        
2026-07-03 12:51:08.000000000 +0200
@@ -18,7 +18,7 @@
   AVUTIL   SWRESAMPLE  SWSCALE   POSTPROCESS
 
 If no components are specified in the find_module call, the following ones
-will be choosen as default::
+will be chosen as default::
 
   AVFORMAT AVUTIL AVCODEC
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/kde-modules/KDEGitCommitHooks.cmake 
new/extra-cmake-modules-6.28.0/kde-modules/KDEGitCommitHooks.cmake
--- old/extra-cmake-modules-6.27.0/kde-modules/KDEGitCommitHooks.cmake  
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/kde-modules/KDEGitCommitHooks.cmake  
2026-07-03 12:51:08.000000000 +0200
@@ -32,13 +32,13 @@
 - ``CLANG_FORMAT`` With this check enabled the ``git clang-format`` tool will 
be used to make sure that
   the changed parts are properly formatted. In case the changes are not 
properly formatted an error
   message with the command to preview the formatting changes and to format the 
files in place
-  will be displayed. This tool will reuse the exsting ``.clang-format`` file, 
in case you
+  will be displayed. This tool will reuse the existing ``.clang-format`` file, 
in case you
   want to use the one provided by ECM you can include 
``include(KDEClangFormat)`` which will copy
   the file to the source dir. It is also recommended to reformat the entire 
project before enforcing
   the formatting using this commit hook.
 - ``JSON_SCHEMA`` Since 5.110, uses the check-jsonschema CLI tool to ensure 
that all files are valid JSON and
   match the KPluginMetaData spec. This only applied if the JSON file has a 
"KPlugin" object in its root.
-  To ignore invalid files, for example for testing error handling, given files 
can be exlcuded in the .kde-ci.yml file
+  To ignore invalid files, for example for testing error handling, given files 
can be excluded in the .kde-ci.yml file
   Define Options.json-validate-ignore with an array of the files you want to 
ignore
 
 Example usage:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/kde-modules/KDEInstallDirs5.cmake 
new/extra-cmake-modules-6.28.0/kde-modules/KDEInstallDirs5.cmake
--- old/extra-cmake-modules-6.27.0/kde-modules/KDEInstallDirs5.cmake    
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/kde-modules/KDEInstallDirs5.cmake    
2026-07-03 12:51:08.000000000 +0200
@@ -192,7 +192,7 @@
 command line variable definitions to set custom values. There are however some
 other implications you need to be aware of: ``GNUInstallDirs`` defines
 ``CMAKE_INSTALL_<dir>`` variables, before hence ``KDEInstallDirs`` will not
-overwritte them if it is included later. In most cases this is unintended and
+overwrite them if it is included later. In most cases this is unintended and
 if you need to include ``GNUInstallDirs`` you should always do that after after
 you included ``KDEInstallDirs``.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/kde-modules/KDEInstallDirs6.cmake 
new/extra-cmake-modules-6.28.0/kde-modules/KDEInstallDirs6.cmake
--- old/extra-cmake-modules-6.27.0/kde-modules/KDEInstallDirs6.cmake    
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/kde-modules/KDEInstallDirs6.cmake    
2026-07-03 12:51:08.000000000 +0200
@@ -156,7 +156,7 @@
 This is useful if you eg. want to use CMake command line variable definitions 
to
 set custom values. There are however some other implications you need to be 
aware of:
 ``GNUInstallDirs`` defines ``CMAKE_INSTALL_<dir>`` variables, before hence
-``KDEInstallDirs`` will not overwritte them if it is included later. In most 
cases
+``KDEInstallDirs`` will not overwrite them if it is included later. In most 
cases
 this is unintended and if you need to include ``GNUInstallDirs`` you should 
always do
 that after after you included ``KDEInstallDirs``. Be aware that Qt uses
 ``GNUInstallDirs`` since Qt6 and hence ``find_package(Qt6 ...)`` is equivalent 
to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/kde-modules/KDEMetaInfoPlatformCheck.cmake 
new/extra-cmake-modules-6.28.0/kde-modules/KDEMetaInfoPlatformCheck.cmake
--- old/extra-cmake-modules-6.27.0/kde-modules/KDEMetaInfoPlatformCheck.cmake   
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/kde-modules/KDEMetaInfoPlatformCheck.cmake   
2026-07-03 12:51:08.000000000 +0200
@@ -76,6 +76,6 @@
     endforeach()
 
     if (NOT _MetainfoFoundSupportedPlatform)
-        message(FATAL_ERROR "Your current platform '${CMAKE_SYSTEM_NAME}' is 
not supported. The list of supported platorms is 
'${_MetainfoSupportedPlatforms}'.If you think this is a mistake or you are 
working on enabling the platform please build with the KF_IGNORE_PLATFORM_CHECK 
variable set to true")
+        message(FATAL_ERROR "Your current platform '${CMAKE_SYSTEM_NAME}' is 
not supported. The list of supported platforms is 
'${_MetainfoSupportedPlatforms}'.If you think this is a mistake or you are 
working on enabling the platform please build with the KF_IGNORE_PLATFORM_CHECK 
variable set to true")
     endif()
 endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/kde-modules/KDEPackageAppTemplates.cmake 
new/extra-cmake-modules-6.28.0/kde-modules/KDEPackageAppTemplates.cmake
--- old/extra-cmake-modules-6.27.0/kde-modules/KDEPackageAppTemplates.cmake     
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/kde-modules/KDEPackageAppTemplates.cmake     
2026-07-03 12:51:08.000000000 +0200
@@ -72,6 +72,8 @@
 
 cmake_policy(VERSION 3.16)
 
+include(KDEInstallDirs)
+
 if(NOT CMAKE_CROSSCOMPILING)
    set(default_kde_install_app_templates ON)
 else()
@@ -120,7 +122,7 @@
     foreach(_templateName ${ARG_TEMPLATES})
         get_filename_component(_tmp_file ${_templateName} ABSOLUTE)
         get_filename_component(_baseName ${_tmp_file} NAME_WE)
-        set(_template ${CMAKE_CURRENT_BINARY_DIR}/${_baseName}.tar.bz2)
+        set(_template 
${CMAKE_BINARY_DIR}/${KDE_INSTALL_KAPPTEMPLATESDIR}/${_baseName}.tar.bz2)
 
         # also enlist directories as deps to catch file removals
         file(GLOB_RECURSE _subdirs_entries LIST_DIRECTORIES true 
CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${_templateName}/*")
@@ -140,6 +142,7 @@
 
             # Make tar archive reproducible, the arguments are only available 
with GNU tar
             add_custom_command(OUTPUT ${_template}
+                COMMAND ${CMAKE_COMMAND} -E make_directory 
${CMAKE_BINARY_DIR}/${KDE_INSTALL_KAPPTEMPLATESDIR}
                 COMMAND ${_tar_executable} ARGS
                    --exclude .kdev_ignore --exclude .svn
                    --sort=name
@@ -153,6 +156,7 @@
             )
         else()
             add_custom_command(OUTPUT ${_template}
+                COMMAND ${CMAKE_COMMAND} -E make_directory 
${CMAKE_BINARY_DIR}/${KDE_INSTALL_KAPPTEMPLATESDIR}
                 COMMAND ${CMAKE_COMMAND} -E tar "cvfj" ${_template} .
                 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_templateName}
                 DEPENDS ${_subdirs_entries}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/modules/ECMCreateQmFromPoFiles.cmake 
new/extra-cmake-modules-6.28.0/modules/ECMCreateQmFromPoFiles.cmake
--- old/extra-cmake-modules-6.27.0/modules/ECMCreateQmFromPoFiles.cmake 
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/modules/ECMCreateQmFromPoFiles.cmake 
2026-07-03 12:51:08.000000000 +0200
@@ -206,7 +206,7 @@
 #
 # This is a macro so that the value written in ${ARGS_CREATE_LOADER} is
 # correctly propagated to ECM_CREATE_QM_FROM_PO_FILES parent scope. If it were
-# not a macro, ECM_CREATE_QM_FROM_PO_FILES would have to ckeck if
+# not a macro, ECM_CREATE_QM_FROM_PO_FILES would have to check if
 # CREATE_LOADER is in the arguments and propagate the value itself.
 macro(_ECM_CREATE_QM_FROM_PO_FILES_LEGACY)
     set(options)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/modules/ECMFindQmlModule.cmake 
new/extra-cmake-modules-6.28.0/modules/ECMFindQmlModule.cmake
--- old/extra-cmake-modules-6.27.0/modules/ECMFindQmlModule.cmake       
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/modules/ECMFindQmlModule.cmake       
2026-07-03 12:51:08.000000000 +0200
@@ -46,7 +46,7 @@
         if (ARG_UNPARSED_ARGUMENTS)
           list(GET ARG_UNPARSED_ARGUMENTS 0 VERSION) # If we have any unparsed 
args, that should be the version
         endif()
-        set(ARGN "") # The find_package call below should not recieve 
arguments in KF6
+        set(ARGN "") # The find_package call below should not receive 
arguments in KF6
     else()
         list(GET ARGN 0 VERSION)
         list(REMOVE_AT ARGN 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/modules/ECMGenerateExportHeader.cmake 
new/extra-cmake-modules-6.28.0/modules/ECMGenerateExportHeader.cmake
--- old/extra-cmake-modules-6.27.0/modules/ECMGenerateExportHeader.cmake        
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/modules/ECMGenerateExportHeader.cmake        
2026-07-03 12:51:08.000000000 +0200
@@ -31,6 +31,7 @@
       [DEPRECATED_BASE_VERSION <deprecated_base_version>]
       [DEPRECATION_VERSIONS <deprecation_version> [<deprecation_version2> 
[...]]]
       [EXCLUDE_DEPRECATED_BEFORE_AND_AT 
<exclude_deprecated_before_and_at_version>]
+      [DEPRECATED_ATTRIBUTE_TYPE <attribute_type>] #  Since 6.28
       [NO_BUILD_SET_DEPRECATED_WARNINGS_SINCE]
       [NO_DEFINITION_EXPORT_TO_BUILD_INTERFACE]
       [USE_VERSION_HEADER [<version_file_name>]] #  Since 5.106
@@ -68,6 +69,24 @@
 Possible values are "0" (default), "CURRENT" (which resolves to <version>)
 and a version string in the format "<major>.<minor>.<patchlevel>".
 
+``DEPRECATED_ATTRIBUTE_TYPE`` specifies the type of attribute to use in the
+generated macros. Options are "STANDARD" (default when the minimum required
+version of ECM is 6.28 or newer) or "COMPILER" (default otherwise, legacy).
+"STANDARD" will result in the use of the C++ standard attribute
+``[[deprecated("text")]]``, where-as "COMPILER" will use the pre-C++14
+compiler-specific annotations like ``__attribute__ ((__deprecated__("text")))``
+or ``__declspec(deprecated("text"))``, if available.
+Since 6.28.
+
+.. warning::
+  The compiler-specific annotation attributes can be placed more freely in
+  the signatures of declarations, the C++ standard ``[[deprecated("text")]]``
+  ones are restrained to the standard locations for attributes. So when
+  switching from "COMPILER" to "STANDARD" it needs to be ensured all used
+  deprecation macros are only at locations where attributes are possible.
+  Also note that with "STANDARD" the special enumerator macros (see below)
+  will not be available, as usually the normal deprecation macro can be used.
+
 ``NO_BUILD_SET_DEPRECATED_WARNINGS_SINCE`` specifies that the definition
 ``<prefix_name><uppercase_base_name>_DEPRECATED_WARNINGS_SINCE`` will
 not be set for the library inside its own build, and thus will be defined
@@ -110,7 +129,7 @@
 
 The function ``ecm_generate_export_header`` defines C++ preprocessor macros
 in the generated export header, some for use in the sources of the library
-the header is generated for, other for use by projects linking agsinst the
+the header is generated for, other for use by projects linking against the
 library.
 
 The macros for use in the library C++ sources are these, next to those also
@@ -139,6 +158,8 @@
   on the warnings macro flags set (see below). In builds using C++14 standard 
or earlier,
   where enumerator attributes are not yet supported, the macro will always 
yield an empty string.
   With MSVC it is also always an empty string for now.
+  Not available with ``DEPRECATED_ATTRIBUTE_TYPE`` set to "STANDARD", there 
the normal macro can
+  be usually used.
   Since 5.82.
 
 
``<prefix_name><uppercase_base_name>_ENUMERATOR_DEPRECATED_VERSION_BELATED(major,
 minor, textmajor, textminor, text)``
@@ -151,6 +172,8 @@
   Useful for retroactive tagging of API for the compiler without injecting the
   API into the compiler warning conditions of already released versions.
   With MSVC it is also always an empty string for now.
+  Not available with ``DEPRECATED_ATTRIBUTE_TYPE`` set to "STANDARD", there 
the normal macro can
+  be usually used.
   Since 5.82.
 
 ``<prefix_name><uppercase_base_name>_ENABLE_DEPRECATED_SINCE(major, minor)``
@@ -474,6 +497,7 @@
         VERSION_BASE_NAME
         VERSION_MACRO_NAME
         EXCLUDE_DEPRECATED_BEFORE_AND_AT
+        DEPRECATED_ATTRIBUTE_TYPE
         EXPORT_MACRO_NAME
         DEPRECATED_MACRO_NAME
         NO_EXPORT_MACRO_NAME
@@ -578,6 +602,19 @@
     else()
         set(_deprecated_macro_name "${_macro_base_name}_DEPRECATED")
     endif()
+    if (ARGS_DEPRECATED_ATTRIBUTE_TYPE STREQUAL "STANDARD")
+        set(_use_std_attribute TRUE)
+    elseif (ARGS_DEPRECATED_ATTRIBUTE_TYPE STREQUAL "COMPILER")
+        set(_use_std_attribute FALSE)
+    elseif (ARGS_DEPRECATED_ATTRIBUTE_TYPE)
+        message(FATAL_ERROR "DEPRECATED_ATTRIBUTE_TYPE has to be one of 
STANDARD and COMPILER, was \"${ARGS_DEPRECATED_ATTRIBUTE_TYPE}\".")
+    else()
+        if (ECM_GLOBAL_FIND_VERSION VERSION_LESS 6.28)
+            set(_use_std_attribute FALSE)
+        else()
+            set(_use_std_attribute TRUE)
+        endif()
+    endif()
 
     if(NOT IS_ABSOLUTE ${ARGS_EXPORT_FILE_NAME})
         set(ARGS_EXPORT_FILE_NAME 
"${CMAKE_CURRENT_BINARY_DIR}/${ARGS_EXPORT_FILE_NAME}")
@@ -600,8 +637,9 @@
     endif()
 
     # for the set of compiler versions supported by ECM/KF we can assume those 
attributes supported
-    # KF6: with C++17 as minimum standard planned, switch to always use 
[[deprecated(text)]]
-    if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES 
"Clang")
+    if (_use_std_attribute)
+        set(_decl_deprecated_text_definition "[[deprecated(text)]]")
+    elseif (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES 
"Clang")
         set(_decl_deprecated_text_definition "__attribute__ 
((__deprecated__(text)))")
     elseif(MSVC)
         set(_decl_deprecated_text_definition "__declspec(deprecated(text))")
@@ -617,6 +655,24 @@
             string(APPEND _output "#include <${_version_header}>\n")
         endif()
     endif()
+    if (_use_std_attribute)
+        # generate_export_header() has no option to disable generation of 
macros
+        # for deprecation attributes or to use the standard attribute.
+        # For now just add code to redefine the respective macros.
+        # TODO: consider stop using generate_export_header(), only deployed 
actually to
+        # get the export/visibility macros definitions, simple logic could be 
copied over
+        string(APPEND _output "
+#undef ${_macro_base_name}_DECL_DEPRECATED
+#define ${_macro_base_name}_DECL_DEPRECATED [[deprecated]]
+
+#undef ${_macro_base_name}_DECL_DEPRECATED_EXPORT
+#define ${_macro_base_name}_DECL_DEPRECATED_EXPORT ${_macro_base_name}_EXPORT 
${_macro_base_name}_DECL_DEPRECATED
+
+#undef ${_macro_base_name}_DECL_DEPRECATED_NO_EXPORT
+#define ${_macro_base_name}_DECL_DEPRECATED_NO_EXPORT 
${_macro_base_name}_NO_EXPORT ${_macro_base_name}_DECL_DEPRECATED
+"
+        )
+    endif()
     string(APPEND _output "
 #define ${_macro_base_name}_DECL_DEPRECATED_TEXT(text) 
${_decl_deprecated_text_definition}
 "
@@ -763,16 +819,18 @@
 "#define ${_macro_base_name}_DEPRECATED_VERSION_BELATED(major, minor, 
textmajor, textminor, text) 
${_macro_base_name}_DEPRECATED_VERSION_##major(minor, \"Since 
\"#textmajor\".\"#textminor\". \" text)
 "
         )
-        # reusing the existing version-controlled deprecation macros for 
enumerator deprecation macros
-        # to avoid having to repeat all the explicit version variants
-        # TODO: MSVC seems to have issues with __declspec(deprecated) being 
used as enumerator attribute
-        # and deals only with standard [[deprecated(text)]].
-        # But for now we have to keep the deprecation macros using the 
compiler-specific attributes,
-        # because CMake's GenerateExportHeader uses the latter for the export 
macros and
-        # at least GCC does not support both being used mixed e.g. on the same 
class or method.
-        # Possibly needs to be solved by forking GenerateExportHeader to get 
complete control.
-        if(NOT MSVC)
-            string(APPEND _output
+        # only add special macros for enums for compiler-specific attribute 
backward-support
+        if(NOT _use_std_attribute)
+            # reusing the existing version-controlled deprecation macros for 
enumerator deprecation macros
+            # to avoid having to repeat all the explicit version variants
+            # TODO: MSVC seems to have issues with __declspec(deprecated) 
being used as enumerator attribute
+            # and deals only with standard [[deprecated(text)]].
+            # But for now we have to keep the deprecation macros using the 
compiler-specific attributes,
+            # because CMake's GenerateExportHeader uses the latter for the 
export macros and
+            # at least GCC does not support both being used mixed e.g. on the 
same class or method.
+            # Possibly needs to be solved by forking GenerateExportHeader to 
get complete control.
+            if(NOT MSVC)
+                string(APPEND _output
 "#if defined(__cpp_enumerator_attributes) && __cpp_enumerator_attributes >= 
201411
 #  define ${_macro_base_name}_ENUMERATOR_DEPRECATED_VERSION(major, minor, 
text) ${_macro_base_name}_DEPRECATED_VERSION(major, minor, text)
 #  define ${_macro_base_name}_ENUMERATOR_DEPRECATED_VERSION_BELATED(major, 
minor, textmajor, textminor, text) 
${_macro_base_name}_DEPRECATED_VERSION_BELATED(major, minor, textmajor, 
textminor, text)
@@ -781,14 +839,15 @@
 #  define ${_macro_base_name}_ENUMERATOR_DEPRECATED_VERSION_BELATED(major, 
minor, textmajor, textminor, text)
 #endif
 "
-            )
-        else()
-            string(APPEND _output
+                )
+            else()
+                string(APPEND _output
 "// Not yet implemented for MSVC
 #define ${_macro_base_name}_ENUMERATOR_DEPRECATED_VERSION(major, minor, text)
 #define ${_macro_base_name}_ENUMERATOR_DEPRECATED_VERSION_BELATED(major, 
minor, textmajor, textminor, text)
 "
-            )
+                )
+            endif()
         endif()
     endif()
     if (ARGS_CUSTOM_CONTENT_FROM_VARIABLE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/modules/ECMGenerateQDoc.cmake 
new/extra-cmake-modules-6.28.0/modules/ECMGenerateQDoc.cmake
--- old/extra-cmake-modules-6.27.0/modules/ECMGenerateQDoc.cmake        
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/modules/ECMGenerateQDoc.cmake        
2026-07-03 12:51:08.000000000 +0200
@@ -29,7 +29,7 @@
 
   ecm_add_qch(KF6::CoreAddons kcoreaddons.qdocconf)
 
-Documentation is not built as part of the normal build, it needs to be 
explicity
+Documentation is not built as part of the normal build, it needs to be 
explicitly
 invoked using the following build targets:
 
 * ``prepare_docs`` runs the prepare step from qdoc, which processes sources 
and creates index files
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/modules/ECMQmLoader.cpp.in 
new/extra-cmake-modules-6.28.0/modules/ECMQmLoader.cpp.in
--- old/extra-cmake-modules-6.27.0/modules/ECMQmLoader.cpp.in   2026-06-05 
17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/modules/ECMQmLoader.cpp.in   2026-07-03 
12:51:08.000000000 +0200
@@ -110,7 +110,7 @@
             const auto idx = langs[i].indexOf(QLatin1Char('_'));
             if (idx > 0) {
                 // insert the country stripped language to the ideal position,
-                // that is, after the same langauge dialects.
+                // that is, after the same language dialects.
                 // if langs is [pt_Latn_BR, pt_BR], the pt should be inserted
                 // after pt_BR
                 const QString genericLang = langs[i].left(idx);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/tests/ECMGenerateExportHeaderTest/CMakeLists.txt 
new/extra-cmake-modules-6.28.0/tests/ECMGenerateExportHeaderTest/CMakeLists.txt
--- 
old/extra-cmake-modules-6.27.0/tests/ECMGenerateExportHeaderTest/CMakeLists.txt 
    2026-06-05 17:45:00.000000000 +0200
+++ 
new/extra-cmake-modules-6.28.0/tests/ECMGenerateExportHeaderTest/CMakeLists.txt 
    2026-07-03 12:51:08.000000000 +0200
@@ -1,12 +1,15 @@
 set(installation_path "${CMAKE_CURRENT_BINARY_DIR}/installation/")
 
-macro(add_generate_export_header_library_test 
_exclude_deprecated_before_and_at)
-    if("${ARGV1}" STREQUAL "WITH_GROUP")
+macro(add_generate_export_header_library_test 
_exclude_deprecated_before_and_at _deprecated_attribute_type)
+    if("${ARGV2}" STREQUAL "WITH_GROUP")
         set(_set_group_option "-DSET_GROUP=TRUE")
         set(_library_buildname 
"library-${_exclude_deprecated_before_and_at}-group")
     else()
         set(_library_buildname "library-${_exclude_deprecated_before_and_at}")
     endif()
+    if (${_deprecated_attribute_type} STREQUAL "COMPILER")
+        string(APPEND _library_buildname "-compiler")
+    endif()
     add_test(NAME ecm_generate_export_header-build-${_library_buildname}
         COMMAND ${CMAKE_CTEST_COMMAND}
             --build-and-test
@@ -19,19 +22,23 @@
             --build-target install
             --build-options
                 
"-DEXCLUDE_DEPRECATED_BEFORE_AND_AT=${_exclude_deprecated_before_and_at}"
+                
"-DDEPRECATED_ATTRIBUTE_TYPE:STRING=${_deprecated_attribute_type}"
                 
"-DCMAKE_INSTALL_PREFIX:PATH=${installation_path}/${_library_buildname}"
                 ${_set_group_option}
             --test-command dummy
     )
 endmacro()
 
-macro(add_generate_export_header_consumer_test _test_variant 
_exclude_deprecated_before_and_at _group_test_mode _consumer_build)
+macro(add_generate_export_header_consumer_test _test_variant 
_exclude_deprecated_before_and_at _deprecated_attribute_type _group_test_mode 
_consumer_build)
     set(_extra_build_options ${ARGN})
-    if(_group_test_mode STREQUAL "GROUPLESS")
+    if(${_group_test_mode} STREQUAL "GROUPLESS")
         set(_library "library-${_exclude_deprecated_before_and_at}")
     else()
         set(_library "library-${_exclude_deprecated_before_and_at}-group")
     endif()
+    if (${_deprecated_attribute_type} STREQUAL "COMPILER")
+        string(APPEND _library "-compiler")
+    endif()
     add_test(NAME ecm_generate_export_header-${_consumer_build}
         COMMAND ${CMAKE_CTEST_COMMAND}
             --build-and-test
@@ -44,6 +51,7 @@
             --build-options
                 "-DTEST_VARIANT:STRING=${_test_variant}"
                 
"-DDEPRECATED_EXCLUDED_BEFORE_AND_AT:STRING=${_exclude_deprecated_before_and_at}"
+                
"-DDEPRECATED_ATTRIBUTE_TYPE:STRING=${_deprecated_attribute_type}"
                 "-DLIBRARY:STRING=${_library}"
                 "-DGROUP_MODE:STRING=${_group_test_mode}"
                 ${_extra_build_options}
@@ -64,6 +72,7 @@
     )
     add_generate_export_header_consumer_test(DISABLE_DEPRECATED_BEFORE_AND_AT
         ${_exclude_deprecated_before_and_at}
+        "STANDARD"
         ${_group_test_mode}
         ${_consumer_build}
         ${_extra_build_options}
@@ -74,6 +83,7 @@
     set(_consumer_build 
"consumer-NO-DEPRECATED-${_exclude_deprecated_before_and_at}-${_group_test_mode}")
     add_generate_export_header_consumer_test(NO_DEPRECATED
         ${_exclude_deprecated_before_and_at}
+        "STANDARD"
         ${_group_test_mode}
         ${_consumer_build}
     )
@@ -90,10 +100,13 @@
 foreach(_group_arg "" "WITH_GROUP")
     foreach(_index RANGE ${_last_index})
         list(GET library_versions ${_index} _exclude_deprecated_before_and_at)
-        
add_generate_export_header_library_test(${_exclude_deprecated_before_and_at} 
${_group_arg})
+        
add_generate_export_header_library_test(${_exclude_deprecated_before_and_at} 
"STANDARD" ${_group_arg})
     endforeach()
 endforeach()
 
+# test generating the library using compiler-specific deprecation attribute 
macros
+# no need to repeat covering visibility macros here
+add_generate_export_header_library_test(0 "COMPILER" "")
 
 set(group_test_modes "GROUPLESS" "GROUP_USE_DIRECT" "GROUP_USE_GROUP")
 
@@ -120,3 +133,13 @@
         
add_generate_export_header_consumer_no_deprecated_test(${_exclude_deprecated_before_and_at}
 ${_group_test_mode})
     endforeach()
 endforeach()
+
+# test with compiler-specific deprecation attribute macros
+# no need to repeat covering visibility macros here
+add_generate_export_header_consumer_test(DISABLE_DEPRECATED_BEFORE_AND_AT
+    "0"
+    "COMPILER"
+    "GROUPLESS"
+    "consumer-compiler"
+    "-DLIBRARY_DISABLE_DEPRECATED_BEFORE_AND_AT:STRING=0"
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/tests/ECMGenerateExportHeaderTest/consumer/CMakeLists.txt
 
new/extra-cmake-modules-6.28.0/tests/ECMGenerateExportHeaderTest/consumer/CMakeLists.txt
--- 
old/extra-cmake-modules-6.27.0/tests/ECMGenerateExportHeaderTest/consumer/CMakeLists.txt
    2026-06-05 17:45:00.000000000 +0200
+++ 
new/extra-cmake-modules-6.28.0/tests/ECMGenerateExportHeaderTest/consumer/CMakeLists.txt
    2026-07-03 12:51:08.000000000 +0200
@@ -17,28 +17,38 @@
 if(DEPRECATED_EXCLUDED_BEFORE_AND_AT STREQUAL "CURRENT")
     set(DEPRECATED_EXCLUDED_BEFORE_AND_AT ${library_version})
 endif()
+# skip the tests for enumerators against C++11 for standard-type attributes
+if(${DEPRECATED_ATTRIBUTE_TYPE} STREQUAL "COMPILER")
+    set(_test_enumerator_with_cxx11 TRUE)
+else()
+    set(_test_enumerator_with_cxx11 FALSE)
+endif()
 
 # load the test variant specific testAPI method
 include(testAPI_${TEST_VARIANT}.cmake)
 
 # for each API element test their visibility to the compiler and if a warning 
is emitted
-set(_code "Enum enumerator = Enumerator_deprecatedAt2_0;")
-testAPI(_code DEPRECATED_AT 2.0 CXX_STANDARD 11 BUILD_TIME_ONLY_DISABLABLE 
NO_WARNING)
+if(_test_enumerator_with_cxx11)
+    set(_code "Enum enumerator = Enumerator_deprecatedAt2_0;")
+    testAPI(_code DEPRECATED_AT 2.0 CXX_STANDARD 11 BUILD_TIME_ONLY_DISABLABLE 
NO_WARNING)
+endif()
 
 set(_code "Enum enumerator = Enumerator_deprecatedAt2_0;")
-# we do not yet support enumerator warnings with MSVC
-if(MSVC)
+# no support for enumerator warnings with MSVC and compiler-specific attributes
+if(MSVC AND ${DEPRECATED_ATTRIBUTE_TYPE} STREQUAL "COMPILER")
     testAPI(_code DEPRECATED_AT 2.0 CXX_STANDARD 17 BUILD_TIME_ONLY_DISABLABLE 
NO_WARNING)
 else()
     testAPI(_code DEPRECATED_AT 2.0 CXX_STANDARD 17 BUILD_TIME_ONLY_DISABLABLE)
 endif()
 
-set(_code "Enum enumerator = Enumerator_deprecatedAt2_12;")
-testAPI(_code DEPRECATED_AT 2.12 CXX_STANDARD 11 NO_WARNING)
+if(_test_enumerator_with_cxx11)
+    set(_code "Enum enumerator = Enumerator_deprecatedAt2_12;")
+    testAPI(_code DEPRECATED_AT 2.12 CXX_STANDARD 11 NO_WARNING)
+endif()
 
 set(_code "Enum enumerator = Enumerator_deprecatedAt2_12;")
-# we do not yet support enumerator warnings with MSVC
-if(MSVC)
+# no support for enumerator warnings with MSVC and compiler-specific attributes
+if(MSVC AND ${DEPRECATED_ATTRIBUTE_TYPE} STREQUAL "COMPILER")
     testAPI(_code DEPRECATED_AT 2.12 CXX_STANDARD 17 NO_WARNING)
 else()
     testAPI(_code DEPRECATED_AT 2.12 CXX_STANDARD 17)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/tests/ECMGenerateExportHeaderTest/library/CMakeLists.txt
 
new/extra-cmake-modules-6.28.0/tests/ECMGenerateExportHeaderTest/library/CMakeLists.txt
--- 
old/extra-cmake-modules-6.27.0/tests/ECMGenerateExportHeaderTest/library/CMakeLists.txt
     2026-06-05 17:45:00.000000000 +0200
+++ 
new/extra-cmake-modules-6.28.0/tests/ECMGenerateExportHeaderTest/library/CMakeLists.txt
     2026-07-03 12:51:08.000000000 +0200
@@ -21,8 +21,17 @@
     set(_group_args GROUP_BASE_NAME LIBGROUP)
 endif()
 
+# adapt macro used for enum deprecation
+if(${DEPRECATED_ATTRIBUTE_TYPE} STREQUAL "STANDARD")
+    set(ENUM_DEPRECATION_MACRO_NAME "LIBRARY_DEPRECATED_VERSION")
+else()
+    set(ENUM_DEPRECATION_MACRO_NAME "LIBRARY_ENUMERATOR_DEPRECATED_VERSION")
+endif()
+configure_file(library.hpp.in "${CMAKE_CURRENT_BINARY_DIR}/library.hpp" @ONLY)
+
 ecm_generate_export_header(library
     ${_group_args}
+    DEPRECATED_ATTRIBUTE_TYPE ${DEPRECATED_ATTRIBUTE_TYPE}
     VERSION ${library_VERSION}
     DEPRECATION_VERSIONS 2.0 2.12
     EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
@@ -32,7 +41,7 @@
 
 install(EXPORT library_targets FILE LibraryTargets.cmake DESTINATION 
lib/library)
 install(FILES
-    library.hpp
+    "${CMAKE_CURRENT_BINARY_DIR}/library.hpp"
     "${CMAKE_CURRENT_BINARY_DIR}/library_export.h"
     DESTINATION ${_public_includedir}
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/tests/ECMGenerateExportHeaderTest/library/library.hpp
 
new/extra-cmake-modules-6.28.0/tests/ECMGenerateExportHeaderTest/library/library.hpp
--- 
old/extra-cmake-modules-6.27.0/tests/ECMGenerateExportHeaderTest/library/library.hpp
        2026-06-05 17:45:00.000000000 +0200
+++ 
new/extra-cmake-modules-6.28.0/tests/ECMGenerateExportHeaderTest/library/library.hpp
        1970-01-01 01:00:00.000000000 +0100
@@ -1,40 +0,0 @@
-#include <library_export.h>
-
-enum Enum {
-#if LIBRARY_BUILD_DEPRECATED_SINCE(2, 0)
-    Enumerator_deprecatedAt2_0 LIBRARY_ENUMERATOR_DEPRECATED_VERSION(2, 0, 
"Deprecated at 2.0"),
-#endif
-    Enumerator_not_deprecated,
-#if LIBRARY_ENABLE_DEPRECATED_SINCE(2, 12)
-    Enumerator_deprecatedAt2_12 LIBRARY_ENUMERATOR_DEPRECATED_VERSION(2, 12, 
"Deprecated at 2.12"),
-#endif
-};
-
-#if LIBRARY_ENABLE_DEPRECATED_SINCE(2, 0)
-LIBRARY_EXPORT
-LIBRARY_DEPRECATED_VERSION(2, 0, "Deprecated at 2.0")
-void function_deprecatedAt2_0();
-#endif
-
-#if LIBRARY_ENABLE_DEPRECATED_SINCE(2, 12)
-LIBRARY_EXPORT
-LIBRARY_DEPRECATED_VERSION(2, 12, "Deprecated at 2.12")
-void function_deprecatedAt2_12();
-#endif
-
-LIBRARY_EXPORT void function_not_deprecated();
-
-class LIBRARY_EXPORT Class {
-public:
-#if LIBRARY_BUILD_DEPRECATED_SINCE(2, 0)
-    LIBRARY_DEPRECATED_VERSION(2, 0, "Deprecated at 2.0")
-    virtual void method_deprecatedAt2_0();
-#endif
-
-#if LIBRARY_BUILD_DEPRECATED_SINCE(2, 12)
-    LIBRARY_DEPRECATED_VERSION(2, 12, "Deprecated at 2.12")
-    virtual void method_deprecatedAt2_12();
-#endif
-
-    virtual void method_not_deprecated();
-};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/tests/ECMGenerateExportHeaderTest/library/library.hpp.in
 
new/extra-cmake-modules-6.28.0/tests/ECMGenerateExportHeaderTest/library/library.hpp.in
--- 
old/extra-cmake-modules-6.27.0/tests/ECMGenerateExportHeaderTest/library/library.hpp.in
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/extra-cmake-modules-6.28.0/tests/ECMGenerateExportHeaderTest/library/library.hpp.in
     2026-07-03 12:51:08.000000000 +0200
@@ -0,0 +1,40 @@
+#include <library_export.h>
+
+enum Enum {
+#if LIBRARY_BUILD_DEPRECATED_SINCE(2, 0)
+    Enumerator_deprecatedAt2_0 @ENUM_DEPRECATION_MACRO_NAME@(2, 0, "Deprecated 
at 2.0"),
+#endif
+    Enumerator_not_deprecated,
+#if LIBRARY_ENABLE_DEPRECATED_SINCE(2, 12)
+    Enumerator_deprecatedAt2_12 @ENUM_DEPRECATION_MACRO_NAME@(2, 12, 
"Deprecated at 2.12"),
+#endif
+};
+
+#if LIBRARY_ENABLE_DEPRECATED_SINCE(2, 0)
+LIBRARY_EXPORT
+LIBRARY_DEPRECATED_VERSION(2, 0, "Deprecated at 2.0")
+void function_deprecatedAt2_0();
+#endif
+
+#if LIBRARY_ENABLE_DEPRECATED_SINCE(2, 12)
+LIBRARY_EXPORT
+LIBRARY_DEPRECATED_VERSION(2, 12, "Deprecated at 2.12")
+void function_deprecatedAt2_12();
+#endif
+
+LIBRARY_EXPORT void function_not_deprecated();
+
+class LIBRARY_EXPORT Class {
+public:
+#if LIBRARY_BUILD_DEPRECATED_SINCE(2, 0)
+    LIBRARY_DEPRECATED_VERSION(2, 0, "Deprecated at 2.0")
+    virtual void method_deprecatedAt2_0();
+#endif
+
+#if LIBRARY_BUILD_DEPRECATED_SINCE(2, 12)
+    LIBRARY_DEPRECATED_VERSION(2, 12, "Deprecated at 2.12")
+    virtual void method_deprecatedAt2_12();
+#endif
+
+    virtual void method_not_deprecated();
+};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/tests/ECMPoQmToolsTest/CMakeLists.txt 
new/extra-cmake-modules-6.28.0/tests/ECMPoQmToolsTest/CMakeLists.txt
--- old/extra-cmake-modules-6.27.0/tests/ECMPoQmToolsTest/CMakeLists.txt        
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/tests/ECMPoQmToolsTest/CMakeLists.txt        
2026-07-03 12:51:08.000000000 +0200
@@ -132,7 +132,7 @@
 # make sure the moc file is only visible to this test/target
 set(MOC_DIR "${CMAKE_CURRENT_BINARY_DIR}/tr_thread_test_2_moc")
 qt_generate_moc(tr_thread_test.cpp "${MOC_DIR}/tr_thread_test.moc")
-# Unset SKIP_AUTOMOC again, to not interfer with AUTOMOC as set for 
tr_thread_test
+# Unset SKIP_AUTOMOC again, to not interfere with AUTOMOC as set for 
tr_thread_test
 set_source_files_properties(tr_thread_test PROPERTIES SKIP_AUTOMOC OFF)
 
 set(tr_thread_test_2_SRCS
@@ -159,7 +159,7 @@
 add_subdirectory(subdir)
 
 
-# when building against a static Qt the tests doing dynamic loading of a 
module using Qt wont work
+# when building against a static Qt the tests doing dynamic loading of a 
module using Qt won't work
 if (NOT DEFINED QT6_IS_SHARED_LIBS_BUILD OR QT6_IS_SHARED_LIBS_BUILD)
     file(GENERATE
         OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/check_conf.cmake"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/extra-cmake-modules-6.27.0/toolchain/Android.cmake 
new/extra-cmake-modules-6.28.0/toolchain/Android.cmake
--- old/extra-cmake-modules-6.27.0/toolchain/Android.cmake      2026-06-05 
17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/toolchain/Android.cmake      2026-07-03 
12:51:08.000000000 +0200
@@ -288,7 +288,7 @@
 )
 
 # As our executables are shared libraries, we also need them build with 
position independent code (PIC).
-# Qt 5 forces that anyway, but in Qt 6 that is no longer the case for 
exectuables (which we pretend to build here),
+# Qt 5 forces that anyway, but in Qt 6 that is no longer the case for 
executables (which we pretend to build here),
 # and so we end up with just PIE (coming from CMake).
 # And as subsequent steps overwrite that setting again, we have to watch for 
that and redo our change.
 set(CMAKE_CXX_COMPILE_OPTIONS_PIE "-fPIC")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/extra-cmake-modules-6.27.0/toolchain/generate-fastlane-metadata.py 
new/extra-cmake-modules-6.28.0/toolchain/generate-fastlane-metadata.py
--- old/extra-cmake-modules-6.27.0/toolchain/generate-fastlane-metadata.py      
2026-06-05 17:45:00.000000000 +0200
+++ new/extra-cmake-modules-6.28.0/toolchain/generate-fastlane-metadata.py      
2026-07-03 12:51:08.000000000 +0200
@@ -303,7 +303,7 @@
     imageFiles = glob.glob('metadata/**/*.png', recursive=True)
     imageFiles.extend(glob.glob('metadata/**/*.jpg', recursive=True))
     for image in imageFiles:
-        # noramlize single- vs multi-app layouts
+        # normalize single- vs multi-app layouts
         imageDestName = image.replace('metadata/android', 'metadata/' + 
applicationName)
 
         # copy image

Reply via email to