2025-05-14 01:01:47 -04:00
|
|
|
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
|
2025-06-27 19:36:12 -04:00
|
|
|
load("@rules_pkg//:mappings.bzl", "pkg_files")
|
|
|
|
|
load("@rules_pkg//:pkg.bzl", "pkg_zip")
|
2025-05-14 01:01:47 -04:00
|
|
|
load("//wpilibcExamples:example_projects.bzl", "COMMANDS_V2_FOLDERS", "EXAMPLE_FOLDERS", "SNIPPETS_FOLDERS", "TEMPLATES_FOLDERS", "TESTS_FOLDERS")
|
|
|
|
|
|
2025-06-27 19:36:12 -04:00
|
|
|
def _package_type(package_type):
|
|
|
|
|
pkg_files(
|
|
|
|
|
name = package_type + "-pkg",
|
|
|
|
|
srcs = native.glob(["src/main/cpp/" + package_type + "/**"]),
|
|
|
|
|
strip_prefix = "src/main/cpp",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
pkgs = ["//:license_pkg_files", ":" + package_type + "-pkg"]
|
|
|
|
|
if package_type == "examples":
|
|
|
|
|
pkg_files(
|
|
|
|
|
name = package_type + "-tests-pkg",
|
|
|
|
|
srcs = native.glob(["src/test/cpp/" + package_type + "/**"]),
|
|
|
|
|
strip_prefix = "src/test/cpp/" + package_type,
|
|
|
|
|
prefix = "examples_test",
|
|
|
|
|
)
|
|
|
|
|
pkgs.append(package_type + "-tests-pkg")
|
|
|
|
|
|
|
|
|
|
pkg_zip(
|
|
|
|
|
name = package_type + "-zip",
|
|
|
|
|
srcs = pkgs,
|
2025-07-24 09:11:09 -04:00
|
|
|
tags = ["manual"],
|
2025-06-27 19:36:12 -04:00
|
|
|
)
|
|
|
|
|
|
2025-05-14 01:01:47 -04:00
|
|
|
def build_examples(halsim_deps = []):
|
2025-06-27 19:36:12 -04:00
|
|
|
_package_type("examples")
|
|
|
|
|
|
2025-05-14 01:01:47 -04:00
|
|
|
for folder in EXAMPLE_FOLDERS:
|
|
|
|
|
cc_library(
|
|
|
|
|
name = folder + "-examples-headers",
|
2025-11-07 19:56:21 -05:00
|
|
|
hdrs = native.glob(["src/main/cpp/examples/" + folder + "/include/**/*.hpp"], allow_empty = True),
|
2025-05-14 01:01:47 -04:00
|
|
|
strip_include_prefix = "src/main/cpp/examples/" + folder + "/include",
|
|
|
|
|
tags = ["wpi-example"],
|
|
|
|
|
)
|
|
|
|
|
cc_binary(
|
|
|
|
|
name = folder + "-example",
|
2025-06-13 23:53:09 -04:00
|
|
|
srcs = native.glob(["src/main/cpp/examples/" + folder + "/cpp/**/*.cpp", "src/main/cpp/examples/" + folder + "/c/**/*.c"], allow_empty = True),
|
2025-05-14 01:01:47 -04:00
|
|
|
deps = [
|
2025-11-07 19:55:39 -05:00
|
|
|
"//commandsv2",
|
2025-06-27 19:36:12 -04:00
|
|
|
"//apriltag",
|
|
|
|
|
"//romiVendordep",
|
|
|
|
|
"//xrpVendordep",
|
|
|
|
|
"//cameraserver",
|
2025-05-14 01:01:47 -04:00
|
|
|
":{}-examples-headers".format(folder),
|
|
|
|
|
],
|
|
|
|
|
tags = ["wpi-example"],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def build_commands():
|
2025-06-27 19:36:12 -04:00
|
|
|
_package_type("commands")
|
|
|
|
|
|
2025-05-14 01:01:47 -04:00
|
|
|
for folder in COMMANDS_V2_FOLDERS:
|
|
|
|
|
cc_library(
|
|
|
|
|
name = folder + "-command",
|
|
|
|
|
srcs = native.glob(["src/main/cpp/commands/" + folder + "/**/*.cpp"]),
|
2025-11-07 19:56:21 -05:00
|
|
|
hdrs = native.glob(["src/main/cpp/commands/" + folder + "/**/*.hpp"]),
|
2025-05-14 01:01:47 -04:00
|
|
|
deps = [
|
2025-11-07 19:55:39 -05:00
|
|
|
"//commandsv2",
|
2025-05-14 01:01:47 -04:00
|
|
|
],
|
|
|
|
|
strip_include_prefix = "src/main/cpp/commands/" + folder,
|
|
|
|
|
tags = ["wpi-example"],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def build_snippets():
|
2025-06-27 19:36:12 -04:00
|
|
|
_package_type("snippets")
|
|
|
|
|
|
2025-05-14 01:01:47 -04:00
|
|
|
for folder in SNIPPETS_FOLDERS:
|
|
|
|
|
cc_library(
|
|
|
|
|
name = folder + "-template",
|
|
|
|
|
srcs = native.glob(["src/main/cpp/snippets/" + folder + "/**/*.cpp"]),
|
2025-11-07 19:56:21 -05:00
|
|
|
hdrs = native.glob(["src/main/cpp/snippets/" + folder + "/**/*.hpp"], allow_empty = True),
|
2025-05-14 01:01:47 -04:00
|
|
|
deps = [
|
2025-11-07 19:55:39 -05:00
|
|
|
"//commandsv2",
|
2025-05-14 01:01:47 -04:00
|
|
|
],
|
|
|
|
|
strip_include_prefix = "src/main/cpp/snippets/" + folder + "/include",
|
|
|
|
|
tags = ["wpi-example"],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def build_templates():
|
2025-06-27 19:36:12 -04:00
|
|
|
_package_type("templates")
|
|
|
|
|
|
2025-05-14 01:01:47 -04:00
|
|
|
for folder in TEMPLATES_FOLDERS:
|
|
|
|
|
cc_library(
|
|
|
|
|
name = folder + "-template",
|
|
|
|
|
srcs = native.glob(["src/main/cpp/templates/" + folder + "/**/*.cpp"]),
|
2025-11-07 19:56:21 -05:00
|
|
|
hdrs = native.glob(["src/main/cpp/templates/" + folder + "/**/*.hpp"]),
|
2025-05-14 01:01:47 -04:00
|
|
|
deps = [
|
2025-11-07 19:55:39 -05:00
|
|
|
"//commandsv2",
|
2025-05-14 01:01:47 -04:00
|
|
|
],
|
|
|
|
|
strip_include_prefix = "src/main/cpp/templates/" + folder + "/include",
|
|
|
|
|
tags = ["wpi-example"],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def build_tests():
|
|
|
|
|
for folder in TESTS_FOLDERS:
|
|
|
|
|
example_src_folder = "src/main/cpp/examples/" + folder
|
|
|
|
|
example_test_folder = "src/test/cpp/examples/" + folder
|
|
|
|
|
cc_test(
|
|
|
|
|
name = folder + "-test",
|
|
|
|
|
size = "small",
|
2025-06-13 23:53:09 -04:00
|
|
|
srcs = native.glob([example_test_folder + "/**/*.cpp", example_src_folder + "/cpp/**/*.cpp", example_src_folder + "/c/**/*.c"], allow_empty = True),
|
2025-05-14 01:01:47 -04:00
|
|
|
deps = [
|
2025-11-07 19:55:39 -05:00
|
|
|
"//commandsv2",
|
2025-05-14 01:01:47 -04:00
|
|
|
":{}-examples-headers".format(folder),
|
2025-06-27 19:36:12 -04:00
|
|
|
"//thirdparty/googletest",
|
2025-05-14 01:01:47 -04:00
|
|
|
],
|
|
|
|
|
defines = ["RUNNING_FRC_TESTS=1"],
|
|
|
|
|
tags = ["wpi-example", "no-tsan", "no-asan", "no-ubsan", "exclusive"],
|
|
|
|
|
)
|