diff options
| author | PhaseMage <phasemage@live.com> | 2022-01-30 11:27:52 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-30 21:27:52 +0200 |
| commit | 8a97807d6812f62db4c3088fecd04a98a84b9943 (patch) | |
| tree | a7658f7e1d412aa5bcede21c21b455b939074174 /src/codegen/llvm | |
| parent | 336aa3c332067ad7109a60a1276ce7a8f193ed0e (diff) | |
| download | zig-8a97807d6812f62db4c3088fecd04a98a84b9943.tar.gz zig-8a97807d6812f62db4c3088fecd04a98a84b9943.zip | |
Full response file (*.rsp) support
I hit the "quotes in an RSP file" issue when trying to compile gRPC using
"zig cc". As a fun exercise, I decided to see if I could fix it myself.
I'm fully open to this code being flat-out rejected. Or I can take feedback
to fix it up.
This modifies (and renames) _ArgIteratorWindows_ in process.zig such that
it works with arbitrary strings (or the contents of an RSP file).
In main.zig, this new _ArgIteratorGeneral_ is used to address the "TODO"
listed in _ClangArgIterator_.
This change closes #4833.
**Pros:**
- It has the nice attribute of handling "RSP file" arguments in the same way it
handles "cmd_line" arguments.
- High Performance, minimal allocations
- Fixed bug in previous _ArgIteratorWindows_, where final trailing backslashes
in a command line were entirely dropped
- Added a test case for the above bug
- Harmonized the _ArgIteratorXxxx._initWithAllocator()_ and _next()_ interface
across Windows/Posix/Wasi (Moved Windows errors to _initWithAllocator()_
rather than _next()_)
- Likely perf benefit on Windows by doing _utf16leToUtf8AllocZ()_ only once
for the entire cmd_line
**Cons:**
- Breaking Change in std library on Windows: Call
_ArgIterator.initWithAllocator()_ instead of _ArgIterator.init()_
- PhaseMage is new with contributions to Zig, might need a lot of hand-holding
- PhaseMage is a Windows person, non-Windows stuff will need to be double-checked
**Testing Done:**
- Wrote a few new test cases in process.zig
- zig.exe build test -Dskip-release (no new failures seen)
- zig cc now builds gRPC without error
Diffstat (limited to 'src/codegen/llvm')
0 files changed, 0 insertions, 0 deletions
