git repos / blockattack-game

blame: source/misc/embedded_libs/fmt-8.1.1/support/bazel/README.md

normal view · raw

f8deb5b9 Poul Sander 2022-01-15 13:55 1
# Bazel support
f8deb5b9 Poul Sander 2022-01-15 13:55 2
f8deb5b9 Poul Sander 2022-01-15 13:55 3
To get [Bazel](https://bazel.build/) working with {fmt} you can copy the files `BUILD.bazel`, `WORKSPACE.bazel`, `.bazelrc`, and `.bazelversion` from this folder (`support/bazel`) to the root folder of this project. This way {fmt} gets bazelized and can be used with Bazel (e.g. doing a `bazel build //...` on {fmt}). 
f8deb5b9 Poul Sander 2022-01-15 13:55 4
f8deb5b9 Poul Sander 2022-01-15 13:55 5
## Using {fmt} as a dependency
f8deb5b9 Poul Sander 2022-01-15 13:55 6
f8deb5b9 Poul Sander 2022-01-15 13:55 7
The following minimal example shows how to use {fmt} as a dependency within a Bazel project.
f8deb5b9 Poul Sander 2022-01-15 13:55 8
f8deb5b9 Poul Sander 2022-01-15 13:55 9
The following file structure is assumed:
f8deb5b9 Poul Sander 2022-01-15 13:55 10
f8deb5b9 Poul Sander 2022-01-15 13:55 11
```
f8deb5b9 Poul Sander 2022-01-15 13:55 12
example
f8deb5b9 Poul Sander 2022-01-15 13:55 13
├── BUILD.bazel
f8deb5b9 Poul Sander 2022-01-15 13:55 14
├── main.cpp
f8deb5b9 Poul Sander 2022-01-15 13:55 15
└── WORKSPACE.bazel
f8deb5b9 Poul Sander 2022-01-15 13:55 16
```
f8deb5b9 Poul Sander 2022-01-15 13:55 17
f8deb5b9 Poul Sander 2022-01-15 13:55 18
*main.cpp*:
f8deb5b9 Poul Sander 2022-01-15 13:55 19
f8deb5b9 Poul Sander 2022-01-15 13:55 20
```c++
f8deb5b9 Poul Sander 2022-01-15 13:55 21
#include "fmt/core.h"
f8deb5b9 Poul Sander 2022-01-15 13:55 22
f8deb5b9 Poul Sander 2022-01-15 13:55 23
int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 24
  fmt::print("The answer is {}\n", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 25
}
f8deb5b9 Poul Sander 2022-01-15 13:55 26
```
f8deb5b9 Poul Sander 2022-01-15 13:55 27
f8deb5b9 Poul Sander 2022-01-15 13:55 28
The expected output of this example is `The answer is 42`.
f8deb5b9 Poul Sander 2022-01-15 13:55 29
f8deb5b9 Poul Sander 2022-01-15 13:55 30
*WORKSPACE.bazel*:
f8deb5b9 Poul Sander 2022-01-15 13:55 31
f8deb5b9 Poul Sander 2022-01-15 13:55 32
```python
f8deb5b9 Poul Sander 2022-01-15 13:55 33
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
f8deb5b9 Poul Sander 2022-01-15 13:55 34
f8deb5b9 Poul Sander 2022-01-15 13:55 35
git_repository(
f8deb5b9 Poul Sander 2022-01-15 13:55 36
    name = "fmt",
f8deb5b9 Poul Sander 2022-01-15 13:55 37
    branch = "master",
f8deb5b9 Poul Sander 2022-01-15 13:55 38
    remote = "https://github.com/fmtlib/fmt",
f8deb5b9 Poul Sander 2022-01-15 13:55 39
    patch_cmds = [
f8deb5b9 Poul Sander 2022-01-15 13:55 40
        "mv support/bazel/.bazelrc .bazelrc",
f8deb5b9 Poul Sander 2022-01-15 13:55 41
        "mv support/bazel/.bazelversion .bazelversion",
f8deb5b9 Poul Sander 2022-01-15 13:55 42
        "mv support/bazel/BUILD.bazel BUILD.bazel",
f8deb5b9 Poul Sander 2022-01-15 13:55 43
        "mv support/bazel/WORKSPACE.bazel WORKSPACE.bazel",
f8deb5b9 Poul Sander 2022-01-15 13:55 44
    ],
f8deb5b9 Poul Sander 2022-01-15 13:55 45
    # Windows-related patch commands are only needed in the case MSYS2 is not installed.
f8deb5b9 Poul Sander 2022-01-15 13:55 46
    # More details about the installation process of MSYS2 on Windows systems can be found here:
f8deb5b9 Poul Sander 2022-01-15 13:55 47
    # https://docs.bazel.build/versions/main/install-windows.html#installing-compilers-and-language-runtimes
f8deb5b9 Poul Sander 2022-01-15 13:55 48
    # Even if MSYS2 is installed the Windows related patch commands can still be used.
f8deb5b9 Poul Sander 2022-01-15 13:55 49
    patch_cmds_win = [
f8deb5b9 Poul Sander 2022-01-15 13:55 50
        "Move-Item -Path support/bazel/.bazelrc -Destination .bazelrc",
f8deb5b9 Poul Sander 2022-01-15 13:55 51
        "Move-Item -Path support/bazel/.bazelversion -Destination .bazelversion",
f8deb5b9 Poul Sander 2022-01-15 13:55 52
        "Move-Item -Path support/bazel/BUILD.bazel -Destination BUILD.bazel",
f8deb5b9 Poul Sander 2022-01-15 13:55 53
        "Move-Item -Path support/bazel/WORKSPACE.bazel -Destination WORKSPACE.bazel",
f8deb5b9 Poul Sander 2022-01-15 13:55 54
    ],
f8deb5b9 Poul Sander 2022-01-15 13:55 55
)
f8deb5b9 Poul Sander 2022-01-15 13:55 56
```
f8deb5b9 Poul Sander 2022-01-15 13:55 57
f8deb5b9 Poul Sander 2022-01-15 13:55 58
In the *WORKSPACE* file, the {fmt} GitHub repository is fetched. Using the attribute `patch_cmds` the  files `BUILD.bazel`, `WORKSPACE.bazel`, `.bazelrc`, and `.bazelversion` are moved to the root of the {fmt} repository. This way the {fmt} repository is recognized as a bazelized workspace. 
f8deb5b9 Poul Sander 2022-01-15 13:55 59
f8deb5b9 Poul Sander 2022-01-15 13:55 60
*BUILD.bazel*:
f8deb5b9 Poul Sander 2022-01-15 13:55 61
f8deb5b9 Poul Sander 2022-01-15 13:55 62
```python
f8deb5b9 Poul Sander 2022-01-15 13:55 63
cc_binary(
f8deb5b9 Poul Sander 2022-01-15 13:55 64
    name = "Demo",
f8deb5b9 Poul Sander 2022-01-15 13:55 65
    srcs = ["main.cpp"],
f8deb5b9 Poul Sander 2022-01-15 13:55 66
    deps = ["@fmt"],
f8deb5b9 Poul Sander 2022-01-15 13:55 67
)
f8deb5b9 Poul Sander 2022-01-15 13:55 68
```
f8deb5b9 Poul Sander 2022-01-15 13:55 69
f8deb5b9 Poul Sander 2022-01-15 13:55 70
The *BUILD* file defines a binary named `Demo` that has a dependency to {fmt}.
f8deb5b9 Poul Sander 2022-01-15 13:55 71
f8deb5b9 Poul Sander 2022-01-15 13:55 72
To execute the binary you can run `bazel run //:Demo`.
f8deb5b9 Poul Sander 2022-01-15 13:55 73
1970-01-01 00:00 74