| # https://bazel.build/concepts/platforms-intro#cxx |
| # This forces Bazel's C++ rules use platforms to select toolchains instead of the default |
| # --crosstool_top, --compiler, etc. |
| build --incompatible_enable_cc_toolchain_resolution |
| |
| # We do not want Bazel to detect any C++ toolchains on the local machine |
| # https://github.com/bazelbuild/bazel/blob/4ccc21f2f089971e5f4032397764a4be3549c40a/tools/cpp/cc_configure.bzl#L47 |
| build --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 |
| |
| # We would like developers to not upload to the remote build cache, only the RBE workers themselves. |
| build --remote_upload_local_results=false |
| |
| # 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 --incompatible_strict_action_env=true |
| |
| # This tells Bazel that the host platform can use the hermetic toolchain. This is a small lie until |
| # Windows support is added. |
| build --host_platform=//bazel/platform:host_with_hermetic_toolchain |
| # Linux users (the only platform where we support remote builds currently) can add the following |
| # line (uncommented) to //bazel/user/buildrc to allow interchangeable operation between local |
| # operations and remote operations. |
| # build --host_platform=//bazel/platform:linux_x64_hermetic |
| |
| # Register our toolchains. We do this here, and not in WORKSPACE.bazel because |
| # --extra_toolchains has priority over register_toolchains and we conditionally add some toolchains |
| # for RBE. |
| build --extra_toolchains=//toolchain:clang_linux_x64_toolchain |
| build --extra_toolchains=//toolchain:clang_mac_x64_toolchain |
| build --extra_toolchains=//toolchain:clang_mac_arm64_toolchain |
| |
| # Hide DEBUG messages from Bazel. |
| # Many of these are things related to the git checkouts that are not relevent to devs. |
| # https://bazel.build/reference/command-line-reference#flag--ui_event_filters |
| build --ui_event_filters=-debug |
| |
| # ============================================================================= |
| # Alias to build configurations below. This makes configuring things from |
| # the command line easier. |
| # |
| # NOTE: Add new enable flags which build new source files, and need to be |
| # included when exporting to other projects (CMake, GNI), to |
| # //bazel/exporter/bazel_query_command.go. |
| # Public string flags |
| build --flag_alias=fontmgr_factory=//bazel/common_config_settings:fontmgr_factory |
| build --flag_alias=gpu_backend=//src/gpu:gpu_backend |
| build --flag_alias=include_decoder=//src/codec:include_decoder |
| build --flag_alias=include_encoder=//src/encode:include_encoder |
| build --flag_alias=include_fontmgr=//bazel/common_config_settings:include_fontmgr |
| build --flag_alias=with_gl_standard=//src/gpu:with_gl_standard |
| |
| # Public boolean flags |
| build --flag_alias=disable_discardable_memory=no//src/lazy:enable_discardable_memory |
| build --flag_alias=enable_discardable_memory=//src/lazy:enable_discardable_memory |
| build --flag_alias=disable_effect_serialization=no//bazel/common_config_settings:enable_effect_serialization |
| build --flag_alias=enable_effect_serialization=//bazel/common_config_settings:enable_effect_serialization |
| build --flag_alias=disable_legacy_shader_context=no//src/shaders:legacy_shader_context |
| build --flag_alias=enable_legacy_shader_context=//src/shaders:legacy_shader_context |
| build --flag_alias=disable_native_interface=no//src/gpu/ganesh/gl:enable_native_interface |
| build --flag_alias=enable_native_interface=//src/gpu/ganesh/gl:enable_native_interface |
| build --flag_alias=disable_pdf_backend=no//src/pdf:enable_pdf_backend |
| build --flag_alias=enable_pdf_backend=//src/pdf:enable_pdf_backend |
| build --flag_alias=disable_sksl=no//src/sksl:enable_sksl |
| build --flag_alias=enable_sksl=//src/sksl:enable_sksl |
| build --flag_alias=disable_skslc=no//src/sksl:enable_skslc |
| build --flag_alias=enable_skslc=//src/sksl:enable_skslc |
| build --flag_alias=disable_sksl_tracing=no//src/sksl:enable_sksl_tracing |
| build --flag_alias=enable_sksl_tracing=//src/sksl:enable_sksl_tracing |
| build --flag_alias=disable_svg_canvas=no//src/svg:enable_svg_canvas |
| build --flag_alias=enable_svg_canvas=//src/svg:enable_svg_canvas |
| build --flag_alias=disable_tracing=no//bazel/common_config_settings:enable_tracing |
| build --flag_alias=enable_tracing=//bazel/common_config_settings:enable_tracing |
| build --flag_alias=disable_vma=no//src/gpu:use_vulkan_memory_allocator |
| build --flag_alias=enable_vma=//src/gpu:use_vulkan_memory_allocator |
| build --flag_alias=with_default_global_memory_pool=//src/lazy:use_default_global_memory_pool |
| build --flag_alias=with_no_global_memory_pool=no//src/lazy:use_default_global_memory_pool |
| build --flag_alias=with_harfbuzz=//bazel/common_config_settings:use_harfbuzz |
| build --flag_alias=with_no_harfbuzz=no//bazel/common_config_settings:use_harfbuzz |
| build --flag_alias=with_icu=//bazel/common_config_settings:use_icu |
| build --flag_alias=with_no_icu=no//bazel/common_config_settings:use_icu |
| |
| # Flags used by Skia tools, not to be used by clients |
| build --flag_alias=force_cpu_tests=//tests:force_cpu_tests |
| build --flag_alias=disable_gpu_test_utils=no//src/gpu:enable_gpu_test_utils |
| build --flag_alias=enable_gpu_test_utils=//src/gpu:enable_gpu_test_utils |
| build --flag_alias=compile_generated_cpp_files_for_headers=//bazel/common_config_settings:compile_generated_cpp_files_for_headers |
| |
| # Public CanvasKit flags |
| build --flag_alias=ck_enable_fonts=//modules/canvaskit:enable_fonts |
| build --flag_alias=ck_disable_fonts=no//modules/canvaskit:enable_fonts |
| build --flag_alias=ck_enable_canvas_polyfill=//modules/canvaskit:enable_canvas_polyfill |
| build --flag_alias=ck_disable_canvas_polyfill=no//modules/canvaskit:enable_canvas_polyfill |
| build --flag_alias=ck_enable_embedded_font=//modules/canvaskit:include_embedded_font |
| build --flag_alias=ck_disable_embedded_font=no//modules/canvaskit:include_embedded_font |
| build --flag_alias=ck_enable_matrix_js=//modules/canvaskit:include_matrix_js |
| build --flag_alias=ck_disable_matrix_js=no//modules/canvaskit:include_matrix_js |
| build --flag_alias=ck_enable_skottie=//modules/canvaskit:enable_skottie |
| build --flag_alias=ck_disable_skottie=no//modules/canvaskit:enable_skottie |
| build --flag_alias=ck_enable_skp_serialization=//modules/canvaskit:enable_skp_serialization |
| build --flag_alias=ck_disable_skp_serialization=no//modules/canvaskit:enable_skp_serialization |
| build --flag_alias=ck_enable_runtime_effect=//modules/canvaskit:enable_runtime_effect |
| build --flag_alias=ck_disable_runtime_effect=no//modules/canvaskit:enable_runtime_effect |
| |
| # ============================================================================= |
| # REMOTE BUILD EXECUTION |
| # ============================================================================= |
| |
| # ===== |
| # The following was copied from https://github.com/bazelbuild/bazel-toolchains/blob/ea243d43269df23de03a797cff2347e1fc3d02bb/bazelrc/bazel-4.1.0.bazelrc |
| # We should be free to modify this as we see fit. |
| # |
| # 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:remote --jobs=50 |
| |
| # Set several flags related to specifying the platform, toolchain and java |
| # properties. |
| build:remote --java_runtime_version=rbe_jdk |
| build:remote --tool_java_runtime_version=rbe_jdk |
| |
| # When a remote configuration is chosen, add "remote" to the list of spawn_strategies. |
| build:remote --spawn_strategy=remote,sandboxed |
| |
| # Enable remote execution so actions are performed on the remote systems. |
| build:remote --remote_executor=grpcs://remotebuildexecution.googleapis.com |
| |
| # No compile task should take more than 180 seconds. Really long running tasks |
| # are probably a result of spinning up new workers. |
| build:remote --remote_timeout=180 |
| |
| # 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. |
| # See https://developers.google.com/remote-build-execution/docs/authentication |
| # To authenticate, you should run gcloud auth application-default login |
| build:remote --google_default_credentials=true |
| |
| # End of the copied RBE settings |
| #===== |
| |
| # Use the RBE instance on the skia-rbe GCP project. |
| build:remote --remote_instance_name projects/skia-rbe/instances/default_instance |
| |
| # The linxu_rbe config will build on RBE and default to compiling for linux_x64 using |
| # the hermetic toolchain. |
| build:linux_rbe --config=remote |
| # On the RBE instances, we also have the Java and C++ toolchain from the Docker image available. |
| # These need to come after the --extra_toolchains flags (above) that register our hermetic |
| # toolchains, because we only want these backup toolchains to be used by Bazel internals, |
| # if at all. |
| build:linux_rbe --extra_toolchains=//bazel/rbe/gce_linux/java:all |
| build:linux_rbe --extra_toolchains=//bazel/rbe/gce_linux/config:cc-toolchain |
| # Make the Linux platform available for selection as an Execution platform (if it is not already, |
| # e.g. on a Linux host) |
| build:linux_rbe --extra_execution_platforms=//bazel/platform:linux_x64_hermetic |
| |
| # Import our specified build configurations |
| # https://docs.bazel.build/versions/main/best-practices.html#using-the-bazelrc-file |
| # We chose to split our build configurations into their own file to have better organization |
| # because we anticipate that file growing large. |
| import %workspace%/bazel/buildrc |
| # Import User's custom builds if they have defined any |
| try-import %workspace%/bazel/user/buildrc |