[libc] Add CMake formatting utility (#213102)
Added libc/utils/cmake_format.py and libc/utils/cmake_format_test.py to
format LLVM and subproject CMake files according to LLVM-libc formatting
conventions.
The formatter operates in three passes:
* Lexer: Tokenises input using the cmake-language(7) EBNF specification
into typed Token objects with line and column position tracking.
* Dynamic Schema Scanner: Pre-scans repository CMake modules and
function blocks to learn option, single-value, and multi-value keyword
argument schemas from cmake_parse_arguments and set calls.
* Token-Stream Formatter: Applies 2-space control block nesting, keyword
casing, comment buffering, and multi-line list indentation in a single
pass.
The utility supports parallel multi-core execution (-j/--jobs) and
in-place file formatting (-i/--inplace). Added 44 unit tests covering
formatting rules, edge cases, schema scanning, and error diagnostics.
Assisted-by: Automated tooling, human reviewed.
GitOrigin-RevId: 3a96f29e9279d54b47ab800a1d0e57042b85448c
2 files changed