load("@bzlmodrio-opencv//libraries/cpp/opencv:libraries.bzl", "opencv_shared_libraries") load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_test") load("@rules_java//java:defs.bzl", "java_binary") 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:objectivec_rules.bzl", "wpilib_objc_library") load("//shared/bazel/rules:packaging.bzl", "package_default_jni_project", "package_shared_cc_project") filegroup( name = "doxygen-files", srcs = glob([ "src/main/native/include/**/*", ]), visibility = ["//visibility:public"], ) WIN_SRCS = glob([ "src/main/native/windows/**/*.cpp", "src/main/native/windows/**/*.hpp", ]) LINUX_SRCS = glob([ "src/main/native/linux/**/*.cpp", "src/main/native/linux/**/*.hpp", ]) MAC_SRCS = glob(["src/main/native/osx/**/*.cpp"]) filegroup( name = "native-srcs", srcs = select({ "@platforms//os:osx": MAC_SRCS, "@platforms//os:windows": WIN_SRCS, "@rules_bzlmodrio_toolchains//constraints/combined:is_linux": LINUX_SRCS, }), ) wpilib_objc_library( name = "cscore-mac", srcs = glob([ "src/main/native/objcpp/**/*.mm", "src/main/native/cpp/*.hpp", ]), hdrs = glob([ "src/main/native/include/**/*", "src/main/native/objcpp/**/*.hpp", ]), include_arc = False, includes = [ "src/main/native/cpp", "src/main/native/include", "src/main/native/objcpp", ], sdk_frameworks = [ "CoreFoundation", "AVFoundation", "Foundation", "CoreMedia", "CoreVideo", "IOKit", ], deps = [ "//wpinet", "//wpiutil", "@bzlmodrio-opencv//libraries/cpp/opencv", ], ) wpilib_cc_library( name = "cscore", srcs = [":native-srcs"] + glob( ["src/main/native/cpp/**"], exclude = ["src/main/native/cpp/jni/**"], ), hdrs = glob(["src/main/native/include/**/*"]), extra_src_pkg_files = [ ":cscore-java-jni-hdrs-pkg", ], includes = [ "src/main/native/cpp", "src/main/native/include", ], strip_include_prefix = "src/main/native/include", visibility = ["//visibility:public"], deps = [ "//wpinet", "//wpiutil", "@bzlmodrio-opencv//libraries/cpp/opencv", ] + select({ "@platforms//os:osx": [":cscore-mac"], "//conditions:default": [], }), ) sdk_framework_flags = [ "-framework", "Metal", "-framework", "MetalKit", "-framework", "Cocoa", "-framework", "IOKit", "-framework", "CoreFoundation", "-framework", "AVFoundation", "-framework", "Foundation", "-framework", "CoreMedia", "-framework", "CoreVideo", "-framework", "QuartzCore", ] wpilib_cc_shared_library( name = "shared/cscore", additional_linker_inputs = select({ "@platforms//os:osx": [":cscore-mac"], "//conditions:default": [], }), dynamic_deps = [ "//wpinet:shared/wpinet", "//wpiutil:shared/wpiutil", ] + opencv_shared_libraries, user_link_flags = select({ "@platforms//os:osx": [ "-Wl,-force_load,$(location :cscore-mac)", ] + sdk_framework_flags, "//conditions:default": [], }), visibility = ["//visibility:public"], deps = [ ":cscore", ], ) wpilib_cc_static_library( name = "static/cscore", static_deps = [ "//wpinet:static/wpinet", "//wpiutil:static/wpiutil", ], visibility = ["//visibility:public"], deps = [":cscore"], ) wpilib_jni_cc_library( name = "cscorejni", srcs = glob(["src/main/native/cpp/jni/**"]), java_dep = ":cscore-java", visibility = ["//visibility:public"], deps = [ ":cscore", ], ) wpilib_cc_shared_library( name = "shared/cscorejni", dynamic_deps = [ ":shared/cscore", "//wpiutil:shared/wpiutil", ], use_debug_name = False, visibility = ["//visibility:public"], deps = [":cscorejni"], ) wpilib_cc_shared_library( name = "shared/cscorejnicvstatic", additional_linker_inputs = select({ "@platforms//os:osx": [":cscore-mac"], "//conditions:default": [], }) + [ ":src/main/native/LinuxSymbolScript.txt", ":src/main/native/MacSymbolScript.txt", ], dynamic_deps = [ "//wpinet:shared/wpinet", "//wpiutil:shared/wpiutil", ], use_debug_name = False, user_link_flags = select({ "@platforms//os:linux": [ "-Wl,-soname,libcscorejnicvstatic.so", "-Wl,--version-script=$(location :src/main/native/LinuxSymbolScript.txt)", ], "@platforms//os:osx": [ "-Wl,-install_name,libcscorejnicvstatic.so", "-exported_symbols_list", "$(location :src/main/native/MacSymbolScript.txt)", ], "//conditions:default": [], }) + select({ "@platforms//os:osx": [ "-Wl,-force_load,$(location :cscore-mac)", ] + sdk_framework_flags, "//conditions:default": [], }), visibility = ["//visibility:public"], deps = [ ":cscore", ":cscorejni", ], ) wpilib_jni_java_library( name = "cscore-java", srcs = glob(["src/main/java/**/*.java"]), maven_artifact_name = "cscore-java", maven_group_id = "org.wpilib.cscore", native_libs = [":cscorejni"], visibility = ["//visibility:public"], deps = [ "//wpiutil:wpiutil-java", "@bzlmodrio-opencv//libraries/java/opencv", ], ) cc_test( name = "cscore-cpp-test", size = "small", srcs = glob(["src/test/native/**"]), deps = [ ":cscore", "//thirdparty/googletest", ], ) wpilib_java_junit5_test( name = "cscore-java-test", srcs = glob(["src/test/java/**/*.java"]), deps = [ ":cscore-java", "//wpiutil:wpiutil-java", ], ) cc_binary( name = "DevMain-Cpp", srcs = ["src/dev/native/cpp/main.cpp"], deps = [ ":cscore", ], ) java_binary( name = "DevMain-Java", srcs = ["src/dev/java/org/wpilib/vision/camera/DevMain.java"], main_class = "org.wpilib.vision.camera.DevMain", deps = [ ":cscore-java", "//wpiutil:wpiutil-java", ], ) [wpilib_cc_library( name = example + "-examples", srcs = glob([ "examples/" + example + "/*.cpp", ]), tags = [ "wpi-example", ], deps = [ "//cscore", "//wpigui", "@bzlmodrio-opencv//libraries/cpp/opencv", ], ) for example in [ "enum_usb", "httpcvstream", "settings", "usbcvstream", "usbstream", "usbviewer", ]] package_default_jni_project( name = "cscore", maven_artifact_name = "cscore-cpp", maven_group_id = "org.wpilib.cscore", ) alias( name = "cscorejnicvstatic-hdrs-zip", actual = "cscore-hdrs-zip", ) alias( name = "cscorejnicvstatic-srcs-zip", actual = "cscore-srcs-zip", ) package_shared_cc_project( name = "cscorejnicvstatic", maven_artifact_name = "cscore-jnicvstatic", maven_group_id = "org.wpilib.cscore", )