//
// Copyright (C) 2019 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"],
}

filegroup {
    name: "device_google_cuttlefish_shared_config_pci_ids",
    srcs: ["pci.ids"],
    licenses: ["device_google_cuttlefish_shared_config_pci_ids_license"],
}

license {
    name: "device_google_cuttlefish_shared_config_pci_ids_license",
    package_name: "PCI IDS",
    license_kinds: ["SPDX-license-identifier-BSD-3-Clause"],
    license_text: ["LICENSE_BSD"],
}

prebuilt_etc_host {
    name: "cvd_config_auto.json",
    src: "config_auto.json",
    sub_dir: "cvd_config",
}

prebuilt_etc_host {
    name: "cvd_config_auto_md.json",
    src: "config_auto_md.json",
    sub_dir: "cvd_config",
}

prebuilt_etc_host {
    name: "cvd_config_auto_portrait.json",
    src: "config_auto_portrait.json",
    sub_dir: "cvd_config",
}

prebuilt_etc_host {
    name: "cvd_config_foldable.json",
    src: "config_foldable.json",
    sub_dir: "cvd_config",
}

prebuilt_etc_host {
    name: "cvd_config_go.json",
    src: "config_go.json",
    sub_dir: "cvd_config",
}

prebuilt_etc_host {
    name: "cvd_config_minidroid.json",
    src: "config_minidroid.json",
    sub_dir: "cvd_config",
}

prebuilt_etc_host {
    name: "cvd_config_phone.json",
    src: "config_phone.json",
    sub_dir: "cvd_config",
}

prebuilt_etc_host {
    name: "cvd_config_slim.json",
    src: "config_slim.json",
    sub_dir: "cvd_config",
}

prebuilt_etc_host {
    name: "cvd_config_tablet.json",
    src: "config_tablet.json",
    sub_dir: "cvd_config",
}

prebuilt_etc_host {
    name: "cvd_config_tv.json",
    src: "config_tv.json",
    sub_dir: "cvd_config",
}

prebuilt_etc_host {
    name: "cvd_config_wear.json",
    src: "config_wear.json",
    sub_dir: "cvd_config",
}

prebuilt_etc {
    name: "wpa_supplicant_overlay.conf.cf",
    src: "wpa_supplicant_overlay.conf",
    filename_from_src: true,
    relative_install_path: "wifi",
    installable: false,
}

prebuilt_etc {
    name: "p2p_supplicant.conf.cf",
    src: "p2p_supplicant.conf",
    filename_from_src: true,
    relative_install_path: "wifi",
    installable: false,
}

genrule {
    name: "gen_fstab_cf_f2fs_hctr2",
    srcs: ["fstab.in"],
    out: ["fstab.cf.f2fs.hctr2"],
    tool_files: [ "sed.f2fs", "sed.hctr2" ],
    cmd: "sed -f $(location sed.f2fs) -f $(location sed.hctr2) $(in) > $(out)",
}

genrule {
    name: "gen_fstab_cf_f2fs_cts",
    srcs: ["fstab.in"],
    out: ["fstab.cf.f2fs.cts"],
    tool_files: [ "sed.f2fs", "sed.cts" ],
    cmd: "sed -f $(location sed.f2fs) -f $(location sed.cts) $(in) > $(out)",
}

genrule {
    name: "gen_fstab_cf_ext4_hctr2",
    srcs: ["fstab.in"],
    out: ["fstab.cf.ext4.hctr2"],
    tool_files: [ "sed.ext4", "sed.hctr2" ],
    cmd: "sed -f $(location sed.ext4) -f $(location sed.hctr2) $(in) > $(out)",
}

genrule {
    name: "gen_fstab_cf_ext4_cts",
    srcs: ["fstab.in"],
    out: ["fstab.cf.ext4.cts"],
    tool_files: [ "sed.ext4", "sed.cts" ],
    cmd: "sed -f $(location sed.ext4) -f $(location sed.cts) $(in) > $(out)",
}

prebuilt_etc {
    name: "fstab.cf.f2fs.hctr2",
    src: ":gen_fstab_cf_f2fs_hctr2",
    vendor: true,
    vendor_ramdisk_available: true,
}

prebuilt_etc {
    name: "fstab.cf.f2fs.cts",
    src: ":gen_fstab_cf_f2fs_cts",
    vendor: true,
    vendor_ramdisk_available: true,
}

prebuilt_etc {
    name: "fstab.cf.ext4.hctr2",
    src: ":gen_fstab_cf_ext4_hctr2",
    vendor: true,
    vendor_ramdisk_available: true,
}

prebuilt_etc {
    name: "fstab.cf.ext4.cts",
    src: ":gen_fstab_cf_ext4_cts",
    vendor: true,
    vendor_ramdisk_available: true,
}
