//
// Copyright (C) 2018 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS.  PLEASE
//     CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
//     DEPENDING ON IT IN YOUR PROJECT. ***

// *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS.  PLEASE
//     CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
//     DEPENDING ON IT IN YOUR PROJECT. ***
package {
    default_applicable_licenses: ["external_noto-fonts_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
// See: http://go/android-license-faq
license {
    name: "external_noto-fonts_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-MIT",
        "SPDX-license-identifier-OFL", // by exception only
        "SPDX-license-identifier-Unicode-DFS",
        "SPDX-license-identifier-W3C",
    ],
    // large-scale-change unable to identify any license_text files
}

filegroup {
    name: "recovery_noto-fonts_dep",
    export_to_make_var: "recovery_noto-fonts_dep",
    srcs: [
      "notosanscjk/NotoSansCJK-Regular.ttc",
      "notonaskharabicui/NotoNaskhArabicUI-Regular.ttf",
      "notosansarmenian/NotoSansArmenian-VF.ttf",
      "notosansbengaliui/NotoSansBengaliUI-VF.ttf",
      "notosansdevanagariui/NotoSansDevanagariUI-VF.ttf",
      "notosansethiopic/NotoSansEthiopic-VF.ttf",
      "notosansgeorgian/NotoSansGeorgian-VF.ttf",
      "notosansgujaratiui/NotoSansGujaratiUI-Regular.ttf",
      "notosansgurmukhiui/NotoSansGurmukhiUI-VF.ttf",
      "notosanshebrew/NotoSansHebrew-Regular.ttf",
      "notosanskannadaui/NotoSansKannadaUI-VF.ttf",
      "notosanskhmerui/NotoSansKhmerUI-Regular.ttf",
      "notosanslaoui/NotoSansLaoUI-Regular.ttf",
      "notosansmalayalamui/NotoSansMalayalamUI-VF.ttf",
      "notosansmyanmarui/NotoSansMyanmarUI-Regular.otf",
      "notosansoriya/NotoSansOriya-Regular.ttf",
      "notosanssinhalaui/NotoSansSinhalaUI-VF.ttf",
      "notosanstamilui/NotoSansTamilUI-VF.ttf",
      "notosansteluguui/NotoSansTeluguUI-VF.ttf",
      "notosansthaiui/NotoSansThaiUI-Regular.ttf",
    ],
}
