Awesome
Toy browser engine
Building
Requirements
Compiler
Right now GCC 13, Clang 17, and MSVC are tested against. The project makes use of C++23 features, so a reasonably recent compiler is required.
Build system
Bazel is used as the build system. I recommend using
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 --@rules_python//python/config_settings:bootstrap_impl=system_python
Misc
clangd on Windows
If using clangd on Windows, you need work around clangd not supporting
/std:c++latest 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.