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

cc_defaults {
    name: "kvmtool-defaults",

    cflags: [
        "-D_FILE_OFFSET_BITS=64",
        "-D_GNU_SOURCE",
        "-DKVMTOOLS_VERSION=\"android\"",

        "-Wall",
        "-Wformat=2",
        "-Winit-self",
        "-Wmissing-declarations",
        "-Wmissing-prototypes",
        "-Wnested-externs",
        "-Wno-system-headers",
        "-Wold-style-definition",
        "-Wredundant-decls",
        "-Wsign-compare",
        "-Wstrict-prototypes",
        "-Wundef",
        "-Wvolatile-register-var",
        "-Wwrite-strings",
        "-Wno-format-nonliteral",

        // Needed because Android makes these an error by default.
        "-Wno-unused-parameter",
        "-Wno-pointer-arith",
    ],
    local_include_dirs: [ "include" ],

    arch: {
        arm64: {
            cflags: [
                "-DCONFIG_ARM64",
                "-DBUILD_ARCH=\"arm64\"",
                "-DCONFIG_HAS_LIBFDT",
            ],
            local_include_dirs: [
                    "arm/include",
                    "arm/aarch64/include"
            ],
        },
    },
}

cc_library_static {
    name: "libkvmtool_static",
    defaults: ["kvmtool-defaults"],

    srcs: [
        "builtin-balloon.c",
        "builtin-debug.c",
        "builtin-help.c",
        "builtin-list.c",
        "builtin-stat.c",
        "builtin-pause.c",
        "builtin-resume.c",
        "builtin-run.c",
        "builtin-setup.c",
        "builtin-stop.c",
        "builtin-version.c",
        "devices.c",
        "disk/core.c",
        "framebuffer.c",
        "guest_compat.c",
        "hw/rtc.c",
        "hw/serial.c",
        "ioport.c",
        "irq.c",
        "kvm-cpu.c",
        "kvm.c",
        "mmio.c",
        "pci.c",
        "term.c",
        "vfio/core.c",
        "vfio/pci.c",
        "virtio/blk.c",
        "virtio/scsi.c",
        "virtio/console.c",
        "virtio/core.c",
        "virtio/net.c",
        "virtio/rng.c",
        "virtio/balloon.c",
        "virtio/pci.c",
        "disk/blk.c",
        "disk/qcow.c",
        "disk/raw.c",
        "ioeventfd.c",
        "net/uip/core.c",
        "net/uip/arp.c",
        "net/uip/icmp.c",
        "net/uip/ipv4.c",
        "net/uip/tcp.c",
        "net/uip/udp.c",
        "net/uip/buf.c",
        "net/uip/csum.c",
        "net/uip/dhcp.c",
        "kvm-cmd.c",
        "util/init.c",
        "util/iovec.c",
        "util/rbtree.c",
        "util/threadpool.c",
        "util/parse-options.c",
        "util/rbtree-interval.c",
        "util/strbuf.c",
        "util/read-write.c",
        "util/util.c",
        "virtio/9p.c",
        "virtio/9p-pdu.c",
        "kvm-ipc.c",
        "builtin-sandbox.c",
        "virtio/mmio.c",
    ],
    static_libs: [ "liblog" ],
    arch: {
        arm64: {
            cflags: [
                "-DCONFIG_ARM64",
                "-DBUILD_ARCH=\"arm64\"",
                "-DCONFIG_HAS_LIBFDT",
            ],
            local_include_dirs: [
                    "arm/include",
                    "arm/aarch64/include"
            ],
            srcs: [
                "arm/fdt.c",
                "arm/gic.c",
                "arm/gicv2m.c",
                "arm/ioport.c",
                "arm/kvm.c",
                "arm/kvm-cpu.c",
                "arm/pci.c",
                "arm/timer.c",
                "arm/pmu.c",
                "arm/aarch64/arm-cpu.c",
                "arm/aarch64/kvm-cpu.c",
                "arm/aarch64/kvm.c",
                "hw/cfi_flash.c",
            ],
            static_libs: [ "libfdt", ],
        },
    },
}

cc_binary {
    name: "kvmtool",
    defaults: ["kvmtool-defaults"],
    srcs: [ "main.c" ],
    static_libs: [ "libfdt", "libkvmtool_static" ],
}
