package {
    default_applicable_licenses: ["Android-Apache-2.0"],
    default_visibility: [
        "//build/soong:__subpackages__",
    ],
    default_team: "trendy_team_build",
}

subdirs = [
    "androidmk",
    "bpfix",
    "cmd/*",
    "fs",
    "finder",
    "jar",
    "zip",
    "third_party/zip",
    "ui/*",
]

bootstrap_go_package {
    name: "soong",
    pkgPath: "android/soong",
    deps: [
        "blueprint",
    ],
    srcs: [
        "doc.go",
    ],
    // Used by plugins, though probably shouldn't be.
    visibility: ["//visibility:public"],
}

//
// Defaults to enable various configurations of host bionic
//

cc_defaults {
    name: "linux_bionic_supported",
    host_supported: true,
    target: {
        host: {
            enabled: false,
        },
        linux_bionic: {
            enabled: true,
        },
    },
    defaults_visibility: ["//visibility:public"],
}

//
// C static libraries extracted from the gcc toolchain
//

kernel_headers {
    name: "device_kernel_headers",
    vendor: true,
    recovery_available: true,
    min_sdk_version: "apex_inherit",
    visibility: ["//visibility:public"],
}

cc_genrule {
    name: "host_bionic_linker_asm",
    host_supported: true,
    device_supported: false,
    target: {
        linux_bionic: {
            enabled: true,
        },
        linux_musl: {
            enabled: false,
        },
        linux_glibc: {
            enabled: false,
        },
        darwin: {
            enabled: false,
        },
    },
    tools: ["extract_linker"],
    cmd: "$(location) -s $(out) $(in)",
    srcs: [":linker"],
    out: ["linker.s"],
    visibility: ["//bionic/libc"],
}

cc_genrule {
    name: "host_bionic_linker_script",
    host_supported: true,
    device_supported: false,
    target: {
        linux_bionic: {
            enabled: true,
        },
        linux_musl: {
            enabled: false,
        },
        linux_glibc: {
            enabled: false,
        },
        darwin: {
            enabled: false,
        },
    },
    tools: ["extract_linker"],
    cmd: "$(location) -T $(out) $(in)",
    srcs: [":linker"],
    out: ["linker.script"],
    visibility: ["//visibility:public"],
}

// Instantiate the dex_bootjars singleton module.
dex_bootjars {
    name: "dex_bootjars",
    visibility: ["//visibility:public"],
}

art_boot_images {
    name: "art_boot_images",
    visibility: ["//art:__subpackages__"],
}

// Pseudo-test that's run on checkbuilds to ensure that get_clang_version can
// parse cc/config/global.go.
genrule {
    name: "get_clang_version_test",
    cmd: "$(location get_clang_version) > $(out)",
    tools: ["get_clang_version"],
    srcs: ["cc/config/global.go"],
    out: ["clang-prebuilts-version.txt"],
}

dexpreopt_systemserver_check {
    name: "dexpreopt_systemserver_check",
}

// container for apex_contributions selected using build flags
all_apex_contributions {
    name: "all_apex_contributions",
    visibility: ["//visibility:public"],
}

// Defaults to share configs between "baremetal" Soong modules, currently only
// used for code running in kernel context within Android Virtualization
// Framework guests.
cc_defaults {
    name: "cc_baremetal_defaults",
    arch: {
        arm64: {
            cflags: [
                // Prevent the compiler from optimizing code using SVE, as the
                // baremetal environment might not have configured the hardware.
                "-Xclang -target-feature",
                "-Xclang -sve",
            ],
        },
    },
    defaults_visibility: ["//visibility:public"],
}

product_config {
    name: "product_config",
    visibility: [
        "//build/make/target/product/generic",
        "//build/soong/fsgen",
    ],
}

build_prop {
    name: "system-build.prop",
    stem: "build.prop",
    product_config: ":product_config",
    footer_files: [
        ":applied_backported_fixes",
    ],
    // Currently, only microdroid, Ravenwood, and cf system image can refer to system-build.prop
    visibility: [
        "//build/make/target/product/generic",
        "//build/make/target/product/gsi",
        "//packages/modules/Virtualization/build/microdroid",
        "//frameworks/base/ravenwood",
    ],
}

build_prop {
    name: "system_ext-build.prop",
    stem: "build.prop",
    system_ext_specific: true,
    product_config: ":product_config",
    relative_install_path: "etc", // system_ext/etc/build.prop
    visibility: ["//build/make/target/product/gsi"],
}

build_prop {
    name: "product-build.prop",
    stem: "build.prop",
    product_specific: true,
    product_config: ":product_config",
    relative_install_path: "etc", // product/etc/build.prop
    visibility: ["//build/make/target/product/gsi"],
}

build_prop {
    name: "odm-build.prop",
    stem: "build.prop",
    device_specific: true,
    product_config: ":product_config",
    relative_install_path: "etc", // odm/etc/build.prop
    visibility: ["//visibility:private"],
}

build_prop {
    name: "system_dlkm-build.prop",
    stem: "build.prop",
    system_dlkm_specific: true,
    product_config: ":product_config",
    relative_install_path: "etc", // system_dlkm/etc/build.prop
    visibility: ["//visibility:private"],
}

build_prop {
    name: "vendor_dlkm-build.prop",
    stem: "build.prop",
    vendor_dlkm_specific: true,
    product_config: ":product_config",
    relative_install_path: "etc", // vendor_dlkm/etc/build.prop
    visibility: ["//visibility:private"],
}

build_prop {
    name: "odm_dlkm-build.prop",
    stem: "build.prop",
    odm_dlkm_specific: true,
    product_config: ":product_config",
    relative_install_path: "etc", // odm_dlkm/etc/build.prop
    visibility: ["//visibility:private"],
}

build_prop {
    name: "ramdisk-build.prop",
    stem: "build.prop",
    ramdisk: true,
    product_config: ":product_config",
    relative_install_path: "etc/ramdisk", // ramdisk/system/etc/ramdisk/build.prop
    visibility: ["//visibility:private"],
}
