Update ab.

This commit is contained in:
David Given
2025-03-20 02:11:10 +01:00
parent 311ff4a89f
commit 4d60ff8e67
3 changed files with 50 additions and 51 deletions

View File

@@ -1,5 +1,5 @@
from build.c import cxxlibrary from build.c import cxxlibrary
from build.protobuf import proto, protocc from build.protobuf import proto, protocc, protolib
from os.path import * from os.path import *
from glob import glob from glob import glob
import sys import sys
@@ -41,9 +41,9 @@ for a in archs:
) )
] ]
proto( protolib(
name="proto", name="proto",
deps=ps + ["lib/config+common_proto"], srcs=ps + ["lib/config+common_proto"],
) )
cxxlibrary(name="proto_lib", deps=pls) cxxlibrary(name="proto_lib", deps=pls)

View File

@@ -31,54 +31,53 @@ def proto(self, name, srcs: Targets = [], deps: Targets = []):
] ]
) )
if srcs: dirs = sorted({"$[dir]/" + dirname(f) for f in filenamesof(srcs)})
dirs = sorted({"$[dir]/" + dirname(f) for f in filenamesof(srcs)}) simplerule(
simplerule( replaces=self,
replaces=self, ins=srcs,
ins=srcs, outs=[f"={self.localname}.descriptor"],
outs=[f"={self.localname}.descriptor"], deps=protodeps,
deps=protodeps, commands=(
commands=( ["mkdir -p " + (" ".join(dirs))]
["mkdir -p " + (" ".join(dirs))] + [f"$(CP) {f} $[dir]/{f}" for f in filenamesof(srcs)]
+ [f"$(CP) {f} $[dir]/{f}" for f in filenamesof(srcs)] + [
+ [ "cd $[dir] && "
"cd $[dir] && " + (
+ ( " ".join(
" ".join( [
[ "$(PROTOC)",
"$(PROTOC)", "--proto_path=.",
"--proto_path=.", "--include_source_info",
"--include_source_info", f"--descriptor_set_out={self.localname}.descriptor",
f"--descriptor_set_out={self.localname}.descriptor", ]
] + (
+ ( [f"--descriptor_set_in={descriptorlist}"]
[f"--descriptor_set_in={descriptorlist}"] if descriptorlist
if descriptorlist else []
else []
)
+ ["$[ins]"]
) )
+ ["$[ins]"]
) )
] )
), ]
label="PROTO", ),
args={ label="PROTO",
"protosrcs": filenamesof(srcs), args={
"protodeps": set(protodeps) | {self}, "protosrcs": filenamesof(srcs),
}, "protodeps": set(protodeps) | {self},
) },
else: )
simplerule(
replaces=self,
ins=protodeps, @Rule
outs=["=stamp"], def protolib(self, name, srcs: Targets = []):
commands=["touch $[outs]"], simplerule(
label="PROTO", replaces=self,
args={ label="PROTOLIB",
"protosrcs": [], args={
"protodeps": set(protodeps), "protosrcs": collectattrs(targets=srcs, name="protosrcs"),
}, "protodeps": set(_getprotodeps(srcs)),
) },
)
@Rule @Rule

View File

@@ -78,7 +78,7 @@ def test(
replaces=self, replaces=self,
ins=[command], ins=[command],
outs=["=sentinel"], outs=["=sentinel"],
commands=["$[ins[0]]", "touch $[outs]"], commands=["$[ins[0]]", "touch $[outs[0]]"],
deps=deps, deps=deps,
label=label, label=label,
) )
@@ -87,7 +87,7 @@ def test(
replaces=self, replaces=self,
ins=ins, ins=ins,
outs=["=sentinel"], outs=["=sentinel"],
commands=commands + ["touch $[outs]"], commands=commands + ["touch $[outs[0]]"],
deps=deps, deps=deps,
label=label, label=label,
) )