forked from iree-org/iree
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.bazelrc
181 lines (146 loc) · 8.03 KB
/
.bazelrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Disable warnings we don't care about.
build --copt=-Wno-unused-local-typedef
build --copt=-Wno-unused-private-field
build --copt=-Wno-unused-const-variable
# Matches upstream. Cannot impact due to extern C inclusion method.
build --copt=-Wno-extern-c-compat
# Technically UB but needed for intrusive ptrs
build --copt=-Wno-invalid-offsetof
# C++14 standard version is required.
build --cxxopt=-std=c++14 --host_cxxopt=-std=c++14
# Default to an optimized build.
# Override via: "-c dbg" or --compilation_mode=dbg
build --compilation_mode=opt
# Disable visibility checks (works around some private deps in TensorFlow that
# are being unbundled soon anyway).
build --nocheck_visibility
# Enable some default cpu flags for x86 optimization.
build:x86opt --copt=-mavx2
###############################################################################
# Not strictly required, but generally good flags.
# Prevent invalid caching if input files are modified during a build.
build --experimental_guard_against_concurrent_changes
###############################################################################
# Options for connecting to the IREE GCP remote build project.
# Enable authentication. This will pick up application default credentials by
# default. You can use --google_credentials=some_file.json to use a service
# account credential instead.
build:gcp --google_default_credentials=true
# Point to the remote instance constructed in the iree-oss project
build:gcp --remote_instance_name=projects/iree-oss/instances/default_instance
###############################################################################
# Configuration for building remotely using Remote Build Execution (RBE)
# https://cloud.google.com/remote-build-execution/
# Based on https://github.com/bazelbuild/bazel-toolchains/blob/master/bazelrc/bazel-1.0.0.bazelrc
# Currently in development only usable by CI.
# Set up connections to GCP project.
build:rbe --config=gcp
# Depending on how many machines are in the remote execution instance, setting
# this higher can make builds faster by allowing more jobs to run in parallel.
# Setting it too high can result in jobs that timeout, however, while waiting
# for a remote machine to execute them.
build:rbe --jobs=50
# Flags related to specifying the platform, toolchain and java properties.
# These flags must be adapted to work with toolchain containers other than rbe-ubuntu16-04
# References to "rbe_default" matches rbe_autoconfig(name="rbe_default") in WORKSPACE
build:rbe --host_javabase=@rbe_default//java:jdk
build:rbe --javabase=@rbe_default//java:jdk
build:rbe --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
build:rbe --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
build:rbe --crosstool_top=@rbe_default//cc:toolchain
build:rbe --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
# Platform flags:
# The toolchain container used for execution is defined in the target indicated
# by "extra_execution_platforms", "host_platform" and "platforms".
# More about platforms: https://docs.bazel.build/versions/master/platforms.html
build:rbe --extra_toolchains=@rbe_default//config:cc-toolchain
build:rbe --extra_execution_platforms=@rbe_default//config:platform
build:rbe --host_platform=@rbe_default//config:platform
build:rbe --platforms=@rbe_default//config:platform
build:rbe --define=EXECUTOR=remote
# Enable remote execution so actions are performed on the remote systems.
build:rbe --remote_executor=grpcs://remotebuildexecution.googleapis.com
# Enforce stricter environment rules, which eliminates some non-hermetic
# behavior and therefore improves both the remote cache hit rate and the
# correctness and repeatability of the build.
build:rbe --incompatible_strict_action_env=true
# Set a higher timeout value, just in case.
build:rbe --remote_timeout=3600
# Local disk cache is incompatible with remote execution (for obvious reasons).
build:rbe --disk_cache=""
###############################################################################
# Configuration for uploading build results to Result Store UI
# https://cloud.google.com/remote-build-execution/docs/results-ui/getting-started-results-ui
# Can be used either with or without --config=rbe.
build:rs --config=gcp
build:rs --bes_backend="buildeventservice.googleapis.com"
build:rs --bes_results_url="https://source.cloud.google.com/results/invocations/"
build:rs --project_id=iree-oss
###############################################################################
# Experimental config for building on Windows via clang-cl.
# As an aspiration, it may eventually not be required to manually
# activate this config, but for now, it is a place to store the
# set of flags and tweaks needed to get the Windows build working.
# Note that this is intended to work with clang-cl, not the Visual
# Studio compiler. The following must be performed prior to invoking
# Bazel:
# * Install Visual Studio Build Tools
# * export USE_CLANG_CL=1
# * export BAZEL_LLVM=C:/Users/$USER/scoop/apps/llvm/current
# (or actual LLVM install location)
# Then one can build with:
# bazel build --config=windows {targets...}
# Works around __TIME__ __DATE__, etc redefinitions and -std=c++14
# warnings.
build:windows --copt=-Wno-builtin-macro-redefined --host_copt=-Wno-builtin-macro-redefined
build:windows --copt=-Wno-unknown-argument --host_copt=-Wno-unknown-argument
# Avoid warnings for WIN32_LEAN_AND_MEAN being defined multiple times.
build:windows --copt=-Wno-macro-redefined
# Enables unix-style runfiles link trees (requires symlink permission).
# See: https://blogs.windows.com/windowsdeveloper/2016/12/02/symlinks-windows-10/
# Generally: Enable Developer Mode in the Developer Settings page of the
# system settings.
build:windows --experimental_enable_runfiles
###############################################################################
# Flags to make tensorflow build.
# Some of these are also of general use and fine to enable globally for windows.
build:windows --copt=/arch:AVX
# Host and target are the same in windows so don't waste time building both.
build:windows --distinct_host_configuration=false
# Avoids incompatible versions of winsock and other badness.
build:windows --copt=/DWIN32_LEAN_AND_MEAN --host_copt=/DWIN32_LEAN_AND_MEAN
# That is one way to have less warnings :(
build:windows --per_file_copt=tensorflow@-w
# This is used a lot and shouldn't be an error.
build:windows --per_file_copt=tensorflow@-Wno-microsoft-unqualified-friend
# Why are min/max macros? No one knows.
build:windows --copt=/DNOMINMAX --host_copt=/DNOMINMAX
# Yay for security warnings. Boo for non-standard.
build:windows --copt=/D_CRT_SECURE_NO_WARNINGS --host_copt=/D_CRT_SECURE_NO_WARNINGS
# TensorFlow requires the "monolithic" build mode for now on Windows.
build:windows --define framework_shared_object=false
# TODO(laurenzo): Clang uses runtime functions for 128bit math that require the
# rt library and there is not a convenient way to link it. Figure out how to
# do the following:
# See: http://clang-developers.42468.n3.nabble.com/Issue-with-Clang-on-Windows-and-compiler-rt-builtins-td4059230.html
build:windows --linkopt=/DEFAULTLIB:clang_rt.builtins-x86_64.lib
build:windows --linkopt=/DEFAULTLIB:ws2_32.lib
# Used in TensorFlow, so we have to enable it here as well.
common --experimental_repo_remote_exec
###############################################################################
# The user.bazelrc file is not checked in but available for local mods.
# Always keep this at the end of the file so that user flags override.
try-import %workspace%/user.bazelrc