// Copyright (C) 2020 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: ["device_google_cuttlefish_prebuilts_license"],
}

// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
    name: "device_google_cuttlefish_prebuilts_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-GPL-2.0",
    ],
    // large-scale-change unable to identify any license_text files
}

sh_binary_host {
    name: "extract-vmlinux",
    src: "scripts/extract-vmlinux",
}

sh_binary_host {
    name: "extract-ikconfig",
    src: "scripts/extract-ikconfig",
}

cc_prebuilt_binary {
    name: "mkenvimage",
    srcs: ["uboot_tools/mkenvimage"],
    defaults: ["cuttlefish_buildhost_only"],
}

prebuilt_build_tool {
    name: "mkenvimage_host",
    enabled: false,
    target: {
        linux: {
            src: "uboot_tools/mkenvimage",
            enabled: true,
        },
        darwin: {
            src: "uboot_tools/mkenvimage_mac.sh",
            enabled: true,
        },
    },
}

// Needed for beagle_x15 target, not cuttlefish.
cc_prebuilt_binary {
    name: "mkimage",
    srcs: ["uboot_tools/mkimage"],
    device_supported: false,
    host_supported: true,
}
