build --cxxopt=--std=c++17 build --copt=-I. # Bazel does not support including its cc_library targets as system # headers. We work around this for generated code # (e.g. c10/macros/cmake_macros.h) by making the generated directory a # system include path. build --copt=-isystem --copt bazel-out/k8-fastbuild/bin build --copt=-isystem --copt bazel-out/darwin-fastbuild/bin build --experimental_ui_max_stdouterr_bytes=2048576 # Configuration to disable tty features for environments like CI build:no-tty --curses no build:no-tty --progress_report_interval 10 build:no-tty --show_progress_rate_limit 10 # Build with GPU support by default. build --define=cuda=true # rules_cuda configuration build --@rules_cuda//cuda:enable_cuda build --@rules_cuda//cuda:cuda_targets=sm_52 build --@rules_cuda//cuda:compiler=nvcc build --repo_env=CUDA_PATH=/usr/local/cuda # Configuration to build without GPU support build:cpu-only --define=cuda=false # define a separate build folder for faster switching between configs build:cpu-only --platform_suffix=-cpu-only # See the note on the config-less build for details about why we are # doing this. We must also do it for the "-cpu-only" platform suffix. build --copt=-isystem --copt=bazel-out/k8-fastbuild-cpu-only/bin # rules_cuda configuration build:cpu-only --@rules_cuda//cuda:enable_cuda=False # Definition of --config=shell # interactive shell immediately before execution build:shell --run_under="//tools/bazel_tools:shellwrap" # Disable all warnings for external repositories. We don't care about # their warnings. build --per_file_copt=^external/@-w # Set additional warnings to error level. # # Implementation notes: # * we use file extensions to determine if we are using the C++ # compiler or the cuda compiler # * we use ^// at the start of the regex to only permit matching # PyTorch files. This excludes external repos. # # Note that because this is logically a command-line flag, it is # considered the word on what warnings are enabled. This has the # unfortunate consequence of preventing us from disabling an error at # the target level because those flags will come before these flags in # the action invocation. Instead we provide per-file exceptions after # this. # # On the bright side, this means we don't have to more broadly apply # the exceptions to an entire target. # # Looking for CUDA flags? We have a cu_library macro that we can edit # directly. Look in //tools/rules:cu.bzl for details. Editing the # macro over this has the following advantages: # * making changes does not require discarding the Bazel analysis # cache # * it allows for selective overrides on individual targets since the # macro-level opts will come earlier than target level overrides build --per_file_copt='^//.*\.(cpp|cc)$'@-Werror=all # The following warnings come from -Wall. We downgrade them from error # to warnings here. # # We intentionally use #pragma unroll, which is compiler specific. build --per_file_copt='^//.*\.(cpp|cc)$'@-Wno-error=unknown-pragmas build --per_file_copt='^//.*\.(cpp|cc)$'@-Werror=extra # The following warnings come from -Wextra. We downgrade them from error # to warnings here. # # unused-parameter-compare has a tremendous amount of violations in the # codebase. It will be a lot of work to fix them, just disable it for # now. build --per_file_copt='^//.*\.(cpp|cc)$'@-Wno-unused-parameter # missing-field-parameters has both a large number of violations in # the codebase, but it also is used pervasively in the Python C # API. There are a couple of catches though: # * we use multiple versions of the Python API and hence have # potentially multiple different versions of each relevant # struct. They may have different numbers of fields. It will be # unwieldy to support multiple versions in the same source file. # * Python itself for many of these structs recommends only # initializing a subset of the fields. We should respect the API # usage conventions of our dependencies. # # Hence, we just disable this warning altogether. We may want to clean # up some of the clear-cut cases that could be risky, but we still # likely want to have this disabled for the most part. build --per_file_copt='^//.*\.(cpp|cc)$'@-Wno-missing-field-initializers build --per_file_copt='^//.*\.(cpp|cc)$'@-Wno-unused-function build --per_file_copt='^//.*\.(cpp|cc)$'@-Wno-unused-variable build --per_file_copt='//:aten/src/ATen/RegisterCompositeExplicitAutograd\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:aten/src/ATen/RegisterCompositeImplicitAutograd\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:aten/src/ATen/RegisterMkldnnCPU\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:aten/src/ATen/RegisterNestedTensorCPU\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:aten/src/ATen/RegisterQuantizedCPU\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:aten/src/ATen/RegisterSparseCPU\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:aten/src/ATen/RegisterSparseCsrCPU\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:aten/src/ATen/RegisterNestedTensorMeta\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:aten/src/ATen/RegisterSparseMeta\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:aten/src/ATen/RegisterQuantizedMeta\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:aten/src/ATen/RegisterZeroTensor\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:torch/csrc/lazy/generated/RegisterAutogradLazy\.cpp$'@-Wno-error=unused-function build --per_file_copt='//:torch/csrc/lazy/generated/RegisterLazy\.cpp$'@-Wno-error=unused-function