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

group("cmx_allowlist") {
  #  ________  _________  ________  ________
  # |\   ____\|\___   ___\\   __  \|\   __  \
  # \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
  #  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
  #   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
  #     ____\_\  \   \ \__\ \ \_______\ \__\
  #    |\_________\   \|__|  \|_______|\|__|
  #    \|_________|
  # This is an allowlist of targets that use CMX (.cmx) files.
  # CMX is the component manifest v1 syntax. There is a migration in progress
  # to CML files, the component manifest v2 syntax. See:
  # https://fuchsia.dev/fuchsia-src/concepts/components/v2/migration
  #
  # Developers are encouraged to migrate to v2. See the migration guide:
  # https://fuchsia.dev/fuchsia-src/development/components/v2/migration
  #
  # The policy at this time is:
  # 1. Use of CMX files outside of fuchsia.git is unrestricted.
  # 2. Pre-existing use of CMX files in fuchsia.git is allowlisted.
  # 3. New usage of CMX files in fuchsia.git is discouraged.
  #    Please see the self-service migration guide.
  # 4. Requests to allowlist new CMX files will be respected, no questions
  #    asked. Please use your best judgement.
  #
  # To add items to the allowlist, please send a change to one of the OWNERS of
  # this file to add an element to the visibility list below.
  # Please allowlist entire directories rather than individual targets as it
  # requires less allowlist churn over time.
  #
  # To regenerate:
  # fx gn refs $(fx get-build-dir) //build/components/cmx:cmx_allowlist | sed 's|\(.*\):.*|"\1/*",|' | sort | uniq
  #
  # To trim:
  # scripts/gn/trim_visibility.py --target="//build/components/cmx:cmx_allowlist"
  visibility = [
    # TODO(shayba): populate the allowlist with grandfathered targets.
    # Allow unrestricted out of tree usage.
    "*",
    "//third_party/*",
    "//vendor/*",
  ]
}
