build --enable_platform_specific_config=true

# Minumum C++ version. Override it building this project with
# `bazel build --cxxopt='-std=c++<XY>' --host_cxxopt='c++<XY>' ...`
# (Both -std and --host_cxxopt must be set to force the desired version.)
build:linux --cxxopt=-std=c++17
build:linux --host_cxxopt=-std=c++17
build:macos --cxxopt=-std=c++17
build:macos --host_cxxopt=-std=c++17
build:windows --cxxopt='/std:c++17'
build:windows --host_cxxopt='/std:c++17'

# Solve various length limits. See e.g., https://github.com/bazelbuild/bazel/issues/17068.
build:windows --features=archive_param_file
build:windows --features=linker_param_file
build:windows --features=compiler_param_file
build:windows --enable_runfiles

# Configs for macOS on x86_64.
build:macos_x86_64 --cpu=darwin
# NOTE: If macos_minimum_os is unspecified, Bazel uses the default value of
# macos_sdk_version which is taken from the default system Xcode [1], even if
# MACOSX_DEPLOYMENT_TARGET is set [2].
# [1] https://bazel.build/reference/command-line-reference#flag--macos_minimum_os
# [2] https://github.com/bazelbuild/bazel/issues/16932
build:macos_x86_64 --macos_minimum_os=11.0

# Configs for macOS on ARM64.
build:macos_arm64 --cpu=darwin_arm64
build:macos_arm64 --macos_cpus=arm64
build:macos_arm64 --macos_minimum_os=11.0

# Silence all C/C++ warnings in external code.
#
# Note that this will not silence warnings from external headers included
# in project code.
build --per_file_copt=external/.*@-w
build --host_per_file_copt=external/.*@-w
