package {
    default_applicable_licenses: ["external_selinux_libsepol_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'filegroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
// http://go/android-license-faq
license {
    name: "external_selinux_libsepol_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-BSD",
        "SPDX-license-identifier-GPL",
        "SPDX-license-identifier-LGPL",
        "SPDX-license-identifier-LGPL-2.1",
        "SPDX-license-identifier-LGPL-3.0",
        "SPDX-license-identifier-Zlib",
        "legacy_unencumbered",
    ],
    license_text: [
        "LICENSE",
    ],
}

cc_defaults {
    name: "libsepol_defaults",
    cflags: [
      "-D_GNU_SOURCE",
      "-Wall",
      "-Werror",
      "-W",
      "-Wundef",
      "-Wshadow",
      "-Wno-error=missing-noreturn",
      "-Wmissing-format-attribute",
    ],
    target: {
        bionic: {
            cflags: ["-DHAVE_REALLOCARRAY"]
        },
        musl: {
            cflags: ["-DHAVE_REALLOCARRAY"]
        }
    }
}

cc_library {
    name: "libsepol",
    defaults: ["libsepol_defaults"],
    host_supported: true,
    srcs: [
        "src/assertion.c",
        "src/avrule_block.c",
        "src/avtab.c",
        "src/boolean_record.c",
        "src/booleans.c",
        "src/conditional.c",
        "src/constraint.c",
        "src/context.c",
        "src/context_record.c",
        "src/debug.c",
        "src/ebitmap.c",
        "src/expand.c",
        "src/handle.c",
        "src/hashtab.c",
        "src/hierarchy.c",
        "src/iface_record.c",
        "src/interfaces.c",
        "src/kernel_to_cil.c",
        "src/kernel_to_common.c",
        "src/kernel_to_conf.c",
        "src/link.c",
        "src/mls.c",
        "src/module.c",
        "src/module_to_cil.c",
        "src/node_record.c",
        "src/nodes.c",
        "src/optimize.c",
        "src/polcaps.c",
        "src/policydb.c",
        "src/policydb_convert.c",
        "src/policydb_public.c",
        "src/policydb_validate.c",
        "src/port_record.c",
        "src/ports.c",
        "src/services.c",
        "src/sidtab.c",
        "src/symtab.c",
        "src/user_record.c",
        "src/users.c",
        "src/util.c",
        "src/write.c",
        "cil/src/android.c",
        "cil/src/cil_binary.c",
        "cil/src/cil_build_ast.c",
        "cil/src/cil.c",
        "cil/src/cil_copy_ast.c",
        "cil/src/cil_deny.c",
        "cil/src/cil_find.c",
        "cil/src/cil_fqn.c",
        "cil/src/cil_lexer.l",
        "cil/src/cil_list.c",
        "cil/src/cil_log.c",
        "cil/src/cil_mem.c",
        "cil/src/cil_parser.c",
        "cil/src/cil_policy.c",
        "cil/src/cil_post.c",
        "cil/src/cil_reset_ast.c",
        "cil/src/cil_resolve_ast.c",
        "cil/src/cil_stack.c",
        "cil/src/cil_strpool.c",
        "cil/src/cil_symtab.c",
        "cil/src/cil_tree.c",
        "cil/src/cil_verify.c",
        "cil/src/cil_write_ast.c",
    ],
    local_include_dirs: [
        "cil/src",
        "src",
    ],
    export_include_dirs: [
        "cil/include",
        "include",
    ],
    stl: "none",
    // The host version of libsepol is loaded by the system python, which does
    // not have the sanitizer runtimes.
    target: {
        host: {
            sanitize: {
                never: true,
            },
        },
    },
}

cc_binary_host {
    name: "chkcon",
    defaults: ["libsepol_defaults"],
    srcs: ["utils/chkcon.c"],
    shared_libs: ["libsepol"],
}
