[bazel] Simple shared library implementation (#8044)

This commit is contained in:
PJ Reiniger
2025-07-02 01:53:34 -04:00
committed by GitHub
parent 6d92e2501d
commit 1ccafdc13f
16 changed files with 331 additions and 17 deletions

View File

@@ -3,7 +3,7 @@ load("@rules_java//java:defs.bzl", "java_binary")
load("@rules_pkg//:mappings.bzl", "pkg_files")
load("@rules_pkg//pkg:zip.bzl", "pkg_zip")
load("@rules_python//python:defs.bzl", "py_binary")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test")
load("//shared/bazel/rules:jni_rules.bzl", "wpilib_jni_cc_library", "wpilib_jni_java_library")
load("//shared/bazel/rules:packaging.bzl", "pkg_java_files")
@@ -59,9 +59,9 @@ wpilib_cc_library(
exclude = ["src/main/native/cpp/jni/**"],
),
hdrs = glob(["src/main/native/include/**/*"]),
defines = ["WPILIB_EXPORTS"],
extra_hdr_pkg_files = [":thirdparty-apriltag-src-pkg"],
extra_src_pkg_files = [":apriltag-java-jni-hdrs-pkg"],
local_defines = ["WPILIB_EXPORTS"],
strip_include_prefix = "src/main/native/include",
visibility = ["//visibility:public"],
deps = [
@@ -71,6 +71,19 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/apriltag",
auto_export_windows_symbols = False,
dynamic_deps = [
"//wpimath:shared/wpimath",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [
":apriltag",
],
)
wpilib_cc_static_library(
name = "static/apriltag",
static_deps = [
@@ -93,6 +106,18 @@ wpilib_jni_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/apriltagjni",
auto_export_windows_symbols = False,
dynamic_deps = [
":shared/apriltag",
"//wpimath:shared/wpimath",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [":apriltagjni"],
)
wpilib_jni_java_library(
name = "apriltag-java",
srcs = glob(["src/main/java/**/*.java"]),

View File

@@ -1,7 +1,7 @@
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_test")
load("@rules_java//java:defs.bzl", "java_binary")
load("@rules_python//python:defs.bzl", "py_binary")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test")
load("//shared/bazel/rules:jni_rules.bzl", "wpilib_jni_cc_library", "wpilib_jni_java_library")
@@ -24,6 +24,15 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/datalog",
dynamic_deps = [
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [":datalog"],
)
wpilib_cc_static_library(
name = "static/datalog",
static_deps = [
@@ -43,6 +52,17 @@ wpilib_jni_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/datalogjni",
auto_export_windows_symbols = False,
dynamic_deps = [
":shared/datalog",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [":datalogjni"],
)
wpilib_jni_java_library(
name = "datalog-java",
srcs = glob(["src/main/java/**/*.java"]),

View File

@@ -4,7 +4,7 @@ load("@rules_java//java:defs.bzl", "java_binary")
load("@rules_pkg//:mappings.bzl", "pkg_files")
load("@rules_python//python:defs.bzl", "py_binary")
load("//hal:generate.bzl", "generate_hal")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test")
load("//shared/bazel/rules:jni_rules.bzl", "wpilib_jni_cc_library", "wpilib_jni_java_library")
@@ -111,6 +111,23 @@ wpilib_cc_library(
}),
)
wpilib_cc_shared_library(
name = "shared/wpiHal",
dynamic_deps = [
"//wpiutil:shared/wpiutil",
] + select({
"@rules_bzlmodrio_toolchains//constraints/is_systemcore:systemcore": [
"//ntcore:shared/ntcore",
"//wpinet:shared/wpinet",
],
"//conditions:default": [],
}),
visibility = ["//visibility:public"],
deps = [
":wpiHal",
],
)
wpilib_cc_static_library(
name = "static/wpiHal",
static_deps = [
@@ -138,6 +155,19 @@ wpilib_jni_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/wpiHaljni",
auto_export_windows_symbols = False,
dynamic_deps = [
":shared/wpiHal",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [
":wpiHaljni",
],
)
wpilib_jni_java_library(
name = "hal-java",
srcs = glob(["src/main/java/**/*.java"]),

View File

@@ -5,7 +5,7 @@ load("@rules_java//java:defs.bzl", "java_binary")
load("@rules_pkg//pkg:zip.bzl", "pkg_zip")
load("@rules_python//python:defs.bzl", "py_binary")
load("//ntcore:generate_ntcore.bzl", "generate_ntcore")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test")
load("//shared/bazel/rules:jni_rules.bzl", "wpilib_jni_cc_library", "wpilib_jni_java_library")
load("//shared/bazel/rules:packaging.bzl", "pkg_java_files")
@@ -101,6 +101,19 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/ntcore",
dynamic_deps = [
"//datalog:shared/datalog",
"//wpinet:shared/wpinet",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [
":ntcore",
],
)
wpilib_cc_static_library(
name = "static/ntcore",
static_deps = [
@@ -124,6 +137,17 @@ wpilib_jni_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/ntcorejni",
auto_export_windows_symbols = False,
dynamic_deps = [
":shared/ntcore",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [":ntcorejni"],
)
wpilib_jni_java_library(
name = "ntcore-java",
srcs = glob(["src/main/java/**/*.java"]) + [":generated_java"],

View File

@@ -1,6 +1,6 @@
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_test")
load("@rules_java//java:defs.bzl", "java_binary", "java_library")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
wpilib_cc_library(
name = "romiVendordep",
@@ -17,6 +17,21 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/romiVendordep",
dynamic_deps = [
"//hal:shared/wpiHal",
"//ntcore:shared/ntcore",
"//wpilibc:shared/wpilibc",
"//wpinet:shared/wpinet",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [
":romiVendordep",
],
)
wpilib_cc_static_library(
name = "static/romiVendordep",
static_deps = [

View File

@@ -149,6 +149,32 @@ def wpilib_cc_library(
tags = ["no-remote"],
)
def wpilib_cc_shared_library(
name,
auto_export_windows_symbols = True,
**kwargs):
features = []
if auto_export_windows_symbols:
features.append("windows_export_all_symbols")
native.cc_shared_library(
name = name,
features = features,
**kwargs
)
pkg_files(
name = name + "-shared.pkg",
srcs = [":" + name],
tags = ["manual"],
)
pkg_zip(
name = name + "-shared-zip",
srcs = ["//:license_pkg_files", name + "-shared.pkg"],
tags = ["no-remote", "manual"],
)
CcStaticLibraryInfo = provider(
"Information about a cc static library.",
fields = {
@@ -348,3 +374,15 @@ def wpilib_cc_static_library(
static_lib_name = static_lib_name,
**kwargs
)
pkg_files(
name = name + "-static.pkg",
srcs = [":" + name],
tags = ["manual"],
)
pkg_zip(
name = name + "-static-zip",
srcs = ["//:license_pkg_files", name + "-static.pkg"],
tags = ["no-remote", "manual"],
)

View File

@@ -1,5 +1,5 @@
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
cc_library(
name = "headers",
@@ -44,6 +44,18 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/halsim_ds_socket",
auto_export_windows_symbols = False,
dynamic_deps = [
"//hal:shared/wpiHal",
"//wpinet:shared/wpinet",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [":halsim_ds_socket"],
)
wpilib_cc_static_library(
name = "static/halsim_ds_socket",
static_deps = [

View File

@@ -1,4 +1,4 @@
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
wpilib_cc_library(
name = "halsim_ws_core",
@@ -19,6 +19,20 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/halsim_ws_core",
auto_export_windows_symbols = False,
dynamic_deps = [
"//hal:shared/wpiHal",
"//wpinet:shared/wpinet",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [
":halsim_ws_core",
],
)
wpilib_cc_static_library(
name = "static/halsim_ws_core",
static_deps = [

View File

@@ -1,5 +1,5 @@
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
cc_library(
name = "headers",
@@ -42,6 +42,20 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/halsim_ws_server",
auto_export_windows_symbols = False,
dynamic_deps = [
"//hal:shared/wpiHal",
"//wpinet:shared/wpinet",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [
":halsim_ws_server",
],
)
wpilib_cc_static_library(
name = "static/halsim_ws_server",
static_deps = [

View File

@@ -1,5 +1,5 @@
load("@rules_cc//cc:defs.bzl", "cc_binary")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
wpilib_cc_library(
name = "halsim_xrp",
@@ -44,6 +44,19 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/halsim_xrp",
auto_export_windows_symbols = False,
dynamic_deps = [
"//wpinet:shared/wpinet",
"//hal:shared/wpiHal",
],
visibility = ["//visibility:public"],
deps = [
":halsim_xrp",
],
)
wpilib_cc_static_library(
name = "static/halsim_xrp",
static_deps = [

View File

@@ -4,7 +4,7 @@ load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_test")
load("@rules_java//java:defs.bzl", "java_binary", "java_library")
load("@rules_pkg//pkg:zip.bzl", "pkg_zip")
load("@rules_python//python:defs.bzl", "py_binary")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test")
load("//shared/bazel/rules:packaging.bzl", "pkg_java_files")
load("//wpilibNewCommands:generate.bzl", "generate_wpilib_new_commands")
@@ -68,6 +68,20 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/wpilibNewCommands",
dynamic_deps = [
"//hal:shared/wpiHal",
"//ntcore:shared/ntcore",
"//wpilibc:shared/wpilibc",
"//wpimath:shared/wpimath",
"//wpinet:shared/wpinet",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [":wpilibNewCommands"],
)
wpilib_cc_static_library(
name = "static/wpilibNewCommands",
static_deps = [

View File

@@ -2,7 +2,7 @@ load("@allwpilib_pip_deps//:requirements.bzl", "requirement")
load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files")
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
load("@rules_python//python:defs.bzl", "py_binary")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
load("//shared/bazel/rules/gen:gen-version-file.bzl", "generate_version_file")
load("//wpilibc:generate.bzl", "generate_wpilibc")
@@ -107,6 +107,22 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/wpilibc",
dynamic_deps = [
"//datalog:shared/datalog",
"//hal:shared/wpiHal",
"//ntcore:shared/ntcore",
"//wpimath:shared/wpimath",
"//wpinet:shared/wpinet",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [
":wpilibc",
],
)
wpilib_cc_static_library(
name = "static/wpilibc",
static_deps = [

View File

@@ -4,7 +4,7 @@ load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
load("@rules_java//java:defs.bzl", "java_binary")
load("@rules_pkg//pkg:zip.bzl", "pkg_zip")
load("@rules_python//python:defs.bzl", "py_binary")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test")
load("//shared/bazel/rules:jni_rules.bzl", "wpilib_jni_cc_library", "wpilib_jni_java_library")
load("//shared/bazel/rules:packaging.bzl", "pkg_java_files")
@@ -121,7 +121,6 @@ wpilib_cc_library(
exclude = ["src/main/native/cpp/jni/**"],
),
hdrs = glob(["src/main/native/include/**"]),
defines = ["WPILIB_EXPORTS"],
extra_src_pkg_files = [
":wpimath-java-jni-hdrs-pkg",
],
@@ -129,6 +128,10 @@ wpilib_cc_library(
"src/main/native/include",
"src/main/native/thirdparty/sleipnir/src",
],
local_defines = [
"WPILIB_EXPORTS",
"SLEIPNIR_EXPORTS",
],
strip_include_prefix = "src/main/native/include",
third_party_header_only_libraries = [
":eigen",
@@ -144,6 +147,18 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/wpimath",
auto_export_windows_symbols = False,
dynamic_deps = [
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [
":wpimath",
],
)
wpilib_cc_static_library(
name = "static/wpimath",
static_deps = [
@@ -165,6 +180,17 @@ wpilib_jni_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/wpimathjni",
auto_export_windows_symbols = False,
dynamic_deps = [
":shared/wpimath",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [":wpimathjni"],
)
wpilib_jni_java_library(
name = "wpimath-java",
srcs = [":generated_java"] + glob(["src/main/java/**/*.java"]),

View File

@@ -1,7 +1,7 @@
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
load("@rules_java//java:defs.bzl", "java_binary")
load("@rules_pkg//:mappings.bzl", "pkg_files")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test")
load("//shared/bazel/rules:jni_rules.bzl", "wpilib_jni_cc_library", "wpilib_jni_java_library")
load("//shared/bazel/rules/gen:gen-resources.bzl", "generate_resources")
@@ -149,6 +149,17 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/wpinet",
dynamic_deps = [
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [
":wpinet",
],
)
wpilib_cc_static_library(
name = "static/wpinet",
static_deps = [
@@ -173,6 +184,17 @@ wpilib_jni_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/wpinetjni",
auto_export_windows_symbols = False,
dynamic_deps = [
":shared/wpinet",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [":wpinetjni"],
)
wpilib_jni_java_library(
name = "wpinet-java",
srcs = glob(["src/main/java/**/*.java"]),

View File

@@ -4,7 +4,7 @@ load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
load("@rules_java//java:defs.bzl", "java_binary")
load("@rules_pkg//pkg:zip.bzl", "pkg_zip")
load("@rules_python//python:defs.bzl", "py_binary")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "third_party_cc_lib_helper", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:java_rules.bzl", "wpilib_java_junit5_test")
load("//shared/bazel/rules:jni_rules.bzl", "wpilib_jni_cc_library", "wpilib_jni_java_library")
load("//shared/bazel/rules:packaging.bzl", "pkg_java_files")
@@ -164,6 +164,14 @@ wpilib_cc_library(
}),
)
wpilib_cc_shared_library(
name = "shared/wpiutil",
visibility = ["//visibility:public"],
deps = [
":wpiutil",
],
)
wpilib_cc_static_library(
name = "static/wpiutil",
visibility = ["//visibility:public"],
@@ -196,6 +204,16 @@ wpilib_jni_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/wpiutiljni",
auto_export_windows_symbols = False,
dynamic_deps = [
":shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [":wpiutiljni"],
)
wpilib_cc_static_library(
name = "static/wpiutiljni",
static_deps = [

View File

@@ -1,6 +1,6 @@
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_test")
load("@rules_java//java:defs.bzl", "java_binary", "java_library")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_static_library")
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library", "wpilib_cc_shared_library", "wpilib_cc_static_library")
wpilib_cc_library(
name = "xrpVendordep",
@@ -17,6 +17,19 @@ wpilib_cc_library(
],
)
wpilib_cc_shared_library(
name = "shared/xrpVendordep",
dynamic_deps = [
"//hal:shared/wpiHal",
"//ntcore:shared/ntcore",
"//wpilibc:shared/wpilibc",
"//wpinet:shared/wpinet",
"//wpiutil:shared/wpiutil",
],
visibility = ["//visibility:public"],
deps = [":xrpVendordep"],
)
wpilib_cc_static_library(
name = "static/xrpVendordep",
static_deps = [