# Copyright 2020 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.

import("//build/go/go_library.gni")
import("//build/testing/host_test_data.gni")

go_library("golden") {
  sources = [ "golden_test.go" ]
}

if (is_host) {
  license_list = [
    # Licenses that are generally available to use across fuchsia.git.
    "notice/apache/apache",
    "notice/apache/apache_full",
    "notice/apache/mbedtls",
    "notice/apache/rsa",
    "notice/apache/rust",
    "notice/bsd/acpica",
    "notice/bsd/android",
    "notice/bsd/bsd2",
    "notice/bsd/bsd3",
    "notice/bsd/bsd",
    "notice/bsd/chromium2",
    "notice/bsd/chromium",
    "notice/bsd/cmake_project",
    "notice/bsd/dart",
    "notice/bsd/edk2",
    "notice/bsd/flutter",
    "notice/bsd/fuchsia2",
    "notice/bsd/fuchsia",
    "notice/bsd/fuchsia_bsd",
    "notice/bsd/fuchsia_bsd_old",
    "notice/bsd/fuchsia_bsd_old2",
    "notice/bsd/go_authors2",
    "notice/bsd/go_authors",
    "notice/bsd/google",
    "notice/bsd/happy_bunny",
    "notice/bsd/intel",
    "notice/bsd/libavcodec",
    "notice/bsd/lss_full",
    "notice/bsd/lz4",
    "notice/bsd/markupsafe",
    "notice/bsd/nacl",
    "notice/bsd/openssl_project",
    "notice/bsd/university_of_california2",
    "notice/bsd/university_of_california",
    "notice/freetype/freetype2",
    "notice/freetype/freetype",
    "notice/isc/boring_ssl",
    "notice/isc/fuchsia",
    "notice/isc/icu",
    "notice/isc/isc",
    "notice/mit/digital_equipment",
    "notice/mit/fuchsia",
    "notice/mit/fuchsia_mit",
    "notice/mit/icu",
    "notice/mit/imgtec-pvr-rgx-km",
    "notice/mit/jq_project",
    "notice/mit/mesa_full",
    "notice/mit/microsoft",
    "notice/mit/mit2",
    "notice/mit/mit3",
    "notice/mit/mit4",
    "notice/mit/mit",
    "notice/mit/musl_full",
    "notice/mit/ncd",
    "notice/mit/oracle",
    "notice/mit/packard",
    "notice/mit/rarick",
    "notice/mit/sgi",
    "notice/mit/unicode_license_full",
    "notice/mit/vulkan2",
    "notice/mit/vulkan",
    "notice/mit/xfree86",
    "notice/mit/yoran_heling",
    "notice/ncsa/llvm_project",
    "notice/ncsa/university_of_illinois",
    "notice/other/aac_full",
    "notice/other/icu",
    "notice/other/libva-x11",
    "notice/other/original_sslea_license",
    "notice/other/pthreads",
    "notice/python/python_project",
    "notice/zlib/libpng",
    "notice/zlib/valgrind",
    "notice/zlib/zlib",
    "notice/zlib/zlib_full",

    # Licenses that have specific exceptions granted for certain projects.
    "exception/apache_llvm/apache_llvm_full",
    "exception/apache_llvm/llvm_project",
    "exception/ffmpeg/ffmpeg",
    "exception/rust/rust_project",
    "exception/sil/ofl",
    "exception/sil/sil_open_font",

    # Restricted licenses.
    "restricted/gpl/arm",
    "restricted/gpl/ffmpeg_project",
    "restricted/gpl/gcc2",
    "restricted/gpl/gcc3",
    "restricted/gpl/gcc",
    "restricted/gpl/gnu2",
    "restricted/gpl/gnu3",
    "restricted/gpl/gnu4",
    "restricted/gpl/gnu5",
    "restricted/gpl/gnu6",
    "restricted/gpl/gnu",
    "restricted/gpl/gpl",
    "restricted/gpl/lgpl_full",
    "restricted/gpl/linux_gnu",
    "restricted/gpl/redhat",
  ]

  host_test_data("licenses") {
    sources = []
    foreach(f, license_list) {
      sources += [ "patterns/" + f + ".lic" ]
      sources += [ "examples/" + f + ".txt" ]
    }
    outputs = [ "$root_gen_dir/{{source}}" ]
  }
}
