// Copyright (C) 2008 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 {
    // See: http://go/android-license-faq
    default_applicable_licenses: ["Android-Apache-2.0"],
}

bootstrap_go_package {
    name: "soong-fs_config",
    pkgPath: "android/soong/fs_config",
    deps: [
        "soong-android",
        "soong-genrule",
    ],
    srcs: [
        "fs_config.go",
    ],
    pluginFor: ["soong_build"],
}

cc_binary_host {
    name: "fs_config",
    srcs: ["fs_config.c"],
    shared_libs: [
        "libcutils",
        "libselinux",
    ],
    cflags: ["-Werror"],
}

target_fs_config_gen_filegroup {
    name: "target_fs_config_gen",
}

genrule {
    name: "oemaids_header_gen",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) oemaid --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["generated_oem_aid.h"],
}

cc_library_headers {
    name: "oemaids_headers",
    vendor_available: true,
    generated_headers: ["oemaids_header_gen"],
    export_generated_headers: ["oemaids_header_gen"],
}

// Generate the */etc/passwd text files for the target
// These files may be empty if no AIDs are defined in
// TARGET_FS_CONFIG_GEN files.
genrule {
    name: "passwd_gen_system",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) passwd --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["passwd"],
}

prebuilt_etc {
    name: "passwd_system",
    filename: "passwd",
    src: ":passwd_gen_system",
}

genrule {
    name: "passwd_gen_vendor",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) passwd --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["passwd"],
}

prebuilt_etc {
    name: "passwd_vendor",
    filename: "passwd",
    vendor: true,
    src: ":passwd_gen_vendor",
}

genrule {
    name: "passwd_gen_odm",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) passwd --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["passwd"],
}

prebuilt_etc {
    name: "passwd_odm",
    filename: "passwd",
    device_specific: true,
    src: ":passwd_gen_odm",
}

genrule {
    name: "passwd_gen_product",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) passwd --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["passwd"],
}

prebuilt_etc {
    name: "passwd_product",
    filename: "passwd",
    product_specific: true,
    src: ":passwd_gen_product",
}

genrule {
    name: "passwd_gen_system_ext",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) passwd --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["passwd"],
}

prebuilt_etc {
    name: "passwd_system_ext",
    filename: "passwd",
    system_ext_specific: true,
    src: ":passwd_gen_system_ext",
}

// Generate the */etc/group text files for the target
// These files may be empty if no AIDs are defined in
// TARGET_FS_CONFIG_GEN files.
genrule {
    name: "group_gen_system",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) group --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["group"],
}

prebuilt_etc {
    name: "group_system",
    filename: "group",
    src: ":group_gen_system",
}

genrule {
    name: "group_gen_vendor",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) group --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["group"],
}

prebuilt_etc {
    name: "group_vendor",
    filename: "group",
    vendor: true,
    src: ":group_gen_vendor",
}

genrule {
    name: "group_gen_odm",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) group --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["group"],
}

prebuilt_etc {
    name: "group_odm",
    filename: "group",
    device_specific: true,
    src: ":group_gen_odm",
}

genrule {
    name: "group_gen_product",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) group --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["group"],
}

prebuilt_etc {
    name: "group_product",
    filename: "group",
    product_specific: true,
    src: ":group_gen_product",
}

genrule {
    name: "group_gen_system_ext",
    tool_files: ["fs_config_generator.py"],
    cmd: "$(location fs_config_generator.py) group --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
    srcs: [
        ":target_fs_config_gen",
        ":android_filesystem_config_header",
    ],
    out: ["group"],
}

prebuilt_etc {
    name: "group_system_ext",
    filename: "group",
    system_ext_specific: true,
    src: ":group_gen_system_ext",
}
