// Copyright (C) 2017 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.

subdirs = [
    "test"
]

libvintf_flags = [
    "-Wall",
    "-Werror",
]

cc_library {
    name: "libvintf",
    host_supported: true,
    cflags: libvintf_flags,
    shared_libs: [
        "libbase",
        "liblog",
        "libselinux",
        "libtinyxml2",
    ],
    export_include_dirs: ["include"],
    local_include_dirs: ["include/vintf"],

    srcs: [
        "parse_string.cpp",
        "parse_xml.cpp",
        "CompatibilityMatrix.cpp",
        "HalManifest.cpp",
        "HalInterface.cpp",
        "KernelConfigTypedValue.cpp",
        "RuntimeInfo.cpp",
        "ManifestHal.cpp",
        "MatrixHal.cpp",
        "MatrixKernel.cpp",
        "TransportArch.cpp",
        "VintfObject.cpp",
        "utils.cpp",
    ],

    target: {
        host: {
            srcs: [
                "RuntimeInfo-host.cpp"
            ]
        },
        android: {
            shared_libs: [
                "libcutils",
                "libutils",
                "libz"
            ],
            srcs: [
                "RuntimeInfo-target.cpp"
            ],
            cflags: ["-DLIBVINTF_TARGET"],
        },
    }
}

cc_binary {
    name: "vintf",
    cflags: libvintf_flags,
    shared_libs: [
        "libvintf",
    ],
    srcs: [
        "main.cpp"
    ],
}

cc_binary_host {
    name: "assemble_vintf",
    cflags: libvintf_flags,
    shared_libs: [
        "libvintf"
    ],
    srcs: [
        "assemble_vintf.cpp"
    ],
}

cc_library {
    name: "libvintftest",
    host_supported: true,
    shared_libs: [
        "libbase",
        "liblog",
        "libselinux",
        "libtinyxml2",
    ],
    export_include_dirs: ["include/vintf", "include", "test", "."],
    local_include_dirs: ["include/vintf", "test", "."],

    srcs: [
        "parse_string.cpp",
        "parse_xml.cpp",
        "CompatibilityMatrix.cpp",
        "HalManifest.cpp",
        "HalInterface.cpp",
        "KernelConfigTypedValue.cpp",
        "RuntimeInfo.cpp",
        "ManifestHal.cpp",
        "MatrixHal.cpp",
        "MatrixKernel.cpp",
        "TransportArch.cpp",
        "VintfObject.cpp",
        "test/RuntimeInfo-fake.cpp",
        "test/utils-fake.cpp",
    ],

    target: {
        android: {
            shared_libs: [
                "libcutils",
                "libutils",
                "libz"
            ],
            cflags: ["-DLIBVINTF_TARGET"],
        },
    }
}
