.bazelrc 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. # This file is based on tensorflow's (v2.2.0) .bazelrc found here:
  2. # https://github.com/tensorflow/tensorflow/blob/v2.2.0/.bazelrc
  3. # Sets the default Apple platform to macOS.
  4. build:macos --apple_platform_type=macos
  5. # Flag to enable remote config. Required starting from TF 2.2.
  6. common --experimental_repo_remote_exec
  7. # For workaround https://github.com/bazelbuild/bazel/issues/8772 with Bazel >= 0.29.1
  8. build --java_toolchain=//third_party/toolchains/java:tf_java_toolchain
  9. build --host_java_toolchain=//third_party/toolchains/java:tf_java_toolchain
  10. # Suppress C++ compiler warnings, otherwise build logs become 10s of MBs.
  11. build:android --copt=-w
  12. build:linux --copt=-w
  13. build:macos --copt=-w
  14. build:windows --copt=/w
  15. # Android workspace configurations. Should be replaced by an interative configure in the future.
  16. build --action_env ANDROID_NDK_HOME
  17. build --action_env ANDROID_NDK_API_LEVEL
  18. build --action_env ANDROID_BUILD_TOOLS_VERSION
  19. build --action_env ANDROID_SDK_API_LEVEL
  20. build --action_env ANDROID_SDK_HOME
  21. # Android configs. Bazel needs to have --cpu and --fat_apk_cpu both set to the
  22. # target CPU to build transient dependencies correctly. See
  23. # https://docs.bazel.build/versions/master/user-manual.html#flag--fat_apk_cpu
  24. build:android --crosstool_top=//external:android/crosstool
  25. build:android --host_crosstool_top=@bazel_tools//tools/cpp:toolchain
  26. build:android_arm --config=android
  27. build:android_arm --cpu=armeabi-v7a
  28. build:android_arm --fat_apk_cpu=armeabi-v7a
  29. build:android_arm64 --config=android
  30. build:android_arm64 --cpu=arm64-v8a
  31. build:android_arm64 --fat_apk_cpu=arm64-v8a
  32. build:android_x86 --config=android
  33. build:android_x86 --cpu=x86
  34. build:android_x86 --fat_apk_cpu=x86
  35. build:android_x86_64 --config=android
  36. build:android_x86_64 --cpu=x86_64
  37. build:android_x86_64 --fat_apk_cpu=x86_64
  38. # iOS configs for each architecture and the fat binary builds.
  39. build:ios --apple_platform_type=ios
  40. build:ios --apple_bitcode=embedded --copt=-fembed-bitcode
  41. build:ios --copt=-Wno-c++11-narrowing
  42. build:ios_armv7 --config=ios
  43. build:ios_armv7 --cpu=ios_armv7
  44. build:ios_arm64 --config=ios
  45. build:ios_arm64 --cpu=ios_arm64
  46. build:ios_x86_64 --config=ios
  47. build:ios_x86_64 --cpu=ios_x86_64
  48. build:ios_fat --config=ios
  49. build:ios_fat --ios_multi_cpus=arm64,x86_64
  50. # TFLite build configs for generic embedded Linux
  51. build:elinux --crosstool_top=@local_config_embedded_arm//:toolchain
  52. build:elinux --host_crosstool_top=@bazel_tools//tools/cpp:toolchain
  53. build:elinux_aarch64 --config=elinux
  54. build:elinux_aarch64 --cpu=aarch64
  55. build:elinux_aarch64 --distinct_host_configuration=true
  56. build:elinux_armhf --config=elinux
  57. build:elinux_armhf --cpu=armhf
  58. build:elinux_armhf --distinct_host_configuration=true
  59. build:elinux_armhf --copt -mfp16-format=ieee
  60. # By default, build TF in C++ 14 mode.
  61. build:android --cxxopt=-std=c++14
  62. build:android --host_cxxopt=-std=c++14
  63. build:ios --cxxopt=-std=c++14
  64. build:ios --host_cxxopt=-std=c++14
  65. build:linux --cxxopt=-std=c++14
  66. build:linux --host_cxxopt=-std=c++14
  67. build:macos --cxxopt=-std=c++14
  68. build:macos --host_cxxopt=-std=c++14
  69. build:windows --cxxopt=/std:c++14
  70. build:windows --host_cxxopt=/std:c++14
  71. # Config to use a mostly-static build and disable modular op registration
  72. # support (this will revert to loading TensorFlow with RTLD_GLOBAL in Python).
  73. # By default, TensorFlow will build with a dependence on
  74. # //tensorflow:libtensorflow_framework.so.
  75. build:monolithic --define framework_shared_object=false
  76. # For projects which use TensorFlow as part of a Bazel build process, putting
  77. # nothing in a bazelrc will default to a monolithic build. The following line
  78. # opts in to modular op registration support by default.
  79. build --define framework_shared_object=true
  80. # ASAN build
  81. build:asan --strip=never
  82. build:asan --copt -fsanitize=address
  83. build:asan --copt -DADDRESS_SANITIZER
  84. build:asan --copt -O1
  85. build:asan --copt -g
  86. build:asan --copt -fno-omit-frame-pointer
  87. build:asan --linkopt -fsanitize=address
  88. # dbg config, as a shorthand for '--config=opt -c dbg'
  89. build:dbg --config=opt -c dbg
  90. # for now, disable arm_neon. see: https://github.com/tensorflow/tensorflow/issues/33360
  91. build:dbg --cxxopt -DTF_LITE_DISABLE_X86_NEON
  92. # AWS SDK must be compiled in release mode. see: https://github.com/tensorflow/tensorflow/issues/37498
  93. build:dbg --copt -DDEBUG_BUILD
  94. build --define=use_fast_cpp_protos=true
  95. build --define=allow_oversize_protos=true
  96. # TF uses `standalone`, which is deprecated.
  97. build --spawn_strategy=local
  98. build -c opt
  99. # Make Bazel print out all options from rc files.
  100. build --announce_rc
  101. # Other build flags.
  102. build --define=grpc_no_ares=true
  103. # See https://github.com/bazelbuild/bazel/issues/7362 for information on what
  104. # --incompatible_remove_legacy_whole_archive flag does.
  105. # This flag is set to true in Bazel 1.0 and newer versions. We tried to migrate
  106. # Tensorflow to the default, however test coverage wasn't enough to catch the
  107. # errors.
  108. # There is ongoing work on Bazel team's side to provide support for transitive
  109. # shared libraries. As part of migrating to transitive shared libraries, we
  110. # hope to provide a better mechanism for control over symbol exporting, and
  111. # then tackle this issue again.
  112. #
  113. # TODO: Remove this line once TF doesn't depend on Bazel wrapping all library
  114. # archives in -whole_archive -no_whole_archive.
  115. build --noincompatible_remove_legacy_whole_archive
  116. # Build TF with C++ 17 features.
  117. build:c++17 --cxxopt=-std=c++1z
  118. build:c++17 --cxxopt=-stdlib=libc++
  119. build:c++1z --config=c++17
  120. # Enable using platform specific build settings, except when cross-compiling for
  121. # mobile platforms.
  122. build --enable_platform_specific_config
  123. build:android --noenable_platform_specific_config
  124. build:ios --noenable_platform_specific_config
  125. # Suppress all warning messages.
  126. build:short_logs --output_filter=DONT_MATCH_ANYTHING
  127. build:verbose_logs --output_filter=
  128. build --config=short_logs
  129. # Options to build TensorFlow 1.x or 2.x.
  130. build:v1 --define=tf_api_version=1
  131. build:v2 --define=tf_api_version=2
  132. build:v1 --action_env=TF2_BEHAVIOR=0
  133. build:v2 --action_env=TF2_BEHAVIOR=1
  134. build --config=v2
  135. test --config=v2
  136. # Put user-specific options in .bazelrc.user
  137. try-import %workspace%/.bazelrc.user