# Envoy Mobile Bazel build/test options.
try-import ./envoy/.bazelrc

# Common flags for all builds
build --define=google_grpc=disabled
build --define=hot_restart=disabled
build --define=signal_trace=disabled
build --define=tcmalloc=disabled
build --features=debug_prefix_map_pwd_is_dot
build --features=swift.cacheable_swiftmodules
# Remove once https://github.com/bazelbuild/rules_swift/pull/427 is merged
build --swiftcopt=-Xfrontend --swiftcopt=-no-serialize-debugging-options
build --host_force_python=PY3
build --ios_minimum_os=11.0
build --ios_simulator_device="iPhone 12"
build --ios_simulator_version=14.2
build --spawn_strategy=local
build --verbose_failures
build --workspace_status_command=envoy/bazel/get_workspace_status
build --xcode_version=12.2
build --javabase=@bazel_tools//tools/jdk:jdk
build --define disable_known_issue_asserts=true
build --define cxxopts=-std=c++17
# https://github.com/bazelbuild/bazel/issues/10674#issuecomment-658208918
build --incompatible_objc_compile_info_migration
# Unset per_object_debug_info. Causes failures on Android Linux release builds.
build --features=-per_object_debug_info

# Default flags for builds targeting iOS
# Manual stamping is necessary in order to get versioning information in the iOS
# static framework.
# More information on stamping can be found here:
# https://github.com/envoyproxy/envoy/tree/master/bazel#enabling-optional-features
build:ios --define=manual_stamp=manual_stamp

# Default flags for builds targeting Android
build:android --define=logger=android

# Locally-runnable ASAN config for MacOS & Linux with standard dev environment
# See also:
# https://github.com/bazelbuild/bazel/issues/6932
build:asan-dev --strip=never
build:asan-dev --copt -Wno-macro-redefined # ASAN sets _FORTIFY_SOURCE=0
build:asan-dev --copt -DADDRESS_SANITIZER
build:asan-dev --copt -D_LIBCPP_HAS_NO_ASAN
build:asan-dev --copt -g
build:asan-dev --copt -fno-omit-frame-pointer
build:asan-dev --copt -fno-optimize-sibling-calls
build:asan-dev --copt -fsanitize=address
build:asan-dev --linkopt -fsanitize=address
build:asan-dev --platform_suffix=-asan

# Exclude debug info from the release binary since it makes it too large to fit
# into a zip file. This shouldn't affect crash reports.
build:release-common --define=no_debug_info=1

# Flags for release builds targeting iOS
build:release-ios --apple_bitcode=embedded
build:release-ios --config=ios
build:release-ios --config=release-common
build:release-ios --copt=-fembed-bitcode
build:release-ios --compilation_mode=opt

# Flags for release builds targeting Android or the JVM
build:release-android --config=android
build:release-android --config=release-common
build:release-android --compilation_mode=opt

# Instrument Envoy Mobile's c++ code for coverage
build:coverage --instrumentation_filter="//library/common[/:]"
