From 5922c86ed60423b7d85506ae251e83d25dffca25 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 27 Mar 2023 09:34:40 -0400 Subject: file(GET_RUNTIME_DEPENDENCIES): Document case-preserving change on Windows In commit fa45594407 (file(GET_RUNTIME_DEPENDENCIES): Preserve casing for Windows PE binaries, 2023-03-06) we neglected to update associated documentation. --- Help/command/file.rst | 25 ++++++++++++++-------- ...ile-GET_RUNTIME_DEPENDENCIES-windows-casing.rst | 7 ++++++ 2 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 Help/release/dev/file-GET_RUNTIME_DEPENDENCIES-windows-casing.rst diff --git a/Help/command/file.rst b/Help/command/file.rst index 25b762c..30a7f4d 100644 --- a/Help/command/file.rst +++ b/Help/command/file.rst @@ -341,12 +341,13 @@ Reading On Windows platforms, library resolution works as follows: - 1. The dependent DLL name is converted to lowercase. Windows DLL names are - case-insensitive, and some linkers mangle the case of the DLL dependency - names. However, this makes it more difficult for ``PRE_INCLUDE_REGEXES``, - ``PRE_EXCLUDE_REGEXES``, ``POST_INCLUDE_REGEXES``, and - ``POST_EXCLUDE_REGEXES`` to properly filter DLL names - every regex would - have to check for both uppercase and lowercase letters. For example: + 1. DLL dependency names are converted to lowercase for matching filters. + Windows DLL names are case-insensitive, and some linkers mangle the + case of the DLL dependency names. However, this makes it more difficult + for ``PRE_INCLUDE_REGEXES``, ``PRE_EXCLUDE_REGEXES``, + ``POST_INCLUDE_REGEXES``, and ``POST_EXCLUDE_REGEXES`` to properly + filter DLL names - every regex would have to check for both uppercase + and lowercase letters. For example: .. code-block:: cmake @@ -369,9 +370,15 @@ Reading either on disk or in the depending file. (For example, it will match ``mylibrary.dll``, ``MyLibrary.dll``, and ``MYLIBRARY.DLL``.) - Please note that the directory portion of any resolved DLLs retains its - casing and is not converted to lowercase. Only the filename portion is - converted. + .. versionchanged:: 3.27 + + The conversion to lowercase only applies while matching filters. + Results reported after filtering case-preserve each DLL name as it is + found on disk, if resolved, and otherwise as it is referenced by the + dependent binary. + + Prior to CMake 3.27, the results were reported with lowercase DLL + file names, but the directory portion retained its casing. 2. (**Not yet implemented**) If the depending file is a Windows Store app, and the dependency is listed as a dependency in the application's package diff --git a/Help/release/dev/file-GET_RUNTIME_DEPENDENCIES-windows-casing.rst b/Help/release/dev/file-GET_RUNTIME_DEPENDENCIES-windows-casing.rst new file mode 100644 index 0000000..858f8b3 --- /dev/null +++ b/Help/release/dev/file-GET_RUNTIME_DEPENDENCIES-windows-casing.rst @@ -0,0 +1,7 @@ +file-GET_RUNTIME_DEPENDENCIES-windows-casing +-------------------------------------------- + + +* The :command:`file(GET_RUNTIME_DEPENDENCIES)` command now case-preserves + DLL names reported on Windows. They are still converted to lowercase + for filter matching. -- cgit v0.12