mirror of https://github.com/istio/proxy.git
594 lines
26 KiB
Plaintext
594 lines
26 KiB
Plaintext
# Envoy specific Bazel build/test options.
|
|
|
|
# Bazel doesn't need more than 200MB of memory for local build based on memory profiling:
|
|
# https://docs.bazel.build/versions/master/skylark/performance.html#memory-profiling
|
|
# The default JVM max heapsize is 1/4 of physical memory up to 32GB which could be large
|
|
# enough to consume all memory constrained by cgroup in large host.
|
|
# Limiting JVM heapsize here to let it do GC more when approaching the limit to
|
|
# leave room for compiler/linker.
|
|
# The number 3G is chosen heuristically to both support large VM and small VM with RBE.
|
|
# Startup options cannot be selected via config.
|
|
# TODO: Adding just to test android
|
|
startup --host_jvm_args=-Xmx3g
|
|
|
|
common --noenable_bzlmod
|
|
|
|
fetch --color=yes
|
|
run --color=yes
|
|
|
|
build --color=yes
|
|
build --jobs=HOST_CPUS-1
|
|
build --workspace_status_command="bash bazel/get_workspace_status"
|
|
build --incompatible_strict_action_env
|
|
build --java_runtime_version=remotejdk_11
|
|
build --tool_java_runtime_version=remotejdk_11
|
|
build --java_language_version=11
|
|
build --tool_java_language_version=11
|
|
build --platform_mappings=bazel/platform_mappings
|
|
# silence absl logspam.
|
|
build --copt=-DABSL_MIN_LOG_LEVEL=4
|
|
# Global C++ standard and common warning suppressions
|
|
build --cxxopt=-std=c++20 --host_cxxopt=-std=c++20
|
|
build --copt=-Wno-deprecated-declarations
|
|
build --define envoy_mobile_listener=enabled
|
|
build --experimental_repository_downloader_retries=2
|
|
build --enable_platform_specific_config
|
|
build --incompatible_merge_fixed_and_default_shell_env
|
|
# A workaround for slow ICU download.
|
|
build --http_timeout_scaling=6.0
|
|
|
|
# Pass CC, CXX and LLVM_CONFIG variables from the environment.
|
|
# We assume they have stable values, so this won't cause action cache misses.
|
|
build --action_env=CC --host_action_env=CC
|
|
build --action_env=CXX --host_action_env=CXX
|
|
build --action_env=LLVM_CONFIG --host_action_env=LLVM_CONFIG
|
|
# Do not pass through PATH however.
|
|
# It tends to have machine-specific values, such as dynamically created temp folders.
|
|
# This would make it impossible to share remote action cache hits among machines.
|
|
# build --action_env=PATH --host_action_env=PATH
|
|
# To make our own CI green, we do need that flag on Windows though.
|
|
build:windows --action_env=PATH --host_action_env=PATH
|
|
|
|
# Allow stamped caches to bust when local filesystem changes.
|
|
# Requires setting `BAZEL_VOLATILE_DIRTY` in the env.
|
|
build --action_env=BAZEL_VOLATILE_DIRTY --host_action_env=BAZEL_VOLATILE_DIRTY
|
|
|
|
build --test_summary=terse
|
|
|
|
build:docs-ci --action_env=DOCS_RST_CHECK=1 --host_action_env=DOCS_RST_CHECK=1
|
|
|
|
# TODO(keith): Remove once these 2 are the default
|
|
build --incompatible_config_setting_private_default_visibility
|
|
build --incompatible_enforce_config_setting_visibility
|
|
|
|
test --test_verbose_timeout_warnings
|
|
test --experimental_ui_max_stdouterr_bytes=11712829 #default 1048576
|
|
|
|
# Allow tags to influence execution requirements
|
|
common --experimental_allow_tags_propagation
|
|
|
|
build:linux --copt=-fdebug-types-section
|
|
# Enable position independent code (this is the default on macOS and Windows)
|
|
# (Workaround for https://github.com/bazelbuild/rules_foreign_cc/issues/421)
|
|
build:linux --copt=-fPIC
|
|
build:linux --cxxopt=-fsized-deallocation --host_cxxopt=-fsized-deallocation
|
|
build:linux --conlyopt=-fexceptions
|
|
build:linux --fission=dbg,opt
|
|
build:linux --features=per_object_debug_info
|
|
build:linux --action_env=BAZEL_LINKLIBS=-l%:libstdc++.a
|
|
build:linux --action_env=BAZEL_LINKOPTS=-lm:-fuse-ld=gold
|
|
|
|
# We already have absl in the build, define absl=1 to tell googletest to use absl for backtrace.
|
|
build --define absl=1
|
|
|
|
# Disable ICU linking for googleurl.
|
|
build --@com_googlesource_googleurl//build_config:system_icu=0
|
|
|
|
# Common flags for sanitizers
|
|
build:sanitizer --define tcmalloc=disabled
|
|
build:sanitizer --linkopt -ldl
|
|
|
|
# Common flags for Clang (shared between all clang variants)
|
|
build:clang-common --action_env=BAZEL_COMPILER=clang
|
|
build:clang-common --linkopt=-fuse-ld=lld
|
|
build:clang-common --action_env=CC=clang --host_action_env=CC=clang
|
|
build:clang-common --action_env=CXX=clang++ --host_action_env=CXX=clang++
|
|
build:clang-common --incompatible_enable_cc_toolchain_resolution=false
|
|
|
|
# Clang with libc++ (default)
|
|
build:clang --config=clang-common
|
|
build:clang --config=libc++
|
|
|
|
build:arm64-clang --config=clang
|
|
|
|
# Flags for Clang + PCH
|
|
build:clang-pch --spawn_strategy=local
|
|
build:clang-pch --define=ENVOY_CLANG_PCH=1
|
|
|
|
# libstdc++ - currently only used for gcc
|
|
build:libstdc++ --@envoy//bazel:libc++=false
|
|
build:libstdc++ --@envoy//bazel:libstdc++=true
|
|
|
|
# Use gold linker for gcc compiler.
|
|
build:gcc --config=libstdc++
|
|
build:gcc --test_env=HEAPCHECK=
|
|
build:gcc --action_env=BAZEL_COMPILER=gcc
|
|
build:gcc --action_env=CC=gcc --action_env=CXX=g++
|
|
# This is to work around a bug in GCC that makes debug-types-section
|
|
# option not play well with fission:
|
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110885
|
|
build:gcc --copt=-fno-debug-types-section
|
|
# These trigger errors in multiple places both in Envoy dependecies
|
|
# and in Envoy code itself when using GCC.
|
|
# And in all cases the reports appear to be clear false positives.
|
|
build:gcc --copt=-Wno-error=restrict
|
|
build:gcc --copt=-Wno-error=uninitialized
|
|
build:gcc --cxxopt=-Wno-missing-requires
|
|
build:gcc --cxxopt=-Wno-dangling-reference
|
|
build:gcc --cxxopt=-Wno-nonnull-compare
|
|
build:gcc --incompatible_enable_cc_toolchain_resolution=false
|
|
build:gcc --linkopt=-fuse-ld=gold --host_linkopt=-fuse-ld=gold
|
|
|
|
# Clang-tidy
|
|
# TODO(phlax): enable this, its throwing some errors as well as finding more issues
|
|
# build:clang-tidy --@envoy_toolshed//format/clang_tidy:executable=@envoy//tools/clang-tidy
|
|
build:clang-tidy --@envoy_toolshed//format/clang_tidy:config=//:clang_tidy_config
|
|
build:clang-tidy --aspects @envoy_toolshed//format/clang_tidy:clang_tidy.bzl%clang_tidy_aspect
|
|
build:clang-tidy --output_groups=report
|
|
build:clang-tidy --build_tag_filters=-notidy
|
|
|
|
# Basic ASAN/UBSAN that works for gcc or llvm
|
|
build:asan-common --config=sanitizer
|
|
# ASAN install its signal handler, disable ours so the stacktrace will be printed by ASAN
|
|
build:asan-common --define signal_trace=disabled
|
|
build:asan-common --define ENVOY_CONFIG_ASAN=1
|
|
build:asan-common --build_tag_filters=-no_san
|
|
build:asan-common --test_tag_filters=-no_san
|
|
build:asan-common --copt -fsanitize=address,undefined
|
|
build:asan-common --linkopt -fsanitize=address,undefined
|
|
# vptr and function sanitizer are enabled in asan if it is set up via bazel/setup_clang.sh.
|
|
build:asan-common --copt -fno-sanitize=vptr,function
|
|
build:asan-common --linkopt -fno-sanitize=vptr,function
|
|
build:asan-common --copt -DADDRESS_SANITIZER=1
|
|
build:asan-common --copt -DUNDEFINED_SANITIZER=1
|
|
build:asan-common --copt -D__SANITIZE_ADDRESS__
|
|
build:asan-common --test_env=ASAN_OPTIONS=handle_abort=1:allow_addr2line=true:check_initialization_order=true:strict_init_order=true:detect_odr_violation=1
|
|
build:asan-common --test_env=UBSAN_OPTIONS=halt_on_error=true:print_stacktrace=1
|
|
build:asan-common --test_env=ASAN_SYMBOLIZER_PATH
|
|
# ASAN needs -O1 to get reasonable performance.
|
|
build:asan-common --copt -O1
|
|
build:asan-common --copt -fno-optimize-sibling-calls
|
|
|
|
# ASAN config with clang runtime
|
|
build:asan --config=asan-common
|
|
build:asan --linkopt --rtlib=compiler-rt
|
|
build:asan --linkopt --unwindlib=libgcc
|
|
build:asan --linkopt=-l:libclang_rt.ubsan_standalone.a
|
|
build:asan --linkopt=-l:libclang_rt.ubsan_standalone_cxx.a
|
|
build:asan --action_env=ENVOY_UBSAN_VPTR=1
|
|
build:asan --copt=-fsanitize=vptr,function
|
|
build:asan --linkopt=-fsanitize=vptr,function
|
|
build:asan --linkopt='-L/opt/llvm/lib/clang/18/lib/x86_64-unknown-linux-gnu'
|
|
|
|
# macOS
|
|
build:macos --action_env=PATH=/opt/homebrew/bin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin
|
|
build:macos --host_action_env=PATH=/opt/homebrew/bin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin
|
|
build:macos --define tcmalloc=disabled
|
|
build:macos --cxxopt=-Wno-nullability-completeness
|
|
|
|
# macOS ASAN/UBSAN
|
|
build:macos-asan --config=asan
|
|
# Workaround, see https://github.com/bazelbuild/bazel/issues/6932
|
|
build:macos-asan --copt -Wno-macro-redefined
|
|
build:macos-asan --copt -D_FORTIFY_SOURCE=0
|
|
# Workaround, see https://github.com/bazelbuild/bazel/issues/4341
|
|
build:macos-asan --copt -DGRPC_BAZEL_BUILD
|
|
# Dynamic link cause issues like: `dyld: malformed mach-o: load commands size (59272) > 32768`
|
|
build:macos-asan --dynamic_mode=off
|
|
|
|
# Base TSAN config
|
|
build:tsan --action_env=ENVOY_TSAN=1
|
|
build:tsan --config=sanitizer
|
|
build:tsan --define ENVOY_CONFIG_TSAN=1
|
|
build:tsan --copt -fsanitize=thread
|
|
build:tsan --linkopt -fsanitize=thread
|
|
build:tsan --copt -DTHREAD_SANITIZER=1
|
|
build:tsan --build_tag_filters=-no_san,-no_tsan
|
|
build:tsan --test_tag_filters=-no_san,-no_tsan
|
|
# Needed due to https://github.com/libevent/libevent/issues/777
|
|
build:tsan --copt -DEVENT__DISABLE_DEBUG_MODE
|
|
# https://github.com/abseil/abseil-cpp/issues/760
|
|
# https://github.com/google/sanitizers/issues/953
|
|
build:tsan --test_env="TSAN_OPTIONS=report_atomic_races=0"
|
|
build:tsan --test_timeout=120,600,1500,4800
|
|
|
|
# Base MSAN config
|
|
build:msan --action_env=ENVOY_MSAN=1
|
|
build:msan --config=sanitizer
|
|
build:msan --build_tag_filters=-no_san
|
|
build:msan --test_tag_filters=-no_san
|
|
build:msan --define ENVOY_CONFIG_MSAN=1
|
|
build:msan --copt -fsanitize=memory
|
|
build:msan --linkopt -fsanitize=memory
|
|
build:msan --copt -fsanitize-memory-track-origins=2
|
|
build:msan --copt -DMEMORY_SANITIZER=1
|
|
build:msan --test_env=MSAN_SYMBOLIZER_PATH
|
|
# MSAN needs -O1 to get reasonable performance.
|
|
build:msan --copt -O1
|
|
build:msan --copt -fno-optimize-sibling-calls
|
|
|
|
build:libc++ --action_env=CXXFLAGS=-stdlib=libc++
|
|
build:libc++ --action_env=LDFLAGS=-stdlib=libc++
|
|
build:libc++ --action_env=BAZEL_CXXOPTS=-stdlib=libc++
|
|
build:libc++ --action_env=BAZEL_LINKLIBS=-l%:libc++.a:-l%:libc++abi.a
|
|
build:libc++ --action_env=BAZEL_LINKOPTS=-lm:-pthread
|
|
build:libc++ --define force_libcpp=enabled
|
|
build:libc++ --@envoy//bazel:libc++=true
|
|
|
|
|
|
|
|
|
|
# Optimize build for binary size reduction.
|
|
build:sizeopt -c opt --copt -Os
|
|
|
|
# Test options
|
|
build --test_env=HEAPCHECK=normal --test_env=PPROF_PATH
|
|
|
|
# Coverage options
|
|
coverage --config=coverage
|
|
coverage --build_tests_only
|
|
|
|
build:coverage --action_env=BAZEL_USE_LLVM_NATIVE_COVERAGE=1
|
|
build:coverage --action_env=GCOV=llvm-profdata
|
|
build:coverage --copt=-DNDEBUG
|
|
# 1.5x original timeout + 300s for trace merger in all categories
|
|
build:coverage --test_timeout=390,750,1500,5700
|
|
build:coverage --define=ENVOY_CONFIG_COVERAGE=1
|
|
build:coverage --cxxopt="-DENVOY_CONFIG_COVERAGE=1"
|
|
build:coverage --test_env=HEAPCHECK=
|
|
build:coverage --combined_report=lcov
|
|
build:coverage --strategy=TestRunner=remote,sandboxed,local
|
|
build:coverage --strategy=CoverageReport=sandboxed,local
|
|
build:coverage --experimental_use_llvm_covmap
|
|
build:coverage --experimental_generate_llvm_lcov
|
|
build:coverage --experimental_split_coverage_postprocessing
|
|
build:coverage --experimental_fetch_all_coverage_outputs
|
|
build:coverage --collect_code_coverage
|
|
build:coverage --instrumentation_filter="^//source(?!/common/quic/platform)[/:],^//envoy[/:],^//contrib(?!/.*/test)[/:]"
|
|
build:coverage --remote_download_minimal
|
|
build:coverage --define=tcmalloc=gperftools
|
|
build:coverage --define=no_debug_info=1
|
|
# `--no-relax` is required for coverage to not err with `relocation R_X86_64_REX_GOTPCRELX`
|
|
build:coverage --linkopt=-Wl,-s,--no-relax
|
|
build:coverage --test_env=ENVOY_IP_TEST_VERSIONS=v4only
|
|
build:coverage --define=dynamic_link_tests=false
|
|
# Use custom report generator that also generates HTML
|
|
build:coverage --coverage_report_generator=@envoy//tools/coverage:report_generator
|
|
|
|
build:test-coverage --test_arg="-l trace"
|
|
build:test-coverage --test_arg="--log-path /dev/null"
|
|
build:test-coverage --test_tag_filters=-nocoverage,-fuzz_target
|
|
build:fuzz-coverage --config=plain-fuzzer
|
|
build:fuzz-coverage --run_under=@envoy//bazel/coverage:fuzz_coverage_wrapper.sh
|
|
build:fuzz-coverage --test_tag_filters=-nocoverage
|
|
# Existing fuzz tests don't need a full WASM runtime and in generally we don't really want to
|
|
# fuzz dependencies anyways. On the other hand, disabling WASM reduces the build time and
|
|
# resources required to build and run the tests.
|
|
build:fuzz-coverage --define=wasm=disabled
|
|
build:fuzz-coverage --config=fuzz-coverage-config
|
|
build:fuzz-coverage-config --//tools/coverage:config=//test:fuzz_coverage_config
|
|
|
|
build:cache-local --remote_cache=grpc://localhost:9092
|
|
|
|
# Remote execution: https://docs.bazel.build/versions/master/remote-execution.html
|
|
build:rbe-toolchain --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
|
|
build:rbe-toolchain --incompatible_enable_cc_toolchain_resolution=false
|
|
|
|
build:rbe-toolchain-clang --config=rbe-toolchain
|
|
build:rbe-toolchain-clang --config=clang
|
|
build:rbe-toolchain-clang --platforms=@envoy//bazel/rbe/toolchains:rbe_linux_clang_platform
|
|
build:rbe-toolchain-clang --host_platform=@envoy//bazel/rbe/toolchains:rbe_linux_clang_platform
|
|
build:rbe-toolchain-clang --crosstool_top=@envoy//bazel/rbe/toolchains/configs/linux/clang/cc:toolchain
|
|
build:rbe-toolchain-clang --extra_toolchains=@envoy//bazel/rbe/toolchains/configs/linux/clang/config:cc-toolchain
|
|
build:rbe-toolchain-clang --action_env=CC=clang --action_env=CXX=clang++
|
|
|
|
|
|
build:rbe-toolchain-arm64-clang --config=rbe-toolchain
|
|
build:rbe-toolchain-arm64-clang --config=clang
|
|
build:rbe-toolchain-arm64-clang --platforms=@envoy//bazel/rbe/toolchains:rbe_linux_arm64_clang_platform
|
|
build:rbe-toolchain-arm64-clang --host_platform=@envoy//bazel/rbe/toolchains:rbe_linux_arm64_clang_platform
|
|
build:rbe-toolchain-arm64-clang --crosstool_top=@envoy//bazel/rbe/toolchains/configs/linux/clang/cc:toolchain
|
|
build:rbe-toolchain-arm64-clang --extra_toolchains=@envoy//bazel/rbe/toolchains/configs/linux/clang/config:cc-toolchain-arm64
|
|
build:rbe-toolchain-arm64-clang --action_env=CC=clang --action_env=CXX=clang++
|
|
|
|
|
|
# Sanitizer configs - CI uses the *-common configs directly
|
|
# Note: clang config comes from rbe-toolchain-clang to avoid duplication
|
|
|
|
build:rbe-toolchain-gcc --config=rbe-toolchain
|
|
build:rbe-toolchain-gcc --platforms=@envoy//bazel/rbe/toolchains:rbe_linux_gcc_platform
|
|
build:rbe-toolchain-gcc --host_platform=@envoy//bazel/rbe/toolchains:rbe_linux_gcc_platform
|
|
build:rbe-toolchain-gcc --crosstool_top=@envoy//bazel/rbe/toolchains/configs/linux/gcc/cc:toolchain
|
|
build:rbe-toolchain-gcc --extra_toolchains=@envoy//bazel/rbe/toolchains/configs/linux/gcc/config:cc-toolchain
|
|
|
|
build:remote --spawn_strategy=remote,sandboxed,local
|
|
build:remote --strategy=Javac=remote,sandboxed,local
|
|
build:remote --strategy=Closure=remote,sandboxed,local
|
|
build:remote --strategy=Genrule=remote,sandboxed,local
|
|
|
|
# Windows bazel does not allow sandboxed as a spawn strategy
|
|
build:remote-windows --spawn_strategy=remote,local
|
|
build:remote-windows --strategy=Javac=remote,local
|
|
build:remote-windows --strategy=Closure=remote,local
|
|
build:remote-windows --strategy=Genrule=remote,local
|
|
build:remote-windows --strategy=CppLink=local
|
|
build:remote-windows --remote_timeout=7200
|
|
build:remote-windows --google_default_credentials=true
|
|
build:remote-windows --remote_download_toplevel
|
|
|
|
build:remote-clang --config=remote
|
|
build:remote-clang --config=rbe-toolchain-clang
|
|
|
|
|
|
build:remote-arm64-clang --config=remote
|
|
build:remote-arm64-clang --config=rbe-toolchain-arm64-clang
|
|
|
|
|
|
build:remote-gcc --config=remote
|
|
build:remote-gcc --config=gcc
|
|
build:remote-gcc --config=rbe-toolchain-gcc
|
|
|
|
build:remote-asan --config=remote
|
|
build:remote-asan --config=rbe-toolchain-clang
|
|
build:remote-asan --config=asan
|
|
|
|
build:remote-msan --config=remote
|
|
build:remote-msan --config=rbe-toolchain-clang
|
|
build:remote-msan --config=msan
|
|
|
|
build:remote-tsan --config=remote
|
|
build:remote-tsan --config=rbe-toolchain-clang
|
|
build:remote-tsan --config=tsan
|
|
|
|
build:remote-msvc-cl --config=remote-windows
|
|
build:remote-msvc-cl --config=msvc-cl
|
|
build:remote-msvc-cl --config=rbe-toolchain-msvc-cl
|
|
|
|
build:remote-clang-cl --config=remote-windows
|
|
build:remote-clang-cl --config=clang-cl
|
|
build:remote-clang-cl --config=rbe-toolchain-clang-cl
|
|
|
|
## Compile-time-options testing
|
|
# Right now, none of the available compile-time options conflict with each other. If this
|
|
# changes, this build type may need to be broken up.
|
|
build:compile-time-options --define=admin_html=disabled
|
|
build:compile-time-options --define=signal_trace=disabled
|
|
build:compile-time-options --define=hot_restart=disabled
|
|
build:compile-time-options --define=google_grpc=disabled
|
|
build:compile-time-options --define=boringssl=fips
|
|
build:compile-time-options --define=log_debug_assert_in_release=enabled
|
|
build:compile-time-options --define=path_normalization_by_default=true
|
|
build:compile-time-options --define=deprecated_features=disabled
|
|
build:compile-time-options --define=tcmalloc=gperftools
|
|
build:compile-time-options --define=zlib=ng
|
|
build:compile-time-options --define=uhv=enabled
|
|
# gRPC has a lot of deprecated-enum-enum-conversion warnings with C++20
|
|
build:compile-time-options --copt=-Wno-error=deprecated-enum-enum-conversion
|
|
build:compile-time-options --test_env=ENVOY_HAS_EXTRA_EXTENSIONS=true
|
|
build:compile-time-options --@envoy//bazel:http3=False
|
|
build:compile-time-options --@envoy//source/extensions/filters/http/kill_request:enabled
|
|
|
|
# Docker sandbox
|
|
# NOTE: Update this from https://github.com/envoyproxy/envoy-build-tools/blob/main/toolchains/rbe_toolchains_config.bzl#L8
|
|
build:docker-sandbox --experimental_docker_image=envoyproxy/envoy-build-ubuntu:f4a881a1205e8e6db1a57162faf3df7aed88eae8@sha256:b10346fe2eee41733dbab0e02322c47a538bf3938d093a5daebad9699860b814
|
|
build:docker-sandbox --spawn_strategy=docker
|
|
build:docker-sandbox --strategy=Javac=docker
|
|
build:docker-sandbox --strategy=Closure=docker
|
|
build:docker-sandbox --strategy=Genrule=docker
|
|
build:docker-sandbox --define=EXECUTOR=remote
|
|
build:docker-sandbox --experimental_docker_verbose
|
|
build:docker-sandbox --experimental_enable_docker_sandbox
|
|
|
|
build:docker-clang --config=docker-sandbox
|
|
build:docker-clang --config=rbe-toolchain-clang
|
|
|
|
|
|
build:docker-gcc --config=docker-sandbox
|
|
build:docker-gcc --config=gcc
|
|
build:docker-gcc --config=rbe-toolchain-gcc
|
|
|
|
build:docker-asan --config=docker-sandbox
|
|
build:docker-asan --config=rbe-toolchain-clang
|
|
build:docker-asan --config=asan
|
|
|
|
build:docker-msan --config=docker-sandbox
|
|
build:docker-msan --config=rbe-toolchain-clang
|
|
build:docker-msan --config=msan
|
|
|
|
build:docker-tsan --config=docker-sandbox
|
|
build:docker-tsan --config=rbe-toolchain-clang
|
|
build:docker-tsan --config=tsan
|
|
|
|
# CI configurations
|
|
build:remote-ci --config=ci
|
|
build:remote-ci --remote_download_minimal
|
|
|
|
# Note this config is used by mobile CI also.
|
|
common:ci --noshow_progress
|
|
common:ci --noshow_loading_progress
|
|
common:ci --test_output=errors
|
|
|
|
# Fuzz builds
|
|
|
|
# Shared fuzzing configuration.
|
|
build:fuzzing --define=ENVOY_CONFIG_ASAN=1
|
|
build:fuzzing --copt=-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
|
|
|
# Fuzzing without ASAN. This is useful for profiling fuzzers without any ASAN artifacts.
|
|
build:plain-fuzzer --config=fuzzing
|
|
build:plain-fuzzer --define=FUZZING_ENGINE=libfuzzer
|
|
# The fuzzing rules provide their own instrumentation, but it is currently
|
|
# disabled due to bazelbuild/bazel#12888. Instead, we provide instrumentation at
|
|
# the top level through these options.
|
|
build:plain-fuzzer --copt=-fsanitize=fuzzer-no-link
|
|
build:plain-fuzzer --linkopt=-fsanitize=fuzzer-no-link
|
|
|
|
# ASAN fuzzer
|
|
build:asan-fuzzer --config=plain-fuzzer
|
|
build:asan-fuzzer --config=asan
|
|
build:asan-fuzzer --copt=-fno-omit-frame-pointer
|
|
# Remove UBSAN halt_on_error to avoid crashing on protobuf errors.
|
|
build:asan-fuzzer --test_env=UBSAN_OPTIONS=print_stacktrace=1
|
|
build:asan-fuzzer --linkopt=-lc++
|
|
|
|
build:oss-fuzz --config=fuzzing
|
|
build:oss-fuzz --config=libc++
|
|
build:oss-fuzz --define=FUZZING_ENGINE=oss-fuzz
|
|
build:oss-fuzz --@rules_fuzzing//fuzzing:cc_engine_instrumentation=oss-fuzz
|
|
build:oss-fuzz --@rules_fuzzing//fuzzing:cc_engine_sanitizer=none
|
|
build:oss-fuzz --dynamic_mode=off
|
|
build:oss-fuzz --strip=never
|
|
build:oss-fuzz --copt=-fno-sanitize=vptr
|
|
build:oss-fuzz --linkopt=-fno-sanitize=vptr
|
|
build:oss-fuzz --define=tcmalloc=disabled
|
|
build:oss-fuzz --define=signal_trace=disabled
|
|
build:oss-fuzz --copt=-D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
|
build:oss-fuzz --define=force_libcpp=enabled
|
|
build:oss-fuzz --linkopt=-lc++
|
|
build:oss-fuzz --linkopt=-pthread
|
|
|
|
# Compile database generation config
|
|
build:compdb --build_tag_filters=-nocompdb
|
|
|
|
# Windows build quirks
|
|
build:windows --action_env=TMPDIR
|
|
build:windows --define signal_trace=disabled
|
|
build:windows --define hot_restart=disabled
|
|
build:windows --define tcmalloc=disabled
|
|
build:windows --define wasm=disabled
|
|
build:windows --define manual_stamp=manual_stamp
|
|
build:windows --cxxopt="/std:c++20"
|
|
build:windows --output_groups=+pdb_file
|
|
|
|
# TODO(wrowe,sunjayBhatia): Resolve bugs upstream in curl and rules_foreign_cc
|
|
# See issue https://github.com/bazelbuild/rules_foreign_cc/issues/301
|
|
build:windows --copt="-DCARES_STATICLIB"
|
|
build:windows --copt="-DNGHTTP2_STATICLIB"
|
|
build:windows --copt="-DCURL_STATICLIB"
|
|
|
|
# Override any clang preference if building msvc-cl
|
|
# Drop the determinism feature (-DDATE etc are a no-op in msvc-cl)
|
|
build:msvc-cl --action_env=USE_CLANG_CL=""
|
|
build:msvc-cl --define clang_cl=0
|
|
build:msvc-cl --features=-determinism
|
|
|
|
# Windows build behaviors when using clang-cl
|
|
build:clang-cl --action_env=USE_CLANG_CL=1
|
|
build:clang-cl --define clang_cl=1
|
|
|
|
# Required to work around Windows clang-cl build defects
|
|
# Ignore conflicting definitions of _WIN32_WINNT
|
|
# Override determinism flags (DATE etc) is valid on clang-cl compiler
|
|
build:clang-cl --copt="-Wno-macro-redefined"
|
|
build:clang-cl --copt="-Wno-builtin-macro-redefined"
|
|
# Workaround problematic missing override declarations of mocks
|
|
# TODO: resolve this class of problematic mocks, e.g.
|
|
# ./test/mocks/http/stream.h(16,21): error: 'addCallbacks'
|
|
# overrides a member function but is not marked 'override'
|
|
# MOCK_METHOD(void, addCallbacks, (StreamCallbacks & callbacks));
|
|
build:clang-cl --copt="-Wno-inconsistent-missing-override"
|
|
|
|
# Defaults to 'auto' - Off for windows, so override to linux behavior
|
|
build:windows --enable_runfiles=yes
|
|
|
|
# This should become adopted by bazel as the default
|
|
build:windows --features=compiler_param_file
|
|
|
|
# These options attempt to force a monolithic binary including the CRT
|
|
build:windows --features=fully_static_link
|
|
build:windows --features=static_link_msvcrt
|
|
build:windows --dynamic_mode=off
|
|
|
|
# RBE (Google)
|
|
build:cache-google --google_default_credentials=true
|
|
build:cache-google --remote_cache=grpcs://remotebuildexecution.googleapis.com
|
|
build:cache-google --remote_instance_name=projects/envoy-ci/instances/default_instance
|
|
build:cache-google --remote_timeout=7200
|
|
build:rbe-google --remote_executor=grpcs://remotebuildexecution.googleapis.com
|
|
build:rbe-google --config=cache-google
|
|
|
|
build:rbe-google-bes --bes_backend=grpcs://buildeventservice.googleapis.com
|
|
build:rbe-google-bes --bes_results_url=https://source.cloud.google.com/results/invocations/
|
|
build:rbe-google-bes --bes_upload_mode=fully_async
|
|
|
|
# RBE (Engflow mobile)
|
|
build:rbe-engflow --google_default_credentials=false
|
|
build:rbe-engflow --remote_cache=grpcs://envoy.cluster.engflow.com
|
|
build:rbe-engflow --remote_executor=grpcs://envoy.cluster.engflow.com
|
|
build:rbe-engflow --bes_backend=grpcs://envoy.cluster.engflow.com/
|
|
build:rbe-engflow --bes_results_url=https://envoy.cluster.engflow.com/invocation/
|
|
build:rbe-engflow --credential_helper=*.engflow.com=%workspace%/bazel/engflow-bazel-credential-helper.sh
|
|
build:rbe-engflow --grpc_keepalive_time=60s
|
|
build:rbe-engflow --grpc_keepalive_timeout=30s
|
|
build:rbe-engflow --remote_timeout=3600s
|
|
build:rbe-engflow --bes_timeout=3600s
|
|
build:rbe-engflow --bes_upload_mode=fully_async
|
|
build:rbe-engflow --nolegacy_important_outputs
|
|
|
|
# RBE (Engflow Envoy)
|
|
common:common-envoy-engflow --google_default_credentials=false
|
|
common:common-envoy-engflow --credential_helper=*.engflow.com=%workspace%/bazel/engflow-bazel-credential-helper.sh
|
|
common:common-envoy-engflow --grpc_keepalive_time=60s
|
|
common:common-envoy-engflow --grpc_keepalive_timeout=30s
|
|
common:common-envoy-engflow --remote_cache_compression
|
|
|
|
common:cache-envoy-engflow --remote_cache=grpcs://mordenite.cluster.engflow.com
|
|
common:cache-envoy-engflow --remote_timeout=3600s
|
|
# common:cache-envoy-engflow --remote_instance_name=llvm-18
|
|
common:bes-envoy-engflow --bes_backend=grpcs://mordenite.cluster.engflow.com/
|
|
common:bes-envoy-engflow --bes_results_url=https://mordenite.cluster.engflow.com/invocation/
|
|
common:bes-envoy-engflow --bes_timeout=3600s
|
|
common:bes-envoy-engflow --bes_upload_mode=fully_async
|
|
common:bes-envoy-engflow --nolegacy_important_outputs
|
|
common:rbe-envoy-engflow --remote_executor=grpcs://mordenite.cluster.engflow.com
|
|
common:rbe-envoy-engflow --remote_default_exec_properties=container-image=docker://gcr.io/envoy-ci/envoy-build@sha256:95d7afdea0f0f8881e88fa5e581db4f50907d0745ac8d90e00357ac1a316abe5
|
|
common:rbe-envoy-engflow --jobs=200
|
|
common:rbe-envoy-engflow --define=engflow_rbe=true
|
|
|
|
common:remote-envoy-engflow --config=common-envoy-engflow
|
|
common:remote-envoy-engflow --config=cache-envoy-engflow
|
|
common:remote-envoy-engflow --config=rbe-envoy-engflow
|
|
|
|
common:remote-cache-envoy-engflow --config=common-envoy-engflow
|
|
common:remote-cache-envoy-engflow --config=cache-envoy-engflow
|
|
|
|
# Specifies the rustfmt.toml for all rustfmt_test targets.
|
|
build --@rules_rust//rust/settings:rustfmt.toml=//:rustfmt.toml
|
|
|
|
#############################################################################
|
|
# debug: Various Bazel debugging flags
|
|
#############################################################################
|
|
# debug/bazel
|
|
common:debug-bazel --announce_rc
|
|
common:debug-bazel -s
|
|
# debug/sandbox
|
|
common:debug-sandbox --verbose_failures
|
|
common:debug-sandbox --sandbox_debug
|
|
# debug/coverage
|
|
common:debug-coverage --action_env=VERBOSE_COVERAGE=true
|
|
common:debug-coverage --test_env=VERBOSE_COVERAGE=true
|
|
common:debug-coverage --test_env=DISPLAY_LCOV_CMD=true
|
|
common:debug-coverage --config=debug-tests
|
|
# debug/tests
|
|
common:debug-tests --test_output=all
|
|
# debug/everything
|
|
common:debug --config=debug-bazel
|
|
common:debug --config=debug-sandbox
|
|
common:debug --config=debug-coverage
|
|
common:debug --config=debug-tests
|
|
|
|
try-import %workspace%/repo.bazelrc
|
|
try-import %workspace%/clang.bazelrc
|
|
try-import %workspace%/user.bazelrc
|
|
try-import %workspace%/local_tsan.bazelrc
|