Enable per-OS libs for libtensorflow_framework.so
Signed-off-by: Jason Zaman <jason@perfinion.com>
This commit is contained in:
parent
fdbb33d31f
commit
8171f3f020
@ -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": [
|
||||
],
|
||||
|
@ -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(
|
||||
|
@ -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"],
|
||||
|
@ -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
|
||||
|
@ -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",
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user