| # This file is inspired by its counterpart over at the Envoy repository. |
| # The following .bazelrc content is forked from the main Envoy repository. This is necessary since |
| # this needs to be available before we can access the Envoy repository contents via Bazel. |
| |
| build:clang-asan --test_timeout=900 |
| build:clang-tsan --test_timeout=900 |
| # See https://github.com/envoyproxy/nighthawk/issues/405 |
| build:macos --copt -UDEBUG |
| |
| # 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, which is the case in CircleCI. |
| # Limiting JVM heapsize here to let it do GC more when approaching the limit to |
| # leave room for compiler/linker. |
| # The number 2G is choosed heuristically to both support in CircleCI and large enough for RBE. |
| # Startup options cannot be selected via config. |
| startup --host_jvm_args=-Xmx2g |
| |
| build --workspace_status_command="bash bazel/get_workspace_status" |
| build --experimental_strict_action_env=true |
| build --host_force_python=PY3 |
| build --action_env=BAZEL_LINKLIBS=-l%:libstdc++.a |
| build --action_env=BAZEL_LINKOPTS=-lm |
| build --host_javabase=@bazel_tools//tools/jdk:remote_jdk11 |
| build --javabase=@bazel_tools//tools/jdk:remote_jdk11 |
| build --enable_platform_specific_config |
| |
| # Enable position independent code, this option is not supported on Windows and default on on macOS. |
| build:linux --copt=-fPIC |
| build:linux --cxxopt=-std=c++17 |
| build:linux --conlyopt=-fexceptions |
| build:linux --fission=dbg,opt |
| build:linux --features=per_object_debug_info |
| |
| # We already have absl in the build, define absl=1 to tell googletest to use absl for backtrace. |
| build --define absl=1 |
| |
| # Pass PATH, CC, CXX and LLVM_CONFIG variables from the environment. |
| build --action_env=CC |
| build --action_env=CXX |
| build --action_env=LLVM_CONFIG |
| build --action_env=PATH |
| |
| # Skip system ICU linking. |
| build --@com_googlesource_googleurl//build_config:system_icu=0 |
| |
| # Common flags for sanitizers |
| build:sanitizer --define tcmalloc=disabled |
| build:sanitizer --linkopt -ldl |
| build:sanitizer --build_tag_filters=-no_san |
| build:sanitizer --test_tag_filters=-no_san |
| |
| # Common flags for Clang |
| build:clang --action_env=BAZEL_COMPILER=clang |
| build:clang --linkopt=-fuse-ld=lld |
| |
| # Basic ASAN/UBSAN that works for gcc |
| build:asan --action_env=ENVOY_ASAN=1 |
| build:asan --config=sanitizer |
| # ASAN install its signal handler, disable ours so the stacktrace will be printed by ASAN |
| build:asan --define signal_trace=disabled |
| build:asan --define ENVOY_CONFIG_ASAN=1 |
| build:asan --copt -fsanitize=address,undefined |
| build:asan --linkopt -fsanitize=address,undefined |
| # vptr and function sanitizer are enabled in clang-asan if it is set up via bazel/setup_clang.sh. |
| build:asan --copt -fno-sanitize=vptr,function |
| build:asan --linkopt -fno-sanitize=vptr,function |
| build:asan --copt -DADDRESS_SANITIZER=1 |
| build:asan --copt -D__SANITIZE_ADDRESS__ |
| build:asan --test_env=ASAN_OPTIONS=handle_abort=1:allow_addr2line=true:check_initialization_order=true:strict_init_order=true:detect_odr_violation=1 |
| build:asan --test_env=UBSAN_OPTIONS=halt_on_error=true:print_stacktrace=1 |
| build:asan --test_env=ASAN_SYMBOLIZER_PATH |
| |
| # Clang ASAN/UBSAN |
| build:clang-asan --config=asan |
| build:clang-asan --linkopt -fuse-ld=lld |
| |
| # macOS ASAN/UBSAN |
| build:macos --cxxopt=-std=c++17 |
| 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 |
| |
| # Clang TSAN |
| build:clang-tsan --action_env=ENVOY_TSAN=1 |
| build:clang-tsan --config=sanitizer |
| build:clang-tsan --define ENVOY_CONFIG_TSAN=1 |
| build:clang-tsan --copt -fsanitize=thread |
| build:clang-tsan --linkopt -fsanitize=thread |
| build:clang-tsan --linkopt -fuse-ld=lld |
| build:clang-tsan --build_tag_filters=-no_san,-no_tsan |
| build:clang-tsan --test_tag_filters=-no_san,-no_tsan |
| # Needed due to https://github.com/libevent/libevent/issues/777 |
| build:clang-tsan --copt -DEVENT__DISABLE_DEBUG_MODE |
| # https://github.com/abseil/abseil-cpp/issues/760 |
| # https://github.com/google/sanitizers/issues/953 |
| build:clang-tsan --test_env="TSAN_OPTIONS=report_atomic_races=0" |
| |
| # Clang MSAN - this is the base config for remote-msan and docker-msan. To run this config without |
| # our build image, follow https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo |
| # with libc++ instruction and provide corresponding `--copt` and `--linkopt` as well. |
| build:clang-msan --action_env=ENVOY_MSAN=1 |
| build:clang-msan --config=sanitizer |
| build:clang-msan --define ENVOY_CONFIG_MSAN=1 |
| build:clang-msan --copt -fsanitize=memory |
| build:clang-msan --linkopt -fsanitize=memory |
| build:clang-msan --copt -fsanitize-memory-track-origins=2 |
| # MSAN needs -O1 to get reasonable performance. |
| build:clang-msan --copt -O1 |
| |
| # Clang with libc++ |
| build:libc++ --config=clang |
| 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:-lm |
| build:libc++ --define force_libcpp=enabled |
| |
| # 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 --coverage_support=@envoy//bazel/coverage:coverage_support |
| build:coverage --test_env=CC_CODE_COVERAGE_SCRIPT=external/envoy/bazel/coverage/collect_cc_coverage.sh |
| build:coverage --test_env=HEAPCHECK= |
| build:coverage --combined_report=lcov |
| build:coverage --strategy=TestRunner=sandboxed,local |
| build:coverage --strategy=CoverageReport=sandboxed,local |
| build:coverage --experimental_use_llvm_covmap |
| build:coverage --collect_code_coverage |
| build:coverage --test_tag_filters=-nocoverage |
| build:coverage --instrumentation_filter="//source(?!/extensions/quic_listeners/quiche/platform)[/:],//include[/:]" |
| coverage:test-coverage --test_arg="-l trace" |
| coverage:fuzz-coverage --config=plain-fuzzer |
| coverage:fuzz-coverage --run_under=@envoy//bazel/coverage:fuzz_coverage_wrapper.sh |
| |
| # 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-clang --config=rbe-toolchain |
| build:rbe-toolchain-clang --platforms=@rbe_ubuntu_clang//config:platform |
| build:rbe-toolchain-clang --host_platform=@rbe_ubuntu_clang//config:platform |
| build:rbe-toolchain-clang --crosstool_top=@rbe_ubuntu_clang//cc:toolchain |
| build:rbe-toolchain-clang --extra_toolchains=@rbe_ubuntu_clang//config:cc-toolchain |
| build:rbe-toolchain-clang --action_env=CC=clang --action_env=CXX=clang++ --action_env=PATH=/usr/sbin:/usr/bin:/sbin:/bin:/opt/llvm/bin |
| |
| build:rbe-toolchain-clang-libc++ --config=rbe-toolchain |
| build:rbe-toolchain-clang-libc++ --platforms=@rbe_ubuntu_clang_libcxx//config:platform |
| build:rbe-toolchain-clang-libc++ --host_platform=@rbe_ubuntu_clang_libcxx//config:platform |
| build:rbe-toolchain-clang-libc++ --crosstool_top=@rbe_ubuntu_clang_libcxx//cc:toolchain |
| build:rbe-toolchain-clang-libc++ --extra_toolchains=@rbe_ubuntu_clang_libcxx//config:cc-toolchain |
| build:rbe-toolchain-clang-libc++ --action_env=CC=clang --action_env=CXX=clang++ --action_env=PATH=/usr/sbin:/usr/bin:/sbin:/bin:/opt/llvm/bin |
| build:rbe-toolchain-clang-libc++ --action_env=CXXFLAGS=-stdlib=libc++ |
| build:rbe-toolchain-clang-libc++ --action_env=LDFLAGS=-stdlib=libc++ |
| build:rbe-toolchain-clang-libc++ --define force_libcpp=enabled |
| |
| build:rbe-toolchain-msan --linkopt=-L/opt/libcxx_msan/lib |
| build:rbe-toolchain-msan --linkopt=-Wl,-rpath,/opt/libcxx_msan/lib |
| build:rbe-toolchain-msan --config=clang-msan |
| |
| build:rbe-toolchain-tsan --linkopt=-L/opt/libcxx_tsan/lib |
| build:rbe-toolchain-tsan --linkopt=-Wl,-rpath,/opt/libcxx_tsan/lib |
| build:rbe-toolchain-tsan --config=clang-tsan |
| |
| build:rbe-toolchain-gcc --config=rbe-toolchain |
| build:rbe-toolchain-gcc --platforms=@rbe_ubuntu_gcc//config:platform |
| build:rbe-toolchain-gcc --host_platform=@rbe_ubuntu_gcc//config:platform |
| build:rbe-toolchain-gcc --crosstool_top=@rbe_ubuntu_gcc//cc:toolchain |
| build:rbe-toolchain-gcc --extra_toolchains=@rbe_ubuntu_gcc//config:cc-toolchain |
| |
| build:rbe-toolchain-msvc-cl --host_platform=@rbe_windows_msvc_cl//config:platform |
| build:rbe-toolchain-msvc-cl --platforms=@rbe_windows_msvc_cl//config:platform |
| build:rbe-toolchain-msvc-cl --crosstool_top=@rbe_windows_msvc_cl//cc:toolchain |
| build:rbe-toolchain-msvc-cl --extra_toolchains=@rbe_windows_msvc_cl//config:cc-toolchain |
| |
| build:rbe-toolchain-clang-cl --host_platform=@rbe_windows_clang_cl//config:platform |
| build:rbe-toolchain-clang-cl --platforms=@rbe_windows_clang_cl//config:platform |
| build:rbe-toolchain-clang-cl --crosstool_top=@rbe_windows_clang_cl//cc:toolchain |
| build:rbe-toolchain-clang-cl --extra_toolchains=@rbe_windows_clang_cl//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 |
| build:remote --remote_timeout=7200 |
| build:remote --auth_enabled=true |
| build:remote --remote_download_toplevel |
| |
| # 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 --remote_timeout=7200 |
| build:remote-windows --auth_enabled=true |
| build:remote-windows --remote_download_toplevel |
| |
| build:remote-clang --config=remote |
| build:remote-clang --config=rbe-toolchain-clang |
| |
| build:remote-clang-libc++ --config=remote |
| build:remote-clang-libc++ --config=rbe-toolchain-clang-libc++ |
| |
| build:remote-gcc --config=remote |
| build:remote-gcc --config=rbe-toolchain-gcc |
| |
| build:remote-msan --config=remote |
| build:remote-msan --config=rbe-toolchain-clang-libc++ |
| build:remote-msan --config=rbe-toolchain-msan |
| |
| 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 |
| |
| # Docker sandbox |
| # NOTE: Update this from https://github.com/envoyproxy/envoy-build-tools/blob/master/toolchains/rbe_toolchains_config.bzl#L8 |
| build:docker-sandbox --experimental_docker_image=envoyproxy/envoy-build-ubuntu:e7ea4e81bbd5028abb9d3a2f2c0afe063d9b62c0 |
| 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-clang-libc++ --config=docker-sandbox |
| build:docker-clang-libc++ --config=rbe-toolchain-clang-libc++ |
| |
| build:docker-gcc --config=docker-sandbox |
| build:docker-gcc --config=rbe-toolchain-gcc |
| |
| build:docker-msan --config=docker-sandbox |
| build:docker-msan --config=rbe-toolchain-clang-libc++ |
| build:docker-msan --config=rbe-toolchain-msan |
| |
| build:docker-tsan --config=docker-sandbox |
| build:docker-tsan --config=rbe-toolchain-clang-libc++ |
| build:docker-tsan --config=rbe-toolchain-tsan |
| |
| # CI configurations |
| build:remote-ci --remote_cache=grpcs://remotebuildexecution.googleapis.com |
| build:remote-ci --remote_executor=grpcs://remotebuildexecution.googleapis.com |
| |
| # Fuzz builds |
| # -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is passed in in the bazel build target |
| # rules for fuzz tests. Passing it in the CLI will cause dependencies to be build |
| # with the macro. Causing issues in RouteMatcherTest.TestRoutes that expect prod |
| # behavior from RE2 library. |
| build:asan-fuzzer --config=asan |
| build:asan-fuzzer --define=FUZZING_ENGINE=libfuzzer |
| build:asan-fuzzer --copt=-fsanitize=fuzzer-no-link |
| 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 |
| |
| # Fuzzing without ASAN. This is useful for profiling fuzzers without any ASAN artifacts. |
| build:plain-fuzzer --define=FUZZING_ENGINE=libfuzzer |
| build:plain-fuzzer --define ENVOY_CONFIG_ASAN=1 |
| |
| # 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 manual_stamp=manual_stamp |
| |
| # Should not be required after upstream fix to bazel, |
| # and already a no-op to linux/macos builds |
| # 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" |
| build:windows --cxxopt="/std:c++17" |
| |
| # Required to work around build defects on Windows MSVC cl |
| # Unguarded gcc pragmas in quiche are not recognized by MSVC |
| build:msvc-cl --copt="/wd4068" |
| # Allows 'nodiscard' function return values to be discarded |
| build:msvc-cl --copt="/wd4834" |
| # Allows inline functions to be undefined |
| build:msvc-cl --copt="/wd4506" |
| build:msvc-cl --copt="-D_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING" |
| |
| # Required to work around Windows clang-cl build defects |
| # Ignore conflicting definitions of _WIN32_WINNT |
| # Overriding __TIME__ etc is problematic (and is actually an invalid no-op) |
| build:clang-cl --copt="-Wno-macro-redefined" |
| build:clang-cl --copt="-Wno-builtin-macro-redefined" |
| build:clang-cl --action_env=USE_CLANG_CL=1 |
| |
| # 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 |
| |
| try-import %workspace%/clang.bazelrc |
| try-import %workspace%/user.bazelrc |
| try-import %workspace%/local_tsan.bazelrc |
| |
| ###### modifications for pagespeed |
| build --linkopt -ldl |
| |
| # objcopy 2.31 doesn't like |
| clang-7's output unless we pass in -fno-addrsig |
| # https://github.com/travitch/whole-program-llvm/issues/75 |
| # not passing this in will make the scripts that rename symbols fail |
| #build --copt=-fno-addrsig |
| |
| build:clang-asan --linkopt=-fno-sanitize=alignment |
| build:asan --copt=-fno-sanitize=alignment |
| build:clang-asan --copt=-fno-omit-frame-pointer |
| |
| test --test_env=REDIS_PORT=6379 |
| test --test_env=MEMCACHED_PORT=11211 |
| test --test_env=HTTPS_TEST=1 |
| |
| build --copt="-Iexternal/aprutil/include/" |
| build --copt="-Iexternal/aprutil/include/private/" |
| build --copt="-Iexternal/aprutil/include/arch/unix/" |
| build --copt="-Iexternal/aprutil/" |
| build --copt="-Ithird_party/aprutil/gen/arch/linux/x64/include/" |
| build --copt="-Ithird_party/apr/gen/arch/linux/x64/include/" |
| build --copt="-Iexternal/apr/include/" |
| build --copt="-Iexternal/apr/include/arch/unix/" |
| build --copt="-Iexternal/apr/" |
| build --copt="-Iexternal/serf/include/" |
| build --copt="-Iexternal/serf/" |
| build --copt="-DPAGESPEED_SUPPORT_POSIX_SHARED_MEM=1" |