Enable per-OS libs for libtensorflow_framework.so

Signed-off-by: Jason Zaman <jason@perfinion.com>
This commit is contained in:
Jason Zaman 2019-03-24 19:28:50 +08:00
parent fdbb33d31f
commit 8171f3f020
6 changed files with 52 additions and 12 deletions

View File

@ -325,6 +325,18 @@ config_setting(
visibility = ["//visibility:public"],
)
config_setting(
name = "macos_with_framework_shared_object",
define_values = {
"framework_shared_object": "true",
},
values = {
"apple_platform_type": "macos",
"cpu": "darwin",
},
visibility = ["//visibility:public"],
)
config_setting(
name = "using_cuda_clang",
define_values = {
@ -467,7 +479,7 @@ cc_library(
# projects building with Bazel and importing TensorFlow as a dependency will not
# depend on libtensorflow_framework.so unless they opt in.
tf_cc_shared_object(
name = "libtensorflow_framework.so",
name = "tensorflow_framework",
framework_so = [],
linkopts = select({
"//tensorflow:macos": [],
@ -477,6 +489,7 @@ tf_cc_shared_object(
],
}),
linkstatic = 1,
per_os_targets = True,
visibility = ["//visibility:public"],
deps = [
"//tensorflow/core:core_cpu_impl",
@ -508,7 +521,6 @@ tf_cc_shared_object(
linkopts = select({
"//tensorflow:macos": [
"-Wl,-exported_symbols_list,$(location //tensorflow/c:exported_symbols.lds)",
"-Wl,-install_name,@rpath/libtensorflow.so",
],
"//tensorflow:windows": [
],

View File

@ -9,17 +9,21 @@ licenses(["notice"]) # Apache 2.0
exports_files(["LICENSE"])
load(
"//tensorflow:tensorflow.bzl",
"tf_shared_library_deps",
)
sh_test(
name = "test",
size = "small",
srcs = ["test.sh"],
data = [
":all_files", # Go sources
"//tensorflow:libtensorflow.so", # C library
"//tensorflow/c:headers", # C library header
"//tensorflow/c/eager:headers", # Eager C library header
"//tensorflow/cc/saved_model:saved_model_half_plus_two", # Testdata for LoadSavedModel
],
] + tf_shared_library_deps(),
)
filegroup(

View File

@ -23,7 +23,7 @@ java_library(
":java_op_sources",
":java_sources",
],
data = [":libtensorflow_jni"],
data = [":libtensorflow_jni"] + tf_binary_additional_srcs(),
javacopts = JAVACOPTS,
plugins = [":processor"],
visibility = ["//visibility:public"],

View File

@ -159,10 +159,10 @@ def if_emscripten(a):
"//conditions:default": [],
})
def if_macos(a):
def if_macos(a, otherwise = []):
return select({
clean_dep("//tensorflow:macos"): a,
"//conditions:default": [],
"//conditions:default": otherwise,
})
def if_ios(a):
@ -386,12 +386,30 @@ def _rpath_linkopts(name):
# Bazel-generated shared objects which must be linked into TensorFlow binaries
# to define symbols from //tensorflow/core:framework and //tensorflow/core:lib.
def tf_binary_additional_srcs():
return if_static(
extra_deps = [],
otherwise = [
return select({
clean_dep("//tensorflow:macos_with_framework_shared_object"): [
clean_dep("//tensorflow:libtensorflow_framework.dylib"),
],
clean_dep("//tensorflow:framework_shared_object"): [
clean_dep("//tensorflow:libtensorflow_framework.so"),
],
)
"//conditions:default": [
],
})
# Helper function for the per-OS tensorflow libraries
def tf_shared_library_deps():
return select({
clean_dep("//tensorflow:macos"): [
clean_dep("//tensorflow:libtensorflow.dylib"),
],
clean_dep("//tensorflow:windows"): [
clean_dep("//tensorflow:tensorflow.dll"),
],
"//conditions:default": [
clean_dep("//tensorflow:libtensorflow.so"),
],
}) + tf_binary_additional_srcs()
# Helper functions to add kernel dependencies to tf binaries when using dynamic
# kernel linking.
@ -865,7 +883,9 @@ def tf_cc_test(
clean_dep("//third_party/mkl:intel_binary_blob"),
],
),
data = data + tf_binary_dynamic_kernel_dsos(),
data = data +
tf_binary_dynamic_kernel_dsos() +
tf_binary_additional_srcs(),
exec_compatible_with = tf_exec_compatible_with(kwargs),
# Nested select() statements seem not to be supported when passed to
# linkstatic, and we already have a cuda select() passed in to this

View File

@ -89,6 +89,9 @@ pkg_tar(
pkg_tar(
name = "clib",
files = select({
"//tensorflow:macos": [
"//tensorflow:libtensorflow.dylib",
],
"//tensorflow:windows": [
"//tensorflow:tensorflow.dll",
"//tensorflow:tensorflow_dll_import_lib",

View File

@ -3,6 +3,7 @@ recursive-include * *.py
recursive-include * *.pyd
recursive-include * *.pd
recursive-include * *.so
recursive-include * *.dylib
recursive-include * *.dll
recursive-include * *.lib
recursive-include * *.csv