mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
248 lines
5.8 KiB
Python
248 lines
5.8 KiB
Python
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
|
|
load("@rules_cc//cc:cc_library.bzl", "cc_library")
|
|
load("@rules_cc//cc:cc_test.bzl", "cc_test")
|
|
load("@rules_pkg//:mappings.bzl", "pkg_files")
|
|
load("//shared/bazel/rules:cc_rules.bzl", "wpilib_cc_library")
|
|
load("//shared/bazel/rules:packaging.bzl", "package_binary_cc_project")
|
|
load("//shared/bazel/rules/gen:gen-resources.bzl", "generate_resources")
|
|
load("//shared/bazel/rules/gen:gen-version-file.bzl", "generate_version_file")
|
|
|
|
pkg_files(
|
|
name = "licenses",
|
|
srcs = [
|
|
"WPICalThirdPartyNotices.txt",
|
|
],
|
|
)
|
|
|
|
generate_resources(
|
|
name = "generate-resources",
|
|
namespace = "wpical",
|
|
prefix = "WPI",
|
|
resource_files = glob(["src/main/native/resources/*"]),
|
|
)
|
|
|
|
generate_version_file(
|
|
name = "generate-version",
|
|
output_file = "WPILibVersion.cpp",
|
|
template = "src/main/generate/WPILibVersion.cpp.in",
|
|
)
|
|
|
|
cc_library(
|
|
name = "headers",
|
|
hdrs = glob([
|
|
"src/main/native/include/**/*",
|
|
]),
|
|
strip_include_prefix = "src/main/native/include",
|
|
deps = [
|
|
":headers-libdogleg",
|
|
":headers-mrcal",
|
|
":headers-mrcal-generated",
|
|
":headers-mrcal-java",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "headers-libdogleg",
|
|
hdrs = glob([
|
|
"src/main/native/thirdparty/libdogleg/include/**/*",
|
|
]),
|
|
strip_include_prefix = "src/main/native/thirdparty/libdogleg/include",
|
|
)
|
|
|
|
cc_library(
|
|
name = "headers-mrcal-generated",
|
|
hdrs = glob([
|
|
"src/main/native/thirdparty/mrcal/generated/**/*",
|
|
]),
|
|
strip_include_prefix = "src/main/native/thirdparty/mrcal/generated/",
|
|
)
|
|
|
|
cc_library(
|
|
name = "headers-mrcal",
|
|
hdrs = glob([
|
|
"src/main/native/thirdparty/mrcal/include/**/*",
|
|
]),
|
|
strip_include_prefix = "src/main/native/thirdparty/mrcal/include/",
|
|
)
|
|
|
|
cc_library(
|
|
name = "headers-mrcal-java",
|
|
hdrs = glob([
|
|
"src/main/native/thirdparty/mrcal_java/include/**/*",
|
|
]),
|
|
strip_include_prefix = "src/main/native/thirdparty/mrcal_java/include/",
|
|
)
|
|
|
|
unix_copts = [
|
|
"-Wno-pedantic",
|
|
"-Wno-format-nonliteral",
|
|
"-Wno-unused-variable",
|
|
"-Wno-unused-function",
|
|
"-Wno-sign-compare",
|
|
]
|
|
|
|
osx_copts = unix_copts
|
|
|
|
copts = select({
|
|
"@platforms//os:linux": unix_copts + [
|
|
"-Wno-maybe-uninitialized",
|
|
],
|
|
"@platforms//os:osx": osx_copts,
|
|
"@platforms//os:windows": [
|
|
"/wd4047",
|
|
"/wd4098",
|
|
"/wd4267",
|
|
],
|
|
})
|
|
|
|
unix_cxxopts = [
|
|
"-Wno-missing-field-initializers",
|
|
"-Wno-pedantic",
|
|
"-fpermissive",
|
|
"-Wno-deprecated-declarations",
|
|
"-Wno-return-type",
|
|
"-Wno-missing-braces",
|
|
"-Wno-null-conversion",
|
|
"-Wno-unused-but-set-variable",
|
|
]
|
|
|
|
osx_cxxopts = unix_cxxopts + [
|
|
"-Wno-unused-variable",
|
|
"-Wno-unused-function",
|
|
"-Wno-sign-compare",
|
|
"-Wno-sometimes-uninitialized",
|
|
]
|
|
|
|
cxxopts = select({
|
|
"@platforms//os:linux": unix_cxxopts + [
|
|
"-Wno-deprecated-enum-enum-conversion",
|
|
],
|
|
"@platforms//os:osx": osx_cxxopts,
|
|
"@platforms//os:windows": [
|
|
"/wd4068",
|
|
"/wd4101",
|
|
"/wd4200",
|
|
"/wd4576",
|
|
"/wd4715",
|
|
],
|
|
})
|
|
|
|
mac_linkopts = [
|
|
"-framework",
|
|
"Metal",
|
|
"-framework",
|
|
"MetalKit",
|
|
"-framework",
|
|
"Cocoa",
|
|
"-framework",
|
|
"IOKit",
|
|
"-framework",
|
|
"CoreFoundation",
|
|
"-framework",
|
|
"CoreVideo",
|
|
"-framework",
|
|
"QuartzCore",
|
|
"-framework",
|
|
"Accelerate",
|
|
"-framework",
|
|
"AVFoundation",
|
|
"-framework",
|
|
"CoreMedia",
|
|
]
|
|
|
|
linkopts = select({
|
|
"@platforms//os:linux": [],
|
|
"@platforms//os:osx": mac_linkopts,
|
|
"@platforms//os:windows": [
|
|
"-DEFAULTLIB:Gdi32.lib",
|
|
"-DEFAULTLIB:Shell32.lib",
|
|
"-DEFAULTLIB:d3d11.lib",
|
|
"-DEFAULTLIB:d3dcompiler.lib",
|
|
"-DEFAULTLIB:Comdlg32.lib",
|
|
"-DEFAULTLIB:dbghelp.lib",
|
|
"-DEFAULTLIB:Advapi32.lib",
|
|
],
|
|
})
|
|
|
|
wpilib_cc_library(
|
|
name = "wpical_lib",
|
|
srcs = glob(
|
|
[
|
|
"src/main/native/cpp/**/*.cpp",
|
|
"src/main/native/thirdparty/libdogleg/src/**/*.cpp",
|
|
"src/main/native/thirdparty/mrcal/src/**/*.cpp",
|
|
"src/main/native/thirdparty/mrcal/src/**/*.c",
|
|
"src/main/native/thirdparty/mrcal_java/src/**/*.cpp",
|
|
],
|
|
exclude = ["src/main/native/cpp/WPIcal.cpp"],
|
|
) + [
|
|
":generate-resources",
|
|
],
|
|
copts = copts,
|
|
cxxopts = cxxopts,
|
|
defines = ["OPENCV_DISABLE_EIGEN_TENSOR_SUPPORT"],
|
|
include_license_files = True,
|
|
linkopts = linkopts,
|
|
linkstatic = True,
|
|
strip_include_prefix = "include",
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":headers",
|
|
"//apriltag",
|
|
"//thirdparty/ceres",
|
|
"//wpigui",
|
|
"//wpiutil",
|
|
"@bzlmodrio-opencv//libraries/cpp/opencv",
|
|
],
|
|
)
|
|
|
|
cc_binary(
|
|
name = "wpical",
|
|
srcs = [
|
|
"src/main/native/cpp/WPIcal.cpp",
|
|
],
|
|
copts = copts,
|
|
cxxopts = cxxopts,
|
|
linkopts = select({
|
|
"@platforms//os:linux": [],
|
|
"@platforms//os:osx": [],
|
|
"@platforms//os:windows": [
|
|
"-SUBSYSTEM:WINDOWS",
|
|
],
|
|
}),
|
|
deps = [
|
|
":wpical_lib",
|
|
"//thirdparty/imgui_suite",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "wpical_test",
|
|
size = "medium",
|
|
srcs = glob(["src/test/native/**"]),
|
|
copts = copts,
|
|
cxxopts = cxxopts,
|
|
data = glob(["src/main/native/assets/**"]) + [
|
|
"src/main/native/assets",
|
|
"src/main/native/assets/altfieldvideo",
|
|
"src/main/native/assets/fieldvideo",
|
|
],
|
|
defines = [
|
|
'PROJECT_ROOT_PATH=\\"tools/wpical/src/main/native/assets\\"',
|
|
"__BAZEL__=1",
|
|
],
|
|
deps = [
|
|
":wpical_lib",
|
|
"//thirdparty/ceres",
|
|
"//thirdparty/googletest",
|
|
"@bazel_tools//tools/cpp/runfiles",
|
|
],
|
|
)
|
|
|
|
package_binary_cc_project(
|
|
name = "wpical",
|
|
extra_files = [":licenses"],
|
|
maven_artifact_name = "wpical",
|
|
maven_group_id = "edu.wpi.first.tools",
|
|
)
|