1# TensorFlow Lite for Swift 2 3load("//tensorflow/lite:special_rules.bzl", "ios_visibility_allowlist", "tflite_ios_lab_runner") 4load("//tensorflow/lite/ios:ios.bzl", "TFL_DEFAULT_TAGS", "TFL_DISABLED_SANITIZER_TAGS", "TFL_MINIMUM_OS_VERSION") 5load("@build_bazel_rules_apple//apple:ios.bzl", "ios_static_framework", "ios_unit_test") 6load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library") 7 8package( 9 default_visibility = ["//visibility:private"], 10 licenses = ["notice"], 11) 12 13config_setting( 14 name = "use_coreml_delegate", 15 define_values = {"use_coreml_delegate": "1"}, 16) 17 18config_setting( 19 name = "use_metal_delegate", 20 define_values = {"use_metal_delegate": "1"}, 21) 22 23# By default this builds with no delegates. 24# To build with the Metal delegate pass --define=use_metal_delegate=1 25# To build with the CoreML delegate pass --define=use_coreml_delegate=1 26swift_library( 27 name = "TensorFlowLite", 28 srcs = glob( 29 [ 30 "Sources/*.swift", 31 ], 32 exclude = [ 33 "Sources/CoreMLDelegate.swift", 34 "Sources/MetalDelegate.swift", 35 ], 36 ) + select({ 37 ":use_coreml_delegate": [ 38 "Sources/CoreMLDelegate.swift", 39 ], 40 "//conditions:default": [], 41 }) + select({ 42 ":use_metal_delegate": [ 43 "Sources/MetalDelegate.swift", 44 ], 45 "//conditions:default": [], 46 }), 47 linkopts = select({ 48 ":use_coreml_delegate": [ 49 "-Wl,-weak_framework,CoreML", 50 ], 51 "//conditions:default": [], 52 }) + select({ 53 ":use_metal_delegate": [ 54 "-Wl,-weak_framework,Metal", 55 ], 56 "//conditions:default": [], 57 }), 58 module_name = "TensorFlowLite", 59 tags = TFL_DEFAULT_TAGS + ["nobuilder"], 60 visibility = ios_visibility_allowlist(), 61 deps = [ 62 "//tensorflow/lite/ios:tensorflow_lite_c", 63 ] + select({ 64 ":use_coreml_delegate": [ 65 "//tensorflow/lite/delegates/coreml:coreml_delegate", 66 ], 67 "//conditions:default": [], 68 }) + select({ 69 ":use_metal_delegate": [ 70 "//tensorflow/lite/delegates/gpu:metal_delegate", 71 ], 72 "//conditions:default": [], 73 }), 74) 75 76swift_library( 77 name = "TensorFlowLiteAllDelegates", 78 testonly = 1, 79 srcs = glob(["Sources/*.swift"]), 80 linkopts = [ 81 "-Wl,-weak_framework,CoreML", 82 "-Wl,-weak_framework,Metal", 83 ], 84 module_name = "TensorFlowLite", 85 tags = TFL_DEFAULT_TAGS + ["builder_default_ios_arm64"], 86 deps = [ 87 "//tensorflow/lite/delegates/coreml:coreml_delegate", 88 "//tensorflow/lite/delegates/gpu:metal_delegate", 89 "//tensorflow/lite/ios:tensorflow_lite_c", 90 ], 91) 92 93# bazel build -c opt --config=ios_fat //tensorflow/lite/swift:TensorFlowLite_framework 94ios_static_framework( 95 name = "TensorFlowLite_framework", 96 avoid_deps = [ 97 "//tensorflow/lite/ios:tensorflow_lite_c", 98 ], 99 bundle_name = "TensorFlowLite", 100 minimum_os_version = TFL_MINIMUM_OS_VERSION, 101 deps = [ 102 ":TensorFlowLite", 103 ], 104) 105 106ios_unit_test( 107 name = "Tests", 108 size = "small", 109 minimum_os_version = TFL_MINIMUM_OS_VERSION, 110 runner = tflite_ios_lab_runner("IOS_LATEST"), 111 tags = TFL_DEFAULT_TAGS + TFL_DISABLED_SANITIZER_TAGS, 112 deps = [ 113 ":TestsLibrary", 114 ], 115) 116 117swift_library( 118 name = "TestsLibrary", 119 testonly = 1, 120 srcs = glob(["Tests/*.swift"]), 121 tags = TFL_DEFAULT_TAGS + ["nobuilder"], 122 deps = [ 123 ":Resources", 124 ":TensorFlowLiteAllDelegates", 125 ], 126) 127 128objc_library( 129 name = "Resources", 130 data = [ 131 "//tensorflow/lite:testdata/add.bin", 132 "//tensorflow/lite:testdata/add_quantized.bin", 133 "//tensorflow/lite:testdata/multi_add.bin", 134 ], 135 tags = TFL_DEFAULT_TAGS, 136) 137