Skip to content

Commit

Permalink
Add bazel build work for handle remapper codegen (#1140)
Browse files Browse the repository at this point in the history
* Add bazel build work for handle remapper codegen

* address comments
  • Loading branch information
purvisa-at-google-com authored Jun 29, 2022
1 parent ab05394 commit 96ac8fb
Show file tree
Hide file tree
Showing 8 changed files with 134 additions and 1 deletion.
2 changes: 2 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,8 @@ test_suite(
"//test/integration/replay:go_default_test",
"//test/integration/service:go_default_test",
"//vulkan_generator:lint",
"//vulkan_generator/codegen_utils:lint",
"//vulkan_generator/handle_remapper:lint",
"//vulkan_generator/tests:lint",
"//vulkan_generator/tests:test_vulkan_parsing",
"//vulkan_generator/vulkan_parser:lint",
Expand Down
43 changes: 43 additions & 0 deletions tools/build/rules/vulkan_generator.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
def _basic_vulkan_generator_impl(ctx):
outs = [
ctx.actions.declare_file("".join([ctx.attr.target, ".h"])),
ctx.actions.declare_file("".join([ctx.attr.target, ".cc"])),
ctx.actions.declare_file("".join([ctx.attr.target, "_tests.cc"])),
]

ctx.actions.run(
inputs = [ctx.file._xml],
outputs = outs,
arguments = [
ctx.attr.target,
outs[0].dirname,
ctx.file._xml.path,
],
mnemonic = ("".join(["BasicVulkanGenerator", ctx.attr.target])).replace("_", ""),
executable = ctx.executable._generator,
use_default_shell_env = True,
)

return [
DefaultInfo(files = depset(outs)),
]

basic_vulkan_generator = rule(
_basic_vulkan_generator_impl,
attrs = {
"_generator": attr.label(
executable = True,
cfg = "host",
allow_files = True,
default = Label("//vulkan_generator:main"),
),
"_xml": attr.label(
cfg = "host",
allow_single_file = True,
default = "@vulkan-headers//:vk.xml",
),
"target": attr.string(
mandatory = True,
),
},
)
2 changes: 2 additions & 0 deletions vulkan_generator/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ py_library(
srcs_version = "PY3",
visibility = ["//visibility:public"],
deps = [
"//vulkan_generator/handle_remapper",
"//vulkan_generator/vulkan_parser",
],
)
Expand All @@ -37,6 +38,7 @@ py_binary(
data = [
"@vulkan-headers//:vk.xml",
],
visibility = ["//visibility:public"],
deps = [
":vulkan_generator",
],
Expand Down
28 changes: 28 additions & 0 deletions vulkan_generator/codegen_utils/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Copyright (C) 2022 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load("@rules_python//python:defs.bzl", "py_library")
load("//tools/build:rules.bzl", "py_lint")

py_library(
name = "codegen_utils",
srcs = glob(["*.py"]),
srcs_version = "PY3",
visibility = ["//visibility:public"],
)

py_lint(
name = "lint",
srcs = glob(["*.py"]),
)
15 changes: 15 additions & 0 deletions vulkan_generator/codegen_utils/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright (C) 2022 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

""" This package is contains utilities for generating c++ code """
2 changes: 1 addition & 1 deletion vulkan_generator/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ def basic_generate(target: str,

generate_header(os.path.join(output_dir, target + ".h"), all_vulkan_types)
generate_cpp(os.path.join(output_dir, target + ".cc"), all_vulkan_types)
generate_test(os.path.join(output_dir, target + "_tests.cpp"), all_vulkan_types)
generate_test(os.path.join(output_dir, target + "_tests.cc"), all_vulkan_types)

def generate(target: str, output_dir: Path, vulkan_xml_path: Path) -> bool:

Expand Down
28 changes: 28 additions & 0 deletions vulkan_generator/handle_remapper/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Copyright (C) 2022 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load("@rules_python//python:defs.bzl", "py_library")
load("//tools/build:rules.bzl", "py_lint")

py_library(
name = "handle_remapper",
srcs = glob(["*.py"]),
srcs_version = "PY3",
visibility = ["//visibility:public"],
)

py_lint(
name = "lint",
srcs = glob(["*.py"]),
)
15 changes: 15 additions & 0 deletions vulkan_generator/handle_remapper/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright (C) 2022 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

""" This package is contains utilities for generating c++ code """

0 comments on commit 96ac8fb

Please sign in to comment.