1
1
load ("@flatbuffers//:build_defs.bzl" , "flatbuffer_py_library" )
2
2
load ("@org_tensorflow//tensorflow:pytype.default.bzl" , "pytype_strict_contrib_test" , "pytype_strict_library" )
3
3
load ("@org_tensorflow//tensorflow:strict.default.bzl" , "py_strict_binary" , "py_strict_library" , "py_strict_test" )
4
- load ("@org_tensorflow//tensorflow:tensorflow.default.bzl" , "get_compatible_with_portable" )
4
+ load ("@org_tensorflow//tensorflow:tensorflow.default.bzl" , "get_compatible_with_portable" , "pywrap_library" )
5
+ load ("@org_tensorflow//tensorflow/core/platform:build_config_root.bzl" , "if_pywrap" )
5
6
load ("@rules_shell//shell:sh_test.bzl" , "sh_test" )
6
7
load ("//tflite:special_rules.bzl" , "internal_visibility_allowlist" )
7
8
@@ -474,7 +475,9 @@ pytype_strict_library(
474
475
"@org_tensorflow//tensorflow/python/framework:tensor_shape" ,
475
476
"@org_tensorflow//tensorflow/python/util:deprecation" ,
476
477
"@org_tensorflow//tensorflow/python/util:tf_export" ,
477
- ],
478
+ ] + if_pywrap (
479
+ if_true = [":pywrap_tflite" ],
480
+ ),
478
481
)
479
482
480
483
py_strict_library (
@@ -515,7 +518,9 @@ pytype_strict_contrib_test(
515
518
"@org_tensorflow//tensorflow/python/ops:math_ops" ,
516
519
"@org_tensorflow//tensorflow/python/platform:client_testlib" ,
517
520
"@org_tensorflow//third_party/py/numpy" ,
518
- ],
521
+ ] + if_pywrap (
522
+ if_true = [":pywrap_tflite" ],
523
+ ),
519
524
)
520
525
521
526
py_strict_library (
@@ -608,10 +613,16 @@ py_strict_library(
608
613
],
609
614
visibility = ["//visibility:public" ],
610
615
deps = [
611
- "//tflite/python/analyzer_wrapper:_pywrap_analyzer_wrapper" ,
612
616
"@org_tensorflow//tensorflow/compiler/mlir/lite/python:wrap_converter" ,
613
617
"@org_tensorflow//tensorflow/python/util:tf_export" ,
614
- ],
618
+ ] + if_pywrap (
619
+ if_false = [
620
+ "//tflite/python/analyzer_wrapper:_pywrap_analyzer_wrapper" ,
621
+ ],
622
+ if_true = [
623
+ ":pywrap_tflite" ,
624
+ ],
625
+ ),
615
626
)
616
627
617
628
py_strict_test (
@@ -633,3 +644,27 @@ py_strict_test(
633
644
"@org_tensorflow//tensorflow/python/trackable:autotrackable" ,
634
645
],
635
646
)
647
+
648
+ # Use pywrap_library to avoid duplicate registration of pybind11 modules.
649
+ # A great example on how to use pywrap_library is
650
+ # https://github.com/vam-google/symbol-locations/blob/main/pybind/BUILD
651
+ # The following pywrap_library is used by LiteRT repo to avoid shared links provided
652
+ # by Tensorflow under tensorflow/python:_pywrap_tensorflow
653
+ # This isolate LiteRT's pybind11 dependencies. To use, add pybind deps under pywrap_tflite
654
+ # and refer pywrap_tflite to any target that needsd to selected shared objects.
655
+ pywrap_library (
656
+ name = "pywrap_tflite" ,
657
+ common_lib_versions = {
658
+ "framework" : "2" ,
659
+ },
660
+ visibility = ["//visibility:public" ],
661
+ deps = [
662
+ "//tflite/python/analyzer_wrapper:_pywrap_analyzer_wrapper" ,
663
+ "//tflite/python/interpreter_wrapper:_pywrap_tensorflow_interpreter_wrapper" ,
664
+ "//tflite/python/metrics:_pywrap_tensorflow_lite_metrics_wrapper" ,
665
+ "//tflite/python/optimize:_pywrap_tensorflow_lite_calibration_wrapper" ,
666
+ "//tflite/testing:_pywrap_string_util" ,
667
+ "//tflite/tools/optimize/python:_pywrap_modify_model_interface" ,
668
+ "//tflite/tools/optimize/sparsity:format_converter_wrapper_pybind11" ,
669
+ ],
670
+ )
0 commit comments