From 6542689f81322f97fc67e11151e93e02a15d9d3e Mon Sep 17 00:00:00 2001 From: Adrian Tobiszewski Date: Mon, 25 May 2026 17:40:01 +0200 Subject: [PATCH 1/4] WIP: selective local_defines approach (fallback) --- common_settings.bzl | 18 ++++---- src/BUILD | 80 ++++++++++++++++++++---------------- src/graph_export/BUILD | 4 +- src/llm/BUILD | 20 ++++----- src/mediapipe_internal/BUILD | 10 ++--- 5 files changed, 72 insertions(+), 60 deletions(-) diff --git a/common_settings.bzl b/common_settings.bzl index 4773a175aa..c5d352a9bb 100644 --- a/common_settings.bzl +++ b/common_settings.bzl @@ -45,6 +45,8 @@ def ovms_cc_library(**kwargs): kwargs["copts"] += kwargs.pop("additional_copts") if "additional_linkopts" in kwargs: kwargs["linkopts"] += kwargs.pop("additional_linkopts") + if "additional_local_defines" in kwargs: + kwargs["local_defines"] += kwargs.pop("additional_local_defines") native.cc_library( **kwargs @@ -235,18 +237,18 @@ COMMON_STATIC_LIBS_LINKOPTS = select({ "/LTCG", ], }) -COPTS_PYTHON = select({ - "//conditions:default": ["-DPYTHON_DISABLE=1"], - "//:not_disable_python" : ["-DPYTHON_DISABLE=0"], -}) -COPTS_MEDIAPIPE = select({ - "//conditions:default": ["-DMEDIAPIPE_DISABLE=1"], - "//:not_disable_mediapipe" : ["-DMEDIAPIPE_DISABLE=0"], -}) COPTS_DROGON = select({ "//conditions:default": ["-DUSE_DROGON=0"], "//:enable_drogon" : ["-DUSE_DROGON=1"], }) +LOCAL_DEFINES_PYTHON = select({ + "//conditions:default": ["PYTHON_DISABLE=1"], + "//:not_disable_python" : ["PYTHON_DISABLE=0"], +}) +LOCAL_DEFINES_MEDIAPIPE = select({ + "//conditions:default": ["MEDIAPIPE_DISABLE=1"], + "//:not_disable_mediapipe" : ["MEDIAPIPE_DISABLE=0"], +}) COMMON_FUZZER_COPTS = [ "-fsanitize=address", "-fprofile-generate", diff --git a/src/BUILD b/src/BUILD index c2d9aec3b1..2890e54e2b 100644 --- a/src/BUILD +++ b/src/BUILD @@ -16,7 +16,8 @@ load("@bazel_skylib//lib:selects.bzl", "selects") load("@mediapipe//mediapipe/framework:more_selects.bzl", "more_selects") load("//:common_settings.bzl", - "COMMON_STATIC_TEST_COPTS", "COMMON_STATIC_LIBS_COPTS", "COMMON_STATIC_LIBS_LINKOPTS", "COMMON_FUZZER_COPTS", "COMMON_FUZZER_LINKOPTS", "COMMON_LOCAL_DEFINES", "COPTS_PYTHON", "COPTS_MEDIAPIPE", "COPTS_DROGON", + "COMMON_STATIC_TEST_COPTS", "COMMON_STATIC_LIBS_COPTS", "COMMON_STATIC_LIBS_LINKOPTS", "COMMON_FUZZER_COPTS", "COMMON_FUZZER_LINKOPTS", "COMMON_LOCAL_DEFINES", "COPTS_DROGON", + "LOCAL_DEFINES_PYTHON", "LOCAL_DEFINES_MEDIAPIPE", "create_config_settings", "PYBIND_DEPS", "ovms_cc_library") COPTS_OV_TRACE = select({ @@ -32,7 +33,9 @@ COPTS_CLOUD = select({ "//:not_disable_cloud" : ["-DCLOUD_DISABLE=0"], }) -COPTS_TESTS = COMMON_STATIC_TEST_COPTS + COPTS_PYTHON + COPTS_MEDIAPIPE + COPTS_DROGON + COPTS_CLOUD +COPTS_TESTS = COMMON_STATIC_TEST_COPTS + COPTS_DROGON + COPTS_CLOUD + +LOCAL_DEFINES_TESTS = COMMON_LOCAL_DEFINES + LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE config_setting( name = "windows", @@ -320,7 +323,7 @@ ovms_cc_library( "//:not_disable_mediapipe": ["//third_party:genai"], "//conditions:default": [], }), - additional_copts = COPTS_MEDIAPIPE, + additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, visibility = ["//visibility:public",], alwayslink = 1, ) @@ -557,7 +560,7 @@ ovms_cc_library( "@mediapipe//mediapipe/framework/formats:tensor", ], visibility = ["//visibility:public",], - additional_copts = COPTS_PYTHON + COPTS_MEDIAPIPE, + additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, alwayslink = 1, ) ovms_cc_library( @@ -583,7 +586,7 @@ ovms_cc_library( "@mediapipe//mediapipe/framework/formats:tensor", ], visibility = ["//visibility:public",], - additional_copts = COPTS_PYTHON + COPTS_MEDIAPIPE, + additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, alwayslink = 1, ) ovms_cc_library( @@ -658,7 +661,7 @@ ovms_cc_library( "//src/port:rapidjson_writer", ], visibility = ["//visibility:public"], - additional_copts = COPTS_MEDIAPIPE, + additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( name = "rest_parser_utils", @@ -765,7 +768,7 @@ ovms_cc_library( "modelmanager", "//src/metrics:libovmsmetrics", ], - additional_copts = COPTS_PYTHON, + additional_local_defines = LOCAL_DEFINES_PYTHON, visibility = ["//visibility:public"], ) ovms_cc_library( @@ -965,7 +968,8 @@ ovms_cc_library( ], }), visibility = ["//visibility:public",], - additional_copts = COPTS_PYTHON + COPTS_MEDIAPIPE + COPTS_DROGON + COPTS_OV_TRACE, + additional_copts = COPTS_DROGON + COPTS_OV_TRACE, + additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, additional_linkopts = select({ "//conditions:default": ["-lOpenCL"], # TODO make as direct dependency "//src:windows" : ["/DEFAULTLIB:Rpcrt4.lib"],}), @@ -1012,6 +1016,7 @@ ovms_cc_library( ], visibility = ["//visibility:public",], additional_copts = COPTS_OV_TRACE, + additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( name = "notifyreceiver", @@ -1370,7 +1375,8 @@ ovms_cc_library( "//src/port:rapidjson_stringbuffer", ], visibility = ["//visibility:public"], - additional_copts = COPTS_MEDIAPIPE + COPTS_DROGON, + additional_copts = COPTS_DROGON, + additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, ) @@ -2606,7 +2612,7 @@ cc_test( ], }), copts = COPTS_TESTS, - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, linkopts = LINKOPTS_ADJUSTED, ) @@ -2620,7 +2626,7 @@ cc_library( ":ovms_lib", ], linkstatic = 1, - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, linkopts = COMMON_STATIC_LIBS_LINKOPTS, ) @@ -2631,7 +2637,7 @@ cc_library( "@com_google_googletest//:gtest", ], linkstatic = 1, - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, linkopts = COMMON_STATIC_LIBS_LINKOPTS, ) @@ -2643,7 +2649,7 @@ cc_library( ":modelconfig", ], linkstatic = 1, - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, linkopts = COMMON_STATIC_LIBS_LINKOPTS, ) @@ -2657,7 +2663,7 @@ cc_library( "@com_google_googletest//:gtest", "//src/pull_module:cmd_exec", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, linkopts = COMMON_STATIC_LIBS_LINKOPTS, ) @@ -2673,7 +2679,7 @@ cc_library( "test/test_file_utils.cpp", ], deps = [], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, linkopts = COMMON_STATIC_LIBS_LINKOPTS, ) @@ -2698,7 +2704,7 @@ cc_library( "//src:test_light_test_utils", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, linkopts = COMMON_STATIC_LIBS_LINKOPTS, ) @@ -2713,7 +2719,7 @@ cc_library( "@com_google_googletest//:gtest", ], linkstatic = 1, - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, linkopts = COMMON_STATIC_LIBS_LINKOPTS, ) @@ -2725,7 +2731,7 @@ cc_library( # DO NOT ADD BIG DEPENDENCIES HERE "@com_github_gabime_spdlog//:spdlog", ], linkstatic = 1, - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, linkopts = COMMON_STATIC_LIBS_LINKOPTS, ) @@ -2738,7 +2744,7 @@ cc_library( "@com_google_googletest//:gtest", ], linkstatic = 1, - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, linkopts = COMMON_STATIC_LIBS_LINKOPTS, ) @@ -2753,7 +2759,7 @@ cc_library( srcs = [ "test/environment.cpp", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, linkopts = [], deps = [ @@ -2772,7 +2778,7 @@ cc_library( "libovmslogging", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) cc_library( @@ -2785,7 +2791,7 @@ cc_library( deps = PYBIND_DEPS + [ "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) cc_library( @@ -2799,7 +2805,7 @@ cc_library( "libovmslogging", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) cc_library( @@ -2820,6 +2826,7 @@ cc_library( "@com_google_googletest//:gtest", ], copts = COPTS_TESTS, + local_defines = LOCAL_DEFINES_TESTS, ) cc_library( name = "libgit2_test", @@ -2836,7 +2843,7 @@ cc_library( "//src:ovms_lib", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) @@ -2861,7 +2868,7 @@ cc_library( "@cpp_httplib//:cpp_httplib", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) cc_library( @@ -2883,7 +2890,7 @@ cc_library( "libovmsstring_utils", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) cc_library( @@ -2898,7 +2905,7 @@ cc_library( "libovmsstring_utils", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) @@ -2916,7 +2923,7 @@ cc_library( "//src:libovms_systeminfo", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) cc_library( @@ -2933,7 +2940,7 @@ cc_library( "//src:libovms_server_settings", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) cc_library( @@ -2950,7 +2957,7 @@ cc_library( "//src:libovms_server_settings", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) cc_library( @@ -2969,7 +2976,7 @@ cc_library( "//src:libovms_server_settings", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) cc_library( @@ -3004,7 +3011,7 @@ cc_library( ":libovmsoclutils", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS + ["-lOpenCL", ] + select({ "//:redhat_build": [], @@ -3021,7 +3028,7 @@ cc_library( "//src:network_utils", "@com_google_googletest//:gtest", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) @@ -3036,7 +3043,7 @@ cc_library( "//src/image_gen:imagegenutils", "//src/image_gen:imagegen_init", ], - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, copts = COPTS_TESTS, ) @@ -3068,6 +3075,7 @@ cc_library( "@com_google_googletest//:gtest", ], copts = COPTS_TESTS, + local_defines = LOCAL_DEFINES_TESTS, linkopts = [], ) cc_library( @@ -3081,6 +3089,7 @@ cc_library( "@com_google_googletest//:gtest", ], copts = COPTS_TESTS, + local_defines = LOCAL_DEFINES_TESTS, linkopts = [], ) @@ -3095,6 +3104,7 @@ cc_library( "@com_google_googletest//:gtest", ], copts = COPTS_TESTS, + local_defines = LOCAL_DEFINES_TESTS, linkopts = [], ) @@ -3110,7 +3120,7 @@ cc_library( "//src/llm:output_parsers", ], copts = COPTS_TESTS, - local_defines = COMMON_LOCAL_DEFINES, + local_defines = LOCAL_DEFINES_TESTS, ) ovms_cc_library( diff --git a/src/graph_export/BUILD b/src/graph_export/BUILD index 0630805c53..98d000567d 100644 --- a/src/graph_export/BUILD +++ b/src/graph_export/BUILD @@ -15,7 +15,7 @@ # load("@mediapipe//mediapipe/framework/port:build_config.bzl", "mediapipe_cc_proto_library", "mediapipe_proto_library") -load("//:common_settings.bzl", "COPTS_MEDIAPIPE", "ovms_cc_library") +load("//:common_settings.bzl", "ovms_cc_library", "LOCAL_DEFINES_MEDIAPIPE") ovms_cc_library( name = "graph_export", @@ -42,8 +42,8 @@ ovms_cc_library( ], "//:disable_mediapipe": [] }), - additional_copts = COPTS_MEDIAPIPE, visibility = ["//visibility:public"], + additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( diff --git a/src/llm/BUILD b/src/llm/BUILD index 979a42fdc9..e3038a5dbd 100644 --- a/src/llm/BUILD +++ b/src/llm/BUILD @@ -15,7 +15,7 @@ # load("@mediapipe//mediapipe/framework/port:build_config.bzl", "mediapipe_cc_proto_library", "mediapipe_proto_library") -load("//:common_settings.bzl", "ovms_cc_library", "PYBIND_DEPS", "COPTS_PYTHON") +load("//:common_settings.bzl", "ovms_cc_library", "PYBIND_DEPS", "LOCAL_DEFINES_PYTHON") ovms_cc_library( name = "llmcalculator", @@ -35,7 +35,7 @@ ovms_cc_library( "//src:libovmslogging", "//src:libovmsstring_utils",], visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON, + additional_local_defines = LOCAL_DEFINES_PYTHON, alwayslink = 1, # needed, so the calculator can be registered by MediaPipe ) @@ -65,7 +65,7 @@ ovms_cc_library( ":output_parsers", "//third_party:genai",], visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + additional_local_defines = LOCAL_DEFINES_PYTHON, ) ovms_cc_library( @@ -85,7 +85,7 @@ ovms_cc_library( ":output_parsers", "//third_party:genai",], visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + additional_local_defines = LOCAL_DEFINES_PYTHON, ) ovms_cc_library( @@ -105,7 +105,7 @@ ovms_cc_library( ":output_parsers", "//third_party:genai",], visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + additional_local_defines = LOCAL_DEFINES_PYTHON, ) ovms_cc_library( @@ -116,7 +116,7 @@ ovms_cc_library( "//src/port:rapidjson_document", ":apis_tool_schema_wrapper",], visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + additional_local_defines = LOCAL_DEFINES_PYTHON, ) ovms_cc_library( @@ -291,7 +291,7 @@ ovms_cc_library( "//src:libovmslogging", "//third_party:genai",], visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + additional_local_defines = LOCAL_DEFINES_PYTHON, ) ovms_cc_library( @@ -348,7 +348,7 @@ ovms_cc_library( "//:not_disable_python" : [":py_jinja_template_processor"], }), visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + additional_local_defines = LOCAL_DEFINES_PYTHON, ) ovms_cc_library( @@ -362,7 +362,7 @@ ovms_cc_library( "//src:libovmsstatus", ], visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + additional_local_defines = LOCAL_DEFINES_PYTHON, ) ovms_cc_library( @@ -375,6 +375,6 @@ ovms_cc_library( "//src/python:utils", ] + PYBIND_DEPS, visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + additional_local_defines = LOCAL_DEFINES_PYTHON, ) diff --git a/src/mediapipe_internal/BUILD b/src/mediapipe_internal/BUILD index 247b2c70b9..8d7038e8dc 100644 --- a/src/mediapipe_internal/BUILD +++ b/src/mediapipe_internal/BUILD @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -load("//:common_settings.bzl", "COPTS_PYTHON", "COPTS_MEDIAPIPE", "ovms_cc_library") +load("//:common_settings.bzl", "ovms_cc_library", "LOCAL_DEFINES_PYTHON", "LOCAL_DEFINES_MEDIAPIPE") ovms_cc_library( name = "node_initializer", @@ -61,7 +61,7 @@ ovms_cc_library( "@mediapipe//mediapipe/framework:calculator_graph", ], visibility = ["//visibility:public"], - additional_copts = COPTS_MEDIAPIPE, + additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( @@ -94,7 +94,7 @@ ovms_cc_library( "@mediapipe//mediapipe/framework:calculator_graph", ], visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + COPTS_MEDIAPIPE, + additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( @@ -128,7 +128,7 @@ ovms_cc_library( "@mediapipe//mediapipe/framework:calculator_graph", ], visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + COPTS_MEDIAPIPE, + additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( @@ -194,6 +194,6 @@ ovms_cc_library( "@mediapipe//mediapipe/framework/port:parse_text_proto", ], visibility = ["//visibility:public"], - additional_copts = COPTS_PYTHON + COPTS_MEDIAPIPE, + additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, alwayslink = 1, ) From 7dd56efc3f6322c5a8f005446498faa86720dccc Mon Sep 17 00:00:00 2001 From: Adrian Tobiszewski Date: Tue, 26 May 2026 10:39:26 +0200 Subject: [PATCH 2/4] WIP: global COMMON_LOCAL_DEFINES approach (checkpoint) --- common_settings.bzl | 2 +- src/BUILD | 11 +- src/graph_export/BUILD | 3 +- src/llm/BUILD | 751 +++++++++++++++++------------------ src/mediapipe_internal/BUILD | 6 +- 5 files changed, 375 insertions(+), 398 deletions(-) diff --git a/common_settings.bzl b/common_settings.bzl index c5d352a9bb..8bf07c1da7 100644 --- a/common_settings.bzl +++ b/common_settings.bzl @@ -260,7 +260,7 @@ COMMON_FUZZER_LINKOPTS = [ "-fsanitize-coverage=trace-pc", "-static-libasan", ] -COMMON_LOCAL_DEFINES = ["SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE"] +COMMON_LOCAL_DEFINES = ["SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE"] + LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE PYBIND_DEPS = [ "//third_party:python3", "@pybind11//:pybind11_embed", diff --git a/src/BUILD b/src/BUILD index 2890e54e2b..0828c0226a 100644 --- a/src/BUILD +++ b/src/BUILD @@ -17,7 +17,6 @@ load("@bazel_skylib//lib:selects.bzl", "selects") load("@mediapipe//mediapipe/framework:more_selects.bzl", "more_selects") load("//:common_settings.bzl", "COMMON_STATIC_TEST_COPTS", "COMMON_STATIC_LIBS_COPTS", "COMMON_STATIC_LIBS_LINKOPTS", "COMMON_FUZZER_COPTS", "COMMON_FUZZER_LINKOPTS", "COMMON_LOCAL_DEFINES", "COPTS_DROGON", - "LOCAL_DEFINES_PYTHON", "LOCAL_DEFINES_MEDIAPIPE", "create_config_settings", "PYBIND_DEPS", "ovms_cc_library") COPTS_OV_TRACE = select({ @@ -35,7 +34,7 @@ COPTS_CLOUD = select({ COPTS_TESTS = COMMON_STATIC_TEST_COPTS + COPTS_DROGON + COPTS_CLOUD -LOCAL_DEFINES_TESTS = COMMON_LOCAL_DEFINES + LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE +LOCAL_DEFINES_TESTS = COMMON_LOCAL_DEFINES config_setting( name = "windows", @@ -323,7 +322,6 @@ ovms_cc_library( "//:not_disable_mediapipe": ["//third_party:genai"], "//conditions:default": [], }), - additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, visibility = ["//visibility:public",], alwayslink = 1, ) @@ -560,7 +558,6 @@ ovms_cc_library( "@mediapipe//mediapipe/framework/formats:tensor", ], visibility = ["//visibility:public",], - additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, alwayslink = 1, ) ovms_cc_library( @@ -586,7 +583,6 @@ ovms_cc_library( "@mediapipe//mediapipe/framework/formats:tensor", ], visibility = ["//visibility:public",], - additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, alwayslink = 1, ) ovms_cc_library( @@ -661,7 +657,6 @@ ovms_cc_library( "//src/port:rapidjson_writer", ], visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( name = "rest_parser_utils", @@ -768,7 +763,6 @@ ovms_cc_library( "modelmanager", "//src/metrics:libovmsmetrics", ], - additional_local_defines = LOCAL_DEFINES_PYTHON, visibility = ["//visibility:public"], ) ovms_cc_library( @@ -969,7 +963,6 @@ ovms_cc_library( }), visibility = ["//visibility:public",], additional_copts = COPTS_DROGON + COPTS_OV_TRACE, - additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, additional_linkopts = select({ "//conditions:default": ["-lOpenCL"], # TODO make as direct dependency "//src:windows" : ["/DEFAULTLIB:Rpcrt4.lib"],}), @@ -1016,7 +1009,6 @@ ovms_cc_library( ], visibility = ["//visibility:public",], additional_copts = COPTS_OV_TRACE, - additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( name = "notifyreceiver", @@ -1376,7 +1368,6 @@ ovms_cc_library( ], visibility = ["//visibility:public"], additional_copts = COPTS_DROGON, - additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, ) diff --git a/src/graph_export/BUILD b/src/graph_export/BUILD index 98d000567d..8e8bfb24c8 100644 --- a/src/graph_export/BUILD +++ b/src/graph_export/BUILD @@ -15,7 +15,7 @@ # load("@mediapipe//mediapipe/framework/port:build_config.bzl", "mediapipe_cc_proto_library", "mediapipe_proto_library") -load("//:common_settings.bzl", "ovms_cc_library", "LOCAL_DEFINES_MEDIAPIPE") +load("//:common_settings.bzl", "ovms_cc_library") ovms_cc_library( name = "graph_export", @@ -43,7 +43,6 @@ ovms_cc_library( "//:disable_mediapipe": [] }), visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( diff --git a/src/llm/BUILD b/src/llm/BUILD index e3038a5dbd..944233d261 100644 --- a/src/llm/BUILD +++ b/src/llm/BUILD @@ -1,380 +1,371 @@ -# -# Copyright (c) 2024 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -load("@mediapipe//mediapipe/framework/port:build_config.bzl", "mediapipe_cc_proto_library", "mediapipe_proto_library") -load("//:common_settings.bzl", "ovms_cc_library", "PYBIND_DEPS", "LOCAL_DEFINES_PYTHON") - -ovms_cc_library( - name = "llmcalculator", - srcs = ["http_llm_calculator.cc", - "llm_node_initializer.cpp"], - deps = [ - "//third_party:openvino", - "@mediapipe//mediapipe/framework:calculator_framework", - "@com_github_tencent_rapidjson//:rapidjson", - "//src/mediapipe_internal:graph_side_packets", - "//src/kfserving_api:kfserving_api_cpp", - "//src:libovmsprofiler", - ":genai_servables", - "//src:httppayload", - "//third_party:genai", - "//src/mediapipe_internal:node_initializer", - "//src:libovmslogging", - "//src:libovmsstring_utils",], - visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON, - alwayslink = 1, # needed, so the calculator can be registered by MediaPipe -) - -mediapipe_proto_library( - name = "llmcalculator_proto", # llmcalculator_cc_proto - just mediapipe stuff with mediapipe_proto_library adding nonvisible target - srcs = ["llm_calculator.proto"], - visibility = ["//visibility:private"], - deps = [ - "@mediapipe//mediapipe/framework:calculator_options_proto", - "@mediapipe//mediapipe/framework:calculator_proto", - ], -) - -ovms_cc_library( - name = "openai_api_handler", - hdrs = ["apis/openai_api_handler.hpp"], - srcs = ["apis/openai_api_handler.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status - "//src:libovmsprofiler", - "//third_party:curl", - "//src:image_conversion", - "//src/filesystem:libovmsfilesystem", - "@stb//:image", - ":openai_request", - ":output_parsers", - "//third_party:genai",], - visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON, -) - -ovms_cc_library( - name = "openai_completions_api_handler", - hdrs = ["apis/openai_completions.hpp", "apis/openai_json_response.hpp"], - srcs = ["apis/openai_completions.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status - "//src:libovmsprofiler", - "//third_party:curl", - "//src:image_conversion", - "//src/filesystem:libovmsfilesystem", - "@stb//:image", - ":openai_api_handler", - ":openai_request", - ":output_parsers", - "//third_party:genai",], - visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON, -) - -ovms_cc_library( - name = "openai_responses_handler", - hdrs = ["apis/openai_responses.hpp"], - srcs = ["apis/openai_responses.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status - "//src:libovmsprofiler", - "//third_party:curl", - "//src:image_conversion", - "//src/filesystem:libovmsfilesystem", - "@stb//:image", - ":openai_api_handler", - ":openai_request", - ":output_parsers", - "//third_party:genai",], - visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON, -) - -ovms_cc_library( - name = "openai_request", - hdrs = ["apis/openai_request.hpp"], - srcs = [], - deps = ["//third_party:genai", - "//src/port:rapidjson_document", - ":apis_tool_schema_wrapper",], - visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON, -) - -ovms_cc_library( - name = "apis_tool_schema_wrapper", - hdrs = ["apis/tool_schema_wrapper.hpp"], - deps = [ - "//src/port:rapidjson_document", - ], - visibility = ["//visibility:public"], -) -ovms_cc_library( - name = "partial_json_builder", - hdrs = ["io_processing/partial_json_builder.hpp"], - srcs = ["io_processing/partial_json_builder.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_stringbuffer", - "//src/port:rapidjson_writer", - "//src/port:rapidjson_document", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "io_processing_utils", - hdrs = ["io_processing/utils.hpp"], - srcs = ["io_processing/utils.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_stringbuffer", - "//src/port:rapidjson_writer", - "//src/port:rapidjson_document", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "io_processing_base_output_parser", - hdrs = ["io_processing/base_output_parser.hpp"], - srcs = ["io_processing/base_output_parser.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_stringbuffer", - "//src/port:rapidjson_writer", - "//src/port:rapidjson_document", - ":io_processing_utils", - "//third_party:genai", - ], -) -ovms_cc_library( - name = "io_processing_qwen3coder_tool_parser", - hdrs = ["io_processing/qwen3coder/qwen3coder_tool_parser.hpp"], - srcs = ["io_processing/qwen3coder/qwen3coder_tool_parser.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src:libovmslogging", - "//src:libovmsstatus", - "//src/utils:rapidjson_utils", - ":io_processing_utils", - ":io_processing_base_output_parser", - ":apis_tool_schema_wrapper", - "//third_party:genai", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "io_processing_lfm2_tool_parser", - hdrs = ["io_processing/lfm2/lfm2_tool_parser.hpp"], - srcs = ["io_processing/lfm2/lfm2_tool_parser.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_document", - "//src:libovmslogging", - "//src:libovmsstring_utils", - ":io_processing_utils", - ":io_processing_base_output_parser", - "//third_party:genai", - ], - visibility = ["//visibility:public"], -) -ovms_cc_library( - name = "io_processing_gemma4_tool_parser", - hdrs = ["io_processing/gemma4/gemma4_tool_parser.hpp", "io_processing/gemma4/gemma4_reasoning_parser.hpp"], - srcs = ["io_processing/gemma4/gemma4_tool_parser.cpp", "io_processing/gemma4/gemma4_reasoning_parser.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_document", - "//src:libovmslogging", - "//src:libovmsstring_utils", - ":io_processing_utils", - ":io_processing_base_output_parser", - ":io_processing_qwen3_reasoning_parser", - "//third_party:genai", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "io_processing_qwen3_reasoning_parser", - hdrs = ["io_processing/qwen3/reasoning_parser.hpp"], - srcs = ["io_processing/qwen3/reasoning_parser.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_document", - "//src:libovmslogging", - "//src:libovmsstring_utils", - ":io_processing_utils", - ":io_processing_base_output_parser", - "//third_party:genai", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( # TODO split further so we don't have to recompile everything when changing one parser ... - name = "output_parsers", - hdrs = [ - "io_processing/hermes3/tool_parser.hpp", - "io_processing/llama3/tool_parser.hpp", - "io_processing/phi4/tool_parser.hpp", - "io_processing/devstral/tool_parser.hpp", - "io_processing/mistral/tool_parser.hpp", - "io_processing/gptoss/reasoning_parser.hpp", - "io_processing/gptoss/tool_parser.hpp", - "io_processing/gptoss/harmony.hpp", - "io_processing/output_parser.hpp", - ], - srcs = [ - "io_processing/hermes3/tool_parser.cpp", - "io_processing/llama3/tool_parser.cpp", - "io_processing/phi4/tool_parser.cpp", - "io_processing/devstral/tool_parser.cpp", - "io_processing/mistral/tool_parser.cpp", - "io_processing/gptoss/reasoning_parser.cpp", - "io_processing/gptoss/tool_parser.cpp", - "io_processing/gptoss/harmony.cpp", - "io_processing/output_parser.cpp", - ], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_document", - "//src:libovmslogging", - "//src:libovmsstring_utils", - "//third_party:genai", - ":partial_json_builder", - ":io_processing_base_output_parser", - ":io_processing_qwen3coder_tool_parser", - ":io_processing_lfm2_tool_parser", - ":io_processing_gemma4_tool_parser", - ":io_processing_qwen3_reasoning_parser", - ":io_processing_utils", - ":apis_tool_schema_wrapper", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "generation_config_builders", - hdrs = ["io_processing/base_generation_config_builder.hpp", - "io_processing/phi4/generation_config_builder.hpp", - "io_processing/llama3/generation_config_builder.hpp", - "io_processing/hermes3/generation_config_builder.hpp", - "io_processing/devstral/generation_config_builder.hpp", - "io_processing/generation_config_builder.hpp"], - srcs = ["io_processing/base_generation_config_builder.cpp", - "io_processing/phi4/generation_config_builder.cpp", - "io_processing/llama3/generation_config_builder.cpp", - "io_processing/hermes3/generation_config_builder.cpp", - "io_processing/devstral/generation_config_builder.cpp"], - deps = [ - ":openai_request", - "//src:libovmslogging", - "//third_party:genai",], - visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON, -) - -ovms_cc_library( - name = "genai_servables", - hdrs = ["servable.hpp", - "servable_initializer.hpp", - "language_model/continuous_batching/servable.hpp", - "language_model/continuous_batching/llm_executor.hpp", - "language_model/continuous_batching/servable_initializer.hpp", - "visual_language_model/continuous_batching/servable.hpp", - "language_model/legacy/servable.hpp", - "language_model/legacy/servable_initializer.hpp", - "language_model/legacy/legacy_executor.hpp", - "visual_language_model/legacy/servable.hpp", - "visual_language_model/legacy/servable_initializer.hpp", - "visual_language_model/legacy/legacy_executor.hpp", - "text_utils.hpp"], - srcs = ["servable.cpp", - "servable_initializer.cpp", - "language_model/continuous_batching/servable.cpp", - "language_model/continuous_batching/servable_initializer.cpp", - "visual_language_model/continuous_batching/servable.cpp", - "language_model/legacy/servable.cpp", - "language_model/legacy/servable_initializer.cpp", - "language_model/legacy/legacy_executor.cpp", - "visual_language_model/legacy/servable.cpp", - "visual_language_model/legacy/servable_initializer.cpp", - "visual_language_model/legacy/legacy_executor.cpp"], - deps = [ - "//third_party:openvino", - "@mediapipe//mediapipe/framework:calculator_framework", - "@com_github_tencent_rapidjson//:rapidjson", - "//src:executor_base", - "//src:libmodelconfigjsonparser", - "//src:libovmslogging", - "//src:libovmsstatus", - "//src/mediapipe_internal:mediapipe_utils", - "//src:libovmsprofiler", - "//src:libovmsstring_utils", - "//src/filesystem:libovmsfilesystem", - "//src/tokenize:tokenize_parser", - "llmcalculator_cc_proto", - ":openai_completions_api_handler", - ":openai_responses_handler", - ":generation_config_builders", - "//src:httppayload", - "//src:libhttpclientconnection", - "//src:sse_utils", - "//src:libovms_systeminfo", - "//src:libovms_config", - "//src:libovms_ov_utils", - "//third_party:genai",] + select({ - "//:disable_python": [], - "//:not_disable_python" : [":py_jinja_template_processor"], - }), - visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON, -) - -ovms_cc_library( - name = "execution_context_utils", - hdrs = ["execution_context_utils.hpp"], - srcs = ["execution_context_utils.cpp"], - deps = [ - ":genai_servables", - "//src/mediapipe_internal:graph_side_packets", - "//src:libovmslogging", - "//src:libovmsstatus", - ], - visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON, -) - -ovms_cc_library( - name = "py_jinja_template_processor", - hdrs = ["py_jinja_template_processor.hpp"], - srcs = ["py_jinja_template_processor.cpp"], - deps = ["@mediapipe//mediapipe/framework:calculator_framework", - "//third_party:openvino", - "//src:libovmslogging", - "//src/python:utils", - ] + PYBIND_DEPS, - visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON, -) - +# +# Copyright (c) 2024 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +load("@mediapipe//mediapipe/framework/port:build_config.bzl", "mediapipe_cc_proto_library", "mediapipe_proto_library") +load("//:common_settings.bzl", "ovms_cc_library", "PYBIND_DEPS") + +ovms_cc_library( + name = "llmcalculator", + srcs = ["http_llm_calculator.cc", + "llm_node_initializer.cpp"], + deps = [ + "//third_party:openvino", + "@mediapipe//mediapipe/framework:calculator_framework", + "@com_github_tencent_rapidjson//:rapidjson", + "//src/mediapipe_internal:graph_side_packets", + "//src/kfserving_api:kfserving_api_cpp", + "//src:libovmsprofiler", + ":genai_servables", + "//src:httppayload", + "//third_party:genai", + "//src/mediapipe_internal:node_initializer", + "//src:libovmslogging", + "//src:libovmsstring_utils",], + visibility = ["//visibility:public"], + alwayslink = 1, # needed, so the calculator can be registered by MediaPipe +) + +mediapipe_proto_library( + name = "llmcalculator_proto", # llmcalculator_cc_proto - just mediapipe stuff with mediapipe_proto_library adding nonvisible target + srcs = ["llm_calculator.proto"], + visibility = ["//visibility:private"], + deps = [ + "@mediapipe//mediapipe/framework:calculator_options_proto", + "@mediapipe//mediapipe/framework:calculator_proto", + ], +) + +ovms_cc_library( + name = "openai_api_handler", + hdrs = ["apis/openai_api_handler.hpp"], + srcs = ["apis/openai_api_handler.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status + "//src:libovmsprofiler", + "//third_party:curl", + "//src:image_conversion", + "//src/filesystem:libovmsfilesystem", + "@stb//:image", + ":openai_request", + ":output_parsers", + "//third_party:genai",], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "openai_completions_api_handler", + hdrs = ["apis/openai_completions.hpp", "apis/openai_json_response.hpp"], + srcs = ["apis/openai_completions.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status + "//src:libovmsprofiler", + "//third_party:curl", + "//src:image_conversion", + "//src/filesystem:libovmsfilesystem", + "@stb//:image", + ":openai_api_handler", + ":openai_request", + ":output_parsers", + "//third_party:genai",], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "openai_responses_handler", + hdrs = ["apis/openai_responses.hpp"], + srcs = ["apis/openai_responses.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status + "//src:libovmsprofiler", + "//third_party:curl", + "//src:image_conversion", + "//src/filesystem:libovmsfilesystem", + "@stb//:image", + ":openai_api_handler", + ":openai_request", + ":output_parsers", + "//third_party:genai",], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "openai_request", + hdrs = ["apis/openai_request.hpp"], + srcs = [], + deps = ["//third_party:genai", + "//src/port:rapidjson_document", + ":apis_tool_schema_wrapper",], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "apis_tool_schema_wrapper", + hdrs = ["apis/tool_schema_wrapper.hpp"], + deps = [ + "//src/port:rapidjson_document", + ], + visibility = ["//visibility:public"], +) +ovms_cc_library( + name = "partial_json_builder", + hdrs = ["io_processing/partial_json_builder.hpp"], + srcs = ["io_processing/partial_json_builder.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_stringbuffer", + "//src/port:rapidjson_writer", + "//src/port:rapidjson_document", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "io_processing_utils", + hdrs = ["io_processing/utils.hpp"], + srcs = ["io_processing/utils.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_stringbuffer", + "//src/port:rapidjson_writer", + "//src/port:rapidjson_document", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "io_processing_base_output_parser", + hdrs = ["io_processing/base_output_parser.hpp"], + srcs = ["io_processing/base_output_parser.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_stringbuffer", + "//src/port:rapidjson_writer", + "//src/port:rapidjson_document", + ":io_processing_utils", + "//third_party:genai", + ], +) +ovms_cc_library( + name = "io_processing_qwen3coder_tool_parser", + hdrs = ["io_processing/qwen3coder/qwen3coder_tool_parser.hpp"], + srcs = ["io_processing/qwen3coder/qwen3coder_tool_parser.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src:libovmslogging", + "//src:libovmsstatus", + "//src/utils:rapidjson_utils", + ":io_processing_utils", + ":io_processing_base_output_parser", + ":apis_tool_schema_wrapper", + "//third_party:genai", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "io_processing_lfm2_tool_parser", + hdrs = ["io_processing/lfm2/lfm2_tool_parser.hpp"], + srcs = ["io_processing/lfm2/lfm2_tool_parser.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_document", + "//src:libovmslogging", + "//src:libovmsstring_utils", + ":io_processing_utils", + ":io_processing_base_output_parser", + "//third_party:genai", + ], + visibility = ["//visibility:public"], +) +ovms_cc_library( + name = "io_processing_gemma4_tool_parser", + hdrs = ["io_processing/gemma4/gemma4_tool_parser.hpp", "io_processing/gemma4/gemma4_reasoning_parser.hpp"], + srcs = ["io_processing/gemma4/gemma4_tool_parser.cpp", "io_processing/gemma4/gemma4_reasoning_parser.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_document", + "//src:libovmslogging", + "//src:libovmsstring_utils", + ":io_processing_utils", + ":io_processing_base_output_parser", + ":io_processing_qwen3_reasoning_parser", + "//third_party:genai", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "io_processing_qwen3_reasoning_parser", + hdrs = ["io_processing/qwen3/reasoning_parser.hpp"], + srcs = ["io_processing/qwen3/reasoning_parser.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_document", + "//src:libovmslogging", + "//src:libovmsstring_utils", + ":io_processing_utils", + ":io_processing_base_output_parser", + "//third_party:genai", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( # TODO split further so we don't have to recompile everything when changing one parser ... + name = "output_parsers", + hdrs = [ + "io_processing/hermes3/tool_parser.hpp", + "io_processing/llama3/tool_parser.hpp", + "io_processing/phi4/tool_parser.hpp", + "io_processing/devstral/tool_parser.hpp", + "io_processing/mistral/tool_parser.hpp", + "io_processing/gptoss/reasoning_parser.hpp", + "io_processing/gptoss/tool_parser.hpp", + "io_processing/gptoss/harmony.hpp", + "io_processing/output_parser.hpp", + ], + srcs = [ + "io_processing/hermes3/tool_parser.cpp", + "io_processing/llama3/tool_parser.cpp", + "io_processing/phi4/tool_parser.cpp", + "io_processing/devstral/tool_parser.cpp", + "io_processing/mistral/tool_parser.cpp", + "io_processing/gptoss/reasoning_parser.cpp", + "io_processing/gptoss/tool_parser.cpp", + "io_processing/gptoss/harmony.cpp", + "io_processing/output_parser.cpp", + ], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_document", + "//src:libovmslogging", + "//src:libovmsstring_utils", + "//third_party:genai", + ":partial_json_builder", + ":io_processing_base_output_parser", + ":io_processing_qwen3coder_tool_parser", + ":io_processing_lfm2_tool_parser", + ":io_processing_gemma4_tool_parser", + ":io_processing_qwen3_reasoning_parser", + ":io_processing_utils", + ":apis_tool_schema_wrapper", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "generation_config_builders", + hdrs = ["io_processing/base_generation_config_builder.hpp", + "io_processing/phi4/generation_config_builder.hpp", + "io_processing/llama3/generation_config_builder.hpp", + "io_processing/hermes3/generation_config_builder.hpp", + "io_processing/devstral/generation_config_builder.hpp", + "io_processing/generation_config_builder.hpp"], + srcs = ["io_processing/base_generation_config_builder.cpp", + "io_processing/phi4/generation_config_builder.cpp", + "io_processing/llama3/generation_config_builder.cpp", + "io_processing/hermes3/generation_config_builder.cpp", + "io_processing/devstral/generation_config_builder.cpp"], + deps = [ + ":openai_request", + "//src:libovmslogging", + "//third_party:genai",], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "genai_servables", + hdrs = ["servable.hpp", + "servable_initializer.hpp", + "language_model/continuous_batching/servable.hpp", + "language_model/continuous_batching/llm_executor.hpp", + "language_model/continuous_batching/servable_initializer.hpp", + "visual_language_model/continuous_batching/servable.hpp", + "language_model/legacy/servable.hpp", + "language_model/legacy/servable_initializer.hpp", + "language_model/legacy/legacy_executor.hpp", + "visual_language_model/legacy/servable.hpp", + "visual_language_model/legacy/servable_initializer.hpp", + "visual_language_model/legacy/legacy_executor.hpp", + "text_utils.hpp"], + srcs = ["servable.cpp", + "servable_initializer.cpp", + "language_model/continuous_batching/servable.cpp", + "language_model/continuous_batching/servable_initializer.cpp", + "visual_language_model/continuous_batching/servable.cpp", + "language_model/legacy/servable.cpp", + "language_model/legacy/servable_initializer.cpp", + "language_model/legacy/legacy_executor.cpp", + "visual_language_model/legacy/servable.cpp", + "visual_language_model/legacy/servable_initializer.cpp", + "visual_language_model/legacy/legacy_executor.cpp"], + deps = [ + "//third_party:openvino", + "@mediapipe//mediapipe/framework:calculator_framework", + "@com_github_tencent_rapidjson//:rapidjson", + "//src:executor_base", + "//src:libmodelconfigjsonparser", + "//src:libovmslogging", + "//src:libovmsstatus", + "//src/mediapipe_internal:mediapipe_utils", + "//src:libovmsprofiler", + "//src:libovmsstring_utils", + "//src/filesystem:libovmsfilesystem", + "//src/tokenize:tokenize_parser", + "llmcalculator_cc_proto", + ":openai_completions_api_handler", + ":openai_responses_handler", + ":generation_config_builders", + "//src:httppayload", + "//src:libhttpclientconnection", + "//src:sse_utils", + "//src:libovms_systeminfo", + "//src:libovms_config", + "//src:libovms_ov_utils", + "//third_party:genai",] + select({ + "//:disable_python": [], + "//:not_disable_python" : [":py_jinja_template_processor"], + }), + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "execution_context_utils", + hdrs = ["execution_context_utils.hpp"], + srcs = ["execution_context_utils.cpp"], + deps = [ + ":genai_servables", + "//src/mediapipe_internal:graph_side_packets", + "//src:libovmslogging", + "//src:libovmsstatus", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "py_jinja_template_processor", + hdrs = ["py_jinja_template_processor.hpp"], + srcs = ["py_jinja_template_processor.cpp"], + deps = ["@mediapipe//mediapipe/framework:calculator_framework", + "//third_party:openvino", + "//src:libovmslogging", + "//src/python:utils", + ] + PYBIND_DEPS, + visibility = ["//visibility:public"], +) + diff --git a/src/mediapipe_internal/BUILD b/src/mediapipe_internal/BUILD index 8d7038e8dc..e47f09bb39 100644 --- a/src/mediapipe_internal/BUILD +++ b/src/mediapipe_internal/BUILD @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -load("//:common_settings.bzl", "ovms_cc_library", "LOCAL_DEFINES_PYTHON", "LOCAL_DEFINES_MEDIAPIPE") +load("//:common_settings.bzl", "ovms_cc_library") ovms_cc_library( name = "node_initializer", @@ -61,7 +61,6 @@ ovms_cc_library( "@mediapipe//mediapipe/framework:calculator_graph", ], visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( @@ -94,7 +93,6 @@ ovms_cc_library( "@mediapipe//mediapipe/framework:calculator_graph", ], visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( @@ -128,7 +126,6 @@ ovms_cc_library( "@mediapipe//mediapipe/framework:calculator_graph", ], visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, ) ovms_cc_library( @@ -194,6 +191,5 @@ ovms_cc_library( "@mediapipe//mediapipe/framework/port:parse_text_proto", ], visibility = ["//visibility:public"], - additional_local_defines = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE, alwayslink = 1, ) From cd09a07de3ba0e1cdea23c114db97011163bbe82 Mon Sep 17 00:00:00 2001 From: Adrian Tobiszewski Date: Wed, 27 May 2026 10:16:48 +0200 Subject: [PATCH 3/4] Use transitive defines in ovms_cc_library for PYTHON_DISABLE/MEDIAPIPE_DISABLE Replace per-target copts/local_defines with transitive defines propagated via ovms_cc_library macro. All dependents automatically get correct preprocessor state without per-target configuration. - Add COMMON_DEFINES (select-based) to ovms_cc_library defines field - Remove COPTS_PYTHON, COPTS_MEDIAPIPE from src/BUILD - Clean up LOCAL_DEFINES_TESTS to only contain SPDLOG - Move rerank_api_handler and embeddings_handler_tests into mediapipe select - Remove additional_local_defines from src/llm/BUILD, src/mediapipe_internal/BUILD, src/graph_export/BUILD --- common_settings.bzl | 7 ++++++- src/BUILD | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/common_settings.bzl b/common_settings.bzl index 8bf07c1da7..ffe6d4c393 100644 --- a/common_settings.bzl +++ b/common_settings.bzl @@ -28,6 +28,8 @@ load("//:distro.bzl", "distro_flag") def ovms_cc_library(**kwargs): """ Wrapper for cc_library that sets default copts and linkopts if not provided. + Transitive defines (PYTHON_DISABLE, MEDIAPIPE_DISABLE) are always set via 'defines' + so that any target depending on an ovms_cc_library automatically gets these macros. """ if "copts" not in kwargs: kwargs["copts"] = COMMON_STATIC_LIBS_COPTS + select({ @@ -41,6 +43,8 @@ def ovms_cc_library(**kwargs): }) if "local_defines" not in kwargs: kwargs["local_defines"] = COMMON_LOCAL_DEFINES + if "defines" not in kwargs: + kwargs["defines"] = COMMON_DEFINES if "additional_copts" in kwargs: kwargs["copts"] += kwargs.pop("additional_copts") if "additional_linkopts" in kwargs: @@ -260,7 +264,8 @@ COMMON_FUZZER_LINKOPTS = [ "-fsanitize-coverage=trace-pc", "-static-libasan", ] -COMMON_LOCAL_DEFINES = ["SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE"] + LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE +COMMON_LOCAL_DEFINES = ["SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE"] +COMMON_DEFINES = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE PYBIND_DEPS = [ "//third_party:python3", "@pybind11//:pybind11_embed", diff --git a/src/BUILD b/src/BUILD index 0828c0226a..2899b61968 100644 --- a/src/BUILD +++ b/src/BUILD @@ -2555,8 +2555,6 @@ cc_test( ":test_utils", ":test_test_with_temp_dir", ":test_platform_utils", - "//src/rerank:rerank_api_handler", - ":embeddings_handler_tests", ":tokenize_parser_tests", ":inferencerequest_test", ":libtest_environment", @@ -2596,6 +2594,8 @@ cc_test( "@mediapipe//mediapipe/calculators/ovms:ovms_calculator", "@mediapipe//mediapipe/framework:calculator_runner", ":text2image_test", + "//src/rerank:rerank_api_handler", + ":embeddings_handler_tests", ], "//:disable_mediapipe" : [ From 633489b7f1eb8521a41e135541e2847b0273d168 Mon Sep 17 00:00:00 2001 From: Adrian Tobiszewski Date: Fri, 29 May 2026 13:35:13 +0200 Subject: [PATCH 4/4] Rename LOCAL_DEFINES_PYTHON/MEDIAPIPE to DEFINES_PYTHON/MEDIAPIPE --- common_settings.bzl | 6 +- src/llm/BUILD | 742 ++++++++++++++++++++++---------------------- 2 files changed, 374 insertions(+), 374 deletions(-) diff --git a/common_settings.bzl b/common_settings.bzl index ffe6d4c393..28a9c21958 100644 --- a/common_settings.bzl +++ b/common_settings.bzl @@ -245,11 +245,11 @@ COPTS_DROGON = select({ "//conditions:default": ["-DUSE_DROGON=0"], "//:enable_drogon" : ["-DUSE_DROGON=1"], }) -LOCAL_DEFINES_PYTHON = select({ +DEFINES_PYTHON = select({ "//conditions:default": ["PYTHON_DISABLE=1"], "//:not_disable_python" : ["PYTHON_DISABLE=0"], }) -LOCAL_DEFINES_MEDIAPIPE = select({ +DEFINES_MEDIAPIPE = select({ "//conditions:default": ["MEDIAPIPE_DISABLE=1"], "//:not_disable_mediapipe" : ["MEDIAPIPE_DISABLE=0"], }) @@ -265,7 +265,7 @@ COMMON_FUZZER_LINKOPTS = [ "-static-libasan", ] COMMON_LOCAL_DEFINES = ["SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE"] -COMMON_DEFINES = LOCAL_DEFINES_PYTHON + LOCAL_DEFINES_MEDIAPIPE +COMMON_DEFINES = DEFINES_PYTHON + DEFINES_MEDIAPIPE PYBIND_DEPS = [ "//third_party:python3", "@pybind11//:pybind11_embed", diff --git a/src/llm/BUILD b/src/llm/BUILD index 944233d261..0195973540 100644 --- a/src/llm/BUILD +++ b/src/llm/BUILD @@ -1,371 +1,371 @@ -# -# Copyright (c) 2024 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -load("@mediapipe//mediapipe/framework/port:build_config.bzl", "mediapipe_cc_proto_library", "mediapipe_proto_library") -load("//:common_settings.bzl", "ovms_cc_library", "PYBIND_DEPS") - -ovms_cc_library( - name = "llmcalculator", - srcs = ["http_llm_calculator.cc", - "llm_node_initializer.cpp"], - deps = [ - "//third_party:openvino", - "@mediapipe//mediapipe/framework:calculator_framework", - "@com_github_tencent_rapidjson//:rapidjson", - "//src/mediapipe_internal:graph_side_packets", - "//src/kfserving_api:kfserving_api_cpp", - "//src:libovmsprofiler", - ":genai_servables", - "//src:httppayload", - "//third_party:genai", - "//src/mediapipe_internal:node_initializer", - "//src:libovmslogging", - "//src:libovmsstring_utils",], - visibility = ["//visibility:public"], - alwayslink = 1, # needed, so the calculator can be registered by MediaPipe -) - -mediapipe_proto_library( - name = "llmcalculator_proto", # llmcalculator_cc_proto - just mediapipe stuff with mediapipe_proto_library adding nonvisible target - srcs = ["llm_calculator.proto"], - visibility = ["//visibility:private"], - deps = [ - "@mediapipe//mediapipe/framework:calculator_options_proto", - "@mediapipe//mediapipe/framework:calculator_proto", - ], -) - -ovms_cc_library( - name = "openai_api_handler", - hdrs = ["apis/openai_api_handler.hpp"], - srcs = ["apis/openai_api_handler.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status - "//src:libovmsprofiler", - "//third_party:curl", - "//src:image_conversion", - "//src/filesystem:libovmsfilesystem", - "@stb//:image", - ":openai_request", - ":output_parsers", - "//third_party:genai",], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "openai_completions_api_handler", - hdrs = ["apis/openai_completions.hpp", "apis/openai_json_response.hpp"], - srcs = ["apis/openai_completions.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status - "//src:libovmsprofiler", - "//third_party:curl", - "//src:image_conversion", - "//src/filesystem:libovmsfilesystem", - "@stb//:image", - ":openai_api_handler", - ":openai_request", - ":output_parsers", - "//third_party:genai",], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "openai_responses_handler", - hdrs = ["apis/openai_responses.hpp"], - srcs = ["apis/openai_responses.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status - "//src:libovmsprofiler", - "//third_party:curl", - "//src:image_conversion", - "//src/filesystem:libovmsfilesystem", - "@stb//:image", - ":openai_api_handler", - ":openai_request", - ":output_parsers", - "//third_party:genai",], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "openai_request", - hdrs = ["apis/openai_request.hpp"], - srcs = [], - deps = ["//third_party:genai", - "//src/port:rapidjson_document", - ":apis_tool_schema_wrapper",], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "apis_tool_schema_wrapper", - hdrs = ["apis/tool_schema_wrapper.hpp"], - deps = [ - "//src/port:rapidjson_document", - ], - visibility = ["//visibility:public"], -) -ovms_cc_library( - name = "partial_json_builder", - hdrs = ["io_processing/partial_json_builder.hpp"], - srcs = ["io_processing/partial_json_builder.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_stringbuffer", - "//src/port:rapidjson_writer", - "//src/port:rapidjson_document", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "io_processing_utils", - hdrs = ["io_processing/utils.hpp"], - srcs = ["io_processing/utils.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_stringbuffer", - "//src/port:rapidjson_writer", - "//src/port:rapidjson_document", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "io_processing_base_output_parser", - hdrs = ["io_processing/base_output_parser.hpp"], - srcs = ["io_processing/base_output_parser.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_stringbuffer", - "//src/port:rapidjson_writer", - "//src/port:rapidjson_document", - ":io_processing_utils", - "//third_party:genai", - ], -) -ovms_cc_library( - name = "io_processing_qwen3coder_tool_parser", - hdrs = ["io_processing/qwen3coder/qwen3coder_tool_parser.hpp"], - srcs = ["io_processing/qwen3coder/qwen3coder_tool_parser.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src:libovmslogging", - "//src:libovmsstatus", - "//src/utils:rapidjson_utils", - ":io_processing_utils", - ":io_processing_base_output_parser", - ":apis_tool_schema_wrapper", - "//third_party:genai", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "io_processing_lfm2_tool_parser", - hdrs = ["io_processing/lfm2/lfm2_tool_parser.hpp"], - srcs = ["io_processing/lfm2/lfm2_tool_parser.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_document", - "//src:libovmslogging", - "//src:libovmsstring_utils", - ":io_processing_utils", - ":io_processing_base_output_parser", - "//third_party:genai", - ], - visibility = ["//visibility:public"], -) -ovms_cc_library( - name = "io_processing_gemma4_tool_parser", - hdrs = ["io_processing/gemma4/gemma4_tool_parser.hpp", "io_processing/gemma4/gemma4_reasoning_parser.hpp"], - srcs = ["io_processing/gemma4/gemma4_tool_parser.cpp", "io_processing/gemma4/gemma4_reasoning_parser.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_document", - "//src:libovmslogging", - "//src:libovmsstring_utils", - ":io_processing_utils", - ":io_processing_base_output_parser", - ":io_processing_qwen3_reasoning_parser", - "//third_party:genai", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "io_processing_qwen3_reasoning_parser", - hdrs = ["io_processing/qwen3/reasoning_parser.hpp"], - srcs = ["io_processing/qwen3/reasoning_parser.cpp"], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_document", - "//src:libovmslogging", - "//src:libovmsstring_utils", - ":io_processing_utils", - ":io_processing_base_output_parser", - "//third_party:genai", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( # TODO split further so we don't have to recompile everything when changing one parser ... - name = "output_parsers", - hdrs = [ - "io_processing/hermes3/tool_parser.hpp", - "io_processing/llama3/tool_parser.hpp", - "io_processing/phi4/tool_parser.hpp", - "io_processing/devstral/tool_parser.hpp", - "io_processing/mistral/tool_parser.hpp", - "io_processing/gptoss/reasoning_parser.hpp", - "io_processing/gptoss/tool_parser.hpp", - "io_processing/gptoss/harmony.hpp", - "io_processing/output_parser.hpp", - ], - srcs = [ - "io_processing/hermes3/tool_parser.cpp", - "io_processing/llama3/tool_parser.cpp", - "io_processing/phi4/tool_parser.cpp", - "io_processing/devstral/tool_parser.cpp", - "io_processing/mistral/tool_parser.cpp", - "io_processing/gptoss/reasoning_parser.cpp", - "io_processing/gptoss/tool_parser.cpp", - "io_processing/gptoss/harmony.cpp", - "io_processing/output_parser.cpp", - ], - deps = [ - "@com_github_tencent_rapidjson//:rapidjson", - "//src/port:rapidjson_document", - "//src:libovmslogging", - "//src:libovmsstring_utils", - "//third_party:genai", - ":partial_json_builder", - ":io_processing_base_output_parser", - ":io_processing_qwen3coder_tool_parser", - ":io_processing_lfm2_tool_parser", - ":io_processing_gemma4_tool_parser", - ":io_processing_qwen3_reasoning_parser", - ":io_processing_utils", - ":apis_tool_schema_wrapper", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "generation_config_builders", - hdrs = ["io_processing/base_generation_config_builder.hpp", - "io_processing/phi4/generation_config_builder.hpp", - "io_processing/llama3/generation_config_builder.hpp", - "io_processing/hermes3/generation_config_builder.hpp", - "io_processing/devstral/generation_config_builder.hpp", - "io_processing/generation_config_builder.hpp"], - srcs = ["io_processing/base_generation_config_builder.cpp", - "io_processing/phi4/generation_config_builder.cpp", - "io_processing/llama3/generation_config_builder.cpp", - "io_processing/hermes3/generation_config_builder.cpp", - "io_processing/devstral/generation_config_builder.cpp"], - deps = [ - ":openai_request", - "//src:libovmslogging", - "//third_party:genai",], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "genai_servables", - hdrs = ["servable.hpp", - "servable_initializer.hpp", - "language_model/continuous_batching/servable.hpp", - "language_model/continuous_batching/llm_executor.hpp", - "language_model/continuous_batching/servable_initializer.hpp", - "visual_language_model/continuous_batching/servable.hpp", - "language_model/legacy/servable.hpp", - "language_model/legacy/servable_initializer.hpp", - "language_model/legacy/legacy_executor.hpp", - "visual_language_model/legacy/servable.hpp", - "visual_language_model/legacy/servable_initializer.hpp", - "visual_language_model/legacy/legacy_executor.hpp", - "text_utils.hpp"], - srcs = ["servable.cpp", - "servable_initializer.cpp", - "language_model/continuous_batching/servable.cpp", - "language_model/continuous_batching/servable_initializer.cpp", - "visual_language_model/continuous_batching/servable.cpp", - "language_model/legacy/servable.cpp", - "language_model/legacy/servable_initializer.cpp", - "language_model/legacy/legacy_executor.cpp", - "visual_language_model/legacy/servable.cpp", - "visual_language_model/legacy/servable_initializer.cpp", - "visual_language_model/legacy/legacy_executor.cpp"], - deps = [ - "//third_party:openvino", - "@mediapipe//mediapipe/framework:calculator_framework", - "@com_github_tencent_rapidjson//:rapidjson", - "//src:executor_base", - "//src:libmodelconfigjsonparser", - "//src:libovmslogging", - "//src:libovmsstatus", - "//src/mediapipe_internal:mediapipe_utils", - "//src:libovmsprofiler", - "//src:libovmsstring_utils", - "//src/filesystem:libovmsfilesystem", - "//src/tokenize:tokenize_parser", - "llmcalculator_cc_proto", - ":openai_completions_api_handler", - ":openai_responses_handler", - ":generation_config_builders", - "//src:httppayload", - "//src:libhttpclientconnection", - "//src:sse_utils", - "//src:libovms_systeminfo", - "//src:libovms_config", - "//src:libovms_ov_utils", - "//third_party:genai",] + select({ - "//:disable_python": [], - "//:not_disable_python" : [":py_jinja_template_processor"], - }), - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "execution_context_utils", - hdrs = ["execution_context_utils.hpp"], - srcs = ["execution_context_utils.cpp"], - deps = [ - ":genai_servables", - "//src/mediapipe_internal:graph_side_packets", - "//src:libovmslogging", - "//src:libovmsstatus", - ], - visibility = ["//visibility:public"], -) - -ovms_cc_library( - name = "py_jinja_template_processor", - hdrs = ["py_jinja_template_processor.hpp"], - srcs = ["py_jinja_template_processor.cpp"], - deps = ["@mediapipe//mediapipe/framework:calculator_framework", - "//third_party:openvino", - "//src:libovmslogging", - "//src/python:utils", - ] + PYBIND_DEPS, - visibility = ["//visibility:public"], -) - +# +# Copyright (c) 2024 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +load("@mediapipe//mediapipe/framework/port:build_config.bzl", "mediapipe_cc_proto_library", "mediapipe_proto_library") +load("//:common_settings.bzl", "ovms_cc_library", "PYBIND_DEPS") + +ovms_cc_library( + name = "llmcalculator", + srcs = ["http_llm_calculator.cc", + "llm_node_initializer.cpp"], + deps = [ + "//third_party:openvino", + "@mediapipe//mediapipe/framework:calculator_framework", + "@com_github_tencent_rapidjson//:rapidjson", + "//src/mediapipe_internal:graph_side_packets", + "//src/kfserving_api:kfserving_api_cpp", + "//src:libovmsprofiler", + ":genai_servables", + "//src:httppayload", + "//third_party:genai", + "//src/mediapipe_internal:node_initializer", + "//src:libovmslogging", + "//src:libovmsstring_utils",], + visibility = ["//visibility:public"], + alwayslink = 1, # needed, so the calculator can be registered by MediaPipe +) + +mediapipe_proto_library( + name = "llmcalculator_proto", # llmcalculator_cc_proto - just mediapipe stuff with mediapipe_proto_library adding nonvisible target + srcs = ["llm_calculator.proto"], + visibility = ["//visibility:private"], + deps = [ + "@mediapipe//mediapipe/framework:calculator_options_proto", + "@mediapipe//mediapipe/framework:calculator_proto", + ], +) + +ovms_cc_library( + name = "openai_api_handler", + hdrs = ["apis/openai_api_handler.hpp"], + srcs = ["apis/openai_api_handler.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status + "//src:libovmsprofiler", + "//third_party:curl", + "//src:image_conversion", + "//src/filesystem:libovmsfilesystem", + "@stb//:image", + ":openai_request", + ":output_parsers", + "//third_party:genai",], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "openai_completions_api_handler", + hdrs = ["apis/openai_completions.hpp", "apis/openai_json_response.hpp"], + srcs = ["apis/openai_completions.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status + "//src:libovmsprofiler", + "//third_party:curl", + "//src:image_conversion", + "//src/filesystem:libovmsfilesystem", + "@stb//:image", + ":openai_api_handler", + ":openai_request", + ":output_parsers", + "//third_party:genai",], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "openai_responses_handler", + hdrs = ["apis/openai_responses.hpp"], + srcs = ["apis/openai_responses.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "@mediapipe//mediapipe/framework:calculator_framework", # required for absl status + "//src:libovmsprofiler", + "//third_party:curl", + "//src:image_conversion", + "//src/filesystem:libovmsfilesystem", + "@stb//:image", + ":openai_api_handler", + ":openai_request", + ":output_parsers", + "//third_party:genai",], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "openai_request", + hdrs = ["apis/openai_request.hpp"], + srcs = [], + deps = ["//third_party:genai", + "//src/port:rapidjson_document", + ":apis_tool_schema_wrapper",], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "apis_tool_schema_wrapper", + hdrs = ["apis/tool_schema_wrapper.hpp"], + deps = [ + "//src/port:rapidjson_document", + ], + visibility = ["//visibility:public"], +) +ovms_cc_library( + name = "partial_json_builder", + hdrs = ["io_processing/partial_json_builder.hpp"], + srcs = ["io_processing/partial_json_builder.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_stringbuffer", + "//src/port:rapidjson_writer", + "//src/port:rapidjson_document", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "io_processing_utils", + hdrs = ["io_processing/utils.hpp"], + srcs = ["io_processing/utils.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_stringbuffer", + "//src/port:rapidjson_writer", + "//src/port:rapidjson_document", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "io_processing_base_output_parser", + hdrs = ["io_processing/base_output_parser.hpp"], + srcs = ["io_processing/base_output_parser.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_stringbuffer", + "//src/port:rapidjson_writer", + "//src/port:rapidjson_document", + ":io_processing_utils", + "//third_party:genai", + ], +) +ovms_cc_library( + name = "io_processing_qwen3coder_tool_parser", + hdrs = ["io_processing/qwen3coder/qwen3coder_tool_parser.hpp"], + srcs = ["io_processing/qwen3coder/qwen3coder_tool_parser.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src:libovmslogging", + "//src:libovmsstatus", + "//src/utils:rapidjson_utils", + ":io_processing_utils", + ":io_processing_base_output_parser", + ":apis_tool_schema_wrapper", + "//third_party:genai", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "io_processing_lfm2_tool_parser", + hdrs = ["io_processing/lfm2/lfm2_tool_parser.hpp"], + srcs = ["io_processing/lfm2/lfm2_tool_parser.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_document", + "//src:libovmslogging", + "//src:libovmsstring_utils", + ":io_processing_utils", + ":io_processing_base_output_parser", + "//third_party:genai", + ], + visibility = ["//visibility:public"], +) +ovms_cc_library( + name = "io_processing_gemma4_tool_parser", + hdrs = ["io_processing/gemma4/gemma4_tool_parser.hpp", "io_processing/gemma4/gemma4_reasoning_parser.hpp"], + srcs = ["io_processing/gemma4/gemma4_tool_parser.cpp", "io_processing/gemma4/gemma4_reasoning_parser.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_document", + "//src:libovmslogging", + "//src:libovmsstring_utils", + ":io_processing_utils", + ":io_processing_base_output_parser", + ":io_processing_qwen3_reasoning_parser", + "//third_party:genai", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "io_processing_qwen3_reasoning_parser", + hdrs = ["io_processing/qwen3/reasoning_parser.hpp"], + srcs = ["io_processing/qwen3/reasoning_parser.cpp"], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_document", + "//src:libovmslogging", + "//src:libovmsstring_utils", + ":io_processing_utils", + ":io_processing_base_output_parser", + "//third_party:genai", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( # TODO split further so we don't have to recompile everything when changing one parser ... + name = "output_parsers", + hdrs = [ + "io_processing/hermes3/tool_parser.hpp", + "io_processing/llama3/tool_parser.hpp", + "io_processing/phi4/tool_parser.hpp", + "io_processing/devstral/tool_parser.hpp", + "io_processing/mistral/tool_parser.hpp", + "io_processing/gptoss/reasoning_parser.hpp", + "io_processing/gptoss/tool_parser.hpp", + "io_processing/gptoss/harmony.hpp", + "io_processing/output_parser.hpp", + ], + srcs = [ + "io_processing/hermes3/tool_parser.cpp", + "io_processing/llama3/tool_parser.cpp", + "io_processing/phi4/tool_parser.cpp", + "io_processing/devstral/tool_parser.cpp", + "io_processing/mistral/tool_parser.cpp", + "io_processing/gptoss/reasoning_parser.cpp", + "io_processing/gptoss/tool_parser.cpp", + "io_processing/gptoss/harmony.cpp", + "io_processing/output_parser.cpp", + ], + deps = [ + "@com_github_tencent_rapidjson//:rapidjson", + "//src/port:rapidjson_document", + "//src:libovmslogging", + "//src:libovmsstring_utils", + "//third_party:genai", + ":partial_json_builder", + ":io_processing_base_output_parser", + ":io_processing_qwen3coder_tool_parser", + ":io_processing_lfm2_tool_parser", + ":io_processing_gemma4_tool_parser", + ":io_processing_qwen3_reasoning_parser", + ":io_processing_utils", + ":apis_tool_schema_wrapper", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "generation_config_builders", + hdrs = ["io_processing/base_generation_config_builder.hpp", + "io_processing/phi4/generation_config_builder.hpp", + "io_processing/llama3/generation_config_builder.hpp", + "io_processing/hermes3/generation_config_builder.hpp", + "io_processing/devstral/generation_config_builder.hpp", + "io_processing/generation_config_builder.hpp"], + srcs = ["io_processing/base_generation_config_builder.cpp", + "io_processing/phi4/generation_config_builder.cpp", + "io_processing/llama3/generation_config_builder.cpp", + "io_processing/hermes3/generation_config_builder.cpp", + "io_processing/devstral/generation_config_builder.cpp"], + deps = [ + ":openai_request", + "//src:libovmslogging", + "//third_party:genai",], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "genai_servables", + hdrs = ["servable.hpp", + "servable_initializer.hpp", + "language_model/continuous_batching/servable.hpp", + "language_model/continuous_batching/llm_executor.hpp", + "language_model/continuous_batching/servable_initializer.hpp", + "visual_language_model/continuous_batching/servable.hpp", + "language_model/legacy/servable.hpp", + "language_model/legacy/servable_initializer.hpp", + "language_model/legacy/legacy_executor.hpp", + "visual_language_model/legacy/servable.hpp", + "visual_language_model/legacy/servable_initializer.hpp", + "visual_language_model/legacy/legacy_executor.hpp", + "text_utils.hpp"], + srcs = ["servable.cpp", + "servable_initializer.cpp", + "language_model/continuous_batching/servable.cpp", + "language_model/continuous_batching/servable_initializer.cpp", + "visual_language_model/continuous_batching/servable.cpp", + "language_model/legacy/servable.cpp", + "language_model/legacy/servable_initializer.cpp", + "language_model/legacy/legacy_executor.cpp", + "visual_language_model/legacy/servable.cpp", + "visual_language_model/legacy/servable_initializer.cpp", + "visual_language_model/legacy/legacy_executor.cpp"], + deps = [ + "//third_party:openvino", + "@mediapipe//mediapipe/framework:calculator_framework", + "@com_github_tencent_rapidjson//:rapidjson", + "//src:executor_base", + "//src:libmodelconfigjsonparser", + "//src:libovmslogging", + "//src:libovmsstatus", + "//src/mediapipe_internal:mediapipe_utils", + "//src:libovmsprofiler", + "//src:libovmsstring_utils", + "//src/filesystem:libovmsfilesystem", + "//src/tokenize:tokenize_parser", + "llmcalculator_cc_proto", + ":openai_completions_api_handler", + ":openai_responses_handler", + ":generation_config_builders", + "//src:httppayload", + "//src:libhttpclientconnection", + "//src:sse_utils", + "//src:libovms_systeminfo", + "//src:libovms_config", + "//src:libovms_ov_utils", + "//third_party:genai",] + select({ + "//:disable_python": [], + "//:not_disable_python" : [":py_jinja_template_processor"], + }), + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "execution_context_utils", + hdrs = ["execution_context_utils.hpp"], + srcs = ["execution_context_utils.cpp"], + deps = [ + ":genai_servables", + "//src/mediapipe_internal:graph_side_packets", + "//src:libovmslogging", + "//src:libovmsstatus", + ], + visibility = ["//visibility:public"], +) + +ovms_cc_library( + name = "py_jinja_template_processor", + hdrs = ["py_jinja_template_processor.hpp"], + srcs = ["py_jinja_template_processor.cpp"], + deps = ["@mediapipe//mediapipe/framework:calculator_framework", + "//third_party:openvino", + "//src:libovmslogging", + "//src/python:utils", + ] + PYBIND_DEPS, + visibility = ["//visibility:public"], +) +