//
// Copyright (C) 2021 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.

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

blueprint_go_binary {
    name: "compliance_checkmetadata",
    srcs: ["cmd/checkmetadata/checkmetadata.go"],
    deps: [
        "compliance-module",
        "projectmetadata-module",
        "soong-response",
    ],
    testSrcs: ["cmd/checkmetadata/checkmetadata_test.go"],
}

blueprint_go_binary {
    name: "compliance_checkshare",
    srcs: ["cmd/checkshare/checkshare.go"],
    deps: [
        "compliance-module",
        "soong-response",
    ],
    testSrcs: ["cmd/checkshare/checkshare_test.go"],
}

blueprint_go_binary {
    name: "compliancenotice_bom",
    srcs: ["cmd/bom/bom.go"],
    deps: [
        "compliance-module",
        "soong-response",
    ],
    testSrcs: ["cmd/bom/bom_test.go"],
}

blueprint_go_binary {
    name: "compliancenotice_shippedlibs",
    srcs: ["cmd/shippedlibs/shippedlibs.go"],
    deps: [
        "compliance-module",
        "soong-response",
    ],
    testSrcs: ["cmd/shippedlibs/shippedlibs_test.go"],
}

blueprint_go_binary {
    name: "compliance_listshare",
    srcs: ["cmd/listshare/listshare.go"],
    deps: [
        "compliance-module",
        "soong-response",
    ],
    testSrcs: ["cmd/listshare/listshare_test.go"],
}

blueprint_go_binary {
    name: "compliance_dumpgraph",
    srcs: ["cmd/dumpgraph/dumpgraph.go"],
    deps: [
        "compliance-module",
        "soong-response",
    ],
    testSrcs: ["cmd/dumpgraph/dumpgraph_test.go"],
}

blueprint_go_binary {
    name: "compliance_dumpresolutions",
    srcs: ["cmd/dumpresolutions/dumpresolutions.go"],
    deps: [
        "compliance-module",
        "soong-response",
    ],
    testSrcs: ["cmd/dumpresolutions/dumpresolutions_test.go"],
}

blueprint_go_binary {
    name: "htmlnotice",
    srcs: ["cmd/htmlnotice/htmlnotice.go"],
    deps: [
        "compliance-module",
        "blueprint-deptools",
        "soong-response",
    ],
    testSrcs: ["cmd/htmlnotice/htmlnotice_test.go"],
}

blueprint_go_binary {
    name: "compliance_rtrace",
    srcs: ["cmd/rtrace/rtrace.go"],
    deps: [
        "compliance-module",
        "soong-response",
    ],
    testSrcs: ["cmd/rtrace/rtrace_test.go"],
}

blueprint_go_binary {
    name: "textnotice",
    srcs: ["cmd/textnotice/textnotice.go"],
    deps: [
        "compliance-module",
        "blueprint-deptools",
        "soong-response",
    ],
    testSrcs: ["cmd/textnotice/textnotice_test.go"],
}

blueprint_go_binary {
    name: "xmlnotice",
    srcs: ["cmd/xmlnotice/xmlnotice.go"],
    deps: [
        "compliance-module",
        "blueprint-deptools",
        "soong-response",
    ],
    testSrcs: ["cmd/xmlnotice/xmlnotice_test.go"],
}

blueprint_go_binary {
    name: "compliance_sbom",
    srcs: ["cmd/sbom/sbom.go"],
    deps: [
        "compliance-module",
        "blueprint-deptools",
        "soong-response",
        "spdx-tools-spdxv2_2",
        "spdx-tools-builder2v2",
        "spdx-tools-spdxcommon",
        "spdx-tools-spdx-json",
        "spdx-tools-spdxlib",
    ],
    testSrcs: ["cmd/sbom/sbom_test.go"],
}

bootstrap_go_package {
    name: "compliance-module",
    srcs: [
        "condition.go",
        "conditionset.go",
        "doc.go",
        "graph.go",
        "noticeindex.go",
        "policy_policy.go",
        "policy_resolve.go",
        "policy_resolvenotices.go",
        "policy_resolveshare.go",
        "policy_resolveprivacy.go",
        "policy_shareprivacyconflicts.go",
        "policy_shipped.go",
        "policy_walk.go",
        "readgraph.go",
        "resolution.go",
        "resolutionset.go",
    ],
    testSrcs: [
        "condition_test.go",
        "conditionset_test.go",
        "readgraph_test.go",
        "policy_policy_test.go",
        "policy_resolve_test.go",
        "policy_resolvenotices_test.go",
        "policy_resolveshare_test.go",
        "policy_resolveprivacy_test.go",
        "policy_shareprivacyconflicts_test.go",
        "policy_shipped_test.go",
        "policy_walk_test.go",
        "resolutionset_test.go",
        "test_util.go",
    ],
    deps: [
        "compliance-test-fs-module",
        "projectmetadata-module",
        "golang-protobuf-proto",
        "golang-protobuf-encoding-prototext",
        "license_metadata_proto",
    ],
    pkgPath: "android/soong/tools/compliance",
}
