| Copyright 2020 The Monogon Project Authors. |
| |
| 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. |
| |
| |
| From 88ba396b627c26b9b01c2bc358557964cbb59cf8 Mon Sep 17 00:00:00 2001 |
| From: Lorenz Brun <lorenz@brun.one> |
| Date: Wed, 10 Mar 2021 18:25:11 +0100 |
| Subject: [PATCH 3/6] Add Bazel support |
| |
| --- |
| BUILD | 1146 +++++++++++++++++++++++++++++++ |
| defs.bzl | 52 ++ |
| qapi/BUILD | 25 + |
| qapi/defs.bzl | 40 ++ |
| scripts/BUILD | 35 + |
| scripts/modules/BUILD | 7 + |
| scripts/qapi/BUILD | 7 + |
| scripts/qapi/defs.bzl | 52 ++ |
| scripts/tracetool/BUILD | 11 + |
| scripts/tracetool/backend/BUILD | 7 + |
| scripts/tracetool/defs.bzl | 65 ++ |
| scripts/tracetool/format/BUILD | 7 + |
| trace/BUILD | 18 + |
| 13 files changed, 1472 insertions(+) |
| create mode 100644 BUILD |
| create mode 100644 defs.bzl |
| create mode 100644 qapi/BUILD |
| create mode 100644 qapi/defs.bzl |
| create mode 100644 scripts/BUILD |
| create mode 100644 scripts/modules/BUILD |
| create mode 100644 scripts/qapi/BUILD |
| create mode 100644 scripts/qapi/defs.bzl |
| create mode 100644 scripts/tracetool/BUILD |
| create mode 100644 scripts/tracetool/backend/BUILD |
| create mode 100644 scripts/tracetool/defs.bzl |
| create mode 100644 scripts/tracetool/format/BUILD |
| create mode 100644 trace/BUILD |
| |
| diff --git a/BUILD b/BUILD |
| new file mode 100644 |
| index 0000000000..436f8c5cf3 |
| --- /dev/null |
| +++ b/BUILD |
| @@ -0,0 +1,1147 @@ |
| +load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") |
| +load("@rules_python//python:defs.bzl", "py_binary") |
| +load("@dev_source_monogon//build/utils:template_file.bzl", "template_file") |
| +load(":defs.bzl", "filter_label_suffix") |
| +load("//:defs.bzl", "cc_qemu_keymaps") |
| + |
| +filegroup( |
| + name = "trace-files", |
| + srcs = glob(["**/trace-events"]) + ["//qapi:trace-events"], |
| + visibility = ["//visibility:public"], |
| +) |
| + |
| +filter_label_suffix( |
| + name = "qapi_hdrs_gen", |
| + srcs = ["//qapi:qapi_generated"], |
| + suffix = ".h", |
| +) |
| + |
| +filter_label_suffix( |
| + name = "qapi_c", |
| + srcs = ["//qapi:qapi_generated"], |
| + suffix = ".c", |
| +) |
| + |
| +filter_label_suffix( |
| + name = "trace_c", |
| + srcs = ["//trace"], |
| + exclude = [ |
| + "trace-linux-user.c", |
| + "trace-hw_pci-host.c", |
| + ], |
| + suffix = ".c", |
| +) |
| + |
| +genrule( |
| + name = "block-coroutine-gen", |
| + srcs = [ |
| + "include/block/block.h", |
| + "block/coroutines.h", |
| + ], |
| + outs = ["block-gen.c"], |
| + cmd = "./$(location //scripts:block-coroutine-wrapper) \"$@\" $(location include/block/block.h) $(location block/coroutines.h)", |
| + tools = ["//scripts:block-coroutine-wrapper"], |
| +) |
| + |
| +filter_label_suffix( |
| + name = "trace_hdrs_gen", |
| + srcs = ["//trace"], |
| + suffix = ".h", |
| +) |
| + |
| +filegroup( |
| + name = "gen_hdrs", |
| + srcs = [ |
| + ":libslirp-version.h", |
| + ":qapi_hdrs_gen", |
| + ":trace_hdrs_gen", |
| + "//qapi:extra_hdrs", |
| + "//trace:extra_hdrs", |
| + ], |
| +) |
| + |
| +filegroup( |
| + name = "all_headers", |
| + srcs = glob([ |
| + "accel/**/*.h", |
| + "accel/**/*.inc", |
| + "audio/**/*.h", |
| + "audio/**/*.inc", |
| + "authz/**/*.h", |
| + "authz/**/*.inc", |
| + "backends/**/*.h", |
| + "backends/**/*.inc", |
| + "block/**/*.h", |
| + "block/**/*.inc", |
| + "capstone/**/*.h", |
| + "capstone/**/*.inc", |
| + "chardev/**/*.h", |
| + "chardev/**/*.inc", |
| + "contrib/**/*.h", |
| + "contrib/**/*.inc", |
| + "crypto/**/*.h", |
| + "crypto/**/*.inc", |
| + "default-configs/**/*.h", |
| + "default-configs/**/*.inc", |
| + "disas/**/*.h", |
| + "disas/**/*.inc", |
| + "dtc/**/*.h", |
| + "dtc/**/*.inc", |
| + "dump/**/*.h", |
| + "dump/**/*.inc", |
| + "fpu/**/*.h", |
| + "fpu/**/*.inc", |
| + "fsdev/**/*.h", |
| + "fsdev/**/*.inc", |
| + "gdb-xml/**/*.h", |
| + "gdb-xml/**/*.inc", |
| + "hw/**/*.h", |
| + "hw/**/*.inc", |
| + "include/**/*.h", |
| + "include/**/*.inc", |
| + "io/**/*.h", |
| + "io/**/*.inc", |
| + "libdecnumber/**/*.h", |
| + "libdecnumber/**/*.inc", |
| + "linux-headers/**/*.h", |
| + "linux-headers/**/*.inc", |
| + "linux-user/**/*.h", |
| + "linux-user/**/*.inc", |
| + "migration/**/*.h", |
| + "migration/**/*.inc", |
| + "monitor/**/*.h", |
| + "monitor/**/*.inc", |
| + "nbd/**/*.h", |
| + "nbd/**/*.inc", |
| + "net/**/*.h", |
| + "net/**/*.inc", |
| + "plugins/**/*.h", |
| + "plugins/**/*.inc", |
| + "qapi/**/*.h", |
| + "qapi/**/*.inc", |
| + "qga/**/*.h", |
| + "qga/**/*.inc", |
| + "qobject/**/*.h", |
| + "qobject/**/*.inc", |
| + "qom/**/*.h", |
| + "qom/**/*.inc", |
| + "replay/**/*.h", |
| + "replay/**/*.inc", |
| + "scripts/**/*.h", |
| + "scripts/**/*.inc", |
| + "scsi/**/*.h", |
| + "scsi/**/*.inc", |
| + "slirp/**/*.h", |
| + "slirp/**/*.inc", |
| + "softmmu/**/*.h", |
| + "softmmu/**/*.inc", |
| + "storage-daemon/**/*.h", |
| + "storage-daemon/**/*.inc", |
| + "subprojects/**/*.h", |
| + "subprojects/**/*.inc", |
| + "stubs/**/*.h", |
| + "stubs/**/*.inc", |
| + "target/**/*.h", |
| + "target/**/*.inc", |
| + "tcg/**/*.h", |
| + "tcg/**/*.inc", |
| + "tools/**/*.h", |
| + "tools/**/*.inc", |
| + "trace/**/*.h", |
| + "trace/**/*.inc", |
| + "ui/**/*.h", |
| + "ui/**/*.inc", |
| + "util/**/*.h", |
| + "util/**/*.inc", |
| + ]) + [ |
| + ":hmp-commands", |
| + ":module-block", |
| + ":cursor-hdrs", |
| + ":keymaps-gen", |
| + "qemu-img-cmds.h", |
| + "qemu-options.h", |
| + "qemu-options-wrapper.h", |
| + "qemu-version.h", |
| + "replication.h", |
| + "x86_64-softmmu-config-devices.h", |
| + "x86_64-softmmu-config-target.h", |
| + "memory_ldst.c.inc", |
| + ], |
| +) |
| + |
| +cc_library( |
| + name = "capstone", |
| + srcs = [":all_headers"] + [ |
| + "capstone/cs.c", |
| + "capstone/MCInst.c", |
| + "capstone/MCInstrDesc.c", |
| + "capstone/MCRegisterInfo.c", |
| + "capstone/SStream.c", |
| + "capstone/utils.c", |
| + "capstone/arch/X86/X86Disassembler.c", |
| + "capstone/arch/X86/X86DisassemblerDecoder.c", |
| + "capstone/arch/X86/X86ATTInstPrinter.c", |
| + "capstone/arch/X86/X86IntelInstPrinter.c", |
| + "capstone/arch/X86/X86InstPrinterCommon.c", |
| + "capstone/arch/X86/X86Mapping.c", |
| + "capstone/arch/X86/X86Module.c", |
| + ], |
| + local_defines = [ |
| + "_GNU_SOURCE", |
| + "_FILE_OFFSET_BITS=64", |
| + "_LARGEFILE_SOURCE", |
| + ], |
| + includes = ["capstone/include"], |
| +) |
| + |
| +template_file( |
| + name = "libslirp-version.h", |
| + src = "slirp/src/libslirp-version.h.in", |
| + substitutions = { |
| + "@SLIRP_MAJOR_VERSION@": "0", |
| + "@SLIRP_MINOR_VERSION@": "0", |
| + "@SLIRP_MICRO_VERSION@": "1", |
| + "@SLIRP_VERSION_STRING@": "\"0.0.1\"", |
| + }, |
| +) |
| + |
| +cc_library( |
| + name = "slirp", |
| + srcs = [":all_headers"] + [ |
| + "slirp/src/arp_table.c", |
| + "slirp/src/bootp.c", |
| + "slirp/src/cksum.c", |
| + "slirp/src/dhcpv6.c", |
| + "slirp/src/dnssearch.c", |
| + "slirp/src/if.c", |
| + "slirp/src/ip6_icmp.c", |
| + "slirp/src/ip6_input.c", |
| + "slirp/src/ip6_output.c", |
| + "slirp/src/ip_icmp.c", |
| + "slirp/src/ip_input.c", |
| + "slirp/src/ip_output.c", |
| + "slirp/src/mbuf.c", |
| + "slirp/src/misc.c", |
| + "slirp/src/ncsi.c", |
| + "slirp/src/ndp_table.c", |
| + "slirp/src/sbuf.c", |
| + "slirp/src/slirp.c", |
| + "slirp/src/socket.c", |
| + "slirp/src/state.c", |
| + "slirp/src/stream.c", |
| + "slirp/src/tcp_input.c", |
| + "slirp/src/tcp_output.c", |
| + "slirp/src/tcp_subr.c", |
| + "slirp/src/tcp_timer.c", |
| + "slirp/src/tftp.c", |
| + "slirp/src/udp.c", |
| + "slirp/src/udp6.c", |
| + "slirp/src/util.c", |
| + "slirp/src/version.c", |
| + "slirp/src/vmstate.c", |
| + ] + [":libslirp-version.h"], |
| + local_defines = [ |
| + "_GNU_SOURCE", |
| + "_FILE_OFFSET_BITS=64", |
| + "_LARGEFILE_SOURCE", |
| + "G_LOG_DOMAIN=\\\"Slirp\\\"", |
| + ], |
| + deps = [ |
| + "@glib//glib", |
| + ], |
| + includes = ["include", "slirp/src"], |
| +) |
| + |
| +cc_library( |
| + name = "fdt", |
| + srcs = [":all_headers"] + [ |
| + "dtc/libfdt/fdt.c", |
| + "dtc/libfdt/fdt_ro.c", |
| + "dtc/libfdt/fdt_wip.c", |
| + "dtc/libfdt/fdt_sw.c", |
| + "dtc/libfdt/fdt_rw.c", |
| + "dtc/libfdt/fdt_strerror.c", |
| + "dtc/libfdt/fdt_empty_tree.c", |
| + "dtc/libfdt/fdt_addresses.c", |
| + "dtc/libfdt/fdt_overlay.c", |
| + "dtc/libfdt/fdt_check.c", |
| + ], |
| + local_defines = [ |
| + "_GNU_SOURCE", |
| + "_FILE_OFFSET_BITS=64", |
| + "_LARGEFILE_SOURCE", |
| + ], |
| + includes = ["include", "dtc/libfdt", "disas/libvixl"], |
| +) |
| + |
| +cc_library( |
| + name = "qemu", |
| + srcs = [":all_headers"] + [ |
| + "accel/accel.c", |
| + "audio/audio_legacy.c", |
| + "audio/audio.c", |
| + "audio/mixeng.c", |
| + "audio/noaudio.c", |
| + "audio/wavaudio.c", |
| + "audio/wavcapture.c", |
| + "authz/base.c", |
| + "authz/list.c", |
| + "authz/listfile.c", |
| + "authz/simple.c", |
| + "backends/cryptodev-builtin.c", |
| + "backends/cryptodev-vhost.c", |
| + "backends/cryptodev.c", |
| + "backends/hostmem-file.c", |
| + "backends/hostmem-memfd.c", |
| + "backends/hostmem-ram.c", |
| + "backends/hostmem.c", |
| + "backends/rng-builtin.c", |
| + "backends/rng-egd.c", |
| + "backends/rng-random.c", |
| + "backends/rng.c", |
| + "backends/tpm/tpm_backend.c", |
| + "backends/tpm/tpm_emulator.c", |
| + "backends/tpm/tpm_passthrough.c", |
| + "backends/tpm/tpm_util.c", |
| + "block.c", |
| + "block/accounting.c", |
| + "block/aio_task.c", |
| + "block/amend.c", |
| + "block/backup-top.c", |
| + "block/backup.c", |
| + "block/blkdebug.c", |
| + "block/blklogwrites.c", |
| + "block/blkverify.c", |
| + "block/block-backend.c", |
| + "block/block-copy.c", |
| + "block/commit.c", |
| + "block/copy-on-read.c", |
| + "block/create.c", |
| + "block/crypto.c", |
| + "block/dirty-bitmap.c", |
| + "block/export/export.c", |
| + "block/file-posix.c", |
| + "block/filter-compress.c", |
| + "block/io_uring.c", |
| + "block/io.c", |
| + "block/mirror.c", |
| + "block/monitor/bitmap-qmp-cmds.c", |
| + "block/monitor/block-hmp-cmds.c", |
| + "block/nbd.c", |
| + "block/null.c", |
| + "block/nvme.c", |
| + "block/qapi-sysemu.c", |
| + "block/qapi.c", |
| + "block/qcow2-bitmap.c", |
| + "block/qcow2-cache.c", |
| + "block/qcow2-cluster.c", |
| + "block/qcow2-refcount.c", |
| + "block/qcow2-snapshot.c", |
| + "block/qcow2-threads.c", |
| + "block/qcow2.c", |
| + "block/quorum.c", |
| + "block/raw-format.c", |
| + "block/snapshot.c", |
| + "block/stream.c", |
| + "block/throttle-groups.c", |
| + "block/throttle.c", |
| + "block/vhdx-endian.c", |
| + "block/vhdx-log.c", |
| + "block/vhdx.c", |
| + "block/vmdk.c", |
| + "block/vpc.c", |
| + "block/write-threshold.c", |
| + "blockdev-nbd.c", |
| + "blockdev.c", |
| + "blockjob.c", |
| + "chardev/char-fd.c", |
| + "chardev/char-fe.c", |
| + "chardev/char-file.c", |
| + "chardev/char-io.c", |
| + "chardev/char-mux.c", |
| + "chardev/char-null.c", |
| + "chardev/char-parallel.c", |
| + "chardev/char-pipe.c", |
| + "chardev/char-pty.c", |
| + "chardev/char-ringbuf.c", |
| + "chardev/char-serial.c", |
| + "chardev/char-socket.c", |
| + "chardev/char-stdio.c", |
| + "chardev/char-udp.c", |
| + "chardev/char.c", |
| + "chardev/msmouse.c", |
| + "chardev/testdev.c", |
| + "chardev/wctablet.c", |
| + "cpus-common.c", |
| + "crypto/aes.c", |
| + "crypto/afsplit.c", |
| + "crypto/block-luks.c", |
| + "crypto/block-qcow.c", |
| + "crypto/block.c", |
| + "crypto/cipher.c", |
| + "crypto/desrfb.c", |
| + "crypto/hash-glib.c", |
| + "crypto/hash.c", |
| + "crypto/hmac-glib.c", |
| + "crypto/hmac.c", |
| + "crypto/init.c", |
| + "crypto/ivgen-essiv.c", |
| + "crypto/ivgen-plain.c", |
| + "crypto/ivgen-plain64.c", |
| + "crypto/ivgen.c", |
| + "crypto/pbkdf-stub.c", |
| + "crypto/pbkdf.c", |
| + "crypto/random-platform.c", |
| + "crypto/secret_common.c", |
| + "crypto/secret.c", |
| + "crypto/tlscreds.c", |
| + "crypto/tlscredsanon.c", |
| + "crypto/tlscredspsk.c", |
| + "crypto/tlscredsx509.c", |
| + "crypto/tlssession.c", |
| + "crypto/xts.c", |
| + "disas/capstone.c", |
| + "disas/i386.c", |
| + "dump/dump-hmp-cmds.c", |
| + "fsdev/qemu-fsdev-dummy.c", |
| + "fsdev/qemu-fsdev-opts.c", |
| + "fsdev/qemu-fsdev-throttle.c", |
| + "hw/acpi/acpi_interface.c", |
| + "hw/acpi/aml-build.c", |
| + "hw/acpi/bios-linker-loader.c", |
| + "hw/acpi/core.c", |
| + "hw/acpi/cpu_hotplug.c", |
| + "hw/acpi/cpu.c", |
| + "hw/acpi/generic_event_device.c", |
| + "hw/acpi/hmat.c", |
| + "hw/acpi/ich9.c", |
| + "hw/acpi/ipmi.c", |
| + "hw/acpi/memory_hotplug.c", |
| + "hw/acpi/nvdimm.c", |
| + "hw/acpi/pci.c", |
| + "hw/acpi/pcihp.c", |
| + "hw/acpi/piix4.c", |
| + "hw/acpi/tco.c", |
| + "hw/acpi/tpm.c", |
| + "hw/acpi/utils.c", |
| + "hw/acpi/vmgenid.c", |
| + "hw/audio/ac97.c", |
| + "hw/audio/adlib.c", |
| + "hw/audio/cs4231a.c", |
| + "hw/audio/es1370.c", |
| + "hw/audio/fmopl.c", |
| + "hw/audio/gus.c", |
| + "hw/audio/gusemu_hal.c", |
| + "hw/audio/gusemu_mixer.c", |
| + "hw/audio/hda-codec.c", |
| + "hw/audio/intel-hda.c", |
| + "hw/audio/pcspk.c", |
| + "hw/audio/sb16.c", |
| + "hw/audio/soundhw.c", |
| + "hw/block/block.c", |
| + "hw/block/cdrom.c", |
| + "hw/block/fdc.c", |
| + "hw/block/hd-geometry.c", |
| + "hw/block/nvme-ns.c", |
| + "hw/block/nvme.c", |
| + "hw/block/pflash_cfi01.c", |
| + "hw/char/debugcon.c", |
| + "hw/char/ipoctal232.c", |
| + "hw/char/parallel-isa.c", |
| + "hw/char/parallel.c", |
| + "hw/char/serial-isa.c", |
| + "hw/char/serial-pci-multi.c", |
| + "hw/char/serial-pci.c", |
| + "hw/char/serial.c", |
| + "hw/char/virtio-console.c", |
| + "hw/core/bus.c", |
| + "hw/core/clock-vmstate.c", |
| + "hw/core/clock.c", |
| + "hw/core/cpu.c", |
| + "hw/core/fw-path-provider.c", |
| + "hw/core/generic-loader.c", |
| + "hw/core/hotplug.c", |
| + "hw/core/irq.c", |
| + "hw/core/loader.c", |
| + "hw/core/machine-hmp-cmds.c", |
| + "hw/core/machine.c", |
| + "hw/core/nmi.c", |
| + "hw/core/null-machine.c", |
| + "hw/core/qdev-clock.c", |
| + "hw/core/qdev-fw.c", |
| + "hw/core/qdev-properties-system.c", |
| + "hw/core/qdev-properties.c", |
| + "hw/core/qdev.c", |
| + "hw/core/reset.c", |
| + "hw/core/resettable.c", |
| + "hw/core/sysbus.c", |
| + "hw/core/vm-change-state-handler.c", |
| + "hw/core/vmstate-if.c", |
| + "hw/cpu/cluster.c", |
| + "hw/cpu/core.c", |
| + "hw/display/ati_2d.c", |
| + "hw/display/ati_dbg.c", |
| + "hw/display/ati.c", |
| + "hw/display/bochs-display.c", |
| + "hw/display/cirrus_vga_isa.c", |
| + "hw/display/cirrus_vga.c", |
| + "hw/display/edid-generate.c", |
| + "hw/display/edid-region.c", |
| + "hw/display/i2c-ddc.c", |
| + "hw/display/ramfb-standalone.c", |
| + "hw/display/ramfb.c", |
| + "hw/display/vga-isa.c", |
| + "hw/display/vga-pci.c", |
| + "hw/display/virtio-gpu-base.c", |
| + "hw/display/virtio-gpu-pci.c", |
| + "hw/display/virtio-gpu.c", |
| + "hw/display/virtio-vga.c", |
| + "hw/display/vmware_vga.c", |
| + "hw/dma/i8257.c", |
| + "hw/i2c/bitbang_i2c.c", |
| + "hw/i2c/core.c", |
| + "hw/i2c/pm_smbus.c", |
| + "hw/i2c/smbus_eeprom.c", |
| + "hw/i2c/smbus_ich9.c", |
| + "hw/i2c/smbus_master.c", |
| + "hw/i2c/smbus_slave.c", |
| + "hw/ide/ahci.c", |
| + "hw/ide/atapi.c", |
| + "hw/ide/core.c", |
| + "hw/ide/ich.c", |
| + "hw/ide/ioport.c", |
| + "hw/ide/isa.c", |
| + "hw/ide/pci.c", |
| + "hw/ide/piix.c", |
| + "hw/ide/qdev.c", |
| + "hw/input/hid.c", |
| + "hw/input/pckbd.c", |
| + "hw/input/ps2.c", |
| + "hw/input/virtio-input-hid.c", |
| + "hw/input/virtio-input-host.c", |
| + "hw/input/virtio-input.c", |
| + "hw/intc/i8259_common.c", |
| + "hw/intc/i8259.c", |
| + "hw/intc/intc.c", |
| + "hw/intc/ioapic_common.c", |
| + "hw/ipack/ipack.c", |
| + "hw/ipack/tpci200.c", |
| + "hw/ipmi/ipmi_bmc_extern.c", |
| + "hw/ipmi/ipmi_bmc_sim.c", |
| + "hw/ipmi/ipmi_bt.c", |
| + "hw/ipmi/ipmi_kcs.c", |
| + "hw/ipmi/ipmi.c", |
| + "hw/ipmi/isa_ipmi_bt.c", |
| + "hw/ipmi/isa_ipmi_kcs.c", |
| + "hw/ipmi/pci_ipmi_bt.c", |
| + "hw/ipmi/pci_ipmi_kcs.c", |
| + "hw/ipmi/smbus_ipmi.c", |
| + "hw/isa/apm.c", |
| + "hw/isa/isa-bus.c", |
| + "hw/isa/piix3.c", |
| + "hw/mem/memory-device.c", |
| + "hw/mem/nvdimm.c", |
| + "hw/mem/pc-dimm.c", |
| + "hw/misc/applesmc.c", |
| + "hw/misc/debugexit.c", |
| + "hw/misc/edu.c", |
| + "hw/misc/ivshmem.c", |
| + "hw/misc/pc-testdev.c", |
| + "hw/misc/pci-testdev.c", |
| + "hw/misc/pvpanic.c", |
| + "hw/misc/sga.c", |
| + "hw/misc/vmcoreinfo.c", |
| + "hw/net/can/can_kvaser_pci.c", |
| + "hw/net/can/can_mioe3680_pci.c", |
| + "hw/net/can/can_pcm3680_pci.c", |
| + "hw/net/can/can_sja1000.c", |
| + "hw/net/can/ctucan_core.c", |
| + "hw/net/can/ctucan_pci.c", |
| + "hw/net/e1000.c", |
| + "hw/net/e1000e_core.c", |
| + "hw/net/e1000e.c", |
| + "hw/net/e1000x_common.c", |
| + "hw/net/eepro100.c", |
| + "hw/net/ne2000-isa.c", |
| + "hw/net/ne2000-pci.c", |
| + "hw/net/ne2000.c", |
| + "hw/net/net_rx_pkt.c", |
| + "hw/net/net_tx_pkt.c", |
| + "hw/net/pcnet-pci.c", |
| + "hw/net/pcnet.c", |
| + "hw/net/rocker/rocker_desc.c", |
| + "hw/net/rocker/rocker_fp.c", |
| + "hw/net/rocker/rocker_of_dpa.c", |
| + "hw/net/rocker/rocker_world.c", |
| + "hw/net/rocker/rocker.c", |
| + "hw/net/rtl8139.c", |
| + "hw/net/tulip.c", |
| + "hw/net/vhost_net.c", |
| + "hw/net/vmxnet3.c", |
| + "hw/nvram/eeprom93xx.c", |
| + "hw/nvram/fw_cfg-interface.c", |
| + "hw/nvram/fw_cfg.c", |
| + "hw/pci-bridge/gen_pcie_root_port.c", |
| + "hw/pci-bridge/i82801b11.c", |
| + "hw/pci-bridge/ioh3420.c", |
| + "hw/pci-bridge/pci_bridge_dev.c", |
| + "hw/pci-bridge/pci_expander_bridge.c", |
| + "hw/pci-bridge/pcie_pci_bridge.c", |
| + "hw/pci-bridge/pcie_root_port.c", |
| + "hw/pci-bridge/xio3130_downstream.c", |
| + "hw/pci-bridge/xio3130_upstream.c", |
| + "hw/pci-host/gpex-acpi.c", |
| + "hw/pci-host/gpex.c", |
| + "hw/pci-host/i440fx.c", |
| + "hw/pci-host/pam.c", |
| + "hw/pci-host/q35.c", |
| + "hw/pci/msi.c", |
| + "hw/pci/msix.c", |
| + "hw/pci/pci_bridge.c", |
| + "hw/pci/pci_host.c", |
| + "hw/pci/pci.c", |
| + "hw/pci/pcie_aer.c", |
| + "hw/pci/pcie_host.c", |
| + "hw/pci/pcie_port.c", |
| + "hw/pci/pcie.c", |
| + "hw/pci/shpc.c", |
| + "hw/pci/slotid_cap.c", |
| + "hw/pcmcia/pcmcia.c", |
| + "hw/scsi/emulation.c", |
| + "hw/scsi/esp-pci.c", |
| + "hw/scsi/esp.c", |
| + "hw/scsi/lsi53c895a.c", |
| + "hw/scsi/megasas.c", |
| + "hw/scsi/mptconfig.c", |
| + "hw/scsi/mptendian.c", |
| + "hw/scsi/mptsas.c", |
| + "hw/scsi/scsi-bus.c", |
| + "hw/scsi/scsi-disk.c", |
| + "hw/scsi/scsi-generic.c", |
| + "hw/scsi/vmw_pvscsi.c", |
| + "hw/sd/core.c", |
| + "hw/sd/sd.c", |
| + "hw/sd/sdhci-pci.c", |
| + "hw/sd/sdhci.c", |
| + "hw/sd/sdmmc-internal.c", |
| + "hw/smbios/smbios_type_38.c", |
| + "hw/smbios/smbios.c", |
| + "hw/timer/hpet.c", |
| + "hw/timer/i8254_common.c", |
| + "hw/timer/i8254.c", |
| + "hw/usb/bus.c", |
| + "hw/usb/combined-packet.c", |
| + "hw/usb/core.c", |
| + "hw/usb/desc-msos.c", |
| + "hw/usb/desc.c", |
| + "hw/usb/dev-audio.c", |
| + "hw/usb/dev-hid.c", |
| + "hw/usb/dev-hub.c", |
| + "hw/usb/dev-mtp.c", |
| + "hw/usb/dev-network.c", |
| + "hw/usb/dev-serial.c", |
| + "hw/usb/dev-smartcard-reader.c", |
| + "hw/usb/dev-storage.c", |
| + "hw/usb/dev-uas.c", |
| + "hw/usb/dev-wacom.c", |
| + "hw/usb/hcd-ehci-pci.c", |
| + "hw/usb/hcd-ehci.c", |
| + "hw/usb/hcd-ohci-pci.c", |
| + "hw/usb/hcd-ohci.c", |
| + "hw/usb/hcd-uhci.c", |
| + "hw/usb/hcd-xhci-nec.c", |
| + "hw/usb/hcd-xhci-pci.c", |
| + "hw/usb/hcd-xhci-sysbus.c", |
| + "hw/usb/hcd-xhci.c", |
| + "hw/usb/host-stub.c", |
| + "hw/usb/imx-usb-phy.c", |
| + "hw/usb/libhw.c", |
| + "hw/usb/u2f-passthru.c", |
| + "hw/usb/u2f.c", |
| + "hw/virtio/virtio-bus.c", |
| + "hw/virtio/virtio-mmio.c", |
| + "hw/virtio/virtio-pci.c", |
| + "hw/watchdog/watchdog.c", |
| + "hw/watchdog/wdt_i6300esb.c", |
| + "hw/watchdog/wdt_ib700.c", |
| + "io/channel-buffer.c", |
| + "io/channel-command.c", |
| + "io/channel-file.c", |
| + "io/channel-socket.c", |
| + "io/channel-tls.c", |
| + "io/channel-util.c", |
| + "io/channel-watch.c", |
| + "io/channel-websock.c", |
| + "io/channel.c", |
| + "io/dns-resolver.c", |
| + "io/net-listener.c", |
| + "io/task.c", |
| + "iothread.c", |
| + "job-qmp.c", |
| + "job.c", |
| + "migration/block-dirty-bitmap.c", |
| + "migration/channel.c", |
| + "migration/colo-failover.c", |
| + "migration/colo.c", |
| + "migration/exec.c", |
| + "migration/fd.c", |
| + "migration/global_state.c", |
| + "migration/migration.c", |
| + "migration/multifd-zlib.c", |
| + "migration/multifd.c", |
| + "migration/page_cache.c", |
| + "migration/postcopy-ram.c", |
| + "migration/qemu-file-channel.c", |
| + "migration/qemu-file.c", |
| + "migration/savevm.c", |
| + "migration/socket.c", |
| + "migration/tls.c", |
| + "migration/vmstate-types.c", |
| + "migration/vmstate.c", |
| + "migration/xbzrle.c", |
| + "migration/qjson.c", |
| + "monitor/hmp-cmds.c", |
| + "monitor/hmp.c", |
| + "monitor/monitor.c", |
| + "monitor/qmp-cmds-control.c", |
| + "monitor/qmp-cmds.c", |
| + "monitor/qmp.c", |
| + "nbd/client.c", |
| + "nbd/common.c", |
| + "nbd/server.c", |
| + "net/announce.c", |
| + "net/can/can_core.c", |
| + "net/can/can_host.c", |
| + "net/can/can_socketcan.c", |
| + "net/checksum.c", |
| + "net/colo-compare.c", |
| + "net/colo.c", |
| + "net/dump.c", |
| + "net/eth.c", |
| + "net/filter-buffer.c", |
| + "net/filter-mirror.c", |
| + "net/filter-rewriter.c", |
| + "net/filter.c", |
| + "net/hub.c", |
| + "net/l2tpv3.c", |
| + "net/net.c", |
| + "net/queue.c", |
| + "net/slirp.c", |
| + "net/socket.c", |
| + "net/tap-linux.c", |
| + "net/tap.c", |
| + "net/util.c", |
| + "net/vhost-user-stub.c", |
| + "net/vhost-vdpa.c", |
| + "os-posix.c", |
| + "qemu-io-cmds.c", |
| + "qobject/block-qdict.c", |
| + "qobject/json-lexer.c", |
| + "qobject/json-parser.c", |
| + "qobject/json-streamer.c", |
| + "qobject/qbool.c", |
| + "qobject/qdict.c", |
| + "qobject/qjson.c", |
| + "qobject/qlist.c", |
| + "qobject/qlit.c", |
| + "qobject/qnull.c", |
| + "qobject/qnum.c", |
| + "qobject/qobject.c", |
| + "qobject/qstring.c", |
| + "qom/container.c", |
| + "qom/object_interfaces.c", |
| + "qom/object.c", |
| + "qom/qom-hmp-cmds.c", |
| + "qom/qom-qmp-cmds.c", |
| + "qom/qom-qobject.c", |
| + "replay/stubs-system.c", |
| + "scsi/pr-manager-helper.c", |
| + "scsi/pr-manager.c", |
| + "scsi/utils.c", |
| + "softmmu/bootdevice.c", |
| + "softmmu/device_tree.c", |
| + "softmmu/dma-helpers.c", |
| + "softmmu/qdev-monitor.c", |
| + "softmmu/qemu-seccomp.c", |
| + "softmmu/tpm.c", |
| + "stubs/gdbstub.c", |
| + "stubs/icount.c", |
| + "stubs/replay-tools.c", |
| + "stubs/replay.c", |
| + "stubs/semihost.c", |
| + "stubs/target-get-monitor-def.c", |
| + "stubs/win32-kbd-hook.c", |
| + "stubs/xen-hw-stub.c", |
| + "contrib/libvhost-user/libvhost-user-glib.c", |
| + "contrib/libvhost-user/libvhost-user.c", |
| + "ui/console.c", |
| + "ui/cursor.c", |
| + "ui/input-barrier.c", |
| + "ui/input-keymap.c", |
| + "ui/input-legacy.c", |
| + "ui/input-linux.c", |
| + "ui/input.c", |
| + "ui/kbd-state.c", |
| + "ui/keymaps.c", |
| + "ui/qemu-pixman.c", |
| + "ui/spice-module.c", |
| + "ui/vnc-stubs.c", |
| + "util/aio-posix.c", |
| + "util/aio-wait.c", |
| + "util/aiocb.c", |
| + "util/async.c", |
| + "util/base64.c", |
| + "util/bitmap.c", |
| + "util/bitops.c", |
| + "util/block-helpers.c", |
| + "util/buffer.c", |
| + "util/bufferiszero.c", |
| + "util/cacheinfo.c", |
| + "util/compatfd.c", |
| + "util/coroutine-sigaltstack.c", |
| + "util/crc32c.c", |
| + "util/cutils.c", |
| + "util/drm.c", |
| + "util/envlist.c", |
| + "util/error.c", |
| + "util/event_notifier-posix.c", |
| + "util/fdmon-epoll.c", |
| + "util/fdmon-io_uring.c", |
| + "util/fdmon-poll.c", |
| + "util/fifo8.c", |
| + "util/filemonitor-inotify.c", |
| + "util/getauxval.c", |
| + "util/guest-random.c", |
| + "util/hbitmap.c", |
| + "util/hexdump.c", |
| + "util/host-utils.c", |
| + "util/id.c", |
| + "util/iov.c", |
| + "util/iova-tree.c", |
| + "util/keyval.c", |
| + "util/lockcnt.c", |
| + "util/log.c", |
| + "util/main-loop.c", |
| + "util/memfd.c", |
| + "util/mmap-alloc.c", |
| + "util/module.c", |
| + "util/notify.c", |
| + "util/nvdimm-utils.c", |
| + "util/osdep.c", |
| + "util/oslib-posix.c", |
| + "util/pagesize.c", |
| + "util/path.c", |
| + "util/qdist.c", |
| + "util/qemu-co-shared-resource.c", |
| + "util/qemu-config.c", |
| + "util/qemu-coroutine-io.c", |
| + "util/qemu-coroutine-lock.c", |
| + "util/qemu-coroutine-sleep.c", |
| + "util/qemu-error.c", |
| + "util/qemu-openpty.c", |
| + "util/qemu-option.c", |
| + "util/qemu-print.c", |
| + "util/qemu-progress.c", |
| + "util/qemu-sockets.c", |
| + "util/qemu-thread-posix.c", |
| + "util/qemu-timer-common.c", |
| + "util/qemu-timer.c", |
| + "util/qht.c", |
| + "util/qsp.c", |
| + "util/range.c", |
| + "util/rcu.c", |
| + "util/readline.c", |
| + "util/stats64.c", |
| + "util/sys_membarrier.c", |
| + "util/systemd.c", |
| + "util/thread-pool.c", |
| + "util/throttle.c", |
| + "util/timed-average.c", |
| + "util/unicode.c", |
| + "util/uri.c", |
| + "util/uuid.c", |
| + "util/vfio-helpers.c", |
| + "util/vhost-user-server.c", |
| + "util/qemu-coroutine.c", |
| + ] + [ |
| + "//qapi:opts-visitor.c", |
| + "//qapi:qapi-clone-visitor.c", |
| + "//qapi:qapi-dealloc-visitor.c", |
| + "//qapi:qapi-util.c", |
| + "//qapi:qapi-visit-core.c", |
| + "//qapi:qmp-dispatch.c", |
| + "//qapi:qmp-event.c", |
| + "//qapi:qmp-registry.c", |
| + "//qapi:qobject-input-visitor.c", |
| + "//qapi:qobject-output-visitor.c", |
| + "//qapi:string-input-visitor.c", |
| + "//qapi:string-output-visitor.c", |
| + "//trace:control.c", |
| + "//trace:qmp.c", |
| + ] + [ |
| + ":gen_hdrs", |
| + ":block-coroutine-gen", |
| + ], |
| + # QEMU relies on hacky two's complement representation interpretation of bitshifts |
| + copts = ["-fwrapv"], |
| + local_defines = [ |
| + "_GNU_SOURCE", |
| + "_FILE_OFFSET_BITS=64", |
| + "_LARGEFILE_SOURCE", |
| + ], |
| + deps = [ |
| + ":capstone", |
| + ":fdt", |
| + ":slirp", |
| + "@glib//glib", |
| + "@pixman//:pixman", |
| + "@seccomp", |
| + "@uring//:uring", |
| + "@zlib//:zlib", |
| + ], |
| + includes = ["include", "capstone/include/capstone"], |
| + alwayslink = True, # QEMU uses __attribute__((constructor)) functions |
| +) |
| + |
| +cc_binary( |
| + name = "qemu-x86_64-softmmu", |
| + srcs = [":all_headers"] + [ |
| + "//trace:control-target.c", |
| + "accel/dummy-cpus.c", |
| + "accel/kvm/kvm-all.c", |
| + "accel/kvm/kvm-cpus.c", |
| + "accel/qtest/qtest.c", |
| + "accel/stubs/hax-stub.c", |
| + "accel/stubs/tcg-stub.c", |
| + "accel/stubs/xen-stub.c", |
| + "cpu.c", |
| + "disas.c", |
| + "dump/dump.c", |
| + "dump/win_dump.c", |
| + "exec-vary.c", |
| + "gdbstub.c", |
| + "hw/block/dataplane/virtio-blk.c", |
| + "hw/block/virtio-blk.c", |
| + "hw/char/virtio-serial-bus.c", |
| + "hw/core/machine-qmp-cmds.c", |
| + "hw/core/numa.c", |
| + "hw/display/vga.c", |
| + "hw/hyperv/hyperv_testdev.c", |
| + "hw/hyperv/hyperv.c", |
| + "hw/hyperv/vmbus.c", |
| + "hw/i386/acpi-build.c", |
| + "hw/i386/acpi-common.c", |
| + "hw/i386/acpi-microvm.c", |
| + "hw/i386/amd_iommu.c", |
| + "hw/i386/e820_memory_layout.c", |
| + "hw/i386/fw_cfg.c", |
| + "hw/i386/generic_event_device_x86.c", |
| + "hw/i386/intel_iommu.c", |
| + "hw/i386/kvm/apic.c", |
| + "hw/i386/kvm/clock.c", |
| + "hw/i386/kvm/i8254.c", |
| + "hw/i386/kvm/i8259.c", |
| + "hw/i386/kvm/ioapic.c", |
| + "hw/i386/kvmvapic.c", |
| + "hw/i386/microvm.c", |
| + "hw/i386/multiboot.c", |
| + "hw/i386/pc_piix.c", |
| + "hw/i386/pc_q35.c", |
| + "hw/i386/pc_sysfw.c", |
| + "hw/i386/pc.c", |
| + "hw/i386/port92.c", |
| + "hw/i386/vmmouse.c", |
| + "hw/i386/vmport.c", |
| + "hw/i386/x86-iommu.c", |
| + "hw/i386/x86.c", |
| + "hw/intc/apic_common.c", |
| + "hw/intc/apic.c", |
| + "hw/intc/ioapic.c", |
| + "hw/isa/lpc_ich9.c", |
| + "hw/net/virtio-net.c", |
| + "hw/rtc/mc146818rtc.c", |
| + "hw/scsi/virtio-scsi-dataplane.c", |
| + "hw/scsi/virtio-scsi.c", |
| + "hw/vfio/common.c", |
| + "hw/vfio/display.c", |
| + "hw/vfio/igd.c", |
| + "hw/vfio/migration.c", |
| + "hw/vfio/pci-quirks.c", |
| + "hw/vfio/pci.c", |
| + "hw/vfio/spapr.c", |
| + "hw/virtio/vhost-backend.c", |
| + "hw/virtio/vhost-vdpa.c", |
| + "hw/virtio/vhost.c", |
| + "hw/virtio/virtio-balloon-pci.c", |
| + "hw/virtio/virtio-balloon.c", |
| + "hw/virtio/virtio-blk-pci.c", |
| + "hw/virtio/virtio-crypto-pci.c", |
| + "hw/virtio/virtio-crypto.c", |
| + "hw/virtio/virtio-input-host-pci.c", |
| + "hw/virtio/virtio-input-pci.c", |
| + "hw/virtio/virtio-iommu-pci.c", |
| + "hw/virtio/virtio-iommu.c", |
| + "hw/virtio/virtio-mem-pci.c", |
| + "hw/virtio/virtio-mem.c", |
| + "hw/virtio/virtio-net-pci.c", |
| + "hw/virtio/virtio-pmem-pci.c", |
| + "hw/virtio/virtio-pmem.c", |
| + "hw/virtio/virtio-rng-pci.c", |
| + "hw/virtio/virtio-rng.c", |
| + "hw/virtio/virtio-scsi-pci.c", |
| + "hw/virtio/virtio-serial-pci.c", |
| + "hw/virtio/virtio.c", |
| + "migration/dirtyrate.c", |
| + "migration/ram.c", |
| + "monitor/misc.c", |
| + "softmmu/arch_init.c", |
| + "softmmu/balloon.c", |
| + "softmmu/cpu-throttle.c", |
| + "softmmu/cpu-timers.c", |
| + "softmmu/cpus.c", |
| + "softmmu/ioport.c", |
| + "softmmu/main.c", |
| + "softmmu/memory_mapping.c", |
| + "softmmu/memory.c", |
| + "softmmu/physmem.c", |
| + "softmmu/qtest.c", |
| + "softmmu/vl.c", |
| + "target/i386/arch_dump.c", |
| + "target/i386/arch_memory_mapping.c", |
| + "target/i386/cpu.c", |
| + "target/i386/gdbstub.c", |
| + "target/i386/helper.c", |
| + "target/i386/kvm.c", |
| + "target/i386/hyperv.c", |
| + "target/i386/machine.c", |
| + "target/i386/monitor.c", |
| + "target/i386/tcg-stub.c", |
| + "target/i386/sev.c", |
| + "target/i386/xsave_helper.c", |
| + ] + [ |
| + ":gen_hdrs", |
| + ":trace_c", |
| + ":qapi_c", |
| + ], |
| + copts = ["-fwrapv"], # QEMU relies on hacky two's complement representations of bitshifts |
| + linkopts = [ |
| + "-pthread", |
| + "-lutil", # Not actually a library but weird GLIBC shenanigans |
| + ], |
| + data = glob(["pc-bios/**"]), |
| + local_defines = [ |
| + "_GNU_SOURCE", |
| + "_FILE_OFFSET_BITS=64", |
| + "_LARGEFILE_SOURCE", |
| + "NEED_CPU_H", |
| + "CONFIG_TARGET=\\\"x86_64-softmmu-config-target.h\\\"", |
| + "CONFIG_DEVICES=\\\"x86_64-softmmu-config-devices.h\\\"", |
| + ], |
| + deps = [ |
| + ":fdt", |
| + ":qemu", |
| + ":slirp", |
| + "@glib//glib", |
| + "@pixman//:pixman", |
| + "@zlib//:zlib", |
| + ], |
| + visibility = ["//visibility:public"], |
| + includes = ["target/i386", "tcg/i386", "accel/tcg", "linux-headers"], |
| +) |
| + |
| +genrule( |
| + name = "cursor-hdrs", |
| + srcs = [ |
| + "ui/cursor_hidden.xpm", |
| + "ui/cursor_left_ptr.xpm", |
| + ], |
| + outs = [ |
| + "ui/cursor_hidden.h", |
| + "ui/cursor_left_ptr.h", |
| + ], |
| + cmd = """ |
| + cp $(location ui/cursor_hidden.xpm) $(location ui/cursor_hidden.h) |
| + cp $(location ui/cursor_left_ptr.xpm) $(location ui/cursor_left_ptr.h) |
| + """, |
| +) |
| + |
| +genrule( |
| + name = "module-block", |
| + outs = ["block/module_block.h"], |
| + cmd = "./$(location //scripts/modules:module_block) $(location block/module_block.h)", |
| + tools = ["//scripts/modules:module_block"], |
| +) |
| + |
| +genrule( |
| + name = "hmp-commands", |
| + srcs = [ |
| + "hmp-commands.hx", |
| + "hmp-commands-info.hx", |
| + "qemu-options.hx", |
| + "qemu-img-cmds.hx", |
| + ], |
| + outs = [ |
| + "hmp-commands.h", |
| + "hmp-commands-info.h", |
| + "qemu-options-gen.h", |
| + "qemu-img-cmds.h", |
| + ], |
| + cmd = """ |
| + ./$(location //scripts:hxtool-sh) -h $(location hmp-commands.hx) > $(location hmp-commands.h) |
| + ./$(location //scripts:hxtool-sh) -h $(location hmp-commands-info.hx) > $(location hmp-commands-info.h) |
| + ./$(location //scripts:hxtool-sh) -h $(location qemu-options.hx) > $(location qemu-options-gen.h) |
| + ./$(location //scripts:hxtool-sh) -h $(location qemu-img-cmds.hx) > $(location qemu-img-cmds.h) |
| + """, |
| + tools = ["//scripts:hxtool-sh"], |
| +) |
| + |
| +cc_qemu_keymaps( |
| + name = "keymaps-gen", |
| + src = "ui/keycodemapdb/data/keymaps.csv", |
| + maps = { |
| + "atset1": ["qcode"], |
| + "linux": ["qcode"], |
| + "qcode": [ |
| + "atset1", |
| + "atset2", |
| + "atset3", |
| + "linux", |
| + "qnum", |
| + "sun", |
| + ], |
| + "qnum": ["qcode"], |
| + "usb": ["qcode"], |
| + "win32": ["qcode"], |
| + "x11": ["qcode"], |
| + "xorgevdev": ["qcode"], |
| + "xorgkbd": ["qcode"], |
| + "xorgxquartz": ["qcode"], |
| + "xorgxwin": ["qcode"], |
| + "osx": ["qcode"], |
| + }, |
| +) |
| + |
| + |
| +genrule( |
| + name = "renamed-keymap-gen", |
| + srcs = ["ui/keycodemapdb/tools/keymap-gen"], |
| + outs = ["keymap-gen.py"], |
| + cmd = "cp $(location ui/keycodemapdb/tools/keymap-gen) $@", |
| +) |
| + |
| +py_binary( |
| + name = "keymap-gen", |
| + srcs = [":renamed-keymap-gen"], |
| + visibility = ["//visibility:public"], |
| +) |
| + |
| +genrule( |
| + name = "gdbstub-xml", |
| + srcs = ["gdb-xml/i386-64bit.xml"], |
| + outs = ["x86_64-softmmu-gdbstub-xml.c"], |
| + cmd = "./$(location //scripts:feature_to_c) $(location gdb-xml/i386-64bit.xml) > $@", |
| + tools = ["//scripts:feature_to_c"], |
| +) |
| + |
| +# TODO: x86_64-softmmu-config-target.h, x86_64-softmmu-config-devices.h, include/qemu/config-host.h (probably copy) |
| +# TODO: ui/input-keymap-*.c.inc (generate at top level with //ui/keycodemapdb/tools:keymap-gen) |
| diff --git a/defs.bzl b/defs.bzl |
| new file mode 100644 |
| index 0000000000..3a8d50d429 |
| --- /dev/null |
| +++ b/defs.bzl |
| @@ -0,0 +1,52 @@ |
| +def _impl_filter_label_suffix(ctx): |
| + return [DefaultInfo( |
| + files = depset([f for f in ctx.files.srcs if f.path.endswith(ctx.attr.suffix) and f.basename not in ctx.attr.exclude]), |
| + )] |
| + |
| +filter_label_suffix = rule( |
| + implementation = _impl_filter_label_suffix, |
| + attrs = { |
| + "srcs": attr.label_list( |
| + mandatory = True, |
| + allow_files = True, |
| + ), |
| + "suffix": attr.string( |
| + mandatory = True, |
| + ), |
| + "exclude": attr.string_list( |
| + default = [], |
| + ), |
| + }, |
| +) |
| + |
| +def _impl_cc_qemu_keymaps(ctx): |
| + outs = [] |
| + for _from in ctx.attr.maps: |
| + for _to in ctx.attr.maps[_from]: |
| + out = ctx.actions.declare_file("ui/input-keymap-{}-to-{}.c.inc".format(_from, _to)) |
| + ctx.actions.run( |
| + inputs = ctx.files.src + ctx.files._keymap_gen, |
| + executable = ctx.executable._savestdout, |
| + arguments = [out.path, ctx.files._keymap_gen[0].path, "--lang=glib2", "--varname=qemu_input_map_{}_to_{}".format(_from, _to), "code-map", ctx.files.src[0].path, _from, _to], |
| + outputs = [out], |
| + ) |
| + outs.append(out) |
| + return [DefaultInfo(files = depset(outs))] |
| + |
| +cc_qemu_keymaps = rule( |
| + implementation = _impl_cc_qemu_keymaps, |
| + attrs = { |
| + "src": attr.label(allow_single_file = True), |
| + "maps": attr.string_list_dict(), |
| + "_keymap_gen": attr.label( |
| + default = Label("//:keymap-gen"), |
| + executable = True, |
| + cfg = "exec", |
| + ), |
| + "_savestdout": attr.label( |
| + default = Label("@dev_source_monogon//build/savestdout"), |
| + executable = True, |
| + cfg = "exec", |
| + ), |
| + }, |
| +) |
| diff --git a/qapi/BUILD b/qapi/BUILD |
| new file mode 100644 |
| index 0000000000..71ff5a7445 |
| --- /dev/null |
| +++ b/qapi/BUILD |
| @@ -0,0 +1,25 @@ |
| +load("//scripts/qapi:defs.bzl", "cc_qapi") |
| + |
| +cc_qapi( |
| + name = "qapi_generated", |
| + srcs = glob(["*.json"]), |
| + main = "qapi-schema.json", |
| + visibility = ["//visibility:public"], |
| +) |
| + |
| +exports_files(glob([ |
| + "*.c", |
| + "*.h", |
| +]) + ["trace-events"]) |
| + |
| +filegroup( |
| + name = "extra_hdrs", |
| + srcs = glob(["**/*.h"]), |
| + visibility = ["//visibility:public"], |
| +) |
| + |
| +filegroup( |
| + name = "schema", |
| + srcs = glob(["*.json"]), |
| + visibility = ["//visibility:public"], |
| +) |
| diff --git a/qapi/defs.bzl b/qapi/defs.bzl |
| new file mode 100644 |
| index 0000000000..2d1f38fdfa |
| --- /dev/null |
| +++ b/qapi/defs.bzl |
| @@ -0,0 +1,40 @@ |
| +load("@rules_cc//cc:defs.bzl", "cc_library") |
| + |
| +# The actual rule which does the filtering. |
| +def _do_filter_impl(ctx): |
| + return [DefaultInfo( |
| + files = depset([f for f in ctx.files.srcs if f.path.endswith(ctx.attr.suffix)]), |
| + )] |
| + |
| +_do_filter = rule( |
| + implementation = _do_filter_impl, |
| + attrs = { |
| + "srcs": attr.label_list( |
| + mandatory = True, |
| + allow_files = True, |
| + ), |
| + "suffix": attr.string( |
| + mandatory = True, |
| + ), |
| + }, |
| +) |
| + |
| +def filtered_cc_library(name, srcs, hdrs, **kwargs): |
| + _do_filter( |
| + name = "%s_hdrs" % name, |
| + visibility = ["//visibility:private"], |
| + srcs = hdrs, |
| + suffix = ".h", |
| + ) |
| + _do_filter( |
| + name = "%s_srcs" % name, |
| + visibility = ["//visibility:private"], |
| + srcs = srcs, |
| + suffix = ".c", |
| + ) |
| + cc_library( |
| + name = name, |
| + srcs = [":%s_srcs" % name], |
| + hdrs = [":%s_hdrs" % name], |
| + **kwargs |
| + ) |
| diff --git a/scripts/BUILD b/scripts/BUILD |
| new file mode 100644 |
| index 0000000000..0b4fc8a248 |
| --- /dev/null |
| +++ b/scripts/BUILD |
| @@ -0,0 +1,35 @@ |
| +load("@rules_python//python:defs.bzl", "py_binary") |
| + |
| +py_binary( |
| + name = "qapi-gen", |
| + srcs = ["qapi-gen.py"], |
| + visibility = ["//visibility:public"], |
| + deps = ["//scripts/qapi"], |
| +) |
| + |
| +py_binary( |
| + # We cannot use tracetool as name as a directory with the same name exists |
| + name = "tracetool-cli", |
| + srcs = ["tracetool.py"], |
| + main = "tracetool.py", |
| + visibility = ["//visibility:public"], |
| + deps = ["//scripts/tracetool"], |
| +) |
| + |
| +py_binary( |
| + name = "block-coroutine-wrapper", |
| + srcs = ["block-coroutine-wrapper.py"], |
| + visibility = ["//visibility:public"], |
| +) |
| + |
| +sh_binary( |
| + name = "hxtool-sh", |
| + srcs = ["hxtool"], |
| + visibility = ["//visibility:public"], |
| +) |
| + |
| +sh_binary( |
| + name = "feature_to_c", |
| + srcs = ["feature_to_c.sh"], |
| + visibility = ["//:__subpackages__"], |
| +) |
| diff --git a/scripts/modules/BUILD b/scripts/modules/BUILD |
| new file mode 100644 |
| index 0000000000..99a5ab2243 |
| --- /dev/null |
| +++ b/scripts/modules/BUILD |
| @@ -0,0 +1,7 @@ |
| +load("@rules_python//python:defs.bzl", "py_binary") |
| + |
| +py_binary( |
| + name = "module_block", |
| + srcs = ["module_block.py"], |
| + visibility = ["//:__subpackages__"] |
| +) |
| diff --git a/scripts/qapi/BUILD b/scripts/qapi/BUILD |
| new file mode 100644 |
| index 0000000000..a7e8da9368 |
| --- /dev/null |
| +++ b/scripts/qapi/BUILD |
| @@ -0,0 +1,7 @@ |
| +load("@rules_python//python:defs.bzl", "py_library") |
| + |
| +py_library( |
| + name = "qapi", |
| + srcs = glob(["*.py"]), |
| + visibility = ["//visibility:public"], |
| +) |
| diff --git a/scripts/qapi/defs.bzl b/scripts/qapi/defs.bzl |
| new file mode 100644 |
| index 0000000000..807f4b37d5 |
| --- /dev/null |
| +++ b/scripts/qapi/defs.bzl |
| @@ -0,0 +1,52 @@ |
| +def _impl_qapi_cc(ctx): |
| + out = [] |
| + out_types = ["types", "visit", "events", "commands"] |
| + system_modules = ["builtin-types", "builtin-visit", "introspect", "init-commands", "emit-events", "types-error", "visit-error"] |
| + for t in out_types: |
| + out.append(ctx.actions.declare_file("qapi-{}.c".format(t))) |
| + out.append(ctx.actions.declare_file("qapi-{}.h".format(t))) |
| + for t in system_modules: |
| + out.append(ctx.actions.declare_file("qapi-{}.c".format(t))) |
| + out.append(ctx.actions.declare_file("qapi-{}.h".format(t))) |
| + |
| + input_dir = "" |
| + main_file = ctx.files.main[0] |
| + for src in ctx.files.srcs: |
| + if src.path == main_file.path: |
| + continue |
| + extension = src.extension |
| + basename = src.basename[:-len(extension) - 1] |
| + if input_dir == "": |
| + input_dir = src.dirname |
| + elif input_dir != src.dirname: |
| + fail("all cc_qapi sources need to be in the same folder") |
| + |
| + for t in out_types: |
| + out.append(ctx.actions.declare_file("qapi-{}-{}.c".format(t, basename))) |
| + out.append(ctx.actions.declare_file("qapi-{}-{}.h".format(t, basename))) |
| + |
| + ctx.actions.run( |
| + inputs = ctx.files.srcs + ctx.files.main, |
| + executable = ctx.executable._qapi_gen, |
| + arguments = ["-o", out[0].dirname, "-b", main_file.path], |
| + outputs = out, |
| + ) |
| + return [DefaultInfo(files = depset(out))] |
| + |
| +cc_qapi = rule( |
| + implementation = _impl_qapi_cc, |
| + attrs = { |
| + "srcs": attr.label_list( |
| + mandatory = True, |
| + allow_files = True, |
| + ), |
| + "main": attr.label( |
| + allow_single_file = True, |
| + ), |
| + "_qapi_gen": attr.label( |
| + default = Label("//scripts:qapi-gen"), |
| + executable = True, |
| + cfg = "exec", |
| + ), |
| + }, |
| +) |
| diff --git a/scripts/tracetool/BUILD b/scripts/tracetool/BUILD |
| new file mode 100644 |
| index 0000000000..93ccf94480 |
| --- /dev/null |
| +++ b/scripts/tracetool/BUILD |
| @@ -0,0 +1,11 @@ |
| +load("@rules_python//python:defs.bzl", "py_library") |
| + |
| +py_library( |
| + name = "tracetool", |
| + srcs = glob(["*.py"]), |
| + visibility = ["//visibility:public"], |
| + deps = [ |
| + "//scripts/tracetool/backend", |
| + "//scripts/tracetool/format", |
| + ], |
| +) |
| diff --git a/scripts/tracetool/backend/BUILD b/scripts/tracetool/backend/BUILD |
| new file mode 100644 |
| index 0000000000..6cc626682c |
| --- /dev/null |
| +++ b/scripts/tracetool/backend/BUILD |
| @@ -0,0 +1,7 @@ |
| +load("@rules_python//python:defs.bzl", "py_library") |
| + |
| +py_library( |
| + name = "backend", |
| + srcs = glob(["*.py"]), |
| + visibility = ["//visibility:public"], |
| +) |
| diff --git a/scripts/tracetool/defs.bzl b/scripts/tracetool/defs.bzl |
| new file mode 100644 |
| index 0000000000..70ce080a62 |
| --- /dev/null |
| +++ b/scripts/tracetool/defs.bzl |
| @@ -0,0 +1,67 @@ |
| +def _impl_cc_qemu_trace(ctx): |
| + outs = [] |
| + for src in ctx.files.srcs: |
| + name = src.path.replace("external/qemu/", "").replace("/trace-events", "").replace("/", "_") |
| + if name == "trace-events": |
| + name = "root" |
| + trace_h = ctx.actions.declare_file("trace-{}.h".format(name)) |
| + trace_c = ctx.actions.declare_file("trace-{}.c".format(name)) |
| + outs.append(trace_c) |
| + outs.append(trace_h) |
| + |
| + ctx.actions.run( |
| + inputs = [src], |
| + tools = [ctx.executable._tracetool], |
| + executable = ctx.executable._savestdout, |
| + arguments = [trace_h.path, ctx.executable._tracetool.path, "--backend", ctx.attr.backend, "--group", name, "--format=h", src.path], |
| + outputs = [trace_h], |
| + ) |
| + ctx.actions.run( |
| + inputs = [src], |
| + tools = [ctx.executable._tracetool], |
| + executable = ctx.executable._savestdout, |
| + arguments = [trace_c.path, ctx.executable._tracetool.path, "--backend", ctx.attr.backend, "--group", name, "--format=c", src.path], |
| + outputs = [trace_c], |
| + ) |
| + return [DefaultInfo(files = depset(outs))] |
| + |
| +cc_qemu_trace = rule( |
| + implementation = _impl_cc_qemu_trace, |
| + attrs = { |
| + "srcs": attr.label_list( |
| + mandatory = True, |
| + allow_files = True, |
| + ), |
| + "backend": attr.string( |
| + default = "log", |
| + ), |
| + "_tracetool": attr.label( |
| + default = Label("//scripts:tracetool-cli"), |
| + executable = True, |
| + cfg = "exec", |
| + ), |
| + "_savestdout": attr.label( |
| + default = Label("@dev_source_monogon//build/savestdout"), |
| + executable = True, |
| + cfg = "exec", |
| + ), |
| + }, |
| +) |
| + |
| +def _impl_cc_qemu_trace_single(ctx): |
| + trace_h = ctx.actions.declare_file("trace-{}.h".format(ctx.attr.name)) |
| + trace_c = ctx.actions.declare_file("trace-{}.c".format(ctx.attr.name)) |
| + |
| + ctx.actions.run( |
| + inputs = ctx.files.src, |
| + executable = ctx.executable._tracetool, |
| + arguments = ["--backend", ctx.attr.backend, "--group", ctx.attr.name, "--format=h", ctx.files.src[0].path, trace_h.path], |
| + outputs = [trace_h], |
| + ) |
| + ctx.actions.run( |
| + inputs = ctx.files.src, |
| + executable = ctx.executable._tracetool, |
| + arguments = ["--backend", ctx.attr.backend, "--group", ctx.attr.name, "--format=c", ctx.files.src[0].path, trace_c.path], |
| + outputs = [trace_c], |
| + ) |
| + return [DefaultInfo(files = depset([trace_c, trace_h]))] |
| diff --git a/scripts/tracetool/format/BUILD b/scripts/tracetool/format/BUILD |
| new file mode 100644 |
| index 0000000000..1b2dc209e1 |
| --- /dev/null |
| +++ b/scripts/tracetool/format/BUILD |
| @@ -0,0 +1,7 @@ |
| +load("@rules_python//python:defs.bzl", "py_library") |
| + |
| +py_library( |
| + name = "format", |
| + srcs = glob(["*.py"]), |
| + visibility = ["//visibility:public"], |
| +) |
| diff --git a/trace/BUILD b/trace/BUILD |
| new file mode 100644 |
| index 0000000000..2f2e71d81a |
| --- /dev/null |
| +++ b/trace/BUILD |
| @@ -0,0 +1,18 @@ |
| +load("//scripts/tracetool:defs.bzl", "cc_qemu_trace") |
| + |
| +cc_qemu_trace( |
| + name = "trace", |
| + srcs = ["//:trace-files"], |
| + visibility = ["//visibility:public"], |
| +) |
| + |
| +exports_files(glob([ |
| + "*.c", |
| + "*.h", |
| +])) |
| + |
| +filegroup( |
| + name = "extra_hdrs", |
| + srcs = glob(["**/*.h"]), |
| + visibility = ["//visibility:public"], |
| +) |
| -- |
| 2.25.1 |
| |