mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-30 02:31:44 +00:00
[bazel] Clean up bazel scripts (#7984)
This commit is contained in:
60
shared/bazel/rules/cc_rules.bzl
Normal file
60
shared/bazel/rules/cc_rules.bzl
Normal file
@@ -0,0 +1,60 @@
|
||||
load("@rules_cc//cc:defs.bzl", "cc_library")
|
||||
|
||||
def third_party_cc_lib_helper(
|
||||
name,
|
||||
include_root,
|
||||
src_root = None,
|
||||
src_excludes = [],
|
||||
visibility = None):
|
||||
"""
|
||||
Helper for src / headers pairs that aren't directly compiled, but rather pulled into a bigger library.
|
||||
|
||||
Due to allwpilibs directory structure of includes and sources living next to eachother, it often is required
|
||||
to make a header shim to deal with the include path, and a filegroup of the sources. This pattern is extermely
|
||||
common for the thirdparty libraries that live beneath certain libraries.
|
||||
|
||||
This will produce a library shim with the include path stripped, and a filegroup of sources.
|
||||
|
||||
Params
|
||||
include_root: The package relative path to the header files. This will be used to glob the files and strip the include prefix
|
||||
src_root: Optional. The package relative path to the source files.
|
||||
src_excludes: Optional. Used to exclude files from the src_root glob
|
||||
visibilty: The visibility of header shim / source files / package files
|
||||
"""
|
||||
cc_library(
|
||||
name = name + "-headers",
|
||||
hdrs = native.glob([
|
||||
include_root + "/**",
|
||||
]),
|
||||
includes = [include_root],
|
||||
strip_include_prefix = include_root,
|
||||
visibility = visibility,
|
||||
)
|
||||
|
||||
if src_root:
|
||||
native.filegroup(
|
||||
name = name + "-srcs",
|
||||
srcs = native.glob([src_root + "/**"], exclude = src_excludes),
|
||||
visibility = visibility,
|
||||
)
|
||||
|
||||
def wpilib_cc_library(
|
||||
name,
|
||||
srcs = [],
|
||||
deps = [],
|
||||
third_party_libraries = [],
|
||||
third_party_header_only_libraries = [],
|
||||
**kwargs):
|
||||
"""
|
||||
This function is used to ease the creation of a cc_library with helpers for handling thirdparty libraries in the standard allwpilib format.
|
||||
|
||||
Params:
|
||||
third_party_libraries: These are helper dependencies, created by third_party_cc_lib_helper. Header shims will be added as deps and src filegroups will be added to srcs
|
||||
third_party_header_only_libraries: Similar to third_party_libraries, but for shims that contain no sources
|
||||
"""
|
||||
cc_library(
|
||||
name = name,
|
||||
srcs = srcs + [lib + "-srcs" for lib in third_party_libraries],
|
||||
deps = deps + [lib + "-headers" for lib in third_party_libraries + third_party_header_only_libraries],
|
||||
**kwargs
|
||||
)
|
||||
Reference in New Issue
Block a user