Skip to content

Commit 22d360b

Browse files
authored
feat: allow ecsact cli used as a toolchain (#38)
1 parent 0fdab8d commit 22d360b

File tree

10 files changed

+133
-10
lines changed

10 files changed

+133
-10
lines changed

.bazelignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
external
22
dist
3+
test

.gitignore

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
# bazel
2-
/bazel-*
3-
/user.bazelrc
4-
5-
# https://github.com/hedronvision/bazel-compile-commands-extractor
6-
/compile_commands.json
7-
/external
8-
9-
# clangd
10-
/.cache/
2+
bazel-*
3+
user.bazelrc
4+
compile_commands.json
5+
external
6+
.cache/
117

128
# ecsact codegen
139
*.ecsact.*
14-

BUILD.bazel

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
load("@rules_cc//cc:defs.bzl", "cc_binary")
2+
load("@rules_ecsact//ecsact:toolchain.bzl", "ecsact_toolchain")
23
load("//bazel/tools:cc_stamp_header.bzl", "cc_stamp_header")
34
load("//bazel:copts.bzl", "copts")
45

@@ -29,3 +30,14 @@ alias(
2930
name = "ecsact_cli",
3031
actual = ":ecsact",
3132
)
33+
34+
ecsact_toolchain(
35+
name = "ecsact_toolchain",
36+
target_tool = ":ecsact",
37+
)
38+
39+
toolchain(
40+
name = "toolchain",
41+
toolchain = ":ecsact_toolchain",
42+
toolchain_type = "@rules_ecsact//ecsact:toolchain_type",
43+
)

MODULE.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ bazel_dep(name = "ecsact_codegen", version = "0.1.2")
1616
bazel_dep(name = "boost.dll", version = "1.83.0.bzl.2")
1717
bazel_dep(name = "magic_enum", version = "0.9.3")
1818
bazel_dep(name = "docopt.cpp", version = "0.6.2")
19+
bazel_dep(name = "rules_ecsact", version = "0.4.2")

test/.bazelrc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import %workspace%/../bazel/common.bazelrc
2+
3+
common [email protected]//:use_std_fs
4+
build:windows --workspace_status_command=../bazel/tools/wsc.cmd
5+
build:linux --workspace_status_command=../bazel/tools/wsc.sh
6+
7+
try-import %workspace%/user.bazelrc

test/BUILD.bazel

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
load("@bazel_skylib//rules:build_test.bzl", "build_test")
2+
load("@rules_cc//cc:defs.bzl", "cc_binary")
3+
load("@rules_ecsact//ecsact:defs.bzl", "ecsact_codegen", "ecsact_codegen_plugin")
4+
load("@ecsact_cli//bazel:copts.bzl", "copts")
5+
6+
cc_binary(
7+
name = "test_codegen_plugin_bin",
8+
linkshared = True,
9+
copts = copts,
10+
srcs = [
11+
"test_codegen_plugin.cc",
12+
"@ecsact_runtime//dylib:dylib.cc",
13+
],
14+
deps = [
15+
"@ecsact_codegen//:plugin",
16+
"@ecsact_runtime//dylib:meta",
17+
"@ecsact_runtime//dylib:util",
18+
],
19+
)
20+
21+
ecsact_codegen_plugin(
22+
name = "test_codegen_plugin",
23+
plugin = ":test_codegen_plugin_bin",
24+
output_extension = "txt",
25+
)
26+
27+
ecsact_codegen(
28+
name = "codegen_test",
29+
srcs = ["test.ecsact"],
30+
plugins = [":test_codegen_plugin"],
31+
)
32+
33+
build_test(
34+
name = "build_test",
35+
targets = [
36+
":codegen_test",
37+
],
38+
)

test/MODULE.bazel

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module(name = "ecsact_cli_test")
2+
3+
bazel_dep(name = "rules_cc", version = "0.0.9")
4+
bazel_dep(name = "rules_ecsact", version = "0.4.2")
5+
bazel_dep(name = "ecsact_codegen", version = "0.1.2")
6+
bazel_dep(name = "boost.dll", version = "1.83.0.bzl.2")
7+
bazel_dep(name = "ecsact_runtime", version = "0.5.1")
8+
bazel_dep(name = "ecsact_cli")
9+
10+
local_path_override(
11+
module_name = "ecsact_cli",
12+
path = "..",
13+
)
14+
15+
register_toolchains("@ecsact_cli//:all")

test/WORKSPACE.bazel

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
2+
3+
http_archive(
4+
name = "hedron_compile_commands",
5+
sha256 = "ed5aea1dc87856aa2029cb6940a51511557c5cac3dbbcb05a4abd989862c36b4",
6+
strip_prefix = "bazel-compile-commands-extractor-e16062717d9b098c3c2ac95717d2b3e661c50608",
7+
url = "https://github.com/hedronvision/bazel-compile-commands-extractor/archive/e16062717d9b098c3c2ac95717d2b3e661c50608.tar.gz",
8+
)
9+
10+
load("@hedron_compile_commands//:workspace_setup.bzl", "hedron_compile_commands_setup")
11+
12+
hedron_compile_commands_setup()
13+
14+
http_archive(
15+
name = "com_grail_bazel_toolchain",
16+
sha256 = "33ba2951db87fc2ebdb609b489b84dcd77f417ad2b2ab9d0f469835e991dab11",
17+
strip_prefix = "bazel-toolchain-885e6926f235dbd0fbde2055f5763cb762d8c0ef",
18+
url = "https://github.com/grailbio/bazel-toolchain/archive/885e6926f235dbd0fbde2055f5763cb762d8c0ef.zip",
19+
)
20+
21+
load("@com_grail_bazel_toolchain//toolchain:deps.bzl", "bazel_toolchain_dependencies")
22+
23+
bazel_toolchain_dependencies()
24+
25+
load("@com_grail_bazel_toolchain//toolchain:rules.bzl", "llvm_toolchain")
26+
27+
llvm_toolchain(
28+
name = "llvm_toolchain",
29+
llvm_version = "16.0.4",
30+
)
31+
32+
load("@llvm_toolchain//:toolchains.bzl", "llvm_register_toolchains")
33+
34+
llvm_register_toolchains()

test/test.ecsact

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
main package test;
2+
3+
component TestComponent {}

test/test_codegen_plugin.cc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#include <string_view>
2+
#include "ecsact/codegen/plugin.h"
3+
#include "ecsact/runtime/dylib.h"
4+
5+
using namespace std::string_view_literals;
6+
7+
auto ecsact_codegen_plugin_name() -> const char* {
8+
return "txt";
9+
}
10+
11+
auto ecsact_codegen_plugin( //
12+
ecsact_package_id package_id,
13+
ecsact_codegen_write_fn_t write_fn
14+
) -> void {
15+
auto test_message = "this is just a test, breathe!"sv;
16+
write_fn(test_message.data(), test_message.size());
17+
}

0 commit comments

Comments
 (0)