Skip to content

Commit

Permalink
build system: add bzlmod support + tests (#1057)
Browse files Browse the repository at this point in the history
  • Loading branch information
zaucy authored Sep 14, 2023
1 parent 7ec739b commit 01453b6
Show file tree
Hide file tree
Showing 21 changed files with 196 additions and 12 deletions.
1 change: 1 addition & 0 deletions .bazelignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
test
17 changes: 17 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
common --enable_bzlmod
build --enable_platform_specific_config
build --incompatible_use_platforms_repo_for_constraints
build --incompatible_enable_cc_toolchain_resolution
build --enable_runfiles
build --incompatible_strict_action_env

# required for googletest
build:linux --cxxopt=-std=c++17
build:macos --cxxopt=-std=c++17

common:ci --announce_rc
common:ci --verbose_failures
common:ci --keep_going
test:ci --test_output=errors

try-import %workspace%/user.bazelrc
1 change: 1 addition & 0 deletions .bazelversion
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6.3.2
20 changes: 20 additions & 0 deletions .github/workflows/bazel-release-archive.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Bazel Release

on:
release:
types: [published]

jobs:
# A release archive is required for bzlmod
# See: https://blog.bazel.build/2023/02/15/github-archive-checksum.html
bazel-release-archive:
runs-on: ubuntu-latest
continue-on-error: true
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- run: git archive $GITHUB_REF -o "entt-${GITHUB_REF:10}.tar.gz"
- run: gh release upload ${GITHUB_REF:10} "entt-${GITHUB_REF:10}.tar.gz"
env:
GH_TOKEN: ${{ github.token }}
18 changes: 18 additions & 0 deletions .github/workflows/bazel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: bazel

on: [push, pull_request]

jobs:
test:
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
runs-on: ${{ matrix.os }}
continue-on-error: true
steps:
- uses: actions/checkout@v3
- run: bazelisk test --config=ci ...
working-directory: test
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ cpp.hint

# Bazel
/bazel-*
/test/bazel-*
/user.bazelrc
14 changes: 3 additions & 11 deletions BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
_msvc_copts = ["/std:c++17"]
_gcc_copts = ["-std=c++17"]
package(default_visibility = ["//visibility:public"])

cc_library(
alias(
name = "entt",
visibility = ["//visibility:public"],
strip_include_prefix = "src",
hdrs = glob(["src/**/*.h", "src/**/*.hpp"]),
copts = select({
"@bazel_tools//src/conditions:windows": _msvc_copts,
"@bazel_tools//src/conditions:windows_msvc": _msvc_copts,
"//conditions:default": _gcc_copts,
}),
actual = "//src:entt",
)
8 changes: 8 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module(
name = "entt",
version = "3.12.2",
compatibility_level = 3012,
)

bazel_dep(name = "rules_cc", version = "0.0.8")
bazel_dep(name = "bazel_skylib", version = "1.4.2")
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,18 @@ If you spot errors or have suggestions, any contribution is welcome!
[documentation](https://build2.org/build2-toolchain/doc/build2-toolchain-intro.xhtml#guide-repositories)
for more details.

* [`bzlmod`](https://bazel.build/external/overview#bzlmod), Bazel's external
dependency management system.<br/>
To use the [`entt`](https://registry.bazel.build/modules/entt) module in a
`bazel` project, add the following to your `MODULE.bazel` file:

```starlark
bazel_dep(name = "entt", version = "3.12.2")
```

EnTT will now be available as `@entt` (short for `@entt//:entt`) to be used
in your `cc_*` rule `deps`.

Consider this list a work in progress and help me to make it longer if you like.

## pkg-config
Expand Down
1 change: 0 additions & 1 deletion WORKSPACE

This file was deleted.

Empty file added WORKSPACE.bazel
Empty file.
Empty file added bazel/BUILD.bazel
Empty file.
13 changes: 13 additions & 0 deletions bazel/copts.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
load("@bazel_skylib//lib:selects.bzl", "selects")

COPTS = selects.with_or({
("//conditions:default", "@rules_cc//cc/compiler:clang", "@rules_cc//cc/compiler:gcc", "@rules_cc//cc/compiler:mingw-gcc"): [
"-std=c++17",
"-w",
],
("@rules_cc//cc/compiler:msvc-cl", "@rules_cc//cc/compiler:clang-cl"): [
"/std:c++17",
"/permissive-",
"/w",
],
})
11 changes: 11 additions & 0 deletions src/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
load("@bazel_skylib//lib:selects.bzl", "selects")
load("//bazel:copts.bzl", "COPTS")

package(default_visibility = ["//:__subpackages__"])

cc_library(
name = "entt",
includes = ["."],
hdrs = glob(["**/*.h", "**/*.hpp"]),
copts = COPTS,
)
1 change: 1 addition & 0 deletions test/.bazelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
import "%workspace%/../.bazelrc"
Empty file added test/BUILD.bazel
Empty file.
11 changes: 11 additions & 0 deletions test/MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module(name = "entt_test")

bazel_dep(name = "rules_cc", version = "0.0.8")
bazel_dep(name = "bazel_skylib", version = "1.4.2")
bazel_dep(name = "googletest", version = "1.14.0")
bazel_dep(name = "entt")

local_path_override(
module_name = "entt",
path = "..",
)
1 change: 1 addition & 0 deletions test/WORKSPACE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# SEE: MODULE.bazel
10 changes: 10 additions & 0 deletions test/entt/common/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
load("@rules_cc//cc:defs.bzl", "cc_library")
load("@entt//bazel:copts.bzl", "COPTS")

package(default_visibility = ["//:__subpackages__"])

cc_library(
name = "common",
copts = COPTS,
hdrs = glob(["*.h", "*.hpp"]),
)
33 changes: 33 additions & 0 deletions test/entt/entity/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
load("@rules_cc//cc:defs.bzl", "cc_test")
load("@entt//bazel:copts.bzl", "COPTS")

# buildifier: keep sorted
_TESTS = [
"component",
"entity",
"group",
"handle",
"helper",
"observer",
"organizer",
"registry",
"runtime_view",
"sigh_mixin",
"snapshot",
"sparse_set",
"storage",
"storage_entity",
"view",
]

[cc_test(
name = test,
srcs = ["{}.cpp".format(test)],
copts = COPTS,
deps = [
"//entt/common",
"@entt",
"@googletest//:gtest",
"@googletest//:gtest_main",
],
) for test in _TESTS]
34 changes: 34 additions & 0 deletions test/entt/meta/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
load("@rules_cc//cc:defs.bzl", "cc_test")
load("@entt//bazel:copts.bzl", "COPTS")

# buildifier: keep sorted
_TESTS = [
"meta_any",
"meta_base",
"meta_container",
"meta_context",
"meta_conv",
"meta_ctor",
"meta_data",
"meta_dtor",
"meta_func",
"meta_handle",
"meta_pointer",
"meta_prop",
"meta_range",
"meta_template",
"meta_type",
"meta_utility",
]

[cc_test(
name = test,
srcs = ["{}.cpp".format(test)],
copts = COPTS,
deps = [
"//entt/common",
"@entt",
"@googletest//:gtest",
"@googletest//:gtest_main",
],
) for test in _TESTS]

0 comments on commit 01453b6

Please sign in to comment.