diff options
author | A. Unique TensorFlower <gardener@tensorflow.org> | 2017-12-22 12:42:59 -0800 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2017-12-22 12:46:28 -0800 |
commit | e4532d20973c4c00854492362665317551661c18 (patch) | |
tree | 398527e29bd30d39237adb4785be5069fdb646fa /tensorflow/tensorflow.bzl | |
parent | 673641c2d6a27fa97ee05453d671853731a4c602 (diff) |
Merge changes from github.
PiperOrigin-RevId: 179953488
Diffstat (limited to 'tensorflow/tensorflow.bzl')
-rw-r--r-- | tensorflow/tensorflow.bzl | 67 |
1 files changed, 37 insertions, 30 deletions
diff --git a/tensorflow/tensorflow.bzl b/tensorflow/tensorflow.bzl index e51e20c282..b71328f847 100644 --- a/tensorflow/tensorflow.bzl +++ b/tensorflow/tensorflow.bzl @@ -19,6 +19,7 @@ load( "//third_party/mkl:build_defs.bzl", "if_mkl", ) + def register_extension_info(**kwargs): pass @@ -149,24 +150,27 @@ def if_darwin(a): "//conditions:default": [], }) -WIN_COPTS = [ - "/DLANG_CXX11", - "/D__VERSION__=\\\"MSVC\\\"", - "/DPLATFORM_WINDOWS", - "/DTF_COMPILE_LIBRARY", - "/DEIGEN_HAS_C99_MATH", - "/DTENSORFLOW_USE_EIGEN_THREADPOOL", - "/DEIGEN_AVOID_STL_ARRAY", - "/Iexternal/gemmlowp", - "/wd4018", # -Wno-sign-compare - "/U_HAS_EXCEPTIONS", - "/D_HAS_EXCEPTIONS=1", - "/EHsc", # -fno-exceptions - "/DNOGDI", -] +def get_win_copts(is_external=False): + WINDOWS_COPTS = [ + "/D__VERSION__=\\\"MSVC\\\"", + "/DPLATFORM_WINDOWS", + "/DEIGEN_HAS_C99_MATH", + "/DTENSORFLOW_USE_EIGEN_THREADPOOL", + "/DEIGEN_AVOID_STL_ARRAY", + "/Iexternal/gemmlowp", + "/wd4018", # -Wno-sign-compare + "/U_HAS_EXCEPTIONS", + "/D_HAS_EXCEPTIONS=1", + "/EHsc", # -fno-exceptions + "/DNOGDI", + ] + if is_external: + return WINDOWS_COPTS + ["/UTF_COMPILE_LIBRARY"] + else: + return WINDOWS_COPTS + ["/DTF_COMPILE_LIBRARY"] # LINT.IfChange -def tf_copts(android_optimization_level_override="-O2"): +def tf_copts(android_optimization_level_override="-O2", is_external=False): # For compatibility reasons, android_optimization_level_override # is currently only being set for Android. # To clear this value, and allow the CROSSTOOL default @@ -194,8 +198,8 @@ def tf_copts(android_optimization_level_override="-O2"): + select({ clean_dep("//tensorflow:android"): android_copts, clean_dep("//tensorflow:darwin"): [], - clean_dep("//tensorflow:windows"): WIN_COPTS, - clean_dep("//tensorflow:windows_msvc"): WIN_COPTS, + clean_dep("//tensorflow:windows"): get_win_copts(is_external), + clean_dep("//tensorflow:windows_msvc"): get_win_copts(is_external), clean_dep("//tensorflow:ios"): ["-std=c++11"], "//conditions:default": ["-pthread"] })) @@ -211,7 +215,7 @@ def tf_opts_nortti_if_android(): # Given a list of "op_lib_names" (a list of files in the ops directory # without their .cc extensions), generate a library for that file. -def tf_gen_op_libs(op_lib_names, deps=None): +def tf_gen_op_libs(op_lib_names, deps=None, is_external=True): # Make library out of each op so it can also be used to generate wrappers # for various languages. if not deps: @@ -219,7 +223,7 @@ def tf_gen_op_libs(op_lib_names, deps=None): for n in op_lib_names: native.cc_library( name=n + "_op_lib", - copts=tf_copts(), + copts=tf_copts(is_external=is_external), srcs=["ops/" + n + ".cc"], deps=deps + [clean_dep("//tensorflow/core:framework")], visibility=["//visibility:public"], @@ -292,9 +296,11 @@ def tf_cc_binary(name, srcs=[], deps=[], linkopts=[], + copts=tf_copts(), **kwargs): native.cc_binary( name=name, + copts=copts, srcs=srcs + tf_binary_additional_srcs(), deps=deps + if_mkl( [ @@ -325,7 +331,7 @@ def tf_gen_op_wrapper_cc(name, tf_cc_binary( name=tool, copts=tf_copts(), - linkopts=["-lm"], + linkopts=if_not_windows(["-lm"]), linkstatic=1, # Faster to link this one-time-use binary dynamically deps=[op_gen] + deps) @@ -496,7 +502,7 @@ def tf_gen_op_wrapper_py(name, deps = [str(Label("//tensorflow/core:" + name + "_op_lib"))] tf_cc_binary( name=tool_name, - linkopts=["-lm"] + cc_linkopts, + linkopts=if_not_windows(["-lm"]) + cc_linkopts, copts=tf_copts(), linkstatic=1, # Faster to link this one-time-use binary dynamically deps=([ @@ -711,7 +717,7 @@ def tf_cuda_only_cc_test(name, deps=deps + if_cuda([ clean_dep("//tensorflow/core:cuda"), clean_dep("//tensorflow/core:gpu_lib")]), - linkopts=["-lpthread", "-lm"] + linkopts + _rpath_linkopts(name), + linkopts=if_not_windows(["-lpthread", "-lm"]) + linkopts + _rpath_linkopts(name), linkstatic=linkstatic or select({ # cc_tests with ".so"s in srcs incorrectly link on Darwin # unless linkstatic=1. @@ -849,7 +855,7 @@ register_extension_info( label_regex_for_dep = "{extension_name}", ) -def tf_cuda_library(deps=None, cuda_deps=None, copts=None, **kwargs): +def tf_cuda_library(deps=None, cuda_deps=None, copts=tf_copts(), **kwargs): """Generate a cc_library with a conditional set of CUDA dependencies. When the library is built with --config=cuda: @@ -869,8 +875,6 @@ def tf_cuda_library(deps=None, cuda_deps=None, copts=None, **kwargs): deps = [] if not cuda_deps: cuda_deps = [] - if not copts: - copts = [] native.cc_library( deps=deps + if_cuda(cuda_deps + [ @@ -892,7 +896,8 @@ def tf_kernel_library(name, hdrs=None, deps=None, alwayslink=1, - copts=tf_copts(), + copts=None, + is_external=False, **kwargs): """A rule to build a TensorFlow OpKernel. @@ -921,7 +926,8 @@ def tf_kernel_library(name, hdrs = [] if not deps: deps = [] - + if not copts: + copts = tf_copts(is_external=is_external) if prefix: if native.glob([prefix + "*.cu.cc"], exclude=["*test*"]): if not gpu_srcs: @@ -1233,7 +1239,7 @@ def tf_custom_op_library(name, srcs=[], gpu_srcs=[], deps=[], linkopts=[]): srcs=srcs, deps=deps + if_cuda(cuda_deps), data=[name + "_check_deps"], - copts=tf_copts(), + copts=tf_copts(is_external=True), linkopts=linkopts + select({ "//conditions:default": [ "-lm", @@ -1577,9 +1583,10 @@ def tf_py_build_info_genrule(): def cc_library_with_android_deps(deps, android_deps=[], common_deps=[], + copts=tf_copts(), **kwargs): deps = if_not_android(deps) + if_android(android_deps) + common_deps - native.cc_library(deps=deps, **kwargs) + native.cc_library(deps=deps, copts=copts, **kwargs) register_extension_info( extension_name = "cc_library_with_android_deps", |