build: fixup vendored wayland protocols with variants

Utilize the SRC variable for this to get a built-in relative path.
Can be tested by adding `--variant="random_string"` to configure and
build.
This commit is contained in:
Jan Ekström 2018-04-15 03:16:36 +03:00
parent 9de51b6032
commit 46d2f1f08d
2 changed files with 31 additions and 10 deletions

View File

@ -9,8 +9,11 @@ def __zshcomp_cmd__(ctx, argument):
return '"${{BIN_PERL}}" "{0}/TOOLS/zsh.pl" "{1}" > "${{TGT}}"' \
.format(ctx.srcnode.abspath(), argument)
def __wayland_scanner_cmd__(ctx, mode, dir, src):
return "${{WAYSCAN}} {0} < {1}/{2} > ${{TGT}}".format(mode, dir, src)
def __wayland_scanner_cmd__(ctx, mode, dir, src, vendored_file):
return "${{WAYSCAN}} {0} < {1} > ${{TGT}}".format(
mode,
"${SRC}" if vendored_file else "{}/{}".format(dir, src)
)
def __file2string__(ctx, **kwargs):
ctx(
@ -55,17 +58,33 @@ def __zshcomp__(ctx, **kwargs):
)
def __wayland_protocol_code__(ctx, **kwargs):
protocol_is_vendored = kwargs.get("vendored_protocol", False)
file_name = kwargs['protocol'] + '.xml'
if protocol_is_vendored:
del kwargs['vendored_protocol']
kwargs['source'] = '{}/{}'.format(kwargs['proto_dir'], file_name)
ctx(
rule = __wayland_scanner_cmd__(ctx, 'code', kwargs['proto_dir'],
kwargs['protocol'] + '.xml'),
file_name,
protocol_is_vendored),
name = os.path.basename(kwargs['target']),
**kwargs
)
def __wayland_protocol_header__(ctx, **kwargs):
protocol_is_vendored = kwargs.get("vendored_protocol", False)
file_name = kwargs['protocol'] + '.xml'
if protocol_is_vendored:
del kwargs['vendored_protocol']
kwargs['source'] = '{}/{}'.format(kwargs['proto_dir'], file_name)
ctx(
rule = __wayland_scanner_cmd__(ctx, 'client-header', kwargs['proto_dir'],
kwargs['protocol'] + '.xml'),
file_name,
protocol_is_vendored),
before = ('c',),
name = os.path.basename(kwargs['target']),
**kwargs

View File

@ -129,12 +129,14 @@ def build(ctx):
ctx.wayland_protocol_header(proto_dir = ctx.env.WL_PROTO_DIR,
protocol = "unstable/idle-inhibit/idle-inhibit-unstable-v1",
target = "video/out/wayland/idle-inhibit-v1.h")
ctx.wayland_protocol_code(proto_dir = "../video/out/wayland",
protocol = "server-decoration",
target = "video/out/wayland/srv-decor.c")
ctx.wayland_protocol_header(proto_dir = "../video/out/wayland",
protocol = "server-decoration",
target = "video/out/wayland/srv-decor.h")
ctx.wayland_protocol_code(proto_dir = "video/out/wayland",
protocol = "server-decoration",
vendored_protocol = True,
target = "video/out/wayland/srv-decor.c")
ctx.wayland_protocol_header(proto_dir = "video/out/wayland",
protocol = "server-decoration",
vendored_protocol = True,
target = "video/out/wayland/srv-decor.h")
ctx(features = "ebml_header", target = "ebml_types.h")
ctx(features = "ebml_definitions", target = "ebml_defs.c")