blame
# Toy browser engine
[][codecov]
## Building
### Requirements
#### Compiler
Right now GCC 12, Clang 16, and MSVC are tested against. The project makes use
of C++23 features, so a reasonably recent compiler is required.
#### Build system
[Bazel][bazel] is used as the build system. I recommend using
[Bazelisk][bazelisk] as that will pick up the Bazel version to use from the
`.bazelversion` file in the repository root.
Per-developer configuration (e.g. compiler used and build type) is managed in
a gitignored `.bazelrc.local` file. To set this up for your environment, copy
`.bazelrc.local.example` to `.bazelrc.local` and edit to suit your compiler of
choice.
### Process
The following assumes that you either have Bazel or Bazelisk under the name
`bazel` on your `PATH` and that you have set up your `.bazelrc.local` file.
#### Listing build targets
`bazel query //...`
#### Building all targets
`bazel build //...`
#### Building a single target
`bazel build //html`
#### Running all tests
`bazel test //...`
#### Running the browser engine
`bazel run //browser`
#### Generate json compilation database
`bazel run refresh_compile_commands`
### Misc
#### clangd on Windows
If using clangd on Windows, you need work around [clangd not supporting
/std:c++latest][clangd-on-windows] by setting up a `.clangd` configuration
containing
```
CompileFlags:
Add: ["-std:c++latest"]
```
to force its inclusion and avoid your editor displaying errors for every newish
C++ feature.
[bazel]: https://bazel.build
[bazelisk]: https://github.com/bazelbuild/bazelisk
[clangd-on-windows]: https://github.com/clangd/clangd/issues/527
[codecov]: https://app.codecov.io/gh/robinlinden/hastur