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_java//java:defs.bzl", "java_binary") load("@rules_python//python:defs.bzl", "py_binary") load("//ntcore:generate_ntcore.bzl", "generate_ntcore") load("//ntcore:robotpy_native_build_info.bzl", "define_native_wrapper") load("//ntcore:robotpy_pybind_build_info.bzl", "define_pybind_library", "ntcore_extension") 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", "package_default_jni_project") load("//shared/bazel/rules/robotpy:build_info_gen.bzl", "generate_robotpy_native_wrapper_build_info", "generate_robotpy_pybind_build_info") load("//shared/bazel/rules/robotpy:pytest_util.bzl", "robotpy_py_test") filegroup( name = "doxygen-files", srcs = glob([ "src/generated/main/native/include/**/*", "src/main/native/include/**/*", ]), visibility = ["//visibility:public"], ) generate_ntcore( name = "generate_ntcore", ) filegroup( name = "templates", srcs = glob([ "src/generate/**/*.jinja", "src/generate/*.json", ]), ) py_binary( name = "generate_topics", srcs = ["generate_topics.py"], data = [":templates"], target_compatible_with = select({ "@rules_bzlmodrio_toolchains//constraints/is_roborio:roborio": ["@platforms//:incompatible"], "@rules_bzlmodrio_toolchains//constraints/is_systemcore:systemcore": ["@platforms//:incompatible"], "//conditions:default": [], }), deps = [requirement("jinja2")], ) write_source_files( name = "write_ntcore", diff_args = ["-u"], files = { "src/generated": ":generate_ntcore", }, suggested_update_target = "//:write_all", tags = ["pregeneration"], visibility = ["//visibility:public"], ) third_party_cc_lib_helper( name = "generated_cc", include_root = "src/generated/main/native/include", src_excludes = ["src/generated/main/native/cpp/jni/**"], src_root = "src/generated/main/native/cpp", visibility = ["//visibility:public"], ) filegroup( name = "generated_jni", srcs = glob(["src/generated/main/native/cpp/jni/**"]), ) filegroup( name = "generated_java", srcs = glob(["src/generated/main/java/**/*.java"]), visibility = ["//ntcore:__subpackages__"], ) cc_library( name = "ntcore_c_headers", hdrs = [ "src/generated/main/native/include/wpi/nt/ntcore_c_types.h", "src/main/native/include/wpi/nt/ntcore_c.h", ], includes = [ "src/generated/main/native/include", "src/main/native/include", ], visibility = ["//visibility:public"], ) wpilib_cc_library( name = "ntcore", srcs = glob( ["src/main/native/cpp/**"], exclude = ["src/main/native/cpp/jni/**"], ), hdrs = glob(["src/main/native/include/**/*"]), extra_src_pkg_files = [ ":ntcore-java-jni-hdrs-pkg", ], includes = [ "src/main/native/cpp", "src/main/native/include", ], strip_include_prefix = "src/main/native/include", third_party_libraries = [ ":generated_cc", ], visibility = ["//visibility:public"], deps = [ "//datalog", "//wpinet", "//wpiutil", ], ) 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 = [ "//datalog:static/datalog", "//wpinet:static/wpinet", "//wpiutil:static/wpiutil", ], visibility = ["//visibility:public"], deps = [ ":ntcore", ], ) wpilib_jni_cc_library( name = "ntcorejni", srcs = glob(["src/main/native/cpp/jni/**"]) + [":generated_jni"], java_dep = ":ntcore-java", visibility = ["//visibility:public"], deps = [ ":ntcore", ], ) wpilib_cc_shared_library( name = "shared/ntcorejni", auto_export_windows_symbols = False, dynamic_deps = [ ":shared/ntcore", "//wpiutil:shared/wpiutil", ], use_debug_name = False, visibility = ["//visibility:public"], deps = [":ntcorejni"], ) wpilib_jni_java_library( name = "ntcore-java", srcs = glob(["src/main/java/**/*.java"]) + [":generated_java"], maven_artifact_name = "ntcore-java", maven_group_id = "org.wpilib.ntcore", native_libs = [":ntcorejni"], visibility = ["//visibility:public"], deps = [ "//datalog:datalog-java", "//wpiutil:wpiutil-java", "@maven//:us_hebi_quickbuf_quickbuf_runtime", ], ) cc_test( name = "ntcore-cpp-test", size = "small", srcs = glob([ "src/test/native/**/*.cpp", "src/test/native/**/*.hpp", ]), tags = [ "exclusive", "no-asan", "no-tsan", ], deps = [ ":ntcore", "//thirdparty/googletest", "//wpiutil:wpiutil-testlib", ], ) wpilib_java_junit5_test( name = "ntcore-java-test", srcs = glob(["src/test/java/**/*.java"]), tags = ["exclusive"], deps = [ ":ntcore-java", "//wpiutil:wpiutil-java", ], ) cc_binary( name = "DevMain-Cpp", srcs = ["src/dev/native/cpp/main.cpp"], deps = [ ":ntcore", ], ) java_binary( name = "DevMain-Java", srcs = ["src/dev/java/org/wpilib/networktables/DevMain.java"], main_class = "org.wpilib.networktables.DevMain", deps = [ "ntcore-java", "//wpiutil:wpiutil-java", ], ) package_default_jni_project( name = "ntcore", maven_artifact_name = "ntcore-cpp", maven_group_id = "org.wpilib.ntcore", ) generate_robotpy_native_wrapper_build_info( name = "robotpy-native-ntcore-generator", pyproject_toml = "src/main/python/native-pyproject.toml", ) define_native_wrapper( name = "robotpy-native-ntcore", pyproject_toml = "src/main/python/native-pyproject.toml", ) PYBIND_PKGCFG_DEPS = [ "//datalog:native/datalog/robotpy-native-datalog.pc", "//datalog:robotpy-wpilog.generated_pkgcfg_files", "//ntcore:native/ntcore/robotpy-native-ntcore.pc", "//wpinet:native/wpinet/robotpy-native-wpinet.pc", "//wpinet:robotpy-wpinet.generated_pkgcfg_files", "//wpiutil:native/wpiutil/robotpy-native-wpiutil.pc", "//wpiutil:robotpy-wpiutil.generated_pkgcfg_files", ] generate_robotpy_pybind_build_info( name = "pyntcore-generator", additional_srcs = [":robotpy-native-ntcore.copy_headers"], package_root_file = "src/main/python/ntcore/__init__.py", pkgcfgs = PYBIND_PKGCFG_DEPS, yaml_files = glob(["src/main/python/semiwrap/*.yml"]), ) ntcore_extension( srcs = glob(["src/main/python/ntcore/src/*.cpp"]), extra_hdrs = glob([ "src/main/python/ntcore/src/*.h", "src/main/python/ntcore/src/*.inl", ]), includes = [ "src/main/python/ntcore/", ], ) define_pybind_library( name = "pyntcore", pkgcfgs = PYBIND_PKGCFG_DEPS, ) robotpy_py_test( "python_tests", srcs = glob(["src/test/python/**/*.py"]), deps = [ ":pyntcore", requirement("pytest"), ], )