1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 00:37:15 +01:00
SqMod/vendor/Fmt/support/bazel
Sandu Liviu Catalin 9298065cef Update WIP discord and some vendors.
CPR has features disabled and PCRE is fully disabled until updated to new code.
2023-08-05 21:31:33 +03:00
..
BUILD.bazel Update WIP discord and some vendors. 2023-08-05 21:31:33 +03:00
README.md Update WIP discord and some vendors. 2023-08-05 21:31:33 +03:00
WORKSPACE.bazel Update formatting library. 2022-03-16 22:36:44 +02:00

Bazel support

To get Bazel working with {fmt} you can copy the files BUILD.bazel, WORKSPACE.bazel, 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}).

Using {fmt} as a dependency

The following minimal example shows how to use {fmt} as a dependency within a Bazel project.

The following file structure is assumed:

example
├── BUILD.bazel
├── main.cpp
└── WORKSPACE.bazel

main.cpp:

#include "fmt/core.h"

int main() {
  fmt::print("The answer is {}\n", 42);
}

The expected output of this example is The answer is 42.

WORKSPACE.bazel:

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

git_repository(
    name = "fmt",
    branch = "master",
    remote = "https://github.com/fmtlib/fmt",
    patch_cmds = [
        "mv support/bazel/.bazelversion .bazelversion",
        "mv support/bazel/BUILD.bazel BUILD.bazel",
        "mv support/bazel/WORKSPACE.bazel WORKSPACE.bazel",
    ],
    # Windows-related patch commands are only needed in the case MSYS2 is not installed.
    # More details about the installation process of MSYS2 on Windows systems can be found here:
    # https://docs.bazel.build/versions/main/install-windows.html#installing-compilers-and-language-runtimes
    # Even if MSYS2 is installed the Windows related patch commands can still be used.
    patch_cmds_win = [
        "Move-Item -Path support/bazel/.bazelversion -Destination .bazelversion",
        "Move-Item -Path support/bazel/BUILD.bazel -Destination BUILD.bazel",
        "Move-Item -Path support/bazel/WORKSPACE.bazel -Destination WORKSPACE.bazel",
    ],
)

In the WORKSPACE file, the {fmt} GitHub repository is fetched. Using the attribute patch_cmds the files BUILD.bazel, WORKSPACE.bazel, and .bazelversion are moved to the root of the {fmt} repository. This way the {fmt} repository is recognized as a bazelized workspace.

BUILD.bazel:

cc_binary(
    name = "Demo",
    srcs = ["main.cpp"],
    deps = ["@fmt"],
)

The BUILD file defines a binary named Demo that has a dependency to {fmt}.

To execute the binary you can run bazel run //:Demo.

Using Bzlmod

The Bazel Central Registry also provides support for {fmt}.