blob: 28f595198dabe74a3c6b963f4c37977542eb8396 [file] [log] [blame]
def xsd_to_java(name, package, xsd, src_location, episode = None, binding_deps = [], custom_binding = None, catalog = None, deps = []):
realepisode = episode if episode else name + "-noepisode"
srcs = ["//tools/base/repository:root", "//tools/base/repository:src/main/resources/xsd/global.xjb", xsd] + binding_deps + deps
cmd = "$(location //tools/base/repository:xjc)"
if catalog:
catalog_location = "$(location " + catalog + ")"
srcs += [catalog]
cmd += " -catalog " + catalog_location
cmd += " -episode " + "$(location " + realepisode + ")"
if custom_binding:
cmd += " -b $(location " + custom_binding + ")"
srcs += [custom_binding]
for binding in binding_deps:
cmd += " -b $(execpath " + binding + ")"
cmd += " -p " + package
cmd += " -extension -Xandroid-inheritance"
cmd += " -b tools/base/repository/src/main/resources/xsd/global.xjb -no-header"
cmd += " -d `cat $(location //tools/base/repository:root)`/" + src_location
cmd += " $(rootpath " + xsd + ")"
for dep in deps:
cmd += " -cp $(location " + dep + ")"
outs = [realepisode]
native.genrule(
visibility = ["//visibility:public"],
local = 1,
srcs = srcs,
name = name,
outs = outs,
cmd = cmd,
tools = ["//tools/base/repository:xjc"],
tags = ["manual"],
)