Skip to content

feat: add Windows ARM support and clang-include-cleaner tool#42

Merged
shenxianpeng merged 8 commits into
mainfrom
feature/add-windows-and-include-cleaner
Jun 15, 2026
Merged

feat: add Windows ARM support and clang-include-cleaner tool#42
shenxianpeng merged 8 commits into
mainfrom
feature/add-windows-and-include-cleaner

Conversation

@shenxianpeng

Copy link
Copy Markdown
Member

Description

This PR adds support for Windows ARM64 (and Windows AMD64) as a platform, as well as a new tool: clang-include-cleaner.

Changes

lib/utils.bash

  • Windows platform detection: Added MINGW* | MSYS* | CYGWIN* kernel patterns in validate_platform() to detect Windows (Git Bash, MSYS2, Cygwin). Maps x86_64amd64 and arm64/ aarch64arm64.
  • .exe extension handling: Windows binaries from the static-binaries repo have an .exe extension. Updated download_release() and install_version() to append .exe when running on Windows.

README.md

  • Added clang-include-cleaner to the supported tools list with version requirement note (18+)
  • Added Windows ARM to the platform support list
  • Added clang-include-cleaner install command to the table
  • Added caveat about version 18+ requirement

bin/help.overview

  • Added clang-include-cleaner to the tool listing

Motivation and Context

The cpp-linter/clang-tools-static-binaries repo already provides:

  • Windows ARM64 binaries (windows-arm64)
  • clang-include-cleaner binaries (starting from version 18)

This PR adds asdf plugin support for consuming those binaries.

Types of changes

  • New feature (non-breaking change which adds functionality)

How Has This Been Tested?

  • Code review of the shell script logic
  • Verified binary naming conventions match the upstream repo
  • list_all_versions() correctly extracts versions from .exe-suffixed names
  • download_release() correctly constructs the grep pattern for Windows assets

Checklist:

  • I have updated the documentation accordingly.

- Add Windows platform detection (MINGW*/MSYS*/CYGWIN*) with
  amd64 and arm64 architecture support
- Handle .exe extension for Windows binary assets in download
  and install steps
- Add clang-include-cleaner as a supported tool (version 18+)
- Update README and help overview with new platform and tool
- Add windows-latest to OS matrix with shell: bash default
- Add clang-include-cleaner as test tool, excluding versions < 18
- Use cp instead of ln -s on Windows (symlinks often fail in Git Bash)
The missing binary issue in upstream static-binaries has been fixed.
asdf-vm/actions/setup does not support Windows runners.
The Windows platform detection code in utils.bash remains
for users who set up asdf manually on Git Bash/MSYS2.
Add a targeted plugin_test_arm job on ubuntu-24.04-arm testing
all 5 tools at versions 11, 18, and 22. Keeps the main x86_64
matrix unchanged to avoid CI bloat.
When new code is pushed to the same branch/PR, cancel any
previous in-progress workflow runs to save CI resources.
Replace duplicate plugin_test_arm job with a single os entry
in the main matrix.
Replace the Cartesian matrix (212 jobs) with 4 sequential jobs,
one per OS. Each runner loops through all 5 tools at versions
11, 14, 18, 22 in a single bash script, greatly reducing
scheduling overhead and total wait time.
@shenxianpeng shenxianpeng added the enhancement New feature or request label Jun 15, 2026
@shenxianpeng
shenxianpeng merged commit 81a60fb into main Jun 15, 2026
7 checks passed
@shenxianpeng
shenxianpeng deleted the feature/add-windows-and-include-cleaner branch June 15, 2026 19:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant