--- name: gn-check-autofix description: Automatically fix GN check errors in WebRTC BUILD.gn files. Use when encountering "Include not allowed", "rtc_source_set shall not contain cc files", or when needing to clean up non-absolute dependencies. --- # GN Check Autofix This skill provides instructions for using `tools_webrtc/gn_check_autofix.py` to automatically resolve common GN build configuration errors in WebRTC. ## Core Workflows ### Fix Missing Dependencies When you see "Include not allowed" errors from `gn gen --check`, use this workflow: 1. Run the autofix tool on your output directory: ```bash tools_webrtc/gn_check_autofix.py -C ``` 2. The tool will: - Identify targets missing dependencies. - Add the missing `deps` to the appropriate `BUILD.gn` files. - Automatically run `gn format` on modified files. ### Fix rtc_source_set Violations If you see "rtc_source_set shall not contain cc files", the tool will automatically convert them to `rtc_library`: 1. Run the tool: ```bash tools_webrtc/gn_check_autofix.py -C ``` ### Clean Up Dependencies To remove all non-absolute dependencies (those not starting with `//`) from specific `BUILD.gn` files: ```bash tools_webrtc/gn_check_autofix.py -r path/to/BUILD.gn ``` *Note: This preserves absolute dependencies (starting with `//`) and targets ending in `_test`, `_tests`, `_unittest`, or `_unittests`.* ## Integration with Include Cleaner This tool is the recommended second step after running `webrtc-include-cleaner`. While the include cleaner updates your C++ source files, `gn-check-autofix` synchronizes your `BUILD.gn` files to match. ## Parameters - `-C `: Path to a local build directory (e.g., `out/Default`). The tool internally runs `gn gen --check --error-limit=20000`. - `-r `: Remove all non-absolute dependencies from the specified files. - `--error-limit`: Can be used to override the default error cap. ## Post-Fix Steps After the tool runs, always verify the changes: 1. **Deduplicate**: The tool may occasionally add a dependency that is already present. Check the `deps` list for duplicates. 2. **Regenerate GN**: Run `gn gen ` to confirm errors are resolved. 3. **Format**: The tool runs `gn format`, but a final `git cl format` is recommended for consistency. 4. **Review**: Check the diff to ensure dependencies were added to the correct targets.