# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/chrome_build.gni")
import("//build/config/sanitizers/sanitizers.gni")

# This file declares arguments and configs that control whether dSYM debug
# info is produced and whether build products are stripped.

declare_args() {
  # Produce dSYM files for targets that are configured to do so. dSYM
  # generation is controlled globally as it is a linker output (produced via
  # the //build/toolchain/apple/linker_driver.py. Enabling this will result in
  # all shared library, loadable module, and executable targets having a dSYM
  # generated.
  enable_dsyms = is_official_build || using_sanitizer

  # Strip symbols from linked targets by default. If this is enabled, the
  # //build/config/mac:strip_all config will be applied to all linked targets.
  # If custom stripping parameters are required, remove that config from a
  # linked target and apply custom -Wcrl,strip flags. See
  # //build/toolchain/apple/linker_driver.py for more information.
  enable_stripping = is_official_build
}

# Save unstripped copies of targets with a ".unstripped" suffix. This is
# useful to preserve the original output when enable_stripping=true but
# we're not actually generating real dSYMs.
save_unstripped_output = enable_stripping && !enable_dsyms
