|
22 | 22 | ) |
23 | 23 |
|
24 | 24 | Toolchain.CC = ["$(CC) -c -o $[outs[0]] $[ins[0]] $(CFLAGS) $[cflags]"] |
| 25 | +Toolchain.CPP = ["$(CC) -E -P -o $[outs] $[cflags] -x c $[ins]"] |
25 | 26 | Toolchain.CXX = ["$(CXX) -c -o $[outs[0]] $[ins[0]] $(CFLAGS) $[cflags]"] |
26 | 27 | Toolchain.AR = ["$(AR) cqs $[outs[0]] $[ins]"] |
27 | 28 | Toolchain.ARXX = ["$(AR) cqs $[outs[0]] $[ins]"] |
|
36 | 37 | HostToolchain.CC = [ |
37 | 38 | "$(HOSTCC) -c -o $[outs[0]] $[ins[0]] $(HOSTCFLAGS) $[cflags]" |
38 | 39 | ] |
| 40 | +HostToolchain.CPP = ["$(HOSTCC) -E -P -o $[outs] $[cflags] -x c $[ins]"] |
39 | 41 | HostToolchain.CXX = [ |
40 | 42 | "$(HOSTCXX) -c -o $[outs[0]] $[ins[0]] $(HOSTCFLAGS) $[cflags]" |
41 | 43 | ] |
@@ -519,3 +521,44 @@ def hostcxxprogram( |
519 | 521 | toolchain.PREFIX + label, |
520 | 522 | cxxfilerule, |
521 | 523 | ) |
| 524 | + |
| 525 | + |
| 526 | +def _cppfileimpl(self, name, srcs, deps, cflags, toolchain): |
| 527 | + hdr_deps = _indirect(deps, "cheader_deps") |
| 528 | + cflags = collectattrs( |
| 529 | + targets=hdr_deps, name="caller_cflags", initial=cflags |
| 530 | + ) |
| 531 | + |
| 532 | + simplerule( |
| 533 | + replaces=self, |
| 534 | + ins=srcs, |
| 535 | + outs=[f"={self.localname}"], |
| 536 | + deps=deps, |
| 537 | + commands=toolchain.CPP, |
| 538 | + args={"cflags": cflags}, |
| 539 | + label=toolchain.PREFIX + "CPPFILE", |
| 540 | + ) |
| 541 | + |
| 542 | + |
| 543 | +@Rule |
| 544 | +def cppfile( |
| 545 | + self, |
| 546 | + name, |
| 547 | + srcs: Targets = [], |
| 548 | + deps: Targets = [], |
| 549 | + cflags=[], |
| 550 | + toolchain=Toolchain, |
| 551 | +): |
| 552 | + _cppfileimpl(self, name, srcs, deps, cflags, toolchain) |
| 553 | + |
| 554 | + |
| 555 | +@Rule |
| 556 | +def hostcppfile( |
| 557 | + self, |
| 558 | + name, |
| 559 | + srcs: Targets = [], |
| 560 | + deps: Targets = [], |
| 561 | + cflags=[], |
| 562 | + toolchain=HostToolchain, |
| 563 | +): |
| 564 | + _cppfileimpl(self, name, srcs, deps, cflags, toolchain) |
0 commit comments