All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC v4 0/7] Baby steps towards saner headers
@ 2019-05-23  8:15 Markus Armbruster
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 1/7] Makefile: Remove code to smooth transition to config.status Markus Armbruster
                   ` (6 more replies)
  0 siblings, 7 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-23  8:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, pbonzini

Back in 2016, we discussed rules for headers, and these were
generally liked:

1. Have a carefully curated header that's included everywhere first.  We
   got that already thanks to Peter: osdep.h.

2. Headers should normally include everything they need beyond osdep.h.
   If exceptions are needed for some reason, they must be documented in
   the header.  If all that's needed from a header is typedefs, put
   those into qemu/typedefs.h instead of including the header.

3. Cyclic inclusion is forbidden.

Message-ID: <87h9g8j57d.fsf@blackfin.pond.sub.org>
http://lists.nongnu.org/archive/html/qemu-devel/2016-03/msg03345.html

Trouble is we're not exactly close to obeying 2.  This series
demonstrates a possible path towards obeying it: enforce it in "make
check", except for known-bad headers.  We can then whittle down
known-bad headers step by step in future patches.

PATCH 1-4 are preparatory build system improvements.  I think they are
useful by themselves.  If reviewers agree, I can extract them into
their own non-RFC series.

PATCH 5 adds the tests, but only for include/.  764 headers, 179
known-bad.  We may decide to clean up include/ some before we apply
PATCH 6+7.

PATCH 6 extends them to all headers, except for generated ones.  Adds
797 headers, 409 known-bad.

PATCH 7 extends them to generated headers.  Adds 177 headers, 3
known-bad.

Known issues:

(1) More testing needed.

(2) PATCH 7 has a FIXME on computation of generated target-dependent
    headers.

(3) Some "known-bad" headers aren't actually bad, but intended for
    special configurations only.  The test should be taught how to
    test these correctly.

We obviously want (1) before we merge the test.

I think we can and should address (3) when we whittle down known-bad
headers in future patches.

I think leaving PATCH 6-7 for later would make sense.  No need to
crack (2) right now then.

Please have a look and tell me what you think.


v4:
* PATCH 1-4: New.
* PATCH 5:
  - Implement testing of target-dependent headers
  - Replace crude "expected to fail with WIN32" by a set of "expected
    to fail without FOO".
* Old PATCH 3-5: Dropped.  These were examples for whittling down
  known-bad headers.

v3:
* Old PATH 1 moved to another series
* PATCH 1:
  - Skip the test unless $(SRC_PATH)/.git exists
  - Exclude third-party headers [Peter]
  - Exclude Coccinelle header
  - Fix egrep vs. fgrep typos
  - Mark and exclude headers that die due to poison.h, because testing
    them isn't implemented, yet
  - tests/header-test-template.c not omitted (d'oh)
* PATCH 3: Replaced
* PATCH 5: New

v2:
* PATCH 2:
  - Use fixed-format FIXME comments in headers instead of a blacklist
    in the makefile [Paolo]
  - Make target check-source [Peter]
  - Special-case CONFIG_WIN32
* PATCH 3:
  - replaced by an unrelated one that makes actual sense (I hope)

Markus Armbruster (7):
  Makefile: Remove code to smooth transition to config.status
  Makefile: Drop bogus cleaning of $(ALL_SUBDIRS)/qemu-options.def
  Makefile: Rename targets for make recursion
  Makefile: Reuse all's recursion machinery for clean and install
  tests: New make target check-source
  tests: Don't limit check-headers to include/
  tests: Make check-source cover generated headers

 Makefile                                   | 75 +++++++++++-----------
 Makefile.target                            | 19 ++++++
 accel/tcg/atomic_template.h                |  3 +
 accel/tcg/tcg-runtime.h                    |  3 +
 accel/tcg/translate-all.h                  |  4 ++
 audio/audio_int.h                          |  2 +
 audio/audio_template.h                     |  2 +
 audio/audio_win_int.h                      |  2 +
 audio/dsound_template.h                    |  3 +
 audio/mixeng_template.h                    |  2 +
 audio/rate_template.h                      |  2 +
 block/crypto.h                             |  2 +
 block/qcow2.h                              |  2 +
 block/vhdx.h                               |  2 +
 bsd-user/i386/target_signal.h              |  3 +
 bsd-user/i386/target_syscall.h             |  2 +
 bsd-user/qemu.h                            |  4 ++
 bsd-user/sparc/target_signal.h             |  3 +
 bsd-user/sparc/target_syscall.h            |  2 +
 bsd-user/sparc64/target_signal.h           |  3 +
 bsd-user/sparc64/target_syscall.h          |  2 +
 bsd-user/syscall_defs.h                    |  2 +
 bsd-user/x86_64/target_signal.h            |  3 +
 bsd-user/x86_64/target_syscall.h           |  2 +
 configure                                  |  6 +-
 contrib/ivshmem-client/ivshmem-client.h    |  2 +
 contrib/ivshmem-server/ivshmem-server.h    |  2 +
 contrib/libvhost-user/libvhost-user-glib.h |  2 +
 contrib/libvhost-user/libvhost-user.h      |  2 +
 contrib/rdmacm-mux/rdmacm-mux.h            |  2 +
 crypto/afalgpriv.h                         |  2 +
 crypto/cipherpriv.h                        |  2 +
 crypto/hashpriv.h                          |  2 +
 crypto/hmacpriv.h                          |  2 +
 disas/nanomips.h                           |  2 +
 fpu/softfloat-specialize.h                 |  3 +
 fsdev/file-op-9p.h                         |  2 +
 fsdev/qemu-fsdev.h                         |  3 +
 hw/9pfs/9p-local.h                         |  2 +
 hw/9pfs/9p-proxy.h                         |  2 +
 hw/9pfs/9p-synth.h                         |  2 +
 hw/9pfs/9p-util.h                          |  2 +
 hw/9pfs/9p-xattr.h                         |  2 +
 hw/9pfs/9p.h                               |  2 +
 hw/9pfs/coth.h                             |  2 +
 hw/9pfs/virtio-9p.h                        |  2 +
 hw/9pfs/xen-9pfs.h                         |  3 +-
 hw/arm/smmu-internal.h                     |  2 +
 hw/arm/smmuv3-internal.h                   |  2 +
 hw/audio/hda-codec-common.h                |  3 +-
 hw/audio/lm4549.h                          |  2 +
 hw/block/dataplane/xen-block.h             |  2 +
 hw/block/nvme.h                            |  2 +
 hw/block/xen_blkif.h                       |  2 +
 hw/cris/boot.h                             |  2 +
 hw/display/ati_int.h                       |  2 +
 hw/display/cirrus_vga_internal.h           |  2 +
 hw/display/cirrus_vga_rop.h                |  2 +
 hw/display/cirrus_vga_rop2.h               |  2 +
 hw/display/framebuffer.h                   |  2 +
 hw/display/milkymist-vgafb_template.h      |  3 +-
 hw/display/omap_lcd_template.h             |  3 +
 hw/display/pl110_template.h                |  2 +
 hw/display/pxa2xx_template.h               |  2 +
 hw/display/qxl.h                           |  4 ++
 hw/display/sm501_template.h                |  2 +
 hw/display/tc6393xb_template.h             |  2 +
 hw/display/vga-helpers.h                   |  2 +
 hw/display/vga_int.h                       |  2 +
 hw/ide/ahci_internal.h                     |  2 +
 hw/input/adb-internal.h                    |  2 +
 hw/lm32/lm32.h                             |  2 +
 hw/lm32/lm32_hwsetup.h                     |  3 +
 hw/lm32/milkymist-hw.h                     |  2 +
 hw/microblaze/boot.h                       |  2 +
 hw/net/can/can_sja1000.h                   |  3 +
 hw/net/e1000e_core.h                       |  2 +
 hw/net/e1000x_common.h                     |  2 +
 hw/net/pcnet.h                             |  2 +
 hw/net/rocker/rocker_desc.h                |  2 +
 hw/net/rocker/rocker_fp.h                  |  2 +
 hw/net/rocker/rocker_of_dpa.h              |  2 +
 hw/net/rocker/rocker_tlv.h                 |  2 +
 hw/net/rocker/rocker_world.h               |  2 +
 hw/net/vmware_utils.h                      |  2 +
 hw/net/vmxnet3_defs.h                      |  3 +-
 hw/nios2/boot.h                            |  3 +
 hw/ppc/ppc405.h                            |  2 +
 hw/ppc/ppc440.h                            |  2 +
 hw/rdma/rdma_backend.h                     |  2 +
 hw/rdma/rdma_backend_defs.h                |  2 +
 hw/rdma/rdma_rm.h                          |  2 +
 hw/rdma/rdma_rm_defs.h                     |  2 +
 hw/rdma/vmw/pvrdma.h                       |  2 +
 hw/rdma/vmw/pvrdma_dev_ring.h              |  2 +
 hw/rdma/vmw/pvrdma_qp_ops.h                |  2 +
 hw/s390x/ccw-device.h                      |  3 +
 hw/s390x/ipl.h                             |  3 +
 hw/s390x/s390-pci-bus.h                    |  3 +
 hw/s390x/s390-pci-inst.h                   |  3 +
 hw/s390x/s390-virtio-hcall.h               |  2 +
 hw/s390x/virtio-ccw.h                      |  3 +
 hw/scsi/mptsas.h                           |  2 +
 hw/scsi/viosrp.h                           |  3 +
 hw/sd/sdhci-internal.h                     |  3 +
 hw/timer/m48t59-internal.h                 |  2 +
 hw/tpm/tpm_ioctl.h                         |  2 +
 hw/usb/desc.h                              |  2 +
 hw/usb/hcd-ohci.h                          |  2 +
 hw/usb/hcd-xhci.h                          |  2 +
 hw/usb/quirks.h                            |  2 +
 hw/vfio/pci.h                              |  3 +
 hw/xen/xen_pt.h                            |  2 +
 hw/xtensa/bootparam.h                      |  2 +
 hw/xtensa/xtensa_memory.h                  |  3 +
 include/block/raw-aio.h                    |  3 +
 include/block/write-threshold.h            |  3 +
 include/chardev/char-win.h                 |  3 +
 include/chardev/spice.h                    |  2 +
 include/disas/disas.h                      |  2 +
 include/exec/cpu-all.h                     |  4 ++
 include/exec/cpu-defs.h                    |  4 ++
 include/exec/cpu_ldst.h                    |  4 ++
 include/exec/cpu_ldst_template.h           |  3 +
 include/exec/cpu_ldst_useronly_template.h  |  3 +
 include/exec/cputlb.h                      |  3 +
 include/exec/exec-all.h                    |  3 +
 include/exec/gen-icount.h                  |  2 +
 include/exec/helper-gen.h                  |  2 +
 include/exec/helper-proto.h                |  2 +
 include/exec/helper-tcg.h                  |  2 +
 include/exec/ioport.h                      |  2 +
 include/exec/memory-internal.h             |  2 +
 include/exec/memory_ldst.inc.h             |  2 +
 include/exec/memory_ldst_cached.inc.h      |  2 +
 include/exec/memory_ldst_phys.inc.h        |  2 +
 include/exec/ram_addr.h                    |  3 +
 include/exec/softmmu-semi.h                |  3 +
 include/exec/tb-hash.h                     |  3 +
 include/exec/tb-lookup.h                   |  3 +
 include/exec/translator.h                  |  3 +
 include/exec/user/abitypes.h               |  2 +
 include/exec/user/thunk.h                  |  4 ++
 include/fpu/softfloat-macros.h             |  2 +
 include/fpu/softfloat.h                    |  2 +
 include/hw/acpi/piix4.h                    |  2 +
 include/hw/acpi/tco.h                      |  3 +
 include/hw/adc/stm32f2xx_adc.h             |  2 +
 include/hw/arm/allwinner-a10.h             |  2 +
 include/hw/arm/armsse.h                    |  3 +
 include/hw/arm/armv7m.h                    |  3 +
 include/hw/arm/aspeed_soc.h                |  2 +
 include/hw/arm/bcm2835_peripherals.h       |  2 +
 include/hw/arm/bcm2836.h                   |  2 +
 include/hw/arm/digic.h                     |  3 +
 include/hw/arm/fsl-imx25.h                 |  2 +
 include/hw/arm/fsl-imx31.h                 |  2 +
 include/hw/arm/fsl-imx6.h                  |  3 +
 include/hw/arm/fsl-imx6ul.h                |  3 +
 include/hw/arm/fsl-imx7.h                  |  3 +
 include/hw/arm/msf2-soc.h                  |  3 +
 include/hw/arm/nrf51_soc.h                 |  3 +
 include/hw/arm/omap.h                      |  3 +
 include/hw/arm/sharpsl.h                   |  3 +
 include/hw/arm/stm32f205_soc.h             |  3 +
 include/hw/arm/xlnx-zynqmp.h               |  2 +
 include/hw/block/fdc.h                     |  2 +
 include/hw/block/flash.h                   |  2 +
 include/hw/char/escc.h                     |  2 +
 include/hw/char/xilinx_uartlite.h          |  2 +
 include/hw/core/generic-loader.h           |  2 +
 include/hw/cris/etraxfs.h                  |  2 +
 include/hw/cris/etraxfs_dma.h              |  2 +
 include/hw/display/bcm2835_fb.h            |  2 +
 include/hw/display/i2c-ddc.h               |  2 +
 include/hw/display/xlnx_dp.h               |  2 +
 include/hw/dma/xlnx_dpdma.h                |  2 +
 include/hw/elf_ops.h                       |  2 +
 include/hw/empty_slot.h                    |  2 +
 include/hw/gpio/bcm2835_gpio.h             |  2 +
 include/hw/hyperv/hyperv.h                 |  2 +
 include/hw/i2c/aspeed_i2c.h                |  3 +
 include/hw/i386/apic_internal.h            |  3 +
 include/hw/i386/ioapic_internal.h          |  2 +
 include/hw/input/hid.h                     |  2 +
 include/hw/input/tsc2xxx.h                 |  2 +
 include/hw/intc/allwinner-a10-pic.h        |  2 +
 include/hw/intc/armv7m_nvic.h              |  3 +
 include/hw/intc/heathrow_pic.h             |  2 +
 include/hw/intc/mips_gic.h                 |  3 +
 include/hw/isa/vt82c686.h                  |  2 +
 include/hw/kvm/clock.h                     |  4 +-
 include/hw/mips/bios.h                     |  2 +
 include/hw/mips/cps.h                      |  3 +
 include/hw/mips/cpudevs.h                  |  2 +
 include/hw/misc/bcm2835_property.h         |  2 +
 include/hw/misc/macio/cuda.h               |  2 +
 include/hw/misc/macio/gpio.h               |  2 +
 include/hw/misc/macio/macio.h              |  2 +
 include/hw/misc/macio/pmu.h                |  2 +
 include/hw/misc/mips_cmgcr.h               |  2 +
 include/hw/misc/mips_cpc.h                 |  2 +
 include/hw/misc/pvpanic.h                  |  3 +
 include/hw/net/allwinner_emac.h            |  2 +
 include/hw/net/lance.h                     |  2 +
 include/hw/nvram/chrp_nvram.h              |  2 +
 include/hw/pci-bridge/simba.h              |  2 +
 include/hw/pci-host/sabre.h                |  2 +
 include/hw/pci-host/spapr.h                |  3 +
 include/hw/pci-host/uninorth.h             |  2 +
 include/hw/pci/pcie_aer.h                  |  2 +
 include/hw/ppc/fdt.h                       |  2 +
 include/hw/ppc/pnv.h                       |  2 +
 include/hw/ppc/pnv_core.h                  |  2 +
 include/hw/ppc/pnv_xscom.h                 |  2 +
 include/hw/ppc/ppc.h                       |  2 +
 include/hw/ppc/ppc4xx.h                    |  2 +
 include/hw/ppc/spapr.h                     |  3 +
 include/hw/ppc/spapr_cpu_core.h            |  4 ++
 include/hw/ppc/spapr_irq.h                 |  2 +
 include/hw/ppc/spapr_ovec.h                |  2 +
 include/hw/ppc/spapr_vio.h                 |  2 +
 include/hw/ppc/spapr_xive.h                |  2 +
 include/hw/ppc/xics_spapr.h                |  3 +
 include/hw/ppc/xive_regs.h                 |  2 +
 include/hw/riscv/riscv_hart.h              |  2 +
 include/hw/riscv/riscv_htif.h              |  3 +
 include/hw/riscv/sifive_clint.h            |  2 +
 include/hw/riscv/sifive_e.h                |  2 +
 include/hw/riscv/sifive_plic.h             |  2 +
 include/hw/riscv/sifive_prci.h             |  2 +
 include/hw/riscv/sifive_test.h             |  2 +
 include/hw/riscv/sifive_u.h                |  2 +
 include/hw/riscv/sifive_uart.h             |  2 +
 include/hw/riscv/spike.h                   |  2 +
 include/hw/riscv/virt.h                    |  2 +
 include/hw/s390x/3270-ccw.h                |  3 +
 include/hw/s390x/ap-device.h               |  3 +
 include/hw/s390x/css-bridge.h              |  2 +
 include/hw/s390x/css.h                     |  3 +
 include/hw/s390x/s390-ccw.h                |  3 +
 include/hw/s390x/storage-attributes.h      |  3 +
 include/hw/s390x/tod.h                     |  2 +
 include/hw/s390x/vfio-ccw.h                |  3 +
 include/hw/sh4/sh.h                        |  2 +
 include/hw/sh4/sh_intc.h                   |  2 +
 include/hw/sparc/grlib.h                   |  2 +
 include/hw/sparc/sparc64.h                 |  1 +
 include/hw/ssi/aspeed_smc.h                |  2 +
 include/hw/ssi/xilinx_spips.h              |  2 +
 include/hw/timer/allwinner-a10-pit.h       |  2 +
 include/hw/timer/i8254_internal.h          |  2 +
 include/hw/timer/m48t59.h                  |  2 +
 include/hw/timer/mc146818rtc.h             |  2 +
 include/hw/timer/mc146818rtc_regs.h        |  2 +
 include/hw/timer/sun4v-rtc.h               |  2 +
 include/hw/timer/xlnx-zynqmp-rtc.h         |  2 +
 include/hw/vfio/vfio-amd-xgbe.h            |  2 +
 include/hw/vfio/vfio-calxeda-xgmac.h       |  2 +
 include/hw/vfio/vfio-common.h              |  2 +
 include/hw/vfio/vfio-platform.h            |  2 +
 include/hw/virtio/virtio-access.h          |  3 +
 include/hw/virtio/virtio-gpu.h             |  2 +
 include/hw/virtio/virtio-input.h           |  2 +
 include/hw/virtio/virtio-rng.h             |  2 +
 include/hw/xen/io/ring.h                   |  2 +
 include/hw/xen/xen-backend.h               |  2 +
 include/hw/xen/xen-block.h                 |  2 +
 include/hw/xen/xen-bus-helper.h            |  2 +
 include/hw/xen/xen-bus.h                   |  2 +
 include/hw/xen/xen-legacy-backend.h        |  2 +
 include/hw/xen/xen_common.h                |  2 +
 include/hw/xen/xen_pvdev.h                 |  2 +
 include/libdecnumber/decNumberLocal.h      |  2 +
 include/migration/cpu.h                    |  4 ++
 include/monitor/hmp-target.h               |  3 +
 include/qemu/atomic128.h                   |  2 +
 include/qemu/futex.h                       |  2 +
 include/qemu/ratelimit.h                   |  2 +
 include/qemu/thread-win32.h                |  2 +
 include/qemu/xattr.h                       |  3 +
 include/sysemu/balloon.h                   |  2 +
 include/sysemu/cryptodev-vhost-user.h      |  3 +
 include/sysemu/dump.h                      |  2 +
 include/sysemu/hvf.h                       |  3 +
 include/sysemu/iothread.h                  |  2 +
 include/sysemu/kvm_int.h                   |  2 +
 include/sysemu/memory_mapping.h            |  2 +
 include/sysemu/os-posix.h                  |  2 +
 include/sysemu/os-win32.h                  |  2 +
 include/sysemu/xen-mapcache.h              |  2 +
 include/trace-tcg.h                        |  2 +
 include/ui/console.h                       |  2 +
 include/ui/egl-context.h                   |  3 +
 include/ui/egl-helpers.h                   |  2 +
 include/ui/gtk.h                           |  2 +
 include/ui/input.h                         |  2 +
 include/ui/pixel_ops.h                     |  2 +
 include/ui/qemu-pixman.h                   |  2 +
 include/ui/sdl2.h                          |  2 +
 include/ui/shader.h                        |  2 +
 include/ui/spice-display.h                 |  2 +
 linux-user/aarch64/target_cpu.h            |  3 +
 linux-user/aarch64/target_fcntl.h          |  3 +
 linux-user/aarch64/target_signal.h         |  2 +
 linux-user/aarch64/target_structs.h        |  3 +
 linux-user/aarch64/target_syscall.h        |  3 +
 linux-user/aarch64/termbits.h              |  2 +
 linux-user/alpha/target_cpu.h              |  3 +
 linux-user/alpha/target_fcntl.h            |  3 +
 linux-user/alpha/target_signal.h           |  2 +
 linux-user/alpha/target_structs.h          |  3 +
 linux-user/alpha/target_syscall.h          |  2 +
 linux-user/alpha/termbits.h                |  2 +
 linux-user/arm/nwfpe/fpa11.h               |  3 +
 linux-user/arm/nwfpe/fpopcode.h            |  2 +
 linux-user/arm/target_cpu.h                |  3 +
 linux-user/arm/target_fcntl.h              |  3 +
 linux-user/arm/target_signal.h             |  2 +
 linux-user/arm/target_structs.h            |  3 +
 linux-user/arm/target_syscall.h            |  3 +
 linux-user/arm/termbits.h                  |  2 +
 linux-user/cpu_loop-common.h               |  3 +
 linux-user/cris/target_cpu.h               |  3 +
 linux-user/cris/target_fcntl.h             |  3 +
 linux-user/cris/target_signal.h            |  2 +
 linux-user/cris/target_structs.h           |  3 +
 linux-user/cris/termbits.h                 |  2 +
 linux-user/fd-trans.h                      |  2 +
 linux-user/flat.h                          |  2 +
 linux-user/generic/fcntl.h                 |  3 +
 linux-user/host/aarch64/hostdep.h          |  2 +
 linux-user/host/arm/hostdep.h              |  2 +
 linux-user/host/i386/hostdep.h             |  2 +
 linux-user/host/ppc64/hostdep.h            |  2 +
 linux-user/host/riscv64/hostdep.h          |  2 +
 linux-user/host/s390x/hostdep.h            |  2 +
 linux-user/host/x86_64/hostdep.h           |  2 +
 linux-user/hppa/target_cpu.h               |  3 +
 linux-user/hppa/target_fcntl.h             |  3 +
 linux-user/hppa/target_signal.h            |  2 +
 linux-user/hppa/target_structs.h           |  3 +
 linux-user/hppa/target_syscall.h           |  2 +
 linux-user/hppa/termbits.h                 |  2 +
 linux-user/i386/target_cpu.h               |  3 +
 linux-user/i386/target_fcntl.h             |  3 +
 linux-user/i386/target_signal.h            |  2 +
 linux-user/i386/target_structs.h           |  3 +
 linux-user/i386/target_syscall.h           |  2 +
 linux-user/i386/termbits.h                 |  2 +
 linux-user/ioctls.h                        |  2 +
 linux-user/linux_loop.h                    |  2 +
 linux-user/m68k/target_cpu.h               |  2 +
 linux-user/m68k/target_elf.h               |  2 +
 linux-user/m68k/target_fcntl.h             |  3 +
 linux-user/m68k/target_signal.h            |  2 +
 linux-user/m68k/target_structs.h           |  3 +
 linux-user/m68k/target_syscall.h           |  2 +
 linux-user/m68k/termbits.h                 |  2 +
 linux-user/microblaze/target_cpu.h         |  3 +
 linux-user/microblaze/target_fcntl.h       |  3 +
 linux-user/microblaze/target_signal.h      |  2 +
 linux-user/microblaze/target_structs.h     |  3 +
 linux-user/microblaze/termbits.h           |  2 +
 linux-user/mips/target_cpu.h               |  3 +
 linux-user/mips/target_elf.h               |  2 +
 linux-user/mips/target_fcntl.h             |  3 +
 linux-user/mips/target_signal.h            |  3 +
 linux-user/mips/target_structs.h           |  3 +
 linux-user/mips/target_syscall.h           |  2 +
 linux-user/mips/termbits.h                 |  2 +
 linux-user/mips64/syscall_nr.h             |  2 +
 linux-user/mips64/target_cpu.h             |  3 +
 linux-user/mips64/target_elf.h             |  2 +
 linux-user/mips64/target_fcntl.h           |  3 +
 linux-user/mips64/target_signal.h          |  2 +
 linux-user/mips64/target_structs.h         |  2 +
 linux-user/mips64/target_syscall.h         |  2 +
 linux-user/mips64/termbits.h               |  2 +
 linux-user/nios2/target_cpu.h              |  2 +
 linux-user/nios2/target_fcntl.h            |  3 +
 linux-user/nios2/target_signal.h           |  2 +
 linux-user/nios2/target_structs.h          |  3 +
 linux-user/nios2/termbits.h                |  2 +
 linux-user/openrisc/target_cpu.h           |  2 +
 linux-user/openrisc/target_fcntl.h         |  3 +
 linux-user/openrisc/target_signal.h        |  2 +
 linux-user/openrisc/target_structs.h       |  3 +
 linux-user/openrisc/target_syscall.h       |  3 +
 linux-user/openrisc/termbits.h             |  2 +
 linux-user/ppc/syscall_nr.h                |  3 +
 linux-user/ppc/target_cpu.h                |  4 ++
 linux-user/ppc/target_elf.h                |  2 +
 linux-user/ppc/target_fcntl.h              |  3 +
 linux-user/ppc/target_signal.h             |  3 +
 linux-user/ppc/target_structs.h            |  3 +
 linux-user/ppc/target_syscall.h            |  3 +
 linux-user/ppc/termbits.h                  |  2 +
 linux-user/qemu.h                          |  2 +
 linux-user/riscv/target_cpu.h              |  2 +
 linux-user/riscv/target_fcntl.h            |  3 +
 linux-user/riscv/target_signal.h           |  2 +
 linux-user/riscv/target_structs.h          |  3 +
 linux-user/riscv/target_syscall.h          |  2 +
 linux-user/riscv/termbits.h                |  2 +
 linux-user/s390x/syscall_nr.h              |  2 +
 linux-user/s390x/target_cpu.h              |  3 +
 linux-user/s390x/target_fcntl.h            |  3 +
 linux-user/s390x/target_signal.h           |  2 +
 linux-user/s390x/target_structs.h          |  3 +
 linux-user/s390x/target_syscall.h          |  2 +
 linux-user/s390x/termbits.h                |  2 +
 linux-user/sh4/target_cpu.h                |  3 +
 linux-user/sh4/target_fcntl.h              |  3 +
 linux-user/sh4/target_signal.h             |  2 +
 linux-user/sh4/target_structs.h            |  3 +
 linux-user/sh4/target_syscall.h            |  2 +
 linux-user/sh4/termbits.h                  |  2 +
 linux-user/signal-common.h                 |  3 +
 linux-user/socket.h                        |  2 +
 linux-user/sparc/target_cpu.h              |  4 ++
 linux-user/sparc/target_elf.h              |  2 +
 linux-user/sparc/target_fcntl.h            |  3 +
 linux-user/sparc/target_signal.h           |  2 +
 linux-user/sparc/target_structs.h          |  3 +
 linux-user/sparc/target_syscall.h          |  2 +
 linux-user/sparc/termbits.h                |  2 +
 linux-user/sparc64/target_cpu.h            |  3 +
 linux-user/sparc64/target_fcntl.h          |  3 +
 linux-user/sparc64/target_signal.h         |  2 +
 linux-user/sparc64/target_structs.h        |  3 +
 linux-user/sparc64/target_syscall.h        |  3 +
 linux-user/sparc64/termbits.h              |  2 +
 linux-user/syscall_defs.h                  |  2 +
 linux-user/syscall_types.h                 |  2 +
 linux-user/tilegx/target_cpu.h             |  3 +
 linux-user/tilegx/target_fcntl.h           |  3 +
 linux-user/tilegx/target_signal.h          |  2 +
 linux-user/tilegx/target_structs.h         |  3 +
 linux-user/tilegx/target_syscall.h         |  2 +
 linux-user/uname.h                         |  2 +
 linux-user/x86_64/target_cpu.h             |  3 +
 linux-user/x86_64/target_fcntl.h           |  3 +
 linux-user/x86_64/target_signal.h          |  2 +
 linux-user/x86_64/target_structs.h         |  3 +
 linux-user/x86_64/target_syscall.h         |  2 +
 linux-user/x86_64/termbits.h               |  2 +
 linux-user/xtensa/target_cpu.h             |  3 +
 linux-user/xtensa/target_elf.h             |  2 +
 linux-user/xtensa/target_fcntl.h           |  3 +
 linux-user/xtensa/target_signal.h          |  2 +
 linux-user/xtensa/target_structs.h         |  3 +
 linux-user/xtensa/target_syscall.h         |  2 +
 linux-user/xtensa/termbits.h               |  2 +
 migration/postcopy-ram.h                   |  3 +
 migration/qemu-file.h                      |  2 +
 net/colo-compare.h                         |  2 +
 qemu-options-wrapper.h                     |  1 +
 qga/guest-agent-core.h                     |  3 +
 qga/service-win32.h                        |  2 +
 qga/vss-win32.h                            |  2 +
 qga/vss-win32/install.h                    |  2 +
 qga/vss-win32/requester.h                  |  2 +
 qga/vss-win32/vss-common.h                 |  2 +
 replay/replay-internal.h                   |  2 +
 replication.h                              |  2 +
 target/alpha/cpu.h                         |  3 +
 target/alpha/helper.h                      |  2 +
 target/arm/arm-powerctl.h                  |  3 +
 target/arm/arm_ldst.h                      |  3 +
 target/arm/cpu.h                           |  3 +
 target/arm/helper-a64.h                    |  3 +
 target/arm/helper-sve.h                    |  2 +
 target/arm/helper.h                        |  3 +
 target/arm/internals.h                     |  2 +
 target/arm/kvm-consts.h                    |  4 ++
 target/arm/kvm_arm.h                       |  3 +
 target/arm/op_addsub.h                     |  2 +
 target/arm/translate-a64.h                 |  2 +
 target/arm/translate.h                     |  3 +
 target/cris/cpu.h                          |  3 +
 target/cris/helper.h                       |  2 +
 target/cris/mmu.h                          |  2 +
 target/hppa/cpu.h                          |  3 +
 target/hppa/helper.h                       |  2 +
 target/i386/cc_helper_template.h           |  2 +
 target/i386/cpu-qom.h                      |  3 +
 target/i386/cpu.h                          |  3 +
 target/i386/hax-i386.h                     |  3 +
 target/i386/hax-posix.h                    |  2 +
 target/i386/hax-windows.h                  |  2 +
 target/i386/helper.h                       |  3 +
 target/i386/hvf/hvf-i386.h                 |  3 +
 target/i386/hvf/vmcs.h                     |  2 +
 target/i386/hvf/vmx.h                      |  2 +
 target/i386/hvf/x86.h                      |  2 +
 target/i386/hvf/x86_decode.h               |  3 +
 target/i386/hvf/x86_descr.h                |  2 +
 target/i386/hvf/x86_emu.h                  |  3 +
 target/i386/hvf/x86_flags.h                |  3 +
 target/i386/hvf/x86_mmu.h                  |  2 +
 target/i386/hvf/x86_task.h                 |  2 +
 target/i386/hvf/x86hvf.h                   |  4 ++
 target/i386/hyperv.h                       |  3 +
 target/i386/kvm_i386.h                     |  3 +
 target/i386/ops_sse.h                      |  3 +
 target/i386/ops_sse_header.h               |  4 ++
 target/i386/sev_i386.h                     |  3 +
 target/i386/shift_helper_template.h        |  2 +
 target/i386/whp-dispatch.h                 |  2 +
 target/lm32/cpu.h                          |  3 +
 target/lm32/helper.h                       |  2 +
 target/m68k/cpu.h                          |  3 +
 target/m68k/helper.h                       |  3 +
 target/m68k/softfloat.h                    |  2 +
 target/m68k/softfloat_fpsp_tables.h        |  2 +
 target/microblaze/cpu.h                    |  3 +
 target/microblaze/helper.h                 |  2 +
 target/microblaze/mmu.h                    |  2 +
 target/mips/cpu-qom.h                      |  3 +
 target/mips/cpu.h                          |  3 +
 target/mips/helper.h                       |  3 +
 target/mips/internal.h                     |  3 +
 target/mips/kvm_mips.h                     |  2 +
 target/mips/mips-defs.h                    |  2 +
 target/moxie/cpu.h                         |  3 +
 target/moxie/helper.h                      |  2 +
 target/moxie/machine.h                     |  2 +
 target/moxie/mmu.h                         |  2 +
 target/nios2/cpu.h                         |  3 +
 target/nios2/helper.h                      |  2 +
 target/nios2/mmu.h                         |  2 +
 target/openrisc/cpu.h                      |  3 +
 target/openrisc/exception.h                |  3 +
 target/openrisc/helper.h                   |  2 +
 target/ppc/cpu-models.h                    |  3 +
 target/ppc/cpu-qom.h                       |  3 +
 target/ppc/cpu.h                           |  3 +
 target/ppc/helper.h                        |  3 +
 target/ppc/helper_regs.h                   |  3 +
 target/ppc/internal.h                      |  3 +
 target/ppc/kvm_ppc.h                       |  3 +
 target/ppc/mmu-book3s-v3.h                 |  3 +
 target/ppc/mmu-hash32.h                    |  2 +
 target/ppc/mmu-hash64.h                    |  3 +
 target/ppc/mmu-radix64.h                   |  3 +
 target/riscv/cpu.h                         |  3 +
 target/riscv/helper.h                      |  2 +
 target/riscv/instmap.h                     |  2 +
 target/riscv/pmp.h                         |  2 +
 target/s390x/cpu.h                         |  2 +
 target/s390x/cpu_features.h                |  2 +
 target/s390x/cpu_models.h                  |  2 +
 target/s390x/helper.h                      |  2 +
 target/s390x/internal.h                    |  2 +
 target/s390x/tcg_s390x.h                   |  2 +
 target/sh4/cpu.h                           |  3 +
 target/sh4/helper.h                        |  2 +
 target/sparc/cpu-qom.h                     |  3 +
 target/sparc/cpu.h                         |  3 +
 target/sparc/helper.h                      |  3 +
 target/tilegx/cpu.h                        |  3 +
 target/tilegx/helper.h                     |  2 +
 target/tricore/cpu.h                       |  3 +
 target/tricore/helper.h                    |  2 +
 target/tricore/tricore-defs.h              |  2 +
 target/tricore/tricore-opcodes.h           |  2 +
 target/unicore32/cpu.h                     |  3 +
 target/unicore32/helper.h                  |  2 +
 target/xtensa/cpu.h                        |  3 +
 target/xtensa/helper.h                     |  2 +
 target/xtensa/overlay_tool.h               |  3 +
 target/xtensa/xtensa-isa-internal.h        |  2 +
 tcg/aarch64/tcg-target.h                   |  2 +
 tcg/aarch64/tcg-target.opc.h               |  3 +
 tcg/arm/tcg-target.h                       |  2 +
 tcg/i386/tcg-target.h                      |  3 +
 tcg/i386/tcg-target.opc.h                  |  2 +
 tcg/mips/tcg-target.h                      |  2 +
 tcg/ppc/tcg-target.h                       |  2 +
 tcg/riscv/tcg-target.h                     |  3 +
 tcg/s390/tcg-target.h                      |  3 +
 tcg/tcg-gvec-desc.h                        |  2 +
 tcg/tcg-op-gvec.h                          |  2 +
 tcg/tcg-op.h                               |  2 +
 tcg/tcg-opc.h                              |  4 ++
 tcg/tcg.h                                  |  2 +
 tcg/tci/tcg-target.h                       |  2 +
 tests/Makefile.include                     | 35 +++++++++-
 tests/check-headers.mak                    | 54 ++++++++++++++++
 tests/crypto-tls-x509-helpers.h            |  2 +
 tests/fp/platform.h                        |  3 +
 tests/header-test-template.c               | 16 +++++
 tests/libqos/virtio-9p.h                   |  2 +
 tests/libqos/virtio-balloon.h              |  2 +
 tests/libqos/virtio-blk.h                  |  2 +
 tests/libqos/virtio-net.h                  |  2 +
 tests/libqos/virtio-rng.h                  |  2 +
 tests/libqos/virtio-scsi.h                 |  2 +
 tests/libqos/virtio-serial.h               |  2 +
 tests/migration/Makefile                   |  2 +
 tests/migration/aarch64/a-b-kernel.h       |  3 +
 tests/migration/i386/a-b-bootblock.h       |  3 +
 tests/migration/s390x/a-b-bios.h           |  2 +
 tests/ptimer-test.h                        |  2 +
 tests/socket-helpers.h                     |  3 +-
 tests/tpm-emu.h                            |  2 +
 tests/tpm-tests.h                          |  2 +
 tests/tpm-util.h                           |  2 +
 trace/control-internal.h                   |  2 +
 trace/mem-internal.h                       |  2 +
 trace/mem.h                                |  2 +
 ui/curses_keys.h                           |  2 +
 ui/vgafont.h                               |  2 +
 ui/vnc-auth-sasl.h                         |  2 +
 ui/vnc-auth-vencrypt.h                     |  2 +
 ui/vnc-enc-hextile-template.h              |  2 +
 ui/vnc-jobs.h                              |  2 +
 ui/vnc-ws.h                                |  2 +
 ui/vnc.h                                   |  2 +
 ui/vnc_keysym.h                            |  1 +
 ui/x_keymap.h                              |  2 +
 util/qemu-thread-common.h                  |  2 +
 win_dump.h                                 |  2 +
 624 files changed, 1623 insertions(+), 51 deletions(-)
 create mode 100644 tests/check-headers.mak
 create mode 100644 tests/header-test-template.c

-- 
2.17.2



^ permalink raw reply	[flat|nested] 30+ messages in thread

* [Qemu-devel] [RFC v4 1/7] Makefile: Remove code to smooth transition to config.status
  2019-05-23  8:15 [Qemu-devel] [RFC v4 0/7] Baby steps towards saner headers Markus Armbruster
@ 2019-05-23  8:15 ` Markus Armbruster
  2019-05-23 13:54   ` Richard Henderson
  2019-05-24  5:15   ` Philippe Mathieu-Daudé
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 2/7] Makefile: Drop bogus cleaning of $(ALL_SUBDIRS)/qemu-options.def Markus Armbruster
                   ` (5 subsequent siblings)
  6 siblings, 2 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-23  8:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, pbonzini

When commit bdf523e6923 made configure generate config.status, it
added a fallback to Makefile to smooth the transition, with a TODO
"code can be removed after QEMU 1.7."  It's been more than five years.
Remove it.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 Makefile | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 155f066a20..8ec833a5fb 100644
--- a/Makefile
+++ b/Makefile
@@ -69,14 +69,7 @@ CONFIG_ALL=y
 
 config-host.mak: $(SRC_PATH)/configure $(SRC_PATH)/pc-bios $(SRC_PATH)/VERSION
 	@echo $@ is out-of-date, running configure
-	@# TODO: The next lines include code which supports a smooth
-	@# transition from old configurations without config.status.
-	@# This code can be removed after QEMU 1.7.
-	@if test -x config.status; then \
-	    ./config.status; \
-        else \
-	    sed -n "/.*Configured with/s/[^:]*: //p" $@ | sh; \
-	fi
+	./config.status
 else
 config-host.mak:
 ifneq ($(filter-out $(UNCHECKED_GOALS),$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
-- 
2.17.2



^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Qemu-devel] [RFC v4 2/7] Makefile: Drop bogus cleaning of $(ALL_SUBDIRS)/qemu-options.def
  2019-05-23  8:15 [Qemu-devel] [RFC v4 0/7] Baby steps towards saner headers Markus Armbruster
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 1/7] Makefile: Remove code to smooth transition to config.status Markus Armbruster
@ 2019-05-23  8:15 ` Markus Armbruster
  2019-05-23 13:56   ` Richard Henderson
  2019-05-24  5:17   ` Philippe Mathieu-Daudé
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 3/7] Makefile: Rename targets for make recursion Markus Armbruster
                   ` (4 subsequent siblings)
  6 siblings, 2 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-23  8:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, pbonzini

When commit df2943ba3c7 moved "rm -f qemu-options.def" from distclean
to clean, it also added "rm -f $$d/qemu-options.def" to the for d in
$(ALL_SUBDIRS) loop.  That file doesn't exist.  Remove the mistaken
rm.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 Makefile | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Makefile b/Makefile
index 8ec833a5fb..12e470fa03 100644
--- a/Makefile
+++ b/Makefile
@@ -647,7 +647,6 @@ clean:
 	rm -rf qga/qapi-generated
 	for d in $(ALL_SUBDIRS); do \
 	if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
-	rm -f $$d/qemu-options.def; \
         done
 	rm -f config-all-devices.mak
 
-- 
2.17.2



^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Qemu-devel] [RFC v4 3/7] Makefile: Rename targets for make recursion
  2019-05-23  8:15 [Qemu-devel] [RFC v4 0/7] Baby steps towards saner headers Markus Armbruster
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 1/7] Makefile: Remove code to smooth transition to config.status Markus Armbruster
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 2/7] Makefile: Drop bogus cleaning of $(ALL_SUBDIRS)/qemu-options.def Markus Armbruster
@ 2019-05-23  8:15 ` Markus Armbruster
  2019-05-23 14:10   ` Richard Henderson
  2019-05-24  5:28   ` Philippe Mathieu-Daudé
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 4/7] Makefile: Reuse all's recursion machinery for clean and install Markus Armbruster
                   ` (3 subsequent siblings)
  6 siblings, 2 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-23  8:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, pbonzini

We make a few sub-directories recursively, in particular
$(TARGET_DIRS).

For goal "all", we do it the nice way: "all" has a prerequisite
subdir-T for each T in $(TARGET_DIRS), and T's recipe runs make
recursively.  Behaves nicely with -j and -k.

For other goals such as "clean" and "install", the recipe runs make
recursively in a for loop.  Ignores -j and -k.

The next commit will fix that for "clean" and "install".  This commit
prepares the ground by renaming the targets we use for "all" to
include the goal for the sub-make.  This will permit reusing them for
goals other than "all".

Targets subdir-T for T in $(TARGET_DIRS) run "make all" in T.  Rename
to T/all, and declare phony.

Targets romsubdir-R for R in $(ROMS) run "make" in pc-bios/R.  Default
goal is "all" for all R.  Rename to pc-bios/R/all, and declare phony.

The remainder are renamed just for consistency.

Target subdir-dtc runs "make libbft/libfdt.a" in dtc.  Rename to
dtc/all, and declare phony.

Target subdir-capstone runs make $(BUILD_DIR)/capstone/$(LIBCAPSTONE)
in $(SRC_PATH)/capstone.  Rename to capstone/all, and declare phony.

Target subdir-slirp runs "make" in $(SRC_PATH)/slirp.  Default goal is
all, which builds $(BUILD_DIR)/libslirp.a.  Rename to slirp/all, and
declare phony.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 Makefile               | 30 ++++++++++++++++++------------
 configure              |  6 +++---
 tests/Makefile.include |  3 ++-
 3 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/Makefile b/Makefile
index 12e470fa03..09c726bcc2 100644
--- a/Makefile
+++ b/Makefile
@@ -436,8 +436,8 @@ config-host.h-timestamp: config-host.mak
 qemu-options.def: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
 	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
 
-SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
-SOFTMMU_SUBDIR_RULES=$(filter %-softmmu,$(SUBDIR_RULES))
+SUBDIR_RULES=$(addsuffix /all, $(TARGET_DIRS))
+SOFTMMU_SUBDIR_RULES=$(filter %-softmmu/all,$(SUBDIR_RULES))
 
 $(SOFTMMU_SUBDIR_RULES): $(authz-obj-y)
 $(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
@@ -447,14 +447,16 @@ $(SOFTMMU_SUBDIR_RULES): $(io-obj-y)
 $(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
 $(SOFTMMU_SUBDIR_RULES): $(edk2-decompressed)
 
-subdir-%:
-	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
+.PHONY: $(SUBDIR_RULES)
+$(SUBDIR_RULES):
+	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" all,)
 
 DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
 DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
 DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
 
-subdir-dtc: .git-submodule-status dtc/libfdt dtc/tests
+.PHONY: dtc/all
+dtc/all: .git-submodule-status dtc/libfdt dtc/tests
 	$(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS) CPPFLAGS="$(DTC_CPPFLAGS)" CFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(LDFLAGS)" ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) libfdt/libfdt.a,)
 
 dtc/%: .git-submodule-status
@@ -472,21 +474,25 @@ CAP_CFLAGS += -DCAPSTONE_HAS_ARM64
 CAP_CFLAGS += -DCAPSTONE_HAS_POWERPC
 CAP_CFLAGS += -DCAPSTONE_HAS_X86
 
-subdir-capstone: .git-submodule-status
+.PHONY: capstone/all
+capstone/all: .git-submodule-status
 	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))
 
-subdir-slirp: .git-submodule-status
+.PHONY: slirp/all
+slirp/all: .git-submodule-status
 	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/slirp BUILD_DIR="$(BUILD_DIR)/slirp" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)")
 
 $(SUBDIR_RULES): libqemuutil.a $(common-obj-y) \
 	$(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
 
-ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
+ROM_DIRS = $(addprefix pc-bios/, $(ROMS))
+ROMSUBDIR_RULES=$(addsuffix /all, $(ROM_DIRS))
 # Only keep -O and -g cflags
-romsubdir-%:
-	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pc-bios/$* V="$(V)" TARGET_DIR="$*/" CFLAGS="$(filter -O% -g%,$(CFLAGS))",)
+.PHONY: $(ROMSUBDIR_RULES)
+$(ROMSUBDIR_RULES):
+	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" CFLAGS="$(filter -O% -g%,$(CFLAGS))",)
 
-ALL_SUBDIRS=$(TARGET_DIRS) $(patsubst %,pc-bios/%, $(ROMS))
+ALL_SUBDIRS=$(TARGET_DIRS) $(ROM_DIRS)
 
 recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES)
 
@@ -1087,7 +1093,7 @@ endif
 	@$(if $(TARGET_DIRS), \
 		echo 'Architecture specific targets:'; \
 		$(foreach t, $(TARGET_DIRS), \
-		printf "  %-30s - Build for %s\\n" $(patsubst %,subdir-%,$(t)) $(t);) \
+		printf "  %-30s - Build for %s\\n" $(t)/all $(t);) \
 		echo '')
 	@echo  'Cleaning targets:'
 	@echo  '  clean           - Remove most generated files but keep the config'
diff --git a/configure b/configure
index d2fc346302..2897434dda 100755
--- a/configure
+++ b/configure
@@ -6570,7 +6570,7 @@ if test "$slirp" != "no"; then
   echo "SLIRP_LIBS=$slirp_libs" >> $config_host_mak
 fi
 if [ "$slirp" = "git" -o "$slirp" = "internal" ]; then
-    echo "config-host.h: subdir-slirp" >> $config_host_mak
+    echo "config-host.h: slirp/all" >> $config_host_mak
 fi
 if test "$vde" = "yes" ; then
   echo "CONFIG_VDE=y" >> $config_host_mak
@@ -7836,10 +7836,10 @@ if test -n "$enabled_cross_compilers"; then
 fi
 
 if [ "$fdt" = "git" ]; then
-  echo "config-host.h: subdir-dtc" >> $config_host_mak
+  echo "config-host.h: dtc/all" >> $config_host_mak
 fi
 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
-  echo "config-host.h: subdir-capstone" >> $config_host_mak
+  echo "config-host.h: capstone/all" >> $config_host_mak
 fi
 if test -n "$LIBCAPSTONE"; then
   echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 1865f6b322..2b8d34ca25 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -1,3 +1,4 @@
+# -*- Mode: makefile -*-
 
 .PHONY: check-help
 check-help:
@@ -880,7 +881,7 @@ define do_test_tap
 endef
 
 .PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS))
-$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: subdir-%-softmmu $(check-qtest-y)
+$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: %-softmmu/all $(check-qtest-y)
 	$(call do_test_human,$(check-qtest-$*-y) $(check-qtest-generic-y), \
 	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
 	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
-- 
2.17.2



^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Qemu-devel] [RFC v4 4/7] Makefile: Reuse all's recursion machinery for clean and install
  2019-05-23  8:15 [Qemu-devel] [RFC v4 0/7] Baby steps towards saner headers Markus Armbruster
                   ` (2 preceding siblings ...)
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 3/7] Makefile: Rename targets for make recursion Markus Armbruster
@ 2019-05-23  8:15 ` Markus Armbruster
  2019-05-23 14:14   ` Richard Henderson
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 5/7] tests: New make target check-source Markus Armbruster
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 30+ messages in thread
From: Markus Armbruster @ 2019-05-23  8:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, pbonzini

Targets "clean" and "install" run make recursively in a for loop.
This ignores -j and -k.  Target "all" depends on SUBDIR/all to recurse
into each SUBDIR.  Behaves nicely with -j and -k.  Put that to use for
"clean" and "install": depend on SUBDIR/clean or SUBDIR/install,
respectively, and delete the loop.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 Makefile | 53 +++++++++++++++++++++++++----------------------------
 1 file changed, 25 insertions(+), 28 deletions(-)

diff --git a/Makefile b/Makefile
index 09c726bcc2..59de8e2494 100644
--- a/Makefile
+++ b/Makefile
@@ -436,20 +436,22 @@ config-host.h-timestamp: config-host.mak
 qemu-options.def: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
 	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
 
-SUBDIR_RULES=$(addsuffix /all, $(TARGET_DIRS))
-SOFTMMU_SUBDIR_RULES=$(filter %-softmmu/all,$(SUBDIR_RULES))
+TARGET_DIRS_RULES := $(foreach t, all clean install, $(addsuffix /$(t), $(TARGET_DIRS)))
 
-$(SOFTMMU_SUBDIR_RULES): $(authz-obj-y)
-$(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
-$(SOFTMMU_SUBDIR_RULES): $(chardev-obj-y)
-$(SOFTMMU_SUBDIR_RULES): $(crypto-obj-y)
-$(SOFTMMU_SUBDIR_RULES): $(io-obj-y)
-$(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
-$(SOFTMMU_SUBDIR_RULES): $(edk2-decompressed)
+SOFTMMU_ALL_RULES=$(filter %-softmmu/all, $(TARGET_DIRS_RULES))
+$(SOFTMMU_ALL_RULES): $(authz-obj-y)
+$(SOFTMMU_ALL_RULES): $(block-obj-y)
+$(SOFTMMU_ALL_RULES): $(chardev-obj-y)
+$(SOFTMMU_ALL_RULES): $(crypto-obj-y)
+$(SOFTMMU_ALL_RULES): $(io-obj-y)
+$(SOFTMMU_ALL_RULES): config-all-devices.mak
+$(SOFTMMU_ALL_RULES): $(edk2-decompressed)
 
-.PHONY: $(SUBDIR_RULES)
-$(SUBDIR_RULES):
-	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" all,)
+.PHONY: $(TARGET_DIRS_RULES)
+# The $(TARGET_DIRS_RULES) are of the form SUBDIR/GOAL, so that
+# $(dir $@) yields the sub-directory, and $(notdir $@) yields the sub-goal
+$(TARGET_DIRS_RULES):
+	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" $(notdir $@),)
 
 DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
 DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
@@ -482,19 +484,19 @@ capstone/all: .git-submodule-status
 slirp/all: .git-submodule-status
 	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/slirp BUILD_DIR="$(BUILD_DIR)/slirp" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)")
 
-$(SUBDIR_RULES): libqemuutil.a $(common-obj-y) \
+$(filter %/all, $(TARGET_DIRS_RULES)): libqemuutil.a $(common-obj-y) \
 	$(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
 
 ROM_DIRS = $(addprefix pc-bios/, $(ROMS))
-ROMSUBDIR_RULES=$(addsuffix /all, $(ROM_DIRS))
+ROM_DIRS_RULES=$(foreach t, all clean, $(addsuffix /$(t), $(ROM_DIRS)))
 # Only keep -O and -g cflags
-.PHONY: $(ROMSUBDIR_RULES)
-$(ROMSUBDIR_RULES):
-	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" CFLAGS="$(filter -O% -g%,$(CFLAGS))",)
+.PHONY: $(ROM_DIRS_RULES)
+$(ROM_DIRS_RULES):
+	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" CFLAGS="$(filter -O% -g%,$(CFLAGS))" $(notdir $@),)
 
-ALL_SUBDIRS=$(TARGET_DIRS) $(ROM_DIRS)
-
-recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES)
+recurse-all: $(addsuffix /all, $(TARGET_DIRS) $(ROM_DIRS))
+recurse-clean: $(addsuffix /clean, $(TARGET_DIRS) $(ROM_DIRS))
+recurse-install: $(addsuffix /install, $(TARGET_DIRS))
 
 $(BUILD_DIR)/version.o: $(SRC_PATH)/version.rc config-host.h
 	$(call quiet-command,$(WINDRES) -I$(BUILD_DIR) -o $@ $<,"RC","version.o")
@@ -630,7 +632,7 @@ clean-coverage:
 		"CLEAN", "coverage files")
 endif
 
-clean:
+clean: recurse-clean
 # avoid old build problems by removing potentially incorrect old files
 	rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
 	rm -f qemu-options.def
@@ -651,9 +653,6 @@ clean:
 	rm -f $(foreach f,$(generated-files-y),$(f) $(f)-timestamp)
 	rm -f qapi-gen-timestamp
 	rm -rf qga/qapi-generated
-	for d in $(ALL_SUBDIRS); do \
-	if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
-        done
 	rm -f config-all-devices.mak
 
 VERSION ?= $(shell cat VERSION)
@@ -799,7 +798,8 @@ endif
 ICON_SIZES=16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512
 
 install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir \
-	$(if $(INSTALL_BLOBS),$(edk2-decompressed))
+	$(if $(INSTALL_BLOBS),$(edk2-decompressed)) \
+	recurse-install
 ifneq ($(TOOLS),)
 	$(call install-prog,$(subst qemu-ga,qemu-ga$(EXESUF),$(TOOLS)),$(DESTDIR)$(bindir))
 endif
@@ -859,9 +859,6 @@ endif
 		$(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(qemu_datadir)/keymaps"; \
 	done
 	$(INSTALL_DATA) $(BUILD_DIR)/trace-events-all "$(DESTDIR)$(qemu_datadir)/trace-events-all"
-	for d in $(TARGET_DIRS); do \
-	$(MAKE) $(SUBDIR_MAKEFLAGS) TARGET_DIR=$$d/ -C $$d $@ || exit 1 ; \
-        done
 
 .PHONY: ctags
 ctags:
-- 
2.17.2



^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Qemu-devel] [RFC v4 5/7] tests: New make target check-source
  2019-05-23  8:15 [Qemu-devel] [RFC v4 0/7] Baby steps towards saner headers Markus Armbruster
                   ` (3 preceding siblings ...)
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 4/7] Makefile: Reuse all's recursion machinery for clean and install Markus Armbruster
@ 2019-05-23  8:15 ` Markus Armbruster
  2019-05-23 16:51   ` Paolo Bonzini
  2019-05-24  5:49   ` Philippe Mathieu-Daudé
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/ Markus Armbruster
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 7/7] tests: Make check-source cover generated headers Markus Armbruster
  6 siblings, 2 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-23  8:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, pbonzini

Make target check-source is for checking the source code itself.  For
now, there's just one such check, make target check-headers.  It
checks basic header sanity: for each header "FOO.h", test whether

	#include "qemu/osdep.h"
	#include "FOO.h"
	#include "FOO.h"

compiles.

The test works only in a git tree, with git installed.  It is skipped
unless $(SRC_PATH)/.git exists.

Third-party headers we don't intend to clean up are excluded from this
test.  So are a few "funny" headers.  See make variable
excluded-headers.

A large number of headers don't pass this test, by design or by
accident.  To keep things more manageable, exclude all headers outside
include/ for now.

Headers known to fail the test are marked with

    /* FIXME Does not pass make check-headers, yet! */

Headers known to work only in certain configurations are marked like

    /* FIXME Does not pass make check-headers without CONFIG_WIN32, yet! */

I tried to find and mark all of them by testing various
configurations.  Still, "make check" might fail for configurations I
didn't test.

Known issue: some of these don't actually need fixing; they're *meant*
to work only in certain configurations.  We'll want to invent a
suitable marker that doesn't claim FIXME.

Some headers may only be included into target-dependent code: they use
identifiers poisoned by exec/poison.h, or include cpu.h.  These
headers are marked with a comment

    /* NOTE: May only be included into target-dependent code */

The test treats them specially.

Known issue: some of these are intended for specific targets.  The
test should skip them for other targets, but doesn't.  They're marked
FIXME instead, which is wrong.

New make target check-bad-headers runs the test for headers expected
to fail it.  This helps with examining the failures.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 Makefile                                  |  4 ++-
 Makefile.target                           | 19 ++++++++++
 include/block/raw-aio.h                   |  3 ++
 include/block/write-threshold.h           |  3 ++
 include/chardev/char-win.h                |  3 ++
 include/chardev/spice.h                   |  2 ++
 include/disas/disas.h                     |  2 ++
 include/exec/cpu-all.h                    |  4 +++
 include/exec/cpu-defs.h                   |  4 +++
 include/exec/cpu_ldst.h                   |  4 +++
 include/exec/cpu_ldst_template.h          |  3 ++
 include/exec/cpu_ldst_useronly_template.h |  3 ++
 include/exec/cputlb.h                     |  3 ++
 include/exec/exec-all.h                   |  3 ++
 include/exec/gen-icount.h                 |  2 ++
 include/exec/helper-gen.h                 |  2 ++
 include/exec/helper-proto.h               |  2 ++
 include/exec/helper-tcg.h                 |  2 ++
 include/exec/ioport.h                     |  2 ++
 include/exec/memory-internal.h            |  2 ++
 include/exec/memory_ldst.inc.h            |  2 ++
 include/exec/memory_ldst_cached.inc.h     |  2 ++
 include/exec/memory_ldst_phys.inc.h       |  2 ++
 include/exec/ram_addr.h                   |  3 ++
 include/exec/softmmu-semi.h               |  3 ++
 include/exec/tb-hash.h                    |  3 ++
 include/exec/tb-lookup.h                  |  3 ++
 include/exec/translator.h                 |  3 ++
 include/exec/user/abitypes.h              |  2 ++
 include/exec/user/thunk.h                 |  4 +++
 include/fpu/softfloat-macros.h            |  2 ++
 include/fpu/softfloat.h                   |  2 ++
 include/hw/acpi/piix4.h                   |  2 ++
 include/hw/acpi/tco.h                     |  3 ++
 include/hw/adc/stm32f2xx_adc.h            |  2 ++
 include/hw/arm/allwinner-a10.h            |  2 ++
 include/hw/arm/armsse.h                   |  3 ++
 include/hw/arm/armv7m.h                   |  3 ++
 include/hw/arm/aspeed_soc.h               |  2 ++
 include/hw/arm/bcm2835_peripherals.h      |  2 ++
 include/hw/arm/bcm2836.h                  |  2 ++
 include/hw/arm/digic.h                    |  3 ++
 include/hw/arm/fsl-imx25.h                |  2 ++
 include/hw/arm/fsl-imx31.h                |  2 ++
 include/hw/arm/fsl-imx6.h                 |  3 ++
 include/hw/arm/fsl-imx6ul.h               |  3 ++
 include/hw/arm/fsl-imx7.h                 |  3 ++
 include/hw/arm/msf2-soc.h                 |  3 ++
 include/hw/arm/nrf51_soc.h                |  3 ++
 include/hw/arm/omap.h                     |  3 ++
 include/hw/arm/sharpsl.h                  |  3 ++
 include/hw/arm/stm32f205_soc.h            |  3 ++
 include/hw/arm/xlnx-zynqmp.h              |  2 ++
 include/hw/block/fdc.h                    |  2 ++
 include/hw/block/flash.h                  |  2 ++
 include/hw/char/escc.h                    |  2 ++
 include/hw/char/xilinx_uartlite.h         |  2 ++
 include/hw/core/generic-loader.h          |  2 ++
 include/hw/cris/etraxfs.h                 |  2 ++
 include/hw/cris/etraxfs_dma.h             |  2 ++
 include/hw/display/bcm2835_fb.h           |  2 ++
 include/hw/display/i2c-ddc.h              |  2 ++
 include/hw/display/xlnx_dp.h              |  2 ++
 include/hw/dma/xlnx_dpdma.h               |  2 ++
 include/hw/elf_ops.h                      |  2 ++
 include/hw/empty_slot.h                   |  2 ++
 include/hw/gpio/bcm2835_gpio.h            |  2 ++
 include/hw/hyperv/hyperv.h                |  2 ++
 include/hw/i2c/aspeed_i2c.h               |  3 ++
 include/hw/i386/apic_internal.h           |  3 ++
 include/hw/i386/ioapic_internal.h         |  2 ++
 include/hw/input/hid.h                    |  2 ++
 include/hw/input/tsc2xxx.h                |  2 ++
 include/hw/intc/allwinner-a10-pic.h       |  2 ++
 include/hw/intc/armv7m_nvic.h             |  3 ++
 include/hw/intc/heathrow_pic.h            |  2 ++
 include/hw/intc/mips_gic.h                |  3 ++
 include/hw/isa/vt82c686.h                 |  2 ++
 include/hw/kvm/clock.h                    |  4 ++-
 include/hw/mips/bios.h                    |  2 ++
 include/hw/mips/cps.h                     |  3 ++
 include/hw/mips/cpudevs.h                 |  2 ++
 include/hw/misc/bcm2835_property.h        |  2 ++
 include/hw/misc/macio/cuda.h              |  2 ++
 include/hw/misc/macio/gpio.h              |  2 ++
 include/hw/misc/macio/macio.h             |  2 ++
 include/hw/misc/macio/pmu.h               |  2 ++
 include/hw/misc/mips_cmgcr.h              |  2 ++
 include/hw/misc/mips_cpc.h                |  2 ++
 include/hw/misc/pvpanic.h                 |  3 ++
 include/hw/net/allwinner_emac.h           |  2 ++
 include/hw/net/lance.h                    |  2 ++
 include/hw/nvram/chrp_nvram.h             |  2 ++
 include/hw/pci-bridge/simba.h             |  2 ++
 include/hw/pci-host/sabre.h               |  2 ++
 include/hw/pci-host/spapr.h               |  3 ++
 include/hw/pci-host/uninorth.h            |  2 ++
 include/hw/pci/pcie_aer.h                 |  2 ++
 include/hw/ppc/fdt.h                      |  2 ++
 include/hw/ppc/pnv.h                      |  2 ++
 include/hw/ppc/pnv_core.h                 |  2 ++
 include/hw/ppc/pnv_xscom.h                |  2 ++
 include/hw/ppc/ppc.h                      |  2 ++
 include/hw/ppc/ppc4xx.h                   |  2 ++
 include/hw/ppc/spapr.h                    |  3 ++
 include/hw/ppc/spapr_cpu_core.h           |  4 +++
 include/hw/ppc/spapr_irq.h                |  2 ++
 include/hw/ppc/spapr_ovec.h               |  2 ++
 include/hw/ppc/spapr_vio.h                |  2 ++
 include/hw/ppc/spapr_xive.h               |  2 ++
 include/hw/ppc/xics_spapr.h               |  3 ++
 include/hw/ppc/xive_regs.h                |  2 ++
 include/hw/riscv/riscv_hart.h             |  2 ++
 include/hw/riscv/riscv_htif.h             |  3 ++
 include/hw/riscv/sifive_clint.h           |  2 ++
 include/hw/riscv/sifive_e.h               |  2 ++
 include/hw/riscv/sifive_plic.h            |  2 ++
 include/hw/riscv/sifive_prci.h            |  2 ++
 include/hw/riscv/sifive_test.h            |  2 ++
 include/hw/riscv/sifive_u.h               |  2 ++
 include/hw/riscv/sifive_uart.h            |  2 ++
 include/hw/riscv/spike.h                  |  2 ++
 include/hw/riscv/virt.h                   |  2 ++
 include/hw/s390x/3270-ccw.h               |  3 ++
 include/hw/s390x/ap-device.h              |  3 ++
 include/hw/s390x/css-bridge.h             |  2 ++
 include/hw/s390x/css.h                    |  3 ++
 include/hw/s390x/s390-ccw.h               |  3 ++
 include/hw/s390x/storage-attributes.h     |  3 ++
 include/hw/s390x/tod.h                    |  2 ++
 include/hw/s390x/vfio-ccw.h               |  3 ++
 include/hw/sh4/sh.h                       |  2 ++
 include/hw/sh4/sh_intc.h                  |  2 ++
 include/hw/sparc/grlib.h                  |  2 ++
 include/hw/sparc/sparc64.h                |  1 +
 include/hw/ssi/aspeed_smc.h               |  2 ++
 include/hw/ssi/xilinx_spips.h             |  2 ++
 include/hw/timer/allwinner-a10-pit.h      |  2 ++
 include/hw/timer/i8254_internal.h         |  2 ++
 include/hw/timer/m48t59.h                 |  2 ++
 include/hw/timer/mc146818rtc.h            |  2 ++
 include/hw/timer/mc146818rtc_regs.h       |  2 ++
 include/hw/timer/sun4v-rtc.h              |  2 ++
 include/hw/timer/xlnx-zynqmp-rtc.h        |  2 ++
 include/hw/vfio/vfio-amd-xgbe.h           |  2 ++
 include/hw/vfio/vfio-calxeda-xgmac.h      |  2 ++
 include/hw/vfio/vfio-common.h             |  2 ++
 include/hw/vfio/vfio-platform.h           |  2 ++
 include/hw/virtio/virtio-access.h         |  3 ++
 include/hw/virtio/virtio-gpu.h            |  2 ++
 include/hw/virtio/virtio-input.h          |  2 ++
 include/hw/virtio/virtio-rng.h            |  2 ++
 include/hw/xen/io/ring.h                  |  2 ++
 include/hw/xen/xen-backend.h              |  2 ++
 include/hw/xen/xen-block.h                |  2 ++
 include/hw/xen/xen-bus-helper.h           |  2 ++
 include/hw/xen/xen-bus.h                  |  2 ++
 include/hw/xen/xen-legacy-backend.h       |  2 ++
 include/hw/xen/xen_common.h               |  2 ++
 include/hw/xen/xen_pvdev.h                |  2 ++
 include/libdecnumber/decNumberLocal.h     |  2 ++
 include/migration/cpu.h                   |  4 +++
 include/monitor/hmp-target.h              |  3 ++
 include/qemu/atomic128.h                  |  2 ++
 include/qemu/futex.h                      |  2 ++
 include/qemu/ratelimit.h                  |  2 ++
 include/qemu/thread-win32.h               |  2 ++
 include/qemu/xattr.h                      |  3 ++
 include/sysemu/balloon.h                  |  2 ++
 include/sysemu/cryptodev-vhost-user.h     |  3 ++
 include/sysemu/dump.h                     |  2 ++
 include/sysemu/hvf.h                      |  3 ++
 include/sysemu/iothread.h                 |  2 ++
 include/sysemu/kvm_int.h                  |  2 ++
 include/sysemu/memory_mapping.h           |  2 ++
 include/sysemu/os-posix.h                 |  2 ++
 include/sysemu/os-win32.h                 |  2 ++
 include/sysemu/xen-mapcache.h             |  2 ++
 include/trace-tcg.h                       |  2 ++
 include/ui/console.h                      |  2 ++
 include/ui/egl-context.h                  |  3 ++
 include/ui/egl-helpers.h                  |  2 ++
 include/ui/gtk.h                          |  2 ++
 include/ui/input.h                        |  2 ++
 include/ui/pixel_ops.h                    |  2 ++
 include/ui/qemu-pixman.h                  |  2 ++
 include/ui/sdl2.h                         |  2 ++
 include/ui/shader.h                       |  2 ++
 include/ui/spice-display.h                |  2 ++
 tests/Makefile.include                    | 32 +++++++++++++++--
 tests/check-headers.mak                   | 42 +++++++++++++++++++++++
 tests/header-test-template.c              | 16 +++++++++
 192 files changed, 542 insertions(+), 4 deletions(-)
 create mode 100644 tests/check-headers.mak
 create mode 100644 tests/header-test-template.c

diff --git a/Makefile b/Makefile
index 59de8e2494..42f02c5ceb 100644
--- a/Makefile
+++ b/Makefile
@@ -416,6 +416,8 @@ dummy := $(call unnest-vars,, \
                 audio-obj-m \
                 trace-obj-y)
 
+RECURSIVE_TARGETS := all clean install
+
 include $(SRC_PATH)/tests/Makefile.include
 
 all: $(DOCS) $(if $(BUILD_DOCS),sphinxdocs) $(TOOLS) $(HELPERS-y) recurse-all modules
@@ -436,7 +438,7 @@ config-host.h-timestamp: config-host.mak
 qemu-options.def: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
 	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
 
-TARGET_DIRS_RULES := $(foreach t, all clean install, $(addsuffix /$(t), $(TARGET_DIRS)))
+TARGET_DIRS_RULES:=$(foreach t, $(RECURSIVE_TARGETS), $(addsuffix /$(t), $(TARGET_DIRS)))
 
 SOFTMMU_ALL_RULES=$(filter %-softmmu/all, $(TARGET_DIRS_RULES))
 $(SOFTMMU_ALL_RULES): $(authz-obj-y)
diff --git a/Makefile.target b/Makefile.target
index fdbe7c89f4..a46cfda580 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -41,6 +41,7 @@ STPFILES=
 
 # Makefile Tests
 include $(SRC_PATH)/tests/tcg/Makefile.include
+include $(SRC_PATH)/tests/check-headers.mak
 
 config-target.h: config-target.h-timestamp
 config-target.h-timestamp: config-target.mak
@@ -216,6 +217,22 @@ hmp-commands.h: $(SRC_PATH)/hmp-commands.hx $(SRC_PATH)/scripts/hxtool
 hmp-commands-info.h: $(SRC_PATH)/hmp-commands-info.hx $(SRC_PATH)/scripts/hxtool
 	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$(TARGET_DIR)$@")
 
+.PHONY: check-headers
+ifeq ($(wildcard $(SRC_PATH)/.git),)
+check-headers check-bad-headers:
+	@echo "  SKIP  $@ (requires a git tree)"
+else
+check-headers: $(check-target-header-tests:.c=.o)
+
+# Expected to fail:
+check-bad-headers: $(check-bad-target-header-tests:.c=.o)
+
+.SECONDARY: $(check-target-header-tests)
+$(check-target-header-tests) $(check-bad-target-header-tests): tests/header-test-template.c
+	@mkdir -p $(dir $@)
+	@sed 's,@header@,$(subst tests/headers/,,$(@:.c=.h)),' <$< >$@
+endif
+
 clean: clean-target
 	rm -f *.a *~ $(PROGS)
 	rm -f $(shell find . -name '*.[od]')
@@ -238,3 +255,5 @@ endif
 
 generated-files-y += config-target.h
 Makefile: $(generated-files-y)
+
+-include $(check-target-header-tests:.c=.d) $(check-bad-target-header-tests:.c=.d)
diff --git a/include/block/raw-aio.h b/include/block/raw-aio.h
index ba223dd1f1..c196cf7b2d 100644
--- a/include/block/raw-aio.h
+++ b/include/block/raw-aio.h
@@ -12,6 +12,9 @@
  * Contributions after 2012-01-13 are licensed under the terms of the
  * GNU GPL, version 2 or (at your option) any later version.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_RAW_AIO_H
 #define QEMU_RAW_AIO_H
 
diff --git a/include/block/write-threshold.h b/include/block/write-threshold.h
index 234d2193e0..b2cfd11219 100644
--- a/include/block/write-threshold.h
+++ b/include/block/write-threshold.h
@@ -9,6 +9,9 @@
  * This work is licensed under the terms of the GNU LGPL, version 2 or later.
  * See the COPYING.LIB file in the top-level directory.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef BLOCK_WRITE_THRESHOLD_H
 #define BLOCK_WRITE_THRESHOLD_H
 
diff --git a/include/chardev/char-win.h b/include/chardev/char-win.h
index fa59e9e423..423fa8dcd2 100644
--- a/include/chardev/char-win.h
+++ b/include/chardev/char-win.h
@@ -21,6 +21,9 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
+/* FIXME Does not pass make check-headers without CONFIG_WIN32, yet! */
+
 #ifndef CHAR_WIN_H
 #define CHAR_WIN_H
 
diff --git a/include/chardev/spice.h b/include/chardev/spice.h
index 1f7339b649..2bc2a992b5 100644
--- a/include/chardev/spice.h
+++ b/include/chardev/spice.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers without CONFIG_SPICE, yet! */
+
 #ifndef CHARDEV_SPICE_H
 #define CHARDEV_SPICE_H
 
diff --git a/include/disas/disas.h b/include/disas/disas.h
index 4d48c13c65..b19e70b50c 100644
--- a/include/disas/disas.h
+++ b/include/disas/disas.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_DISAS_H
 #define QEMU_DISAS_H
 
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
index da07ce311f..c18094bc59 100644
--- a/include/exec/cpu-all.h
+++ b/include/exec/cpu-all.h
@@ -16,6 +16,10 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CPU_ALL_H
 #define CPU_ALL_H
 
diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h
index 8f2a848bf5..361a2359aa 100644
--- a/include/exec/cpu-defs.h
+++ b/include/exec/cpu-defs.h
@@ -16,6 +16,10 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CPU_DEFS_H
 #define CPU_DEFS_H
 
diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
index 7b28a839d2..9f71d36e42 100644
--- a/include/exec/cpu_ldst.h
+++ b/include/exec/cpu_ldst.h
@@ -44,6 +44,10 @@
  * (for softmmu configs)  a target-specific MMU mode suffix as defined
  * in target cpu.h.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CPU_LDST_H
 #define CPU_LDST_H
 
diff --git a/include/exec/cpu_ldst_template.h b/include/exec/cpu_ldst_template.h
index 0f061d47ef..b5df25e2e0 100644
--- a/include/exec/cpu_ldst_template.h
+++ b/include/exec/cpu_ldst_template.h
@@ -24,6 +24,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #if !defined(SOFTMMU_CODE_ACCESS)
 #include "trace-root.h"
 #endif
diff --git a/include/exec/cpu_ldst_useronly_template.h b/include/exec/cpu_ldst_useronly_template.h
index 0fd6019af0..2f5d1da7d0 100644
--- a/include/exec/cpu_ldst_useronly_template.h
+++ b/include/exec/cpu_ldst_useronly_template.h
@@ -23,6 +23,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #if !defined(CODE_ACCESS)
 #include "trace-root.h"
 #endif
diff --git a/include/exec/cputlb.h b/include/exec/cputlb.h
index 5373188be3..361df6dee0 100644
--- a/include/exec/cputlb.h
+++ b/include/exec/cputlb.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CPUTLB_H
 #define CPUTLB_H
 
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
index 31f0ecc461..7fd70557f7 100644
--- a/include/exec/exec-all.h
+++ b/include/exec/exec-all.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef EXEC_ALL_H
 #define EXEC_ALL_H
 
diff --git a/include/exec/gen-icount.h b/include/exec/gen-icount.h
index 24f7991781..14e283aefa 100644
--- a/include/exec/gen-icount.h
+++ b/include/exec/gen-icount.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef GEN_ICOUNT_H
 #define GEN_ICOUNT_H
 
diff --git a/include/exec/helper-gen.h b/include/exec/helper-gen.h
index 22381a1708..63e4856b43 100644
--- a/include/exec/helper-gen.h
+++ b/include/exec/helper-gen.h
@@ -1,6 +1,8 @@
 /* Helper file for declaring TCG helper functions.
    This one expands generation functions for tcg opcodes.  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HELPER_GEN_H
 #define HELPER_GEN_H
 
diff --git a/include/exec/helper-proto.h b/include/exec/helper-proto.h
index 74943edb13..e5a1b9403d 100644
--- a/include/exec/helper-proto.h
+++ b/include/exec/helper-proto.h
@@ -1,6 +1,8 @@
 /* Helper file for declaring TCG helper functions.
    This one expands prototypes for the helper functions.  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HELPER_PROTO_H
 #define HELPER_PROTO_H
 
diff --git a/include/exec/helper-tcg.h b/include/exec/helper-tcg.h
index 268e0f804b..51e4758082 100644
--- a/include/exec/helper-tcg.h
+++ b/include/exec/helper-tcg.h
@@ -1,6 +1,8 @@
 /* Helper file for declaring TCG helper functions.
    This one defines data structures private to tcg.c.  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HELPER_TCG_H
 #define HELPER_TCG_H
 
diff --git a/include/exec/ioport.h b/include/exec/ioport.h
index a298b89ce1..96dc6f5662 100644
--- a/include/exec/ioport.h
+++ b/include/exec/ioport.h
@@ -21,6 +21,8 @@
  * IO ports API
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef IOPORT_H
 #define IOPORT_H
 
diff --git a/include/exec/memory-internal.h b/include/exec/memory-internal.h
index d1a9dd1ec8..d16ec2d36d 100644
--- a/include/exec/memory-internal.h
+++ b/include/exec/memory-internal.h
@@ -17,6 +17,8 @@
  * internals and the TCG TLB code. Do not include it from elsewhere.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MEMORY_INTERNAL_H
 #define MEMORY_INTERNAL_H
 
diff --git a/include/exec/memory_ldst.inc.h b/include/exec/memory_ldst.inc.h
index 272c20f02e..7846e99b6d 100644
--- a/include/exec/memory_ldst.inc.h
+++ b/include/exec/memory_ldst.inc.h
@@ -19,6 +19,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifdef TARGET_ENDIANNESS
 extern uint32_t glue(address_space_lduw, SUFFIX)(ARG1_DECL,
     hwaddr addr, MemTxAttrs attrs, MemTxResult *result);
diff --git a/include/exec/memory_ldst_cached.inc.h b/include/exec/memory_ldst_cached.inc.h
index fd4bbb40e7..9725005455 100644
--- a/include/exec/memory_ldst_cached.inc.h
+++ b/include/exec/memory_ldst_cached.inc.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define ADDRESS_SPACE_LD_CACHED(size) \
     glue(glue(address_space_ld, size), glue(ENDIANNESS, _cached))
 #define ADDRESS_SPACE_LD_CACHED_SLOW(size) \
diff --git a/include/exec/memory_ldst_phys.inc.h b/include/exec/memory_ldst_phys.inc.h
index 91f72973cb..8cd1828f8c 100644
--- a/include/exec/memory_ldst_phys.inc.h
+++ b/include/exec/memory_ldst_phys.inc.h
@@ -19,6 +19,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifdef TARGET_ENDIANNESS
 static inline uint32_t glue(ldl_phys, SUFFIX)(ARG1_DECL, hwaddr addr)
 {
diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
index 139ad79390..574427a505 100644
--- a/include/exec/ram_addr.h
+++ b/include/exec/ram_addr.h
@@ -16,6 +16,9 @@
  * The functions declared here will be removed soon.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef RAM_ADDR_H
 #define RAM_ADDR_H
 
diff --git a/include/exec/softmmu-semi.h b/include/exec/softmmu-semi.h
index 7eefad8f39..88f4deae26 100644
--- a/include/exec/softmmu-semi.h
+++ b/include/exec/softmmu-semi.h
@@ -7,6 +7,9 @@
  * This code is licensed under the GPL
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SOFTMMU_SEMI_H
 #define SOFTMMU_SEMI_H
 
diff --git a/include/exec/tb-hash.h b/include/exec/tb-hash.h
index 4f3a37d927..79e53fb73d 100644
--- a/include/exec/tb-hash.h
+++ b/include/exec/tb-hash.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef EXEC_TB_HASH_H
 #define EXEC_TB_HASH_H
 
diff --git a/include/exec/tb-lookup.h b/include/exec/tb-lookup.h
index 26921b6daf..93d6ebd148 100644
--- a/include/exec/tb-lookup.h
+++ b/include/exec/tb-lookup.h
@@ -4,6 +4,9 @@
  * License: GNU GPL, version 2 or later.
  *   See the COPYING file in the top-level directory.
  */
+
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef EXEC_TB_LOOKUP_H
 #define EXEC_TB_LOOKUP_H
 
diff --git a/include/exec/translator.h b/include/exec/translator.h
index 180c51d509..301c740c4e 100644
--- a/include/exec/translator.h
+++ b/include/exec/translator.h
@@ -7,6 +7,9 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef EXEC__TRANSLATOR_H
 #define EXEC__TRANSLATOR_H
 
diff --git a/include/exec/user/abitypes.h b/include/exec/user/abitypes.h
index 743b8bb9ea..626840d9c2 100644
--- a/include/exec/user/abitypes.h
+++ b/include/exec/user/abitypes.h
@@ -1,3 +1,5 @@
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef EXEC_USER_ABITYPES_H
 #define EXEC_USER_ABITYPES_H
 
diff --git a/include/exec/user/thunk.h b/include/exec/user/thunk.h
index 8d3af5a3be..933fd77436 100644
--- a/include/exec/user/thunk.h
+++ b/include/exec/user/thunk.h
@@ -16,6 +16,10 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef THUNK_H
 #define THUNK_H
 
diff --git a/include/fpu/softfloat-macros.h b/include/fpu/softfloat-macros.h
index bd5b6418e3..112e1b21dc 100644
--- a/include/fpu/softfloat-macros.h
+++ b/include/fpu/softfloat-macros.h
@@ -79,6 +79,8 @@ this code that are retained.
  * version 2 or later. See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /*----------------------------------------------------------------------------
 | Shifts `a' right by the number of bits given in `count'.  If any nonzero
 | bits are shifted off, they are ``jammed'' into the least significant bit of
diff --git a/include/fpu/softfloat.h b/include/fpu/softfloat.h
index 3ff3fa5224..303512c8a3 100644
--- a/include/fpu/softfloat.h
+++ b/include/fpu/softfloat.h
@@ -79,6 +79,8 @@ this code that are retained.
  * version 2 or later. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef SOFTFLOAT_H
 #define SOFTFLOAT_H
 
diff --git a/include/hw/acpi/piix4.h b/include/hw/acpi/piix4.h
index 028bb53e3d..62ad6bf19f 100644
--- a/include/hw/acpi/piix4.h
+++ b/include/hw/acpi/piix4.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ACPI_PIIX4_H
 #define HW_ACPI_PIIX4_H
 
diff --git a/include/hw/acpi/tco.h b/include/hw/acpi/tco.h
index 52ad767ddd..d7ff814451 100644
--- a/include/hw/acpi/tco.h
+++ b/include/hw/acpi/tco.h
@@ -6,6 +6,9 @@
  * This work is licensed under the terms of the GNU GPL, version 2 or later.
  * See the COPYING file in the top-level directory.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ACPI_TCO_H
 #define HW_ACPI_TCO_H
 
diff --git a/include/hw/adc/stm32f2xx_adc.h b/include/hw/adc/stm32f2xx_adc.h
index a72f734eb1..8e67c0f24d 100644
--- a/include/hw/adc/stm32f2xx_adc.h
+++ b/include/hw/adc/stm32f2xx_adc.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_STM32F2XX_ADC_H
 #define HW_STM32F2XX_ADC_H
 
diff --git a/include/hw/arm/allwinner-a10.h b/include/hw/arm/allwinner-a10.h
index 389e128d0f..ea1385d76f 100644
--- a/include/hw/arm/allwinner-a10.h
+++ b/include/hw/arm/allwinner-a10.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ALLWINNER_H_
 
 #include "qemu-common.h"
diff --git a/include/hw/arm/armsse.h b/include/hw/arm/armsse.h
index 81e082cccf..c60de46c92 100644
--- a/include/hw/arm/armsse.h
+++ b/include/hw/arm/armsse.h
@@ -81,6 +81,9 @@
  *  + named GPIO outputs mscexp_ns[0..15]
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ARMSSE_H
 #define ARMSSE_H
 
diff --git a/include/hw/arm/armv7m.h b/include/hw/arm/armv7m.h
index e96a98f809..28d80a3ba1 100644
--- a/include/hw/arm/armv7m.h
+++ b/include/hw/arm/armv7m.h
@@ -7,6 +7,9 @@
  * This code is licensed under the GPL version 2 or later.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ARM_ARMV7M_H
 #define HW_ARM_ARMV7M_H
 
diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h
index 11ec0179db..0d266fc88e 100644
--- a/include/hw/arm/aspeed_soc.h
+++ b/include/hw/arm/aspeed_soc.h
@@ -9,6 +9,8 @@
  * the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ASPEED_SOC_H
 #define ASPEED_SOC_H
 
diff --git a/include/hw/arm/bcm2835_peripherals.h b/include/hw/arm/bcm2835_peripherals.h
index f5b193f670..aafa8adb06 100644
--- a/include/hw/arm/bcm2835_peripherals.h
+++ b/include/hw/arm/bcm2835_peripherals.h
@@ -8,6 +8,8 @@
  * This code is licensed under the GNU GPLv2 and later.
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef BCM2835_PERIPHERALS_H
 #define BCM2835_PERIPHERALS_H
 
diff --git a/include/hw/arm/bcm2836.h b/include/hw/arm/bcm2836.h
index 93248399ba..01247b43b6 100644
--- a/include/hw/arm/bcm2836.h
+++ b/include/hw/arm/bcm2836.h
@@ -8,6 +8,8 @@
  * This code is licensed under the GNU GPLv2 and later.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef BCM2836_H
 #define BCM2836_H
 
diff --git a/include/hw/arm/digic.h b/include/hw/arm/digic.h
index 63785baaa8..79f9278c64 100644
--- a/include/hw/arm/digic.h
+++ b/include/hw/arm/digic.h
@@ -15,6 +15,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ARM_DIGIC_H
 #define HW_ARM_DIGIC_H
 
diff --git a/include/hw/arm/fsl-imx25.h b/include/hw/arm/fsl-imx25.h
index 65a73714ef..db80831846 100644
--- a/include/hw/arm/fsl-imx25.h
+++ b/include/hw/arm/fsl-imx25.h
@@ -14,6 +14,8 @@
  * for more details.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef FSL_IMX25_H
 #define FSL_IMX25_H
 
diff --git a/include/hw/arm/fsl-imx31.h b/include/hw/arm/fsl-imx31.h
index d408abbba0..fb77d94366 100644
--- a/include/hw/arm/fsl-imx31.h
+++ b/include/hw/arm/fsl-imx31.h
@@ -14,6 +14,8 @@
  * for more details.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef FSL_IMX31_H
 #define FSL_IMX31_H
 
diff --git a/include/hw/arm/fsl-imx6.h b/include/hw/arm/fsl-imx6.h
index 06f8aaeda4..accec72f24 100644
--- a/include/hw/arm/fsl-imx6.h
+++ b/include/hw/arm/fsl-imx6.h
@@ -14,6 +14,9 @@
  * for more details.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef FSL_IMX6_H
 #define FSL_IMX6_H
 
diff --git a/include/hw/arm/fsl-imx6ul.h b/include/hw/arm/fsl-imx6ul.h
index 5897217194..f7b517119d 100644
--- a/include/hw/arm/fsl-imx6ul.h
+++ b/include/hw/arm/fsl-imx6ul.h
@@ -14,6 +14,9 @@
  * GNU General Public License for more details.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef FSL_IMX6UL_H
 #define FSL_IMX6UL_H
 
diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h
index d848262bfd..9e28691ae2 100644
--- a/include/hw/arm/fsl-imx7.h
+++ b/include/hw/arm/fsl-imx7.h
@@ -16,6 +16,9 @@
  * GNU General Public License for more details.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef FSL_IMX7_H
 #define FSL_IMX7_H
 
diff --git a/include/hw/arm/msf2-soc.h b/include/hw/arm/msf2-soc.h
index 3cfe5c76ee..3a209e48b8 100644
--- a/include/hw/arm/msf2-soc.h
+++ b/include/hw/arm/msf2-soc.h
@@ -22,6 +22,9 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ARM_MSF2_SOC_H
 #define HW_ARM_MSF2_SOC_H
 
diff --git a/include/hw/arm/nrf51_soc.h b/include/hw/arm/nrf51_soc.h
index 0cb78aafea..b5a3da0bdc 100644
--- a/include/hw/arm/nrf51_soc.h
+++ b/include/hw/arm/nrf51_soc.h
@@ -7,6 +7,9 @@
  * the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef NRF51_SOC_H
 #define NRF51_SOC_H
 
diff --git a/include/hw/arm/omap.h b/include/hw/arm/omap.h
index 9de867daa4..404e7d81af 100644
--- a/include/hw/arm/omap.h
+++ b/include/hw/arm/omap.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef hw_omap_h
 #include "exec/memory.h"
 # define hw_omap_h		"omap.h"
diff --git a/include/hw/arm/sharpsl.h b/include/hw/arm/sharpsl.h
index 5bf6db1fa2..dc456653e1 100644
--- a/include/hw/arm/sharpsl.h
+++ b/include/hw/arm/sharpsl.h
@@ -3,6 +3,9 @@
  *
  * This file is licensed under the GNU GPL.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_SHARPSL_H
 #define QEMU_SHARPSL_H
 
diff --git a/include/hw/arm/stm32f205_soc.h b/include/hw/arm/stm32f205_soc.h
index 922a733f88..4558c64823 100644
--- a/include/hw/arm/stm32f205_soc.h
+++ b/include/hw/arm/stm32f205_soc.h
@@ -22,6 +22,9 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ARM_STM32F205_SOC_H
 #define HW_ARM_STM32F205_SOC_H
 
diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h
index 591515c760..bd7a5a0302 100644
--- a/include/hw/arm/xlnx-zynqmp.h
+++ b/include/hw/arm/xlnx-zynqmp.h
@@ -15,6 +15,8 @@
  * for more details.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XLNX_ZYNQMP_H
 
 #include "qemu-common.h"
diff --git a/include/hw/block/fdc.h b/include/hw/block/fdc.h
index 3b813c7f7d..cf87f48317 100644
--- a/include/hw/block/fdc.h
+++ b/include/hw/block/fdc.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_FDC_H
 #define HW_FDC_H
 
diff --git a/include/hw/block/flash.h b/include/hw/block/flash.h
index 1acaf7de80..15ce2b3f14 100644
--- a/include/hw/block/flash.h
+++ b/include/hw/block/flash.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_FLASH_H
 #define HW_FLASH_H
 
diff --git a/include/hw/char/escc.h b/include/hw/char/escc.h
index 42aca83611..71b95dd152 100644
--- a/include/hw/char/escc.h
+++ b/include/hw/char/escc.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ESCC_H
 #define HW_ESCC_H
 
diff --git a/include/hw/char/xilinx_uartlite.h b/include/hw/char/xilinx_uartlite.h
index 634086b657..a003b5977f 100644
--- a/include/hw/char/xilinx_uartlite.h
+++ b/include/hw/char/xilinx_uartlite.h
@@ -12,6 +12,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XILINX_UARTLITE_H
 #define XILINX_UARTLITE_H
 
diff --git a/include/hw/core/generic-loader.h b/include/hw/core/generic-loader.h
index dd27c42ab0..3827144a5f 100644
--- a/include/hw/core/generic-loader.h
+++ b/include/hw/core/generic-loader.h
@@ -15,6 +15,8 @@
  * for more details.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef GENERIC_LOADER_H
 #define GENERIC_LOADER_H
 
diff --git a/include/hw/cris/etraxfs.h b/include/hw/cris/etraxfs.h
index 8da965addb..108692bac3 100644
--- a/include/hw/cris/etraxfs.h
+++ b/include/hw/cris/etraxfs.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ETRAXFS_H
 #define HW_ETRAXFS_H
 
diff --git a/include/hw/cris/etraxfs_dma.h b/include/hw/cris/etraxfs_dma.h
index f6f33e0980..a1c6ce44ba 100644
--- a/include/hw/cris/etraxfs_dma.h
+++ b/include/hw/cris/etraxfs_dma.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ETRAXFS_DMA_H
 #define HW_ETRAXFS_DMA_H
 
diff --git a/include/hw/display/bcm2835_fb.h b/include/hw/display/bcm2835_fb.h
index 228988ba05..baec7d1797 100644
--- a/include/hw/display/bcm2835_fb.h
+++ b/include/hw/display/bcm2835_fb.h
@@ -8,6 +8,8 @@
  * This code is licensed under the GNU GPLv2 and later.
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef BCM2835_FB_H
 #define BCM2835_FB_H
 
diff --git a/include/hw/display/i2c-ddc.h b/include/hw/display/i2c-ddc.h
index c29443c5af..814be09922 100644
--- a/include/hw/display/i2c-ddc.h
+++ b/include/hw/display/i2c-ddc.h
@@ -16,6 +16,8 @@
  *  with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef I2C_DDC_H
 #define I2C_DDC_H
 
diff --git a/include/hw/display/xlnx_dp.h b/include/hw/display/xlnx_dp.h
index 45a805033a..0fb42e8a77 100644
--- a/include/hw/display/xlnx_dp.h
+++ b/include/hw/display/xlnx_dp.h
@@ -22,6 +22,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #include "hw/sysbus.h"
 #include "ui/console.h"
 #include "hw/misc/auxbus.h"
diff --git a/include/hw/dma/xlnx_dpdma.h b/include/hw/dma/xlnx_dpdma.h
index 7a304a5bb4..5c9a003feb 100644
--- a/include/hw/dma/xlnx_dpdma.h
+++ b/include/hw/dma/xlnx_dpdma.h
@@ -22,6 +22,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef XLNX_DPDMA_H
 #define XLNX_DPDMA_H
 
diff --git a/include/hw/elf_ops.h b/include/hw/elf_ops.h
index 690f9238c8..f873519cfd 100644
--- a/include/hw/elf_ops.h
+++ b/include/hw/elf_ops.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 static void glue(bswap_ehdr, SZ)(struct elfhdr *ehdr)
 {
     bswap16s(&ehdr->e_type);			/* Object file type */
diff --git a/include/hw/empty_slot.h b/include/hw/empty_slot.h
index 123a9f8989..249092a1cd 100644
--- a/include/hw/empty_slot.h
+++ b/include/hw/empty_slot.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_EMPTY_SLOT_H
 #define HW_EMPTY_SLOT_H
 
diff --git a/include/hw/gpio/bcm2835_gpio.h b/include/hw/gpio/bcm2835_gpio.h
index 9f8e0c720c..c24106aba5 100644
--- a/include/hw/gpio/bcm2835_gpio.h
+++ b/include/hw/gpio/bcm2835_gpio.h
@@ -11,6 +11,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef BCM2835_GPIO_H
 #define BCM2835_GPIO_H
 
diff --git a/include/hw/hyperv/hyperv.h b/include/hw/hyperv/hyperv.h
index 597381cb01..eab9724561 100644
--- a/include/hw/hyperv/hyperv.h
+++ b/include/hw/hyperv/hyperv.h
@@ -7,6 +7,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_HYPERV_HYPERV_H
 #define HW_HYPERV_HYPERV_H
 
diff --git a/include/hw/i2c/aspeed_i2c.h b/include/hw/i2c/aspeed_i2c.h
index f9020acdef..ee215ff26e 100644
--- a/include/hw/i2c/aspeed_i2c.h
+++ b/include/hw/i2c/aspeed_i2c.h
@@ -17,6 +17,9 @@
  *  with this program; if not, write to the Free Software Foundation, Inc.,
  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ASPEED_I2C_H
 #define ASPEED_I2C_H
 
diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h
index 1209eb483a..ec00577253 100644
--- a/include/hw/i386/apic_internal.h
+++ b/include/hw/i386/apic_internal.h
@@ -18,6 +18,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_APIC_INTERNAL_H
 #define QEMU_APIC_INTERNAL_H
 
diff --git a/include/hw/i386/ioapic_internal.h b/include/hw/i386/ioapic_internal.h
index 07002f9662..9a9cd96788 100644
--- a/include/hw/i386/ioapic_internal.h
+++ b/include/hw/i386/ioapic_internal.h
@@ -19,6 +19,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_IOAPIC_INTERNAL_H
 #define QEMU_IOAPIC_INTERNAL_H
 
diff --git a/include/hw/input/hid.h b/include/hw/input/hid.h
index 2127c7ce45..aec04352e0 100644
--- a/include/hw/input/hid.h
+++ b/include/hw/input/hid.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_HID_H
 #define QEMU_HID_H
 
diff --git a/include/hw/input/tsc2xxx.h b/include/hw/input/tsc2xxx.h
index dbfe5c55c1..37e620d79d 100644
--- a/include/hw/input/tsc2xxx.h
+++ b/include/hw/input/tsc2xxx.h
@@ -8,6 +8,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef HW_INPUT_TSC2XXX_H
 #define HW_INPUT_TSC2XXX_H
 
diff --git a/include/hw/intc/allwinner-a10-pic.h b/include/hw/intc/allwinner-a10-pic.h
index 1d314a70d9..897d5ad6cc 100644
--- a/include/hw/intc/allwinner-a10-pic.h
+++ b/include/hw/intc/allwinner-a10-pic.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ALLWINNER_A10_PIC_H
 #define ALLWINNER_A10_PIC_H
 
diff --git a/include/hw/intc/armv7m_nvic.h b/include/hw/intc/armv7m_nvic.h
index a472c9b8f0..5bcb946035 100644
--- a/include/hw/intc/armv7m_nvic.h
+++ b/include/hw/intc/armv7m_nvic.h
@@ -7,6 +7,9 @@
  * This code is licensed under the GPL version 2 or later.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ARM_ARMV7M_NVIC_H
 #define HW_ARM_ARMV7M_NVIC_H
 
diff --git a/include/hw/intc/heathrow_pic.h b/include/hw/intc/heathrow_pic.h
index 6c91ec91bb..9724912d59 100644
--- a/include/hw/intc/heathrow_pic.h
+++ b/include/hw/intc/heathrow_pic.h
@@ -23,6 +23,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_INTC_HEATHROW_PIC_H
 #define HW_INTC_HEATHROW_PIC_H
 
diff --git a/include/hw/intc/mips_gic.h b/include/hw/intc/mips_gic.h
index 902a12b178..870daa94c1 100644
--- a/include/hw/intc/mips_gic.h
+++ b/include/hw/intc/mips_gic.h
@@ -8,6 +8,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_GIC_H
 #define MIPS_GIC_H
 
diff --git a/include/hw/isa/vt82c686.h b/include/hw/isa/vt82c686.h
index c3c2b6e786..49b3a96e4a 100644
--- a/include/hw/isa/vt82c686.h
+++ b/include/hw/isa/vt82c686.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_VT82C686_H
 #define HW_VT82C686_H
 
diff --git a/include/hw/kvm/clock.h b/include/hw/kvm/clock.h
index 252ea13461..f719d9892e 100644
--- a/include/hw/kvm/clock.h
+++ b/include/hw/kvm/clock.h
@@ -8,9 +8,11 @@
  *
  * This work is licensed under the terms of the GNU GPL version 2.
  * See the COPYING file in the top-level directory.
- *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifdef CONFIG_KVM
 
 void kvmclock_create(void);
diff --git a/include/hw/mips/bios.h b/include/hw/mips/bios.h
index d67ef33e83..74ebed02c8 100644
--- a/include/hw/mips/bios.h
+++ b/include/hw/mips/bios.h
@@ -1,3 +1,5 @@
+/* NOTE: May only be included into target-dependent code */
+
 #include "qemu/units.h"
 #include "cpu.h"
 
diff --git a/include/hw/mips/cps.h b/include/hw/mips/cps.h
index aab1af926d..af8d25e142 100644
--- a/include/hw/mips/cps.h
+++ b/include/hw/mips/cps.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_CPS_H
 #define MIPS_CPS_H
 
diff --git a/include/hw/mips/cpudevs.h b/include/hw/mips/cpudevs.h
index 291f59281a..fc80c53980 100644
--- a/include/hw/mips/cpudevs.h
+++ b/include/hw/mips/cpudevs.h
@@ -1,3 +1,5 @@
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef HW_MIPS_CPUDEVS_H
 #define HW_MIPS_CPUDEVS_H
 
diff --git a/include/hw/misc/bcm2835_property.h b/include/hw/misc/bcm2835_property.h
index 11be0dbeac..e9faac1bca 100644
--- a/include/hw/misc/bcm2835_property.h
+++ b/include/hw/misc/bcm2835_property.h
@@ -3,6 +3,8 @@
  * This code is licensed under the GNU GPLv2 and later.
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef BCM2835_PROPERTY_H
 #define BCM2835_PROPERTY_H
 
diff --git a/include/hw/misc/macio/cuda.h b/include/hw/misc/macio/cuda.h
index 7dad469142..562927e1da 100644
--- a/include/hw/misc/macio/cuda.h
+++ b/include/hw/misc/macio/cuda.h
@@ -23,6 +23,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CUDA_H
 #define CUDA_H
 
diff --git a/include/hw/misc/macio/gpio.h b/include/hw/misc/macio/gpio.h
index 2838ae5fde..c5231896ce 100644
--- a/include/hw/misc/macio/gpio.h
+++ b/include/hw/misc/macio/gpio.h
@@ -23,6 +23,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MACIO_GPIO_H
 #define MACIO_GPIO_H
 
diff --git a/include/hw/misc/macio/macio.h b/include/hw/misc/macio/macio.h
index 970058b6ed..f19f756f38 100644
--- a/include/hw/misc/macio/macio.h
+++ b/include/hw/misc/macio/macio.h
@@ -23,6 +23,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MACIO_H
 #define MACIO_H
 
diff --git a/include/hw/misc/macio/pmu.h b/include/hw/misc/macio/pmu.h
index d10895ba5f..0ab3c06a7e 100644
--- a/include/hw/misc/macio/pmu.h
+++ b/include/hw/misc/macio/pmu.h
@@ -7,6 +7,8 @@
  * Copyright (C) 2016 Ben Herrenschmidt
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PMU_H
 #define PMU_H
 
diff --git a/include/hw/misc/mips_cmgcr.h b/include/hw/misc/mips_cmgcr.h
index c9dfcb4b84..70b95ab163 100644
--- a/include/hw/misc/mips_cmgcr.h
+++ b/include/hw/misc/mips_cmgcr.h
@@ -7,6 +7,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_CMGCR_H
 #define MIPS_CMGCR_H
 
diff --git a/include/hw/misc/mips_cpc.h b/include/hw/misc/mips_cpc.h
index 72c834e039..86d2705526 100644
--- a/include/hw/misc/mips_cpc.h
+++ b/include/hw/misc/mips_cpc.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_CPC_H
 #define MIPS_CPC_H
 
diff --git a/include/hw/misc/pvpanic.h b/include/hw/misc/pvpanic.h
index 1ee071a703..65c67e31f4 100644
--- a/include/hw/misc/pvpanic.h
+++ b/include/hw/misc/pvpanic.h
@@ -11,6 +11,9 @@
  * See the COPYING file in the top-level directory.
  *
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_MISC_PVPANIC_H
 #define HW_MISC_PVPANIC_H
 
diff --git a/include/hw/net/allwinner_emac.h b/include/hw/net/allwinner_emac.h
index 905a43deb4..9389cb82c6 100644
--- a/include/hw/net/allwinner_emac.h
+++ b/include/hw/net/allwinner_emac.h
@@ -20,6 +20,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ALLWINNER_EMAC_H
 #define ALLWINNER_EMAC_H
 
diff --git a/include/hw/net/lance.h b/include/hw/net/lance.h
index ffdd35c4d7..2b99153bbc 100644
--- a/include/hw/net/lance.h
+++ b/include/hw/net/lance.h
@@ -26,6 +26,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef LANCE_H
 #define LANCE_H
 
diff --git a/include/hw/nvram/chrp_nvram.h b/include/hw/nvram/chrp_nvram.h
index b4f5b2b104..ae99396eab 100644
--- a/include/hw/nvram/chrp_nvram.h
+++ b/include/hw/nvram/chrp_nvram.h
@@ -15,6 +15,8 @@
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CHRP_NVRAM_H
 #define CHRP_NVRAM_H
 
diff --git a/include/hw/pci-bridge/simba.h b/include/hw/pci-bridge/simba.h
index e13ba27d0b..35ddfd9316 100644
--- a/include/hw/pci-bridge/simba.h
+++ b/include/hw/pci-bridge/simba.h
@@ -24,6 +24,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "hw/pci/pci_bridge.h"
 
 
diff --git a/include/hw/pci-host/sabre.h b/include/hw/pci-host/sabre.h
index 9afa4938fd..003bd17842 100644
--- a/include/hw/pci-host/sabre.h
+++ b/include/hw/pci-host/sabre.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_PCI_HOST_SABRE_H
 #define HW_PCI_HOST_SABRE_H
 
diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h
index 53519c835e..ee07d1506a 100644
--- a/include/hw/pci-host/spapr.h
+++ b/include/hw/pci-host/spapr.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PCI_HOST_SPAPR_H
 #define PCI_HOST_SPAPR_H
 
diff --git a/include/hw/pci-host/uninorth.h b/include/hw/pci-host/uninorth.h
index 060324536a..b541fbc12d 100644
--- a/include/hw/pci-host/uninorth.h
+++ b/include/hw/pci-host/uninorth.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef UNINORTH_H
 #define UNINORTH_H
 
diff --git a/include/hw/pci/pcie_aer.h b/include/hw/pci/pcie_aer.h
index 729a9439c8..a2e8bc77a7 100644
--- a/include/hw/pci/pcie_aer.h
+++ b/include/hw/pci/pcie_aer.h
@@ -18,6 +18,8 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_PCIE_AER_H
 #define QEMU_PCIE_AER_H
 
diff --git a/include/hw/ppc/fdt.h b/include/hw/ppc/fdt.h
index a8cd85069f..39670f61a8 100644
--- a/include/hw/ppc/fdt.h
+++ b/include/hw/ppc/fdt.h
@@ -7,6 +7,8 @@
  * COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef PPC_FDT_H
 #define PPC_FDT_H
 
diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
index fc4678f757..026538f08d 100644
--- a/include/hw/ppc/pnv.h
+++ b/include/hw/ppc/pnv.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_PNV_H
 #define PPC_PNV_H
 
diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
index d0926454a9..403b9f1e49 100644
--- a/include/hw/ppc/pnv_core.h
+++ b/include/hw/ppc/pnv_core.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_PNV_CORE_H
 #define PPC_PNV_CORE_H
 
diff --git a/include/hw/ppc/pnv_xscom.h b/include/hw/ppc/pnv_xscom.h
index c842d950d2..e93b86cbd3 100644
--- a/include/hw/ppc/pnv_xscom.h
+++ b/include/hw/ppc/pnv_xscom.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_PNV_XSCOM_H
 #define PPC_PNV_XSCOM_H
 
diff --git a/include/hw/ppc/ppc.h b/include/hw/ppc/ppc.h
index 4bdcb8bacd..d45cb675bf 100644
--- a/include/hw/ppc/ppc.h
+++ b/include/hw/ppc/ppc.h
@@ -1,3 +1,5 @@
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef HW_PPC_H
 #define HW_PPC_H
 
diff --git a/include/hw/ppc/ppc4xx.h b/include/hw/ppc/ppc4xx.h
index 39a7ba1ce6..2732200997 100644
--- a/include/hw/ppc/ppc4xx.h
+++ b/include/hw/ppc/ppc4xx.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC4XX_H
 #define PPC4XX_H
 
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 7e32f309c2..d0f107613e 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SPAPR_H
 #define HW_SPAPR_H
 
diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
index f9645a7290..980d9ded69 100644
--- a/include/hw/ppc/spapr_cpu_core.h
+++ b/include/hw/ppc/spapr_cpu_core.h
@@ -6,6 +6,10 @@
  * This work is licensed under the terms of the GNU GPL, version 2 or later.
  * See the COPYING file in the top-level directory.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SPAPR_CPU_CORE_H
 #define HW_SPAPR_CPU_CORE_H
 
diff --git a/include/hw/ppc/spapr_irq.h b/include/hw/ppc/spapr_irq.h
index b855f74e44..89636112be 100644
--- a/include/hw/ppc/spapr_irq.h
+++ b/include/hw/ppc/spapr_irq.h
@@ -7,6 +7,8 @@
  * COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SPAPR_IRQ_H
 #define HW_SPAPR_IRQ_H
 
diff --git a/include/hw/ppc/spapr_ovec.h b/include/hw/ppc/spapr_ovec.h
index 5de5ecf5de..5d522b7526 100644
--- a/include/hw/ppc/spapr_ovec.h
+++ b/include/hw/ppc/spapr_ovec.h
@@ -34,6 +34,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef SPAPR_OVEC_H
 #define SPAPR_OVEC_H
 
diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h
index 04609f214e..50cf292803 100644
--- a/include/hw/ppc/spapr_vio.h
+++ b/include/hw/ppc/spapr_vio.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SPAPR_VIO_H
 #define HW_SPAPR_VIO_H
 
diff --git a/include/hw/ppc/spapr_xive.h b/include/hw/ppc/spapr_xive.h
index fc3e9652f9..9da1d979f9 100644
--- a/include/hw/ppc/spapr_xive.h
+++ b/include/hw/ppc/spapr_xive.h
@@ -7,6 +7,8 @@
  * COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_SPAPR_XIVE_H
 #define PPC_SPAPR_XIVE_H
 
diff --git a/include/hw/ppc/xics_spapr.h b/include/hw/ppc/xics_spapr.h
index 15a8dcff66..be9c6cf04c 100644
--- a/include/hw/ppc/xics_spapr.h
+++ b/include/hw/ppc/xics_spapr.h
@@ -24,6 +24,9 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XICS_SPAPR_H
 #define XICS_SPAPR_H
 
diff --git a/include/hw/ppc/xive_regs.h b/include/hw/ppc/xive_regs.h
index bf36678a24..a268cf8ebc 100644
--- a/include/hw/ppc/xive_regs.h
+++ b/include/hw/ppc/xive_regs.h
@@ -13,6 +13,8 @@
  * COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_XIVE_REGS_H
 #define PPC_XIVE_REGS_H
 
diff --git a/include/hw/riscv/riscv_hart.h b/include/hw/riscv/riscv_hart.h
index 0671d88a44..846a22c17d 100644
--- a/include/hw/riscv/riscv_hart.h
+++ b/include/hw/riscv/riscv_hart.h
@@ -18,6 +18,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_RISCV_HART_H
 #define HW_RISCV_HART_H
 
diff --git a/include/hw/riscv/riscv_htif.h b/include/hw/riscv/riscv_htif.h
index fb5f88129e..df385dacf4 100644
--- a/include/hw/riscv/riscv_htif.h
+++ b/include/hw/riscv/riscv_htif.h
@@ -17,6 +17,9 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_RISCV_HTIF_H
 #define HW_RISCV_HTIF_H
 
diff --git a/include/hw/riscv/sifive_clint.h b/include/hw/riscv/sifive_clint.h
index e2865be1d1..dd9999333f 100644
--- a/include/hw/riscv/sifive_clint.h
+++ b/include/hw/riscv/sifive_clint.h
@@ -17,6 +17,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SIFIVE_CLINT_H
 #define HW_SIFIVE_CLINT_H
 
diff --git a/include/hw/riscv/sifive_e.h b/include/hw/riscv/sifive_e.h
index f715f8606f..30bb9f2360 100644
--- a/include/hw/riscv/sifive_e.h
+++ b/include/hw/riscv/sifive_e.h
@@ -16,6 +16,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SIFIVE_E_H
 #define HW_SIFIVE_E_H
 
diff --git a/include/hw/riscv/sifive_plic.h b/include/hw/riscv/sifive_plic.h
index ce8907f6aa..c292e578c6 100644
--- a/include/hw/riscv/sifive_plic.h
+++ b/include/hw/riscv/sifive_plic.h
@@ -18,6 +18,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SIFIVE_PLIC_H
 #define HW_SIFIVE_PLIC_H
 
diff --git a/include/hw/riscv/sifive_prci.h b/include/hw/riscv/sifive_prci.h
index b6f4c486cc..bc3412875d 100644
--- a/include/hw/riscv/sifive_prci.h
+++ b/include/hw/riscv/sifive_prci.h
@@ -16,6 +16,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SIFIVE_PRCI_H
 #define HW_SIFIVE_PRCI_H
 
diff --git a/include/hw/riscv/sifive_test.h b/include/hw/riscv/sifive_test.h
index 71d4c9fad7..ca775d8e68 100644
--- a/include/hw/riscv/sifive_test.h
+++ b/include/hw/riscv/sifive_test.h
@@ -16,6 +16,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SIFIVE_TEST_H
 #define HW_SIFIVE_TEST_H
 
diff --git a/include/hw/riscv/sifive_u.h b/include/hw/riscv/sifive_u.h
index 892f0eee21..74d8fbbf57 100644
--- a/include/hw/riscv/sifive_u.h
+++ b/include/hw/riscv/sifive_u.h
@@ -16,6 +16,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SIFIVE_U_H
 #define HW_SIFIVE_U_H
 
diff --git a/include/hw/riscv/sifive_uart.h b/include/hw/riscv/sifive_uart.h
index c8dc1c57fd..62f36ec2d1 100644
--- a/include/hw/riscv/sifive_uart.h
+++ b/include/hw/riscv/sifive_uart.h
@@ -17,6 +17,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_SIFIVE_UART_H
 #define HW_SIFIVE_UART_H
 
diff --git a/include/hw/riscv/spike.h b/include/hw/riscv/spike.h
index 641b70da67..f259d2558b 100644
--- a/include/hw/riscv/spike.h
+++ b/include/hw/riscv/spike.h
@@ -16,6 +16,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_RISCV_SPIKE_H
 #define HW_RISCV_SPIKE_H
 
diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h
index 568764b570..f3cf6c8279 100644
--- a/include/hw/riscv/virt.h
+++ b/include/hw/riscv/virt.h
@@ -16,6 +16,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_RISCV_VIRT_H
 #define HW_RISCV_VIRT_H
 
diff --git a/include/hw/s390x/3270-ccw.h b/include/hw/s390x/3270-ccw.h
index 9d1d18e2bd..bc24e78ec6 100644
--- a/include/hw/s390x/3270-ccw.h
+++ b/include/hw/s390x/3270-ccw.h
@@ -10,6 +10,9 @@
  * directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390X_3270_CCW_H
 #define HW_S390X_3270_CCW_H
 
diff --git a/include/hw/s390x/ap-device.h b/include/hw/s390x/ap-device.h
index 765e9082a3..2f3488115e 100644
--- a/include/hw/s390x/ap-device.h
+++ b/include/hw/s390x/ap-device.h
@@ -7,6 +7,9 @@
  * your option) any later version. See the COPYING file in the top-level
  * directory.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390X_AP_DEVICE_H
 #define HW_S390X_AP_DEVICE_H
 
diff --git a/include/hw/s390x/css-bridge.h b/include/hw/s390x/css-bridge.h
index 5a0203be5f..1f5efeb203 100644
--- a/include/hw/s390x/css-bridge.h
+++ b/include/hw/s390x/css-bridge.h
@@ -10,6 +10,8 @@
  * directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390X_CSS_BRIDGE_H
 #define HW_S390X_CSS_BRIDGE_H
 #include "qom/object.h"
diff --git a/include/hw/s390x/css.h b/include/hw/s390x/css.h
index 7cc183ef43..921975efe7 100644
--- a/include/hw/s390x/css.h
+++ b/include/hw/s390x/css.h
@@ -9,6 +9,9 @@
  * directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CSS_H
 #define CSS_H
 
diff --git a/include/hw/s390x/s390-ccw.h b/include/hw/s390x/s390-ccw.h
index 901d805d79..376351e8bc 100644
--- a/include/hw/s390x/s390-ccw.h
+++ b/include/hw/s390x/s390-ccw.h
@@ -10,6 +10,9 @@
  * directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390_CCW_H
 #define HW_S390_CCW_H
 
diff --git a/include/hw/s390x/storage-attributes.h b/include/hw/s390x/storage-attributes.h
index d6403a0a7e..5bc4715c6b 100644
--- a/include/hw/s390x/storage-attributes.h
+++ b/include/hw/s390x/storage-attributes.h
@@ -9,6 +9,9 @@
  * directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef S390_STORAGE_ATTRIBUTES_H
 #define S390_STORAGE_ATTRIBUTES_H
 
diff --git a/include/hw/s390x/tod.h b/include/hw/s390x/tod.h
index 9c4a6000c3..0ad708998b 100644
--- a/include/hw/s390x/tod.h
+++ b/include/hw/s390x/tod.h
@@ -8,6 +8,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390_TOD_H
 #define HW_S390_TOD_H
 
diff --git a/include/hw/s390x/vfio-ccw.h b/include/hw/s390x/vfio-ccw.h
index ee5250d0d7..c35e86f9e8 100644
--- a/include/hw/s390x/vfio-ccw.h
+++ b/include/hw/s390x/vfio-ccw.h
@@ -11,6 +11,9 @@
  * directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_VFIO_CCW_H
 #define HW_VFIO_CCW_H
 
diff --git a/include/hw/sh4/sh.h b/include/hw/sh4/sh.h
index 767a2df7e2..1884271351 100644
--- a/include/hw/sh4/sh.h
+++ b/include/hw/sh4/sh.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_SH_H
 #define QEMU_SH_H
 /* Definitions for SH board emulation.  */
diff --git a/include/hw/sh4/sh_intc.h b/include/hw/sh4/sh_intc.h
index adfedb2efc..3bffd67da1 100644
--- a/include/hw/sh4/sh_intc.h
+++ b/include/hw/sh4/sh_intc.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SH_INTC_H
 #define SH_INTC_H
 
diff --git a/include/hw/sparc/grlib.h b/include/hw/sparc/grlib.h
index 5606ff0a97..c278294cb1 100644
--- a/include/hw/sparc/grlib.h
+++ b/include/hw/sparc/grlib.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef GRLIB_H
 #define GRLIB_H
 
diff --git a/include/hw/sparc/sparc64.h b/include/hw/sparc/sparc64.h
index 5af4344459..131489689a 100644
--- a/include/hw/sparc/sparc64.h
+++ b/include/hw/sparc/sparc64.h
@@ -1,3 +1,4 @@
+/* FIXME Does not pass make check-headers, yet! */
 
 #define IVEC_MAX             0x40
 
diff --git a/include/hw/ssi/aspeed_smc.h b/include/hw/ssi/aspeed_smc.h
index 3b1e7fce6c..953632d29f 100644
--- a/include/hw/ssi/aspeed_smc.h
+++ b/include/hw/ssi/aspeed_smc.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ASPEED_SMC_H
 #define ASPEED_SMC_H
 
diff --git a/include/hw/ssi/xilinx_spips.h b/include/hw/ssi/xilinx_spips.h
index a0a0ae7584..7929546ad7 100644
--- a/include/hw/ssi/xilinx_spips.h
+++ b/include/hw/ssi/xilinx_spips.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XILINX_SPIPS_H
 #define XILINX_SPIPS_H
 
diff --git a/include/hw/timer/allwinner-a10-pit.h b/include/hw/timer/allwinner-a10-pit.h
index c0cc3e2169..16cfc0d62d 100644
--- a/include/hw/timer/allwinner-a10-pit.h
+++ b/include/hw/timer/allwinner-a10-pit.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ALLWINNER_A10_PIT_H
 #define ALLWINNER_A10_PIT_H
 
diff --git a/include/hw/timer/i8254_internal.h b/include/hw/timer/i8254_internal.h
index c37a438f82..8d0e0ed17f 100644
--- a/include/hw/timer/i8254_internal.h
+++ b/include/hw/timer/i8254_internal.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_I8254_INTERNAL_H
 #define QEMU_I8254_INTERNAL_H
 
diff --git a/include/hw/timer/m48t59.h b/include/hw/timer/m48t59.h
index 6f8db04fce..bf71ecd137 100644
--- a/include/hw/timer/m48t59.h
+++ b/include/hw/timer/m48t59.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_M48T59_H
 #define HW_M48T59_H
 
diff --git a/include/hw/timer/mc146818rtc.h b/include/hw/timer/mc146818rtc.h
index fe6ed63f71..a781ff1fb3 100644
--- a/include/hw/timer/mc146818rtc.h
+++ b/include/hw/timer/mc146818rtc.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MC146818RTC_H
 #define MC146818RTC_H
 
diff --git a/include/hw/timer/mc146818rtc_regs.h b/include/hw/timer/mc146818rtc_regs.h
index c62f17bf2d..0b38971417 100644
--- a/include/hw/timer/mc146818rtc_regs.h
+++ b/include/hw/timer/mc146818rtc_regs.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MC146818RTC_REGS_H
 #define MC146818RTC_REGS_H
 
diff --git a/include/hw/timer/sun4v-rtc.h b/include/hw/timer/sun4v-rtc.h
index 407278f918..11ced390a3 100644
--- a/include/hw/timer/sun4v-rtc.h
+++ b/include/hw/timer/sun4v-rtc.h
@@ -1 +1,3 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 void sun4v_rtc_init(hwaddr addr);
diff --git a/include/hw/timer/xlnx-zynqmp-rtc.h b/include/hw/timer/xlnx-zynqmp-rtc.h
index 5ba4d8bc4a..13a8dcaa11 100644
--- a/include/hw/timer/xlnx-zynqmp-rtc.h
+++ b/include/hw/timer/xlnx-zynqmp-rtc.h
@@ -24,6 +24,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "hw/register.h"
 
 #define TYPE_XLNX_ZYNQMP_RTC "xlnx-zynmp.rtc"
diff --git a/include/hw/vfio/vfio-amd-xgbe.h b/include/hw/vfio/vfio-amd-xgbe.h
index 9fff65e99d..ced25a80ae 100644
--- a/include/hw/vfio/vfio-amd-xgbe.h
+++ b/include/hw/vfio/vfio-amd-xgbe.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef HW_VFIO_VFIO_AMD_XGBE_H
 #define HW_VFIO_VFIO_AMD_XGBE_H
 
diff --git a/include/hw/vfio/vfio-calxeda-xgmac.h b/include/hw/vfio/vfio-calxeda-xgmac.h
index f994775c09..29d48d4586 100644
--- a/include/hw/vfio/vfio-calxeda-xgmac.h
+++ b/include/hw/vfio/vfio-calxeda-xgmac.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef HW_VFIO_VFIO_CALXEDA_XGMAC_H
 #define HW_VFIO_VFIO_CALXEDA_XGMAC_H
 
diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 1155b79678..5190ce02b5 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -18,6 +18,8 @@
  *  Copyright (C) 2008, IBM, Muli Ben-Yehuda (muli@il.ibm.com)
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef HW_VFIO_VFIO_COMMON_H
 #define HW_VFIO_VFIO_COMMON_H
 
diff --git a/include/hw/vfio/vfio-platform.h b/include/hw/vfio/vfio-platform.h
index 30d3c28d3b..39140e1bba 100644
--- a/include/hw/vfio/vfio-platform.h
+++ b/include/hw/vfio/vfio-platform.h
@@ -13,6 +13,8 @@
  *  Copyright Red Hat, Inc. 2012
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef HW_VFIO_VFIO_PLATFORM_H
 #define HW_VFIO_VFIO_PLATFORM_H
 
diff --git a/include/hw/virtio/virtio-access.h b/include/hw/virtio/virtio-access.h
index bdf58f3119..9a155f4c69 100644
--- a/include/hw/virtio/virtio-access.h
+++ b/include/hw/virtio/virtio-access.h
@@ -13,6 +13,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_VIRTIO_ACCESS_H
 #define QEMU_VIRTIO_ACCESS_H
 
diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h
index 60425c5d58..c629cf3298 100644
--- a/include/hw/virtio/virtio-gpu.h
+++ b/include/hw/virtio/virtio-gpu.h
@@ -11,6 +11,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef HW_VIRTIO_GPU_H
 #define HW_VIRTIO_GPU_H
 
diff --git a/include/hw/virtio/virtio-input.h b/include/hw/virtio/virtio-input.h
index 4fca03e796..0727d5449b 100644
--- a/include/hw/virtio/virtio-input.h
+++ b/include/hw/virtio/virtio-input.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_VIRTIO_INPUT_H
 #define QEMU_VIRTIO_INPUT_H
 
diff --git a/include/hw/virtio/virtio-rng.h b/include/hw/virtio/virtio-rng.h
index 922dce7cac..ee650297c2 100644
--- a/include/hw/virtio/virtio-rng.h
+++ b/include/hw/virtio/virtio-rng.h
@@ -9,6 +9,8 @@
  * top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_VIRTIO_RNG_H
 #define QEMU_VIRTIO_RNG_H
 
diff --git a/include/hw/xen/io/ring.h b/include/hw/xen/io/ring.h
index 1adacf09f9..d8365494e0 100644
--- a/include/hw/xen/io/ring.h
+++ b/include/hw/xen/io/ring.h
@@ -24,6 +24,8 @@
  * Tim Deegan and Andrew Warfield November 2004.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef __XEN_PUBLIC_IO_RING_H__
 #define __XEN_PUBLIC_IO_RING_H__
 
diff --git a/include/hw/xen/xen-backend.h b/include/hw/xen/xen-backend.h
index 010d712638..9957c671c3 100644
--- a/include/hw/xen/xen-backend.h
+++ b/include/hw/xen/xen-backend.h
@@ -5,6 +5,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_XEN, yet! */
+
 #ifndef HW_XEN_BACKEND_H
 #define HW_XEN_BACKEND_H
 
diff --git a/include/hw/xen/xen-block.h b/include/hw/xen/xen-block.h
index 11d351b4b3..a1b02af5d6 100644
--- a/include/hw/xen/xen-block.h
+++ b/include/hw/xen/xen-block.h
@@ -5,6 +5,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_XEN, yet! */
+
 #ifndef HW_XEN_BLOCK_H
 #define HW_XEN_BLOCK_H
 
diff --git a/include/hw/xen/xen-bus-helper.h b/include/hw/xen/xen-bus-helper.h
index 4c0f747445..c48f224572 100644
--- a/include/hw/xen/xen-bus-helper.h
+++ b/include/hw/xen/xen-bus-helper.h
@@ -5,6 +5,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_XEN, yet! */
+
 #ifndef HW_XEN_BUS_HELPER_H
 #define HW_XEN_BUS_HELPER_H
 
diff --git a/include/hw/xen/xen-bus.h b/include/hw/xen/xen-bus.h
index 3183f10e3c..cd02f66b59 100644
--- a/include/hw/xen/xen-bus.h
+++ b/include/hw/xen/xen-bus.h
@@ -5,6 +5,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_XEN, yet! */
+
 #ifndef HW_XEN_BUS_H
 #define HW_XEN_BUS_H
 
diff --git a/include/hw/xen/xen-legacy-backend.h b/include/hw/xen/xen-legacy-backend.h
index 07d4176ac1..1857455284 100644
--- a/include/hw/xen/xen-legacy-backend.h
+++ b/include/hw/xen/xen-legacy-backend.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers without CONFIG_XEN, yet! */
+
 #ifndef HW_XEN_LEGACY_BACKEND_H
 #define HW_XEN_LEGACY_BACKEND_H
 
diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h
index 9a8155e172..34ed53b9fc 100644
--- a/include/hw/xen/xen_common.h
+++ b/include/hw/xen/xen_common.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers without CONFIG_XEN, yet! */
+
 #ifndef QEMU_HW_XEN_COMMON_H
 #define QEMU_HW_XEN_COMMON_H
 
diff --git a/include/hw/xen/xen_pvdev.h b/include/hw/xen/xen_pvdev.h
index 83e5174d90..7d33e0c230 100644
--- a/include/hw/xen/xen_pvdev.h
+++ b/include/hw/xen/xen_pvdev.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers without CONFIG_XEN, yet! */
+
 #ifndef QEMU_HW_XEN_PVDEV_H
 #define QEMU_HW_XEN_PVDEV_H
 
diff --git a/include/libdecnumber/decNumberLocal.h b/include/libdecnumber/decNumberLocal.h
index 12cf1d8b6f..01ba6c7aea 100644
--- a/include/libdecnumber/decNumberLocal.h
+++ b/include/libdecnumber/decNumberLocal.h
@@ -37,6 +37,8 @@
 /* decNumber.h or one of decDouble (etc.) must be included first.     */
 /* ------------------------------------------------------------------ */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef DECNUMBERLOCAL_H
 #define DECNUMBERLOCAL_H
 
diff --git a/include/migration/cpu.h b/include/migration/cpu.h
index a40bd3549f..4c8dde2e95 100644
--- a/include/migration/cpu.h
+++ b/include/migration/cpu.h
@@ -1,4 +1,8 @@
 /* Declarations for use for CPU state serialization.  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIGRATION_CPU_H
 #define MIGRATION_CPU_H
 
diff --git a/include/monitor/hmp-target.h b/include/monitor/hmp-target.h
index 454e8ed155..c022fd3b39 100644
--- a/include/monitor/hmp-target.h
+++ b/include/monitor/hmp-target.h
@@ -22,6 +22,9 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MONITOR_HMP_TARGET_H
 #define MONITOR_HMP_TARGET_H
 
diff --git a/include/qemu/atomic128.h b/include/qemu/atomic128.h
index ddd0d55d31..8dcf19482d 100644
--- a/include/qemu/atomic128.h
+++ b/include/qemu/atomic128.h
@@ -10,6 +10,8 @@
  * atomic primitive is meant to provide.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_ATOMIC128_H
 #define QEMU_ATOMIC128_H
 
diff --git a/include/qemu/futex.h b/include/qemu/futex.h
index 91ae88966e..0fa19d30df 100644
--- a/include/qemu/futex.h
+++ b/include/qemu/futex.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef QEMU_FUTEX_H
 #define QEMU_FUTEX_H
 
diff --git a/include/qemu/ratelimit.h b/include/qemu/ratelimit.h
index 1b38291823..efd6074823 100644
--- a/include/qemu/ratelimit.h
+++ b/include/qemu/ratelimit.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_RATELIMIT_H
 #define QEMU_RATELIMIT_H
 
diff --git a/include/qemu/thread-win32.h b/include/qemu/thread-win32.h
index 50af5dd7ab..e09a7ba397 100644
--- a/include/qemu/thread-win32.h
+++ b/include/qemu/thread-win32.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_THREAD_WIN32_H
 #define QEMU_THREAD_WIN32_H
 
diff --git a/include/qemu/xattr.h b/include/qemu/xattr.h
index a83fe8e749..8dae5620e4 100644
--- a/include/qemu/xattr.h
+++ b/include/qemu/xattr.h
@@ -10,6 +10,9 @@
  * later version.  See the COPYING file in the top-level directory.
  *
  */
+
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef QEMU_XATTR_H
 #define QEMU_XATTR_H
 
diff --git a/include/sysemu/balloon.h b/include/sysemu/balloon.h
index c8f6145257..ec77a48925 100644
--- a/include/sysemu/balloon.h
+++ b/include/sysemu/balloon.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_BALLOON_H
 #define QEMU_BALLOON_H
 
diff --git a/include/sysemu/cryptodev-vhost-user.h b/include/sysemu/cryptodev-vhost-user.h
index 6debf53fc5..d2bbd854c4 100644
--- a/include/sysemu/cryptodev-vhost-user.h
+++ b/include/sysemu/cryptodev-vhost-user.h
@@ -20,6 +20,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  *
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CRYPTODEV_VHOST_USER_H
 #define CRYPTODEV_VHOST_USER_H
 
diff --git a/include/sysemu/dump.h b/include/sysemu/dump.h
index d824bc0941..e728f26e8e 100644
--- a/include/sysemu/dump.h
+++ b/include/sysemu/dump.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef DUMP_H
 #define DUMP_H
 
diff --git a/include/sysemu/hvf.h b/include/sysemu/hvf.h
index 300bf3e9a8..f8d3e1802b 100644
--- a/include/sysemu/hvf.h
+++ b/include/sysemu/hvf.h
@@ -10,6 +10,9 @@
 
 /* header to be included in non-HVF-specific code */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HVF_H
 #define HVF_H
 
diff --git a/include/sysemu/iothread.h b/include/sysemu/iothread.h
index 5f6240d5cb..8d8af53df8 100644
--- a/include/sysemu/iothread.h
+++ b/include/sysemu/iothread.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef IOTHREAD_H
 #define IOTHREAD_H
 
diff --git a/include/sysemu/kvm_int.h b/include/sysemu/kvm_int.h
index f838412491..18f48589c1 100644
--- a/include/sysemu/kvm_int.h
+++ b/include/sysemu/kvm_int.h
@@ -6,6 +6,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_KVM_INT_H
 #define QEMU_KVM_INT_H
 
diff --git a/include/sysemu/memory_mapping.h b/include/sysemu/memory_mapping.h
index 58452457ce..6fb5b42cf1 100644
--- a/include/sysemu/memory_mapping.h
+++ b/include/sysemu/memory_mapping.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MEMORY_MAPPING_H
 #define MEMORY_MAPPING_H
 
diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h
index 629c8c648b..5a7dabe22c 100644
--- a/include/sysemu/os-posix.h
+++ b/include/sysemu/os-posix.h
@@ -23,6 +23,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_POSIX, yet! */
+
 #ifndef QEMU_OS_POSIX_H
 #define QEMU_OS_POSIX_H
 
diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h
index ff18b23db1..b828117bb6 100644
--- a/include/sysemu/os-win32.h
+++ b/include/sysemu/os-win32.h
@@ -23,6 +23,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_WIN32, yet! */
+
 #ifndef QEMU_OS_WIN32_H
 #define QEMU_OS_WIN32_H
 
diff --git a/include/sysemu/xen-mapcache.h b/include/sysemu/xen-mapcache.h
index a03e2f1878..e3acb95b42 100644
--- a/include/sysemu/xen-mapcache.h
+++ b/include/sysemu/xen-mapcache.h
@@ -6,6 +6,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XEN_MAPCACHE_H
 #define XEN_MAPCACHE_H
 
diff --git a/include/trace-tcg.h b/include/trace-tcg.h
index da68608c85..6084376731 100644
--- a/include/trace-tcg.h
+++ b/include/trace-tcg.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TRACE_TCG_H
 #define TRACE_TCG_H
 
diff --git a/include/ui/console.h b/include/ui/console.h
index fef900db76..e209301433 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef CONSOLE_H
 #define CONSOLE_H
 
diff --git a/include/ui/egl-context.h b/include/ui/egl-context.h
index f004ce11a7..09de0bab21 100644
--- a/include/ui/egl-context.h
+++ b/include/ui/egl-context.h
@@ -1,3 +1,6 @@
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+/* FIXME Does not pass make check-headers without CONFIG_OPENGL, yet! */
+
 #ifndef EGL_CONTEXT_H
 #define EGL_CONTEXT_H
 
diff --git a/include/ui/egl-helpers.h b/include/ui/egl-helpers.h
index b976cb8728..745781a2f1 100644
--- a/include/ui/egl-helpers.h
+++ b/include/ui/egl-helpers.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef EGL_HELPERS_H
 #define EGL_HELPERS_H
 
diff --git a/include/ui/gtk.h b/include/ui/gtk.h
index d9eedad976..1bad122097 100644
--- a/include/ui/gtk.h
+++ b/include/ui/gtk.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef UI_GTK_H
 #define UI_GTK_H
 
diff --git a/include/ui/input.h b/include/ui/input.h
index 8c8ccb999f..718f152f98 100644
--- a/include/ui/input.h
+++ b/include/ui/input.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef INPUT_H
 #define INPUT_H
 
diff --git a/include/ui/pixel_ops.h b/include/ui/pixel_ops.h
index d390adfd1b..18d5e181a6 100644
--- a/include/ui/pixel_ops.h
+++ b/include/ui/pixel_ops.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 static inline unsigned int rgb_to_pixel8(unsigned int r, unsigned int g,
                                          unsigned int b)
 {
diff --git a/include/ui/qemu-pixman.h b/include/ui/qemu-pixman.h
index 0668109305..a57e7f71a3 100644
--- a/include/ui/qemu-pixman.h
+++ b/include/ui/qemu-pixman.h
@@ -3,6 +3,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef QEMU_PIXMAN_H
 #define QEMU_PIXMAN_H
 
diff --git a/include/ui/sdl2.h b/include/ui/sdl2.h
index 0875b8d56b..c57525755f 100644
--- a/include/ui/sdl2.h
+++ b/include/ui/sdl2.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SDL2_H
 #define SDL2_H
 
diff --git a/include/ui/shader.h b/include/ui/shader.h
index 4c5acb2ce8..c062cac55f 100644
--- a/include/ui/shader.h
+++ b/include/ui/shader.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers without CONFIG_OPENGL, yet! */
+
 #ifndef QEMU_SHADER_H
 #define QEMU_SHADER_H
 
diff --git a/include/ui/spice-display.h b/include/ui/spice-display.h
index 53c3612c32..ce02c03a91 100644
--- a/include/ui/spice-display.h
+++ b/include/ui/spice-display.h
@@ -15,6 +15,8 @@
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include <spice/ipc_ring.h>
 #include <spice/enums.h>
 #include <spice/qxl_dev.h>
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 2b8d34ca25..16f9657553 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -15,6 +15,7 @@ check-help:
 	@echo " $(MAKE) check-tcg            Run TCG tests"
 	@echo " $(MAKE) check-softfloat      Run FPU emulation tests"
 	@echo " $(MAKE) check-acceptance     Run all acceptance (functional) tests"
+	@echo " $(MAKE) check-source         Run source code tests"
 	@echo
 	@echo " $(MAKE) check-report.html    Generates an HTML test report"
 	@echo " $(MAKE) check-venv           Creates a Python venv for tests"
@@ -485,6 +486,7 @@ generated-files-y += tests/test-qapi-introspect.h
 
 QEMU_CFLAGS += -I$(SRC_PATH)/tests
 
+include $(SRC_PATH)/tests/check-headers.mak
 
 # Deps that are common to various different sets of tests below
 test-util-obj-y = libqemuutil.a
@@ -1147,13 +1149,38 @@ check-acceptance: check-venv $(TESTS_RESULTS_DIR)
             --failfast=on $(SRC_PATH)/tests/acceptance, \
             "AVOCADO", "tests/acceptance")
 
+# Header sanity checking
+
+RECURSIVE_TARGETS += check-headers check-bad-headers
+
+.PHONY: check-headers check-bad-headers
+ifeq ($(wildcard $(SRC_PATH)/.git),)
+check-headers check-bad-headers:
+	@echo "  SKIP  $@ (requires a git tree)"
+else
+check-headers: $(check-header-tests:.c=.o)
+check-headers: $(addsuffix /check-headers, $(TARGET_DIRS))
+
+# Expected to fail:
+check-bad-headers: $(check-bad-header-tests:.c=.o)
+check-bad-headers: $(addsuffix /check-bad-headers, $(TARGET_DIRS))
+
+.SECONDARY: $(check-header-tests) $(check-bad-header-tests)
+$(check-header-tests) $(check-bad-header-tests): tests/header-test-template.c
+	@mkdir -p $(dir $@)
+	@sed 's,@header@,$(subst tests/headers/,,$(@:.c=.h)),' <$< >$@
+endif
+
 # Consolidated targets
 
-.PHONY: check-block check-qapi-schema check-qtest check-unit check check-clean
+.PHONY: check-block check-qapi-schema check-qtest check-unit check-source
+.PHONY: check check-clean
 check-qapi-schema: $(patsubst %,check-%, $(check-qapi-schema-y)) check-tests/qapi-schema/doc-good.texi
 check-qtest: $(patsubst %,check-qtest-%, $(QTEST_TARGETS))
 check-block: $(patsubst %,check-%, $(check-block-y))
-check: check-qapi-schema check-unit check-softfloat check-qtest check-decodetree
+check-source: check-headers
+check: check-qapi-schema check-unit check-softfloat check-qtest check-decodetree check-source
+
 check-clean:
 	rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y)
 	rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y)) $(check-qtest-generic-y))
@@ -1168,5 +1195,6 @@ all: $(QEMU_IOTESTS_HELPERS-y)
 
 -include $(wildcard tests/*.d)
 -include $(wildcard tests/libqos/*.d)
+-include $(check-header-tests:.c=.d) $(check-bad-header-tests:.c=.d)
 
 endif
diff --git a/tests/check-headers.mak b/tests/check-headers.mak
new file mode 100644
index 0000000000..1facce517e
--- /dev/null
+++ b/tests/check-headers.mak
@@ -0,0 +1,42 @@
+# -*- Mode: makefile -*-
+
+ifneq ($(wildcard $(SRC_PATH)/.git),)
+
+# All headers:
+src-headers := $(filter %.h, $(shell cd $(SRC_PATH) && git ls-files))
+
+# Third party headers we don't want to mess with:
+excluded-headers := $(filter disas/libvixl/vixl/% include/standard-headers/% linux-headers/% pc-bios/% slirp/%, $(src-headers))
+# Funny stuff we don't want to mess with:
+excluded-headers += $(filter tests/multiboot/% tests/tcg/% tests/uefi-test-tools/%, $(src-headers))
+excluded-headers += scripts/cocci-macro-file.h
+# Exclude all but include/ for now:
+excluded-headers += $(filter-out include/%, $(src-headers))
+
+# Headers that require -DNEED_CPU_H etc.
+target-header-comment := NOTE: May only be included into target-dependent code
+target-headers := $(shell cd $(SRC_PATH) && egrep -l '$(target-header-comment)' $(src-headers))
+
+# Headers carrying a FIXME about this test:
+bad-header-without-linux$(CONFIG_LINUX) := | without CONFIG_LINUX
+bad-header-without-opengl$(CONFIG_OPENGL) := | without CONFIG_OPENGL
+bad-header-without-posix$(CONFIG_POSIX) := | without CONFIG_POSIX
+bad-header-without-spice$(CONFIG_SPICE) := | without CONFIG_SPICE
+bad-header-without-system-emu$(TARGET_DIRS) := | without system emulation
+bad-header-without-win32$(CONFIG_WIN32) := | without CONFIG_WIN32
+bad-header-without-xen$(CONFIG_XEN) := | without CONFIG_XEN
+bad-header-comment := FIXME Does not pass make check-headers($(bad-header-without-linux)$(bad-header-without-opengl)$(bad-header-without-posix)$(bad-header-without-spice)$(bad-header-without-system-emu)$(bad-header-without-win32)$(bad-header-without-xen)), yet!
+bad-headers := $(shell cd $(SRC_PATH) && egrep -l '$(bad-header-comment)' $(src-headers))
+bad-target-headers := $(filter $(target-headers), $(bad-headers))
+
+# Checked headers (all less excluded and bad):
+checked-headers := $(filter-out $(excluded-headers) $(bad-headers) $(target-headers), $(src-headers))
+check-header-tests := $(patsubst %.h, tests/headers/%.c, $(checked-headers))
+checked-target-headers := $(filter-out $(excluded-headers) $(bad-headers), $(target-headers))
+check-target-header-tests := $(patsubst %.h, tests/headers/%.c, $(checked-target-headers))
+
+# Bad headers (all less excluded and checked):
+check-bad-header-tests := $(patsubst %.h, tests/headers/%.c, $(filter-out $(bad-target-headers), $(bad-headers)))
+check-bad-target-header-tests := $(patsubst %.h, tests/headers/%.c, $(bad-target-headers))
+
+endif
diff --git a/tests/header-test-template.c b/tests/header-test-template.c
new file mode 100644
index 0000000000..b6f86f4abc
--- /dev/null
+++ b/tests/header-test-template.c
@@ -0,0 +1,16 @@
+/*
+ * Template for make check-headers
+ *
+ * Copyright (C) 2016 Red Hat, Inc.
+ *
+ * Authors:
+ *  Markus Armbruster <armbru@redhat.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or
+ * later.  See the COPYING file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "@header@"
+/* Include a second time to catch missing header guard */
+#include "@header@"
-- 
2.17.2



^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/
  2019-05-23  8:15 [Qemu-devel] [RFC v4 0/7] Baby steps towards saner headers Markus Armbruster
                   ` (4 preceding siblings ...)
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 5/7] tests: New make target check-source Markus Armbruster
@ 2019-05-23  8:15 ` Markus Armbruster
  2019-05-24  7:24   ` Thomas Huth
  2019-05-24  9:11   ` Peter Maydell
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 7/7] tests: Make check-source cover generated headers Markus Armbruster
  6 siblings, 2 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-23  8:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, pbonzini

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 accel/tcg/atomic_template.h                | 3 +++
 accel/tcg/tcg-runtime.h                    | 3 +++
 accel/tcg/translate-all.h                  | 4 ++++
 audio/audio_int.h                          | 2 ++
 audio/audio_template.h                     | 2 ++
 audio/audio_win_int.h                      | 2 ++
 audio/dsound_template.h                    | 3 +++
 audio/mixeng_template.h                    | 2 ++
 audio/rate_template.h                      | 2 ++
 block/crypto.h                             | 2 ++
 block/qcow2.h                              | 2 ++
 block/vhdx.h                               | 2 ++
 bsd-user/i386/target_signal.h              | 3 +++
 bsd-user/i386/target_syscall.h             | 2 ++
 bsd-user/qemu.h                            | 4 ++++
 bsd-user/sparc/target_signal.h             | 3 +++
 bsd-user/sparc/target_syscall.h            | 2 ++
 bsd-user/sparc64/target_signal.h           | 3 +++
 bsd-user/sparc64/target_syscall.h          | 2 ++
 bsd-user/syscall_defs.h                    | 2 ++
 bsd-user/x86_64/target_signal.h            | 3 +++
 bsd-user/x86_64/target_syscall.h           | 2 ++
 contrib/ivshmem-client/ivshmem-client.h    | 2 ++
 contrib/ivshmem-server/ivshmem-server.h    | 2 ++
 contrib/libvhost-user/libvhost-user-glib.h | 2 ++
 contrib/libvhost-user/libvhost-user.h      | 2 ++
 contrib/rdmacm-mux/rdmacm-mux.h            | 2 ++
 crypto/afalgpriv.h                         | 2 ++
 crypto/cipherpriv.h                        | 2 ++
 crypto/hashpriv.h                          | 2 ++
 crypto/hmacpriv.h                          | 2 ++
 disas/nanomips.h                           | 2 ++
 fpu/softfloat-specialize.h                 | 3 +++
 fsdev/file-op-9p.h                         | 2 ++
 fsdev/qemu-fsdev.h                         | 3 +++
 hw/9pfs/9p-local.h                         | 2 ++
 hw/9pfs/9p-proxy.h                         | 2 ++
 hw/9pfs/9p-synth.h                         | 2 ++
 hw/9pfs/9p-util.h                          | 2 ++
 hw/9pfs/9p-xattr.h                         | 2 ++
 hw/9pfs/9p.h                               | 2 ++
 hw/9pfs/coth.h                             | 2 ++
 hw/9pfs/virtio-9p.h                        | 2 ++
 hw/9pfs/xen-9pfs.h                         | 3 ++-
 hw/arm/smmu-internal.h                     | 2 ++
 hw/arm/smmuv3-internal.h                   | 2 ++
 hw/audio/hda-codec-common.h                | 3 ++-
 hw/audio/lm4549.h                          | 2 ++
 hw/block/dataplane/xen-block.h             | 2 ++
 hw/block/nvme.h                            | 2 ++
 hw/block/xen_blkif.h                       | 2 ++
 hw/cris/boot.h                             | 2 ++
 hw/display/ati_int.h                       | 2 ++
 hw/display/cirrus_vga_internal.h           | 2 ++
 hw/display/cirrus_vga_rop.h                | 2 ++
 hw/display/cirrus_vga_rop2.h               | 2 ++
 hw/display/framebuffer.h                   | 2 ++
 hw/display/milkymist-vgafb_template.h      | 3 ++-
 hw/display/omap_lcd_template.h             | 3 +++
 hw/display/pl110_template.h                | 2 ++
 hw/display/pxa2xx_template.h               | 2 ++
 hw/display/qxl.h                           | 4 ++++
 hw/display/sm501_template.h                | 2 ++
 hw/display/tc6393xb_template.h             | 2 ++
 hw/display/vga-helpers.h                   | 2 ++
 hw/display/vga_int.h                       | 2 ++
 hw/ide/ahci_internal.h                     | 2 ++
 hw/input/adb-internal.h                    | 2 ++
 hw/lm32/lm32.h                             | 2 ++
 hw/lm32/lm32_hwsetup.h                     | 3 +++
 hw/lm32/milkymist-hw.h                     | 2 ++
 hw/microblaze/boot.h                       | 2 ++
 hw/net/can/can_sja1000.h                   | 3 +++
 hw/net/e1000e_core.h                       | 2 ++
 hw/net/e1000x_common.h                     | 2 ++
 hw/net/pcnet.h                             | 2 ++
 hw/net/rocker/rocker_desc.h                | 2 ++
 hw/net/rocker/rocker_fp.h                  | 2 ++
 hw/net/rocker/rocker_of_dpa.h              | 2 ++
 hw/net/rocker/rocker_tlv.h                 | 2 ++
 hw/net/rocker/rocker_world.h               | 2 ++
 hw/net/vmware_utils.h                      | 2 ++
 hw/net/vmxnet3_defs.h                      | 3 ++-
 hw/nios2/boot.h                            | 3 +++
 hw/ppc/ppc405.h                            | 2 ++
 hw/ppc/ppc440.h                            | 2 ++
 hw/rdma/rdma_backend.h                     | 2 ++
 hw/rdma/rdma_backend_defs.h                | 2 ++
 hw/rdma/rdma_rm.h                          | 2 ++
 hw/rdma/rdma_rm_defs.h                     | 2 ++
 hw/rdma/vmw/pvrdma.h                       | 2 ++
 hw/rdma/vmw/pvrdma_dev_ring.h              | 2 ++
 hw/rdma/vmw/pvrdma_qp_ops.h                | 2 ++
 hw/s390x/ccw-device.h                      | 3 +++
 hw/s390x/ipl.h                             | 3 +++
 hw/s390x/s390-pci-bus.h                    | 3 +++
 hw/s390x/s390-pci-inst.h                   | 3 +++
 hw/s390x/s390-virtio-hcall.h               | 2 ++
 hw/s390x/virtio-ccw.h                      | 3 +++
 hw/scsi/mptsas.h                           | 2 ++
 hw/scsi/viosrp.h                           | 3 +++
 hw/sd/sdhci-internal.h                     | 3 +++
 hw/timer/m48t59-internal.h                 | 2 ++
 hw/tpm/tpm_ioctl.h                         | 2 ++
 hw/usb/desc.h                              | 2 ++
 hw/usb/hcd-ohci.h                          | 2 ++
 hw/usb/hcd-xhci.h                          | 2 ++
 hw/usb/quirks.h                            | 2 ++
 hw/vfio/pci.h                              | 3 +++
 hw/xen/xen_pt.h                            | 2 ++
 hw/xtensa/bootparam.h                      | 2 ++
 hw/xtensa/xtensa_memory.h                  | 3 +++
 linux-user/aarch64/target_cpu.h            | 3 +++
 linux-user/aarch64/target_fcntl.h          | 3 +++
 linux-user/aarch64/target_signal.h         | 2 ++
 linux-user/aarch64/target_structs.h        | 3 +++
 linux-user/aarch64/target_syscall.h        | 3 +++
 linux-user/aarch64/termbits.h              | 2 ++
 linux-user/alpha/target_cpu.h              | 3 +++
 linux-user/alpha/target_fcntl.h            | 3 +++
 linux-user/alpha/target_signal.h           | 2 ++
 linux-user/alpha/target_structs.h          | 3 +++
 linux-user/alpha/target_syscall.h          | 2 ++
 linux-user/alpha/termbits.h                | 2 ++
 linux-user/arm/nwfpe/fpa11.h               | 3 +++
 linux-user/arm/nwfpe/fpopcode.h            | 2 ++
 linux-user/arm/target_cpu.h                | 3 +++
 linux-user/arm/target_fcntl.h              | 3 +++
 linux-user/arm/target_signal.h             | 2 ++
 linux-user/arm/target_structs.h            | 3 +++
 linux-user/arm/target_syscall.h            | 3 +++
 linux-user/arm/termbits.h                  | 2 ++
 linux-user/cpu_loop-common.h               | 3 +++
 linux-user/cris/target_cpu.h               | 3 +++
 linux-user/cris/target_fcntl.h             | 3 +++
 linux-user/cris/target_signal.h            | 2 ++
 linux-user/cris/target_structs.h           | 3 +++
 linux-user/cris/termbits.h                 | 2 ++
 linux-user/fd-trans.h                      | 2 ++
 linux-user/flat.h                          | 2 ++
 linux-user/generic/fcntl.h                 | 3 +++
 linux-user/host/aarch64/hostdep.h          | 2 ++
 linux-user/host/arm/hostdep.h              | 2 ++
 linux-user/host/i386/hostdep.h             | 2 ++
 linux-user/host/ppc64/hostdep.h            | 2 ++
 linux-user/host/riscv64/hostdep.h          | 2 ++
 linux-user/host/s390x/hostdep.h            | 2 ++
 linux-user/host/x86_64/hostdep.h           | 2 ++
 linux-user/hppa/target_cpu.h               | 3 +++
 linux-user/hppa/target_fcntl.h             | 3 +++
 linux-user/hppa/target_signal.h            | 2 ++
 linux-user/hppa/target_structs.h           | 3 +++
 linux-user/hppa/target_syscall.h           | 2 ++
 linux-user/hppa/termbits.h                 | 2 ++
 linux-user/i386/target_cpu.h               | 3 +++
 linux-user/i386/target_fcntl.h             | 3 +++
 linux-user/i386/target_signal.h            | 2 ++
 linux-user/i386/target_structs.h           | 3 +++
 linux-user/i386/target_syscall.h           | 2 ++
 linux-user/i386/termbits.h                 | 2 ++
 linux-user/ioctls.h                        | 2 ++
 linux-user/linux_loop.h                    | 2 ++
 linux-user/m68k/target_cpu.h               | 2 ++
 linux-user/m68k/target_elf.h               | 2 ++
 linux-user/m68k/target_fcntl.h             | 3 +++
 linux-user/m68k/target_signal.h            | 2 ++
 linux-user/m68k/target_structs.h           | 3 +++
 linux-user/m68k/target_syscall.h           | 2 ++
 linux-user/m68k/termbits.h                 | 2 ++
 linux-user/microblaze/target_cpu.h         | 3 +++
 linux-user/microblaze/target_fcntl.h       | 3 +++
 linux-user/microblaze/target_signal.h      | 2 ++
 linux-user/microblaze/target_structs.h     | 3 +++
 linux-user/microblaze/termbits.h           | 2 ++
 linux-user/mips/target_cpu.h               | 3 +++
 linux-user/mips/target_elf.h               | 2 ++
 linux-user/mips/target_fcntl.h             | 3 +++
 linux-user/mips/target_signal.h            | 3 +++
 linux-user/mips/target_structs.h           | 3 +++
 linux-user/mips/target_syscall.h           | 2 ++
 linux-user/mips/termbits.h                 | 2 ++
 linux-user/mips64/syscall_nr.h             | 2 ++
 linux-user/mips64/target_cpu.h             | 3 +++
 linux-user/mips64/target_elf.h             | 2 ++
 linux-user/mips64/target_fcntl.h           | 3 +++
 linux-user/mips64/target_signal.h          | 2 ++
 linux-user/mips64/target_structs.h         | 2 ++
 linux-user/mips64/target_syscall.h         | 2 ++
 linux-user/mips64/termbits.h               | 2 ++
 linux-user/nios2/target_cpu.h              | 2 ++
 linux-user/nios2/target_fcntl.h            | 3 +++
 linux-user/nios2/target_signal.h           | 2 ++
 linux-user/nios2/target_structs.h          | 3 +++
 linux-user/nios2/termbits.h                | 2 ++
 linux-user/openrisc/target_cpu.h           | 2 ++
 linux-user/openrisc/target_fcntl.h         | 3 +++
 linux-user/openrisc/target_signal.h        | 2 ++
 linux-user/openrisc/target_structs.h       | 3 +++
 linux-user/openrisc/target_syscall.h       | 3 +++
 linux-user/openrisc/termbits.h             | 2 ++
 linux-user/ppc/syscall_nr.h                | 3 +++
 linux-user/ppc/target_cpu.h                | 4 ++++
 linux-user/ppc/target_elf.h                | 2 ++
 linux-user/ppc/target_fcntl.h              | 3 +++
 linux-user/ppc/target_signal.h             | 3 +++
 linux-user/ppc/target_structs.h            | 3 +++
 linux-user/ppc/target_syscall.h            | 3 +++
 linux-user/ppc/termbits.h                  | 2 ++
 linux-user/qemu.h                          | 2 ++
 linux-user/riscv/target_cpu.h              | 2 ++
 linux-user/riscv/target_fcntl.h            | 3 +++
 linux-user/riscv/target_signal.h           | 2 ++
 linux-user/riscv/target_structs.h          | 3 +++
 linux-user/riscv/target_syscall.h          | 2 ++
 linux-user/riscv/termbits.h                | 2 ++
 linux-user/s390x/syscall_nr.h              | 2 ++
 linux-user/s390x/target_cpu.h              | 3 +++
 linux-user/s390x/target_fcntl.h            | 3 +++
 linux-user/s390x/target_signal.h           | 2 ++
 linux-user/s390x/target_structs.h          | 3 +++
 linux-user/s390x/target_syscall.h          | 2 ++
 linux-user/s390x/termbits.h                | 2 ++
 linux-user/sh4/target_cpu.h                | 3 +++
 linux-user/sh4/target_fcntl.h              | 3 +++
 linux-user/sh4/target_signal.h             | 2 ++
 linux-user/sh4/target_structs.h            | 3 +++
 linux-user/sh4/target_syscall.h            | 2 ++
 linux-user/sh4/termbits.h                  | 2 ++
 linux-user/signal-common.h                 | 3 +++
 linux-user/socket.h                        | 2 ++
 linux-user/sparc/target_cpu.h              | 4 ++++
 linux-user/sparc/target_elf.h              | 2 ++
 linux-user/sparc/target_fcntl.h            | 3 +++
 linux-user/sparc/target_signal.h           | 2 ++
 linux-user/sparc/target_structs.h          | 3 +++
 linux-user/sparc/target_syscall.h          | 2 ++
 linux-user/sparc/termbits.h                | 2 ++
 linux-user/sparc64/target_cpu.h            | 3 +++
 linux-user/sparc64/target_fcntl.h          | 3 +++
 linux-user/sparc64/target_signal.h         | 2 ++
 linux-user/sparc64/target_structs.h        | 3 +++
 linux-user/sparc64/target_syscall.h        | 3 +++
 linux-user/sparc64/termbits.h              | 2 ++
 linux-user/syscall_defs.h                  | 2 ++
 linux-user/syscall_types.h                 | 2 ++
 linux-user/tilegx/target_cpu.h             | 3 +++
 linux-user/tilegx/target_fcntl.h           | 3 +++
 linux-user/tilegx/target_signal.h          | 2 ++
 linux-user/tilegx/target_structs.h         | 3 +++
 linux-user/tilegx/target_syscall.h         | 2 ++
 linux-user/uname.h                         | 2 ++
 linux-user/x86_64/target_cpu.h             | 3 +++
 linux-user/x86_64/target_fcntl.h           | 3 +++
 linux-user/x86_64/target_signal.h          | 2 ++
 linux-user/x86_64/target_structs.h         | 3 +++
 linux-user/x86_64/target_syscall.h         | 2 ++
 linux-user/x86_64/termbits.h               | 2 ++
 linux-user/xtensa/target_cpu.h             | 3 +++
 linux-user/xtensa/target_elf.h             | 2 ++
 linux-user/xtensa/target_fcntl.h           | 3 +++
 linux-user/xtensa/target_signal.h          | 2 ++
 linux-user/xtensa/target_structs.h         | 3 +++
 linux-user/xtensa/target_syscall.h         | 2 ++
 linux-user/xtensa/termbits.h               | 2 ++
 migration/postcopy-ram.h                   | 3 +++
 migration/qemu-file.h                      | 2 ++
 net/colo-compare.h                         | 2 ++
 qemu-options-wrapper.h                     | 1 +
 qga/guest-agent-core.h                     | 3 +++
 qga/service-win32.h                        | 2 ++
 qga/vss-win32.h                            | 2 ++
 qga/vss-win32/install.h                    | 2 ++
 qga/vss-win32/requester.h                  | 2 ++
 qga/vss-win32/vss-common.h                 | 2 ++
 replay/replay-internal.h                   | 2 ++
 replication.h                              | 2 ++
 target/alpha/cpu.h                         | 3 +++
 target/alpha/helper.h                      | 2 ++
 target/arm/arm-powerctl.h                  | 3 +++
 target/arm/arm_ldst.h                      | 3 +++
 target/arm/cpu.h                           | 3 +++
 target/arm/helper-a64.h                    | 3 +++
 target/arm/helper-sve.h                    | 2 ++
 target/arm/helper.h                        | 3 +++
 target/arm/internals.h                     | 2 ++
 target/arm/kvm-consts.h                    | 4 ++++
 target/arm/kvm_arm.h                       | 3 +++
 target/arm/op_addsub.h                     | 2 ++
 target/arm/translate-a64.h                 | 2 ++
 target/arm/translate.h                     | 3 +++
 target/cris/cpu.h                          | 3 +++
 target/cris/helper.h                       | 2 ++
 target/cris/mmu.h                          | 2 ++
 target/hppa/cpu.h                          | 3 +++
 target/hppa/helper.h                       | 2 ++
 target/i386/cc_helper_template.h           | 2 ++
 target/i386/cpu-qom.h                      | 3 +++
 target/i386/cpu.h                          | 3 +++
 target/i386/hax-i386.h                     | 3 +++
 target/i386/hax-posix.h                    | 2 ++
 target/i386/hax-windows.h                  | 2 ++
 target/i386/helper.h                       | 3 +++
 target/i386/hvf/hvf-i386.h                 | 3 +++
 target/i386/hvf/vmcs.h                     | 2 ++
 target/i386/hvf/vmx.h                      | 2 ++
 target/i386/hvf/x86.h                      | 2 ++
 target/i386/hvf/x86_decode.h               | 3 +++
 target/i386/hvf/x86_descr.h                | 2 ++
 target/i386/hvf/x86_emu.h                  | 3 +++
 target/i386/hvf/x86_flags.h                | 3 +++
 target/i386/hvf/x86_mmu.h                  | 2 ++
 target/i386/hvf/x86_task.h                 | 2 ++
 target/i386/hvf/x86hvf.h                   | 4 ++++
 target/i386/hyperv.h                       | 3 +++
 target/i386/kvm_i386.h                     | 3 +++
 target/i386/ops_sse.h                      | 3 +++
 target/i386/ops_sse_header.h               | 4 ++++
 target/i386/sev_i386.h                     | 3 +++
 target/i386/shift_helper_template.h        | 2 ++
 target/i386/whp-dispatch.h                 | 2 ++
 target/lm32/cpu.h                          | 3 +++
 target/lm32/helper.h                       | 2 ++
 target/m68k/cpu.h                          | 3 +++
 target/m68k/helper.h                       | 3 +++
 target/m68k/softfloat.h                    | 2 ++
 target/m68k/softfloat_fpsp_tables.h        | 2 ++
 target/microblaze/cpu.h                    | 3 +++
 target/microblaze/helper.h                 | 2 ++
 target/microblaze/mmu.h                    | 2 ++
 target/mips/cpu-qom.h                      | 3 +++
 target/mips/cpu.h                          | 3 +++
 target/mips/helper.h                       | 3 +++
 target/mips/internal.h                     | 3 +++
 target/mips/kvm_mips.h                     | 2 ++
 target/mips/mips-defs.h                    | 2 ++
 target/moxie/cpu.h                         | 3 +++
 target/moxie/helper.h                      | 2 ++
 target/moxie/machine.h                     | 2 ++
 target/moxie/mmu.h                         | 2 ++
 target/nios2/cpu.h                         | 3 +++
 target/nios2/helper.h                      | 2 ++
 target/nios2/mmu.h                         | 2 ++
 target/openrisc/cpu.h                      | 3 +++
 target/openrisc/exception.h                | 3 +++
 target/openrisc/helper.h                   | 2 ++
 target/ppc/cpu-models.h                    | 3 +++
 target/ppc/cpu-qom.h                       | 3 +++
 target/ppc/cpu.h                           | 3 +++
 target/ppc/helper.h                        | 3 +++
 target/ppc/helper_regs.h                   | 3 +++
 target/ppc/internal.h                      | 3 +++
 target/ppc/kvm_ppc.h                       | 3 +++
 target/ppc/mmu-book3s-v3.h                 | 3 +++
 target/ppc/mmu-hash32.h                    | 2 ++
 target/ppc/mmu-hash64.h                    | 3 +++
 target/ppc/mmu-radix64.h                   | 3 +++
 target/riscv/cpu.h                         | 3 +++
 target/riscv/helper.h                      | 2 ++
 target/riscv/instmap.h                     | 2 ++
 target/riscv/pmp.h                         | 2 ++
 target/s390x/cpu.h                         | 2 ++
 target/s390x/cpu_features.h                | 2 ++
 target/s390x/cpu_models.h                  | 2 ++
 target/s390x/helper.h                      | 2 ++
 target/s390x/internal.h                    | 2 ++
 target/s390x/tcg_s390x.h                   | 2 ++
 target/sh4/cpu.h                           | 3 +++
 target/sh4/helper.h                        | 2 ++
 target/sparc/cpu-qom.h                     | 3 +++
 target/sparc/cpu.h                         | 3 +++
 target/sparc/helper.h                      | 3 +++
 target/tilegx/cpu.h                        | 3 +++
 target/tilegx/helper.h                     | 2 ++
 target/tricore/cpu.h                       | 3 +++
 target/tricore/helper.h                    | 2 ++
 target/tricore/tricore-defs.h              | 2 ++
 target/tricore/tricore-opcodes.h           | 2 ++
 target/unicore32/cpu.h                     | 3 +++
 target/unicore32/helper.h                  | 2 ++
 target/xtensa/cpu.h                        | 3 +++
 target/xtensa/helper.h                     | 2 ++
 target/xtensa/overlay_tool.h               | 3 +++
 target/xtensa/xtensa-isa-internal.h        | 2 ++
 tcg/aarch64/tcg-target.h                   | 2 ++
 tcg/aarch64/tcg-target.opc.h               | 3 +++
 tcg/arm/tcg-target.h                       | 2 ++
 tcg/i386/tcg-target.h                      | 3 +++
 tcg/i386/tcg-target.opc.h                  | 2 ++
 tcg/mips/tcg-target.h                      | 2 ++
 tcg/ppc/tcg-target.h                       | 2 ++
 tcg/riscv/tcg-target.h                     | 3 +++
 tcg/s390/tcg-target.h                      | 3 +++
 tcg/tcg-gvec-desc.h                        | 2 ++
 tcg/tcg-op-gvec.h                          | 2 ++
 tcg/tcg-op.h                               | 2 ++
 tcg/tcg-opc.h                              | 4 ++++
 tcg/tcg.h                                  | 2 ++
 tcg/tci/tcg-target.h                       | 2 ++
 tests/check-headers.mak                    | 7 ++++---
 tests/crypto-tls-x509-helpers.h            | 2 ++
 tests/fp/platform.h                        | 3 +++
 tests/libqos/virtio-9p.h                   | 2 ++
 tests/libqos/virtio-balloon.h              | 2 ++
 tests/libqos/virtio-blk.h                  | 2 ++
 tests/libqos/virtio-net.h                  | 2 ++
 tests/libqos/virtio-rng.h                  | 2 ++
 tests/libqos/virtio-scsi.h                 | 2 ++
 tests/libqos/virtio-serial.h               | 2 ++
 tests/migration/Makefile                   | 2 ++
 tests/migration/aarch64/a-b-kernel.h       | 3 +++
 tests/migration/i386/a-b-bootblock.h       | 3 +++
 tests/migration/s390x/a-b-bios.h           | 2 ++
 tests/ptimer-test.h                        | 2 ++
 tests/socket-helpers.h                     | 3 ++-
 tests/tpm-emu.h                            | 2 ++
 tests/tpm-tests.h                          | 2 ++
 tests/tpm-util.h                           | 2 ++
 trace/control-internal.h                   | 2 ++
 trace/mem-internal.h                       | 2 ++
 trace/mem.h                                | 2 ++
 ui/curses_keys.h                           | 2 ++
 ui/vgafont.h                               | 2 ++
 ui/vnc-auth-sasl.h                         | 2 ++
 ui/vnc-auth-vencrypt.h                     | 2 ++
 ui/vnc-enc-hextile-template.h              | 2 ++
 ui/vnc-jobs.h                              | 2 ++
 ui/vnc-ws.h                                | 2 ++
 ui/vnc.h                                   | 2 ++
 ui/vnc_keysym.h                            | 1 +
 ui/x_keymap.h                              | 2 ++
 util/qemu-thread-common.h                  | 2 ++
 win_dump.h                                 | 2 ++
 432 files changed, 1035 insertions(+), 8 deletions(-)

diff --git a/accel/tcg/atomic_template.h b/accel/tcg/atomic_template.h
index 685602b076..352da0c745 100644
--- a/accel/tcg/atomic_template.h
+++ b/accel/tcg/atomic_template.h
@@ -18,6 +18,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "trace/mem.h"
 
 #if DATA_SIZE == 16
diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h
index 6d73dc2d65..d85b2e8c0f 100644
--- a/accel/tcg/tcg-runtime.h
+++ b/accel/tcg/tcg-runtime.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_FLAGS_2(div_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32)
 DEF_HELPER_FLAGS_2(rem_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32)
 DEF_HELPER_FLAGS_2(divu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32)
diff --git a/accel/tcg/translate-all.h b/accel/tcg/translate-all.h
index 64f5fd9a05..16572e7c20 100644
--- a/accel/tcg/translate-all.h
+++ b/accel/tcg/translate-all.h
@@ -16,6 +16,10 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TRANSLATE_ALL_H
 #define TRANSLATE_ALL_H
 
diff --git a/audio/audio_int.h b/audio/audio_int.h
index 3f14842709..2b69ee6d81 100644
--- a/audio/audio_int.h
+++ b/audio/audio_int.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_AUDIO_INT_H
 #define QEMU_AUDIO_INT_H
 
diff --git a/audio/audio_template.h b/audio/audio_template.h
index 1232bb54db..6f954ddd28 100644
--- a/audio/audio_template.h
+++ b/audio/audio_template.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifdef DAC
 #define NAME "playback"
 #define HWBUF hw->mix_buf
diff --git a/audio/audio_win_int.h b/audio/audio_win_int.h
index fa5b3cb802..5716458c14 100644
--- a/audio/audio_win_int.h
+++ b/audio/audio_win_int.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef AUDIO_WIN_INT_H
 #define AUDIO_WIN_INT_H
 
diff --git a/audio/dsound_template.h b/audio/dsound_template.h
index 8ece870c9e..af7712ca0e 100644
--- a/audio/dsound_template.h
+++ b/audio/dsound_template.h
@@ -21,6 +21,9 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifdef DSBTYPE_IN
 #define NAME "capture buffer"
 #define NAME2 "DirectSoundCapture"
diff --git a/audio/mixeng_template.h b/audio/mixeng_template.h
index 77cc89b9e8..7db272d1a6 100644
--- a/audio/mixeng_template.h
+++ b/audio/mixeng_template.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /*
  * Tusen tack till Mike Nordell
  * dec++'ified by Dscho
diff --git a/audio/rate_template.h b/audio/rate_template.h
index 6e93588877..10ebdfe217 100644
--- a/audio/rate_template.h
+++ b/audio/rate_template.h
@@ -23,6 +23,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /*
  * Processed signed long samples from ibuf to obuf.
  * Return number of samples processed.
diff --git a/block/crypto.h b/block/crypto.h
index b935695e79..08b6d2d238 100644
--- a/block/crypto.h
+++ b/block/crypto.h
@@ -18,6 +18,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef BLOCK_CRYPTO_H
 #define BLOCK_CRYPTO_H
 
diff --git a/block/qcow2.h b/block/qcow2.h
index 8d92ef1fee..d6c8f9df8e 100644
--- a/block/qcow2.h
+++ b/block/qcow2.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef BLOCK_QCOW2_H
 #define BLOCK_QCOW2_H
 
diff --git a/block/vhdx.h b/block/vhdx.h
index 0b74924cee..d2636f8ce3 100644
--- a/block/vhdx.h
+++ b/block/vhdx.h
@@ -15,6 +15,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef BLOCK_VHDX_H
 #define BLOCK_VHDX_H
 #include "qemu/units.h"
diff --git a/bsd-user/i386/target_signal.h b/bsd-user/i386/target_signal.h
index 2ef36d1f98..978b64c960 100644
--- a/bsd-user/i386/target_signal.h
+++ b/bsd-user/i386/target_signal.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_SIGNAL_H
 #define TARGET_SIGNAL_H
 
diff --git a/bsd-user/i386/target_syscall.h b/bsd-user/i386/target_syscall.h
index 8f201386af..d53cb69e06 100644
--- a/bsd-user/i386/target_syscall.h
+++ b/bsd-user/i386/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_SYSCALL_H
 #define TARGET_SYSCALL_H
 
diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h
index 09e8aed9c7..7e6dac6ce3 100644
--- a/bsd-user/qemu.h
+++ b/bsd-user/qemu.h
@@ -14,6 +14,10 @@
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_H
 #define QEMU_H
 
diff --git a/bsd-user/sparc/target_signal.h b/bsd-user/sparc/target_signal.h
index 5b2abba40f..c62e6464ba 100644
--- a/bsd-user/sparc/target_signal.h
+++ b/bsd-user/sparc/target_signal.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_SIGNAL_H
 #define TARGET_SIGNAL_H
 
diff --git a/bsd-user/sparc/target_syscall.h b/bsd-user/sparc/target_syscall.h
index dfdf9f82f5..5df900abb4 100644
--- a/bsd-user/sparc/target_syscall.h
+++ b/bsd-user/sparc/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_SYSCALL_H
 #define TARGET_SYSCALL_H
 
diff --git a/bsd-user/sparc64/target_signal.h b/bsd-user/sparc64/target_signal.h
index 5b2abba40f..c62e6464ba 100644
--- a/bsd-user/sparc64/target_signal.h
+++ b/bsd-user/sparc64/target_signal.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_SIGNAL_H
 #define TARGET_SIGNAL_H
 
diff --git a/bsd-user/sparc64/target_syscall.h b/bsd-user/sparc64/target_syscall.h
index 3a9f4c2ef9..bb8247dc6f 100644
--- a/bsd-user/sparc64/target_syscall.h
+++ b/bsd-user/sparc64/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_SYSCALL_H
 #define TARGET_SYSCALL_H
 
diff --git a/bsd-user/syscall_defs.h b/bsd-user/syscall_defs.h
index 207ddeecbf..f3d18c4d8a 100644
--- a/bsd-user/syscall_defs.h
+++ b/bsd-user/syscall_defs.h
@@ -37,6 +37,8 @@
  *      @(#)signal.h    8.2 (Berkeley) 1/21/94
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NSIG     32              /* counting 0; could be 33 (mask is 1-32) */
 
 #define TARGET_SIGHUP  1       /* hangup */
diff --git a/bsd-user/x86_64/target_signal.h b/bsd-user/x86_64/target_signal.h
index 659cd401b8..a8f190a14a 100644
--- a/bsd-user/x86_64/target_signal.h
+++ b/bsd-user/x86_64/target_signal.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_SIGNAL_H
 #define TARGET_SIGNAL_H
 
diff --git a/bsd-user/x86_64/target_syscall.h b/bsd-user/x86_64/target_syscall.h
index a5d779884f..1f1b760ac7 100644
--- a/bsd-user/x86_64/target_syscall.h
+++ b/bsd-user/x86_64/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_SYSCALL_H
 #define TARGET_SYSCALL_H
 
diff --git a/contrib/ivshmem-client/ivshmem-client.h b/contrib/ivshmem-client/ivshmem-client.h
index fe3cc4a03d..f969003650 100644
--- a/contrib/ivshmem-client/ivshmem-client.h
+++ b/contrib/ivshmem-client/ivshmem-client.h
@@ -6,6 +6,8 @@
  * top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_POSIX, yet! */
+
 #ifndef IVSHMEM_CLIENT_H
 #define IVSHMEM_CLIENT_H
 
diff --git a/contrib/ivshmem-server/ivshmem-server.h b/contrib/ivshmem-server/ivshmem-server.h
index d870adb6a0..760a51087a 100644
--- a/contrib/ivshmem-server/ivshmem-server.h
+++ b/contrib/ivshmem-server/ivshmem-server.h
@@ -6,6 +6,8 @@
  * top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_POSIX, yet! */
+
 #ifndef IVSHMEM_SERVER_H
 #define IVSHMEM_SERVER_H
 
diff --git a/contrib/libvhost-user/libvhost-user-glib.h b/contrib/libvhost-user/libvhost-user-glib.h
index d3200f3afc..70987a892c 100644
--- a/contrib/libvhost-user/libvhost-user-glib.h
+++ b/contrib/libvhost-user/libvhost-user-glib.h
@@ -12,6 +12,8 @@
  * later.  See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef LIBVHOST_USER_GLIB_H
 #define LIBVHOST_USER_GLIB_H
 
diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-user/libvhost-user.h
index 78b33306e8..0cf7a20f28 100644
--- a/contrib/libvhost-user/libvhost-user.h
+++ b/contrib/libvhost-user/libvhost-user.h
@@ -11,6 +11,8 @@
  * later.  See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef LIBVHOST_USER_H
 #define LIBVHOST_USER_H
 
diff --git a/contrib/rdmacm-mux/rdmacm-mux.h b/contrib/rdmacm-mux/rdmacm-mux.h
index 07a4722913..d460e792e6 100644
--- a/contrib/rdmacm-mux/rdmacm-mux.h
+++ b/contrib/rdmacm-mux/rdmacm-mux.h
@@ -13,6 +13,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_RDMA, yet! */
+
 #ifndef RDMACM_MUX_H
 #define RDMACM_MUX_H
 
diff --git a/crypto/afalgpriv.h b/crypto/afalgpriv.h
index f6550b5c51..93986694da 100644
--- a/crypto/afalgpriv.h
+++ b/crypto/afalgpriv.h
@@ -11,6 +11,8 @@
  * top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef QCRYPTO_AFALGPRIV_H
 #define QCRYPTO_AFALGPRIV_H
 
diff --git a/crypto/cipherpriv.h b/crypto/cipherpriv.h
index 0823239f41..dca21620ee 100644
--- a/crypto/cipherpriv.h
+++ b/crypto/cipherpriv.h
@@ -12,6 +12,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QCRYPTO_CIPHERPRIV_H
 #define QCRYPTO_CIPHERPRIV_H
 
diff --git a/crypto/hashpriv.h b/crypto/hashpriv.h
index cee26ccb47..7eba2105af 100644
--- a/crypto/hashpriv.h
+++ b/crypto/hashpriv.h
@@ -12,6 +12,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QCRYPTO_HASHPRIV_H
 #define QCRYPTO_HASHPRIV_H
 
diff --git a/crypto/hmacpriv.h b/crypto/hmacpriv.h
index 4387ca2587..64c44098e4 100644
--- a/crypto/hmacpriv.h
+++ b/crypto/hmacpriv.h
@@ -12,6 +12,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QCRYPTO_HMACPRIV_H
 #define QCRYPTO_HMACPRIV_H
 
diff --git a/disas/nanomips.h b/disas/nanomips.h
index a0a2225301..e77c98f98b 100644
--- a/disas/nanomips.h
+++ b/disas/nanomips.h
@@ -20,6 +20,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef DISAS_NANOMIPS_H
 #define DISAS_NANOMIPS_H
 
diff --git a/fpu/softfloat-specialize.h b/fpu/softfloat-specialize.h
index 7b8895726c..f42c3ab6cf 100644
--- a/fpu/softfloat-specialize.h
+++ b/fpu/softfloat-specialize.h
@@ -79,6 +79,9 @@ this code that are retained.
  * version 2 or later. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 /* Define for architectures which deviate from IEEE in not supporting
  * signaling NaNs (so all NaNs are treated as quiet).
  */
diff --git a/fsdev/file-op-9p.h b/fsdev/file-op-9p.h
index c757c8099f..96d9561309 100644
--- a/fsdev/file-op-9p.h
+++ b/fsdev/file-op-9p.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef FILE_OP_9P_H
 #define FILE_OP_9P_H
 
diff --git a/fsdev/qemu-fsdev.h b/fsdev/qemu-fsdev.h
index 52a5397770..38399ad6bc 100644
--- a/fsdev/qemu-fsdev.h
+++ b/fsdev/qemu-fsdev.h
@@ -10,6 +10,9 @@
  * the COPYING file in the top-level directory.
  *
  */
+
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef QEMU_FSDEV_H
 #define QEMU_FSDEV_H
 #include "file-op-9p.h"
diff --git a/hw/9pfs/9p-local.h b/hw/9pfs/9p-local.h
index 32c72749d9..2664aecce5 100644
--- a/hw/9pfs/9p-local.h
+++ b/hw/9pfs/9p-local.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_9P_LOCAL_H
 #define QEMU_9P_LOCAL_H
 
diff --git a/hw/9pfs/9p-proxy.h b/hw/9pfs/9p-proxy.h
index b84301d001..4f0560fcaf 100644
--- a/hw/9pfs/9p-proxy.h
+++ b/hw/9pfs/9p-proxy.h
@@ -10,6 +10,8 @@
  * the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef QEMU_9P_PROXY_H
 #define QEMU_9P_PROXY_H
 
diff --git a/hw/9pfs/9p-synth.h b/hw/9pfs/9p-synth.h
index af7a993a1e..178139f26a 100644
--- a/hw/9pfs/9p-synth.h
+++ b/hw/9pfs/9p-synth.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_9P_SYNTH_H
 #define QEMU_9P_SYNTH_H
 
diff --git a/hw/9pfs/9p-util.h b/hw/9pfs/9p-util.h
index 79ed6b233e..ca19b25461 100644
--- a/hw/9pfs/9p-util.h
+++ b/hw/9pfs/9p-util.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef QEMU_9P_UTIL_H
 #define QEMU_9P_UTIL_H
 
diff --git a/hw/9pfs/9p-xattr.h b/hw/9pfs/9p-xattr.h
index 35bcd24f77..c7403ac54e 100644
--- a/hw/9pfs/9p-xattr.h
+++ b/hw/9pfs/9p-xattr.h
@@ -11,6 +11,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_9P_XATTR_H
 #define QEMU_9P_XATTR_H
 
diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h
index 8883761b2c..300718cee7 100644
--- a/hw/9pfs/9p.h
+++ b/hw/9pfs/9p.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef QEMU_9P_H
 #define QEMU_9P_H
 
diff --git a/hw/9pfs/coth.h b/hw/9pfs/coth.h
index 19e4d9287e..7f56e18f73 100644
--- a/hw/9pfs/coth.h
+++ b/hw/9pfs/coth.h
@@ -12,6 +12,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef QEMU_9P_COTH_H
 #define QEMU_9P_COTH_H
 
diff --git a/hw/9pfs/virtio-9p.h b/hw/9pfs/virtio-9p.h
index e763da2c02..0978048254 100644
--- a/hw/9pfs/virtio-9p.h
+++ b/hw/9pfs/virtio-9p.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef QEMU_VIRTIO_9P_H
 #define QEMU_VIRTIO_9P_H
 
diff --git a/hw/9pfs/xen-9pfs.h b/hw/9pfs/xen-9pfs.h
index 2d6ef7828c..3c40c10ef1 100644
--- a/hw/9pfs/xen-9pfs.h
+++ b/hw/9pfs/xen-9pfs.h
@@ -8,9 +8,10 @@
  *
  * This work is licensed under the terms of the GNU GPL version 2 or
  * later. See the COPYING file in the top-level directory.
- *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include <xen/io/protocols.h>
 #include "hw/xen/io/ring.h"
 
diff --git a/hw/arm/smmu-internal.h b/hw/arm/smmu-internal.h
index 7794d6d394..97a88d0375 100644
--- a/hw/arm/smmu-internal.h
+++ b/hw/arm/smmu-internal.h
@@ -18,6 +18,8 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ARM_SMMU_INTERNAL_H
 #define HW_ARM_SMMU_INTERNAL_H
 
diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h
index b160289cd1..7d74cd3cb8 100644
--- a/hw/arm/smmuv3-internal.h
+++ b/hw/arm/smmuv3-internal.h
@@ -18,6 +18,8 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_ARM_SMMUV3_INTERNAL_H
 #define HW_ARM_SMMUV3_INTERNAL_H
 
diff --git a/hw/audio/hda-codec-common.h b/hw/audio/hda-codec-common.h
index b4fdb51e8b..9702bf070e 100644
--- a/hw/audio/hda-codec-common.h
+++ b/hw/audio/hda-codec-common.h
@@ -20,10 +20,11 @@
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /*
  * HDA codec descriptions
  */
-
 #ifdef HDA_MIXER
 #define QEMU_HDA_ID_OUTPUT  ((QEMU_HDA_ID_VENDOR << 16) | 0x12)
 #define QEMU_HDA_ID_DUPLEX  ((QEMU_HDA_ID_VENDOR << 16) | 0x22)
diff --git a/hw/audio/lm4549.h b/hw/audio/lm4549.h
index 74c3ee8934..e3e996b7cd 100644
--- a/hw/audio/lm4549.h
+++ b/hw/audio/lm4549.h
@@ -9,6 +9,8 @@
  * *****************************************************************
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_LM4549_H
 #define HW_LM4549_H
 
diff --git a/hw/block/dataplane/xen-block.h b/hw/block/dataplane/xen-block.h
index d6fa6d26dd..85b19ba0f7 100644
--- a/hw/block/dataplane/xen-block.h
+++ b/hw/block/dataplane/xen-block.h
@@ -5,6 +5,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_XEN, yet! */
+
 #ifndef HW_BLOCK_DATAPLANE_XEN_BLOCK_H
 #define HW_BLOCK_DATAPLANE_XEN_BLOCK_H
 
diff --git a/hw/block/nvme.h b/hw/block/nvme.h
index 56c9d4b4b1..4a096b8c5d 100644
--- a/hw/block/nvme.h
+++ b/hw/block/nvme.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_NVME_H
 #define HW_NVME_H
 #include "block/nvme.h"
diff --git a/hw/block/xen_blkif.h b/hw/block/xen_blkif.h
index a353693ea0..6d3d13c7e4 100644
--- a/hw/block/xen_blkif.h
+++ b/hw/block/xen_blkif.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XEN_BLKIF_H
 #define XEN_BLKIF_H
 
diff --git a/hw/cris/boot.h b/hw/cris/boot.h
index 218854e5d1..db8f68d8a1 100644
--- a/hw/cris/boot.h
+++ b/hw/cris/boot.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_CRIS_BOOT_H
 #define HW_CRIS_BOOT_H
 
diff --git a/hw/display/ati_int.h b/hw/display/ati_int.h
index 2f426064cf..9f49dd796e 100644
--- a/hw/display/ati_int.h
+++ b/hw/display/ati_int.h
@@ -6,6 +6,8 @@
  * This work is licensed under the GNU GPL license version 2 or later.
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef ATI_INT_H
 #define ATI_INT_H
 
diff --git a/hw/display/cirrus_vga_internal.h b/hw/display/cirrus_vga_internal.h
index a78ebbd920..11985bb195 100644
--- a/hw/display/cirrus_vga_internal.h
+++ b/hw/display/cirrus_vga_internal.h
@@ -23,6 +23,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CIRRUS_VGA_INTERNAL_H
 #define CIRRUS_VGA_INTERNAL_H
 
diff --git a/hw/display/cirrus_vga_rop.h b/hw/display/cirrus_vga_rop.h
index 0841b9efa9..b81b6acee6 100644
--- a/hw/display/cirrus_vga_rop.h
+++ b/hw/display/cirrus_vga_rop.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 static inline void glue(rop_8_, ROP_NAME)(CirrusVGAState *s,
                                           uint32_t dstaddr, uint8_t src)
 {
diff --git a/hw/display/cirrus_vga_rop2.h b/hw/display/cirrus_vga_rop2.h
index b208b7348a..90724073bb 100644
--- a/hw/display/cirrus_vga_rop2.h
+++ b/hw/display/cirrus_vga_rop2.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #if DEPTH == 8
 #define PUTPIXEL(s, a, c)    ROP_OP(s, a, c)
 #elif DEPTH == 16
diff --git a/hw/display/framebuffer.h b/hw/display/framebuffer.h
index 38fa0dcec6..b2e98b7cb1 100644
--- a/hw/display/framebuffer.h
+++ b/hw/display/framebuffer.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_FRAMEBUFFER_H
 #define QEMU_FRAMEBUFFER_H
 
diff --git a/hw/display/milkymist-vgafb_template.h b/hw/display/milkymist-vgafb_template.h
index 48837809eb..6c1b899eac 100644
--- a/hw/display/milkymist-vgafb_template.h
+++ b/hw/display/milkymist-vgafb_template.h
@@ -15,9 +15,10 @@
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #if BITS == 8
 #define COPY_PIXEL(to, r, g, b)                    \
     do {                                           \
diff --git a/hw/display/omap_lcd_template.h b/hw/display/omap_lcd_template.h
index 1025ff3825..f3d5cdce3e 100644
--- a/hw/display/omap_lcd_template.h
+++ b/hw/display/omap_lcd_template.h
@@ -27,6 +27,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #if DEPTH == 32
 # define BPP 4
 # define PIXEL_TYPE uint32_t
diff --git a/hw/display/pl110_template.h b/hw/display/pl110_template.h
index 36ba791c6f..79dc2929dc 100644
--- a/hw/display/pl110_template.h
+++ b/hw/display/pl110_template.h
@@ -9,6 +9,8 @@
  * Framebuffer format conversion routines.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ORDER
 
 #if BITS == 8
diff --git a/hw/display/pxa2xx_template.h b/hw/display/pxa2xx_template.h
index c64eebc4b6..fef72eb23f 100644
--- a/hw/display/pxa2xx_template.h
+++ b/hw/display/pxa2xx_template.h
@@ -9,6 +9,8 @@
  * Framebuffer format conversion routines.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 # define SKIP_PIXEL(to)		to += deststep
 #if BITS == 8
 # define COPY_PIXEL(to, from)  do { *to = from; SKIP_PIXEL(to); } while (0)
diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index 6f9d1f21fa..2044df2fa7 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -1,3 +1,7 @@
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+/* FIXME Does not pass make check-headers without CONFIG_SPICE, yet! */
+
+
 #ifndef HW_QXL_H
 #define HW_QXL_H
 
diff --git a/hw/display/sm501_template.h b/hw/display/sm501_template.h
index a60abad019..3377c97fe7 100644
--- a/hw/display/sm501_template.h
+++ b/hw/display/sm501_template.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #if DEPTH == 8
 #define BPP 1
 #define PIXEL_TYPE uint8_t
diff --git a/hw/display/tc6393xb_template.h b/hw/display/tc6393xb_template.h
index 78629c07f9..927282cf5c 100644
--- a/hw/display/tc6393xb_template.h
+++ b/hw/display/tc6393xb_template.h
@@ -21,6 +21,8 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #if BITS == 8
 # define SET_PIXEL(addr, color)  (*(uint8_t *)addr = color)
 #elif BITS == 15 || BITS == 16
diff --git a/hw/display/vga-helpers.h b/hw/display/vga-helpers.h
index 5a752b3f9e..9951dc4a1c 100644
--- a/hw/display/vga-helpers.h
+++ b/hw/display/vga-helpers.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 static inline void vga_draw_glyph_line(uint8_t *d, uint32_t font_data,
                                        uint32_t xorcol, uint32_t bgcol)
 {
diff --git a/hw/display/vga_int.h b/hw/display/vga_int.h
index 55c418eab5..8a21a5a473 100644
--- a/hw/display/vga_int.h
+++ b/hw/display/vga_int.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_VGA_INT_H
 #define HW_VGA_INT_H
 
diff --git a/hw/ide/ahci_internal.h b/hw/ide/ahci_internal.h
index 95ecddcd3c..8a387812ce 100644
--- a/hw/ide/ahci_internal.h
+++ b/hw/ide/ahci_internal.h
@@ -21,6 +21,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_IDE_AHCI_INTERNAL_H
 #define HW_IDE_AHCI_INTERNAL_H
 
diff --git a/hw/input/adb-internal.h b/hw/input/adb-internal.h
index 2a779b8a0a..97d7521fa1 100644
--- a/hw/input/adb-internal.h
+++ b/hw/input/adb-internal.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /* ADB commands */
 
 #define ADB_BUSRESET            0x00
diff --git a/hw/lm32/lm32.h b/hw/lm32/lm32.h
index d1514a61b3..b718b26c15 100644
--- a/hw/lm32/lm32.h
+++ b/hw/lm32/lm32.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_LM32_H
 #define HW_LM32_H
 
diff --git a/hw/lm32/lm32_hwsetup.h b/hw/lm32/lm32_hwsetup.h
index a01f6bc5df..d1891f1795 100644
--- a/hw/lm32/lm32_hwsetup.h
+++ b/hw/lm32/lm32_hwsetup.h
@@ -22,6 +22,9 @@
  * in the Theobroma's uClinux port.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_HW_LM32_HWSETUP_H
 #define QEMU_HW_LM32_HWSETUP_H
 
diff --git a/hw/lm32/milkymist-hw.h b/hw/lm32/milkymist-hw.h
index 976cf9254d..9081e4d71e 100644
--- a/hw/lm32/milkymist-hw.h
+++ b/hw/lm32/milkymist-hw.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_HW_MILKYMIST_HW_H
 #define QEMU_HW_MILKYMIST_HW_H
 
diff --git a/hw/microblaze/boot.h b/hw/microblaze/boot.h
index dd1090d8b5..53200eb0f8 100644
--- a/hw/microblaze/boot.h
+++ b/hw/microblaze/boot.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MICROBLAZE_BOOT_H
 #define MICROBLAZE_BOOT_H
 
diff --git a/hw/net/can/can_sja1000.h b/hw/net/can/can_sja1000.h
index 4731cbbd2a..0788d1e0f4 100644
--- a/hw/net/can/can_sja1000.h
+++ b/hw/net/can/can_sja1000.h
@@ -24,6 +24,9 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_CAN_SJA1000_H
 #define HW_CAN_SJA1000_H
 
diff --git a/hw/net/e1000e_core.h b/hw/net/e1000e_core.h
index 63a15510cc..52c709ae61 100644
--- a/hw/net/e1000e_core.h
+++ b/hw/net/e1000e_core.h
@@ -33,6 +33,8 @@
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define E1000E_PHY_PAGE_SIZE    (0x20)
 #define E1000E_PHY_PAGES        (0x07)
 #define E1000E_MAC_SIZE         (0x8000)
diff --git a/hw/net/e1000x_common.h b/hw/net/e1000x_common.h
index 0268884e72..b0bc7a2dd3 100644
--- a/hw/net/e1000x_common.h
+++ b/hw/net/e1000x_common.h
@@ -22,6 +22,8 @@
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "e1000_regs.h"
 
 #define defreg(x)   x = (E1000_##x >> 2)
diff --git a/hw/net/pcnet.h b/hw/net/pcnet.h
index 40831a7845..906247b7c1 100644
--- a/hw/net/pcnet.h
+++ b/hw/net/pcnet.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_PCNET_H
 #define HW_PCNET_H
 
diff --git a/hw/net/rocker/rocker_desc.h b/hw/net/rocker/rocker_desc.h
index 1dec335614..6480ff46b3 100644
--- a/hw/net/rocker/rocker_desc.h
+++ b/hw/net/rocker/rocker_desc.h
@@ -14,6 +14,8 @@
  * GNU General Public License for more details.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ROCKER_DESC_H
 #define ROCKER_DESC_H
 
diff --git a/hw/net/rocker/rocker_fp.h b/hw/net/rocker/rocker_fp.h
index dbe1dd329a..8d80234c9d 100644
--- a/hw/net/rocker/rocker_fp.h
+++ b/hw/net/rocker/rocker_fp.h
@@ -14,6 +14,8 @@
  * GNU General Public License for more details.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ROCKER_FP_H
 #define ROCKER_FP_H
 
diff --git a/hw/net/rocker/rocker_of_dpa.h b/hw/net/rocker/rocker_of_dpa.h
index 01c7a97d0d..d88d2df33d 100644
--- a/hw/net/rocker/rocker_of_dpa.h
+++ b/hw/net/rocker/rocker_of_dpa.h
@@ -14,6 +14,8 @@
  * GNU General Public License for more details.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ROCKER_OF_DPA_H
 #define ROCKER_OF_DPA_H
 
diff --git a/hw/net/rocker/rocker_tlv.h b/hw/net/rocker/rocker_tlv.h
index dd28d08443..938a9e7545 100644
--- a/hw/net/rocker/rocker_tlv.h
+++ b/hw/net/rocker/rocker_tlv.h
@@ -14,6 +14,8 @@
  * GNU General Public License for more details.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ROCKER_TLV_H
 #define ROCKER_TLV_H
 
diff --git a/hw/net/rocker/rocker_world.h b/hw/net/rocker/rocker_world.h
index 44f1fe3e19..0af3ff8bfe 100644
--- a/hw/net/rocker/rocker_world.h
+++ b/hw/net/rocker/rocker_world.h
@@ -14,6 +14,8 @@
  * GNU General Public License for more details.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ROCKER_WORLD_H
 #define ROCKER_WORLD_H
 
diff --git a/hw/net/vmware_utils.h b/hw/net/vmware_utils.h
index 6b1e251595..7860f22e47 100644
--- a/hw/net/vmware_utils.h
+++ b/hw/net/vmware_utils.h
@@ -14,6 +14,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef VMWARE_UTILS_H
 #define VMWARE_UTILS_H
 
diff --git a/hw/net/vmxnet3_defs.h b/hw/net/vmxnet3_defs.h
index 6c19d29b12..76411bb79e 100644
--- a/hw/net/vmxnet3_defs.h
+++ b/hw/net/vmxnet3_defs.h
@@ -12,9 +12,10 @@
  *
  * This work is licensed under the terms of the GNU GPL, version 2.
  * See the COPYING file in the top-level directory.
- *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "net/net.h"
 #include "hw/net/vmxnet3.h"
 
diff --git a/hw/nios2/boot.h b/hw/nios2/boot.h
index 3116753818..e3a4da0d1e 100644
--- a/hw/nios2/boot.h
+++ b/hw/nios2/boot.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef NIOS2_BOOT_H
 #define NIOS2_BOOT_H
 
diff --git a/hw/ppc/ppc405.h b/hw/ppc/ppc405.h
index 7ed25cfa1b..fe74289d4a 100644
--- a/hw/ppc/ppc405.h
+++ b/hw/ppc/ppc405.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC405_H
 #define PPC405_H
 
diff --git a/hw/ppc/ppc440.h b/hw/ppc/ppc440.h
index 7cef936125..e1093ad4b5 100644
--- a/hw/ppc/ppc440.h
+++ b/hw/ppc/ppc440.h
@@ -8,6 +8,8 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef PPC440_H
 #define PPC440_H
 
diff --git a/hw/rdma/rdma_backend.h b/hw/rdma/rdma_backend.h
index 7c1a19a2b5..4ed78b9829 100644
--- a/hw/rdma/rdma_backend.h
+++ b/hw/rdma/rdma_backend.h
@@ -13,6 +13,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_RDMA, yet! */
+
 #ifndef RDMA_BACKEND_H
 #define RDMA_BACKEND_H
 
diff --git a/hw/rdma/rdma_backend_defs.h b/hw/rdma/rdma_backend_defs.h
index 0b55be3503..14a5e05d83 100644
--- a/hw/rdma/rdma_backend_defs.h
+++ b/hw/rdma/rdma_backend_defs.h
@@ -13,6 +13,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_RDMA, yet! */
+
 #ifndef RDMA_BACKEND_DEFS_H
 #define RDMA_BACKEND_DEFS_H
 
diff --git a/hw/rdma/rdma_rm.h b/hw/rdma/rdma_rm.h
index e8639909cd..ef932ce262 100644
--- a/hw/rdma/rdma_rm.h
+++ b/hw/rdma/rdma_rm.h
@@ -13,6 +13,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_RDMA, yet! */
+
 #ifndef RDMA_RM_H
 #define RDMA_RM_H
 
diff --git a/hw/rdma/rdma_rm_defs.h b/hw/rdma/rdma_rm_defs.h
index 534f2f74d3..72c000cc8e 100644
--- a/hw/rdma/rdma_rm_defs.h
+++ b/hw/rdma/rdma_rm_defs.h
@@ -13,6 +13,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_RDMA, yet! */
+
 #ifndef RDMA_RM_DEFS_H
 #define RDMA_RM_DEFS_H
 
diff --git a/hw/rdma/vmw/pvrdma.h b/hw/rdma/vmw/pvrdma.h
index a8a04a253c..004e5a727c 100644
--- a/hw/rdma/vmw/pvrdma.h
+++ b/hw/rdma/vmw/pvrdma.h
@@ -13,6 +13,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_RDMA, yet! */
+
 #ifndef PVRDMA_PVRDMA_H
 #define PVRDMA_PVRDMA_H
 
diff --git a/hw/rdma/vmw/pvrdma_dev_ring.h b/hw/rdma/vmw/pvrdma_dev_ring.h
index 5f2a0cf9b9..df108b0fa6 100644
--- a/hw/rdma/vmw/pvrdma_dev_ring.h
+++ b/hw/rdma/vmw/pvrdma_dev_ring.h
@@ -13,6 +13,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PVRDMA_DEV_RING_H
 #define PVRDMA_DEV_RING_H
 
diff --git a/hw/rdma/vmw/pvrdma_qp_ops.h b/hw/rdma/vmw/pvrdma_qp_ops.h
index bf2b15c5ce..40160f8b5e 100644
--- a/hw/rdma/vmw/pvrdma_qp_ops.h
+++ b/hw/rdma/vmw/pvrdma_qp_ops.h
@@ -13,6 +13,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_RDMA, yet! */
+
 #ifndef PVRDMA_QP_OPS_H
 #define PVRDMA_QP_OPS_H
 
diff --git a/hw/s390x/ccw-device.h b/hw/s390x/ccw-device.h
index 4e6af287e7..356ce0e5ce 100644
--- a/hw/s390x/ccw-device.h
+++ b/hw/s390x/ccw-device.h
@@ -9,6 +9,9 @@
  * directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390X_CCW_DEVICE_H
 #define HW_S390X_CCW_DEVICE_H
 #include "qom/object.h"
diff --git a/hw/s390x/ipl.h b/hw/s390x/ipl.h
index b3a07a12d8..562ebf2988 100644
--- a/hw/s390x/ipl.h
+++ b/hw/s390x/ipl.h
@@ -9,6 +9,9 @@
  * directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390_IPL_H
 #define HW_S390_IPL_H
 
diff --git a/hw/s390x/s390-pci-bus.h b/hw/s390x/s390-pci-bus.h
index 550f3cc5e9..81e5231b67 100644
--- a/hw/s390x/s390-pci-bus.h
+++ b/hw/s390x/s390-pci-bus.h
@@ -11,6 +11,9 @@
  * directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390_PCI_BUS_H
 #define HW_S390_PCI_BUS_H
 
diff --git a/hw/s390x/s390-pci-inst.h b/hw/s390x/s390-pci-inst.h
index fa3bf8b5aa..55afaae949 100644
--- a/hw/s390x/s390-pci-inst.h
+++ b/hw/s390x/s390-pci-inst.h
@@ -11,6 +11,9 @@
  * directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390_PCI_INST_H
 #define HW_S390_PCI_INST_H
 
diff --git a/hw/s390x/s390-virtio-hcall.h b/hw/s390x/s390-virtio-hcall.h
index 9800c4b351..0d66be3785 100644
--- a/hw/s390x/s390-virtio-hcall.h
+++ b/hw/s390x/s390-virtio-hcall.h
@@ -9,6 +9,8 @@
  * directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390_VIRTIO_HCALL_H
 #define HW_S390_VIRTIO_HCALL_H
 
diff --git a/hw/s390x/virtio-ccw.h b/hw/s390x/virtio-ccw.h
index 3453aa1f98..ad1dd19250 100644
--- a/hw/s390x/virtio-ccw.h
+++ b/hw/s390x/virtio-ccw.h
@@ -10,6 +10,9 @@
  * directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_S390X_VIRTIO_CCW_H
 #define HW_S390X_VIRTIO_CCW_H
 
diff --git a/hw/scsi/mptsas.h b/hw/scsi/mptsas.h
index 0436a33911..a7a8d67cb3 100644
--- a/hw/scsi/mptsas.h
+++ b/hw/scsi/mptsas.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MPTSAS_H
 #define MPTSAS_H
 
diff --git a/hw/scsi/viosrp.h b/hw/scsi/viosrp.h
index d8e365db1e..05fe773721 100644
--- a/hw/scsi/viosrp.h
+++ b/hw/scsi/viosrp.h
@@ -31,6 +31,9 @@
 /* of Linux and other operating systems (AIX, OS/400) that talk this protocol*/
 /* between logical partitions                                                */
 /*****************************************************************************/
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_VIOSRP_H
 #define PPC_VIOSRP_H
 
diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h
index 34141400f8..c09f4164f6 100644
--- a/hw/sd/sdhci-internal.h
+++ b/hw/sd/sdhci-internal.h
@@ -21,6 +21,9 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SDHCI_INTERNAL_H
 #define SDHCI_INTERNAL_H
 
diff --git a/hw/timer/m48t59-internal.h b/hw/timer/m48t59-internal.h
index 4d4f2a6fed..b158660fbf 100644
--- a/hw/timer/m48t59-internal.h
+++ b/hw/timer/m48t59-internal.h
@@ -23,6 +23,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_M48T59_INTERNAL_H
 #define HW_M48T59_INTERNAL_H
 
diff --git a/hw/tpm/tpm_ioctl.h b/hw/tpm/tpm_ioctl.h
index f5f5c553a9..d9f1fed0fa 100644
--- a/hw/tpm/tpm_ioctl.h
+++ b/hw/tpm/tpm_ioctl.h
@@ -6,6 +6,8 @@
  * This file is licensed under the terms of the 3-clause BSD license
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_POSIX, yet! */
+
 #ifndef TPM_IOCTL_H
 #define TPM_IOCTL_H
 
diff --git a/hw/usb/desc.h b/hw/usb/desc.h
index 4d81c68e0e..b6663f3abd 100644
--- a/hw/usb/desc.h
+++ b/hw/usb/desc.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_HW_USB_DESC_H
 #define QEMU_HW_USB_DESC_H
 
diff --git a/hw/usb/hcd-ohci.h b/hw/usb/hcd-ohci.h
index 16e3f1e13a..d18f97bcab 100644
--- a/hw/usb/hcd-ohci.h
+++ b/hw/usb/hcd-ohci.h
@@ -18,6 +18,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HCD_OHCI_H
 #define HCD_OHCI_H
 
diff --git a/hw/usb/hcd-xhci.h b/hw/usb/hcd-xhci.h
index 240caa4e51..c1cfc1f02e 100644
--- a/hw/usb/hcd-xhci.h
+++ b/hw/usb/hcd-xhci.h
@@ -19,6 +19,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TYPE_XHCI "base-xhci"
 #define TYPE_NEC_XHCI "nec-usb-xhci"
 #define TYPE_QEMU_XHCI "qemu-xhci"
diff --git a/hw/usb/quirks.h b/hw/usb/quirks.h
index 8dc6065527..4ee621068c 100644
--- a/hw/usb/quirks.h
+++ b/hw/usb/quirks.h
@@ -12,6 +12,8 @@
  * (at your option) any later version.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /* 1 on 1 copy of linux/drivers/usb/serial/ftdi_sio_ids.h */
 #include "quirks-ftdi-ids.h"
 /* 1 on 1 copy of linux/drivers/usb/serial/pl2303.h */
diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h
index cfcd1a81b8..bb1088c2e7 100644
--- a/hw/vfio/pci.h
+++ b/hw/vfio/pci.h
@@ -9,6 +9,9 @@
  * This work is licensed under the terms of the GNU GPL, version 2.  See
  * the COPYING file in the top-level directory.
  */
+
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef HW_VFIO_VFIO_PCI_H
 #define HW_VFIO_VFIO_PCI_H
 
diff --git a/hw/xen/xen_pt.h b/hw/xen/xen_pt.h
index dbee3308fd..a759ccfc52 100644
--- a/hw/xen/xen_pt.h
+++ b/hw/xen/xen_pt.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers without CONFIG_XEN, yet! */
+
 #ifndef XEN_PT_H
 #define XEN_PT_H
 
diff --git a/hw/xtensa/bootparam.h b/hw/xtensa/bootparam.h
index ade7891ec5..e7a446a331 100644
--- a/hw/xtensa/bootparam.h
+++ b/hw/xtensa/bootparam.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HW_XTENSA_BOOTPARAM_H
 #define HW_XTENSA_BOOTPARAM_H
 
diff --git a/hw/xtensa/xtensa_memory.h b/hw/xtensa/xtensa_memory.h
index 89125c4a0d..e0d34de2fa 100644
--- a/hw/xtensa/xtensa_memory.h
+++ b/hw/xtensa/xtensa_memory.h
@@ -25,6 +25,9 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XTENSA_MEMORY_H
 #define XTENSA_MEMORY_H
 
diff --git a/linux-user/aarch64/target_cpu.h b/linux-user/aarch64/target_cpu.h
index a021c95fa4..05f13afef2 100644
--- a/linux-user/aarch64/target_cpu.h
+++ b/linux-user/aarch64/target_cpu.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef AARCH64_TARGET_CPU_H
 #define AARCH64_TARGET_CPU_H
 
diff --git a/linux-user/aarch64/target_fcntl.h b/linux-user/aarch64/target_fcntl.h
index efdf6e5f05..f9f9a3f78e 100644
--- a/linux-user/aarch64/target_fcntl.h
+++ b/linux-user/aarch64/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef AARCH64_TARGET_FCNTL_H
 #define AARCH64_TARGET_FCNTL_H
 
diff --git a/linux-user/aarch64/target_signal.h b/linux-user/aarch64/target_signal.h
index ddd73169f0..cf6e667724 100644
--- a/linux-user/aarch64/target_signal.h
+++ b/linux-user/aarch64/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef AARCH64_TARGET_SIGNAL_H
 #define AARCH64_TARGET_SIGNAL_H
 
diff --git a/linux-user/aarch64/target_structs.h b/linux-user/aarch64/target_structs.h
index a4998a7491..50d147721c 100644
--- a/linux-user/aarch64/target_structs.h
+++ b/linux-user/aarch64/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef AARCH64_TARGET_STRUCTS_H
 #define AARCH64_TARGET_STRUCTS_H
 
diff --git a/linux-user/aarch64/target_syscall.h b/linux-user/aarch64/target_syscall.h
index b595e5da82..f7e43e03ef 100644
--- a/linux-user/aarch64/target_syscall.h
+++ b/linux-user/aarch64/target_syscall.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef AARCH64_TARGET_SYSCALL_H
 #define AARCH64_TARGET_SYSCALL_H
 
diff --git a/linux-user/aarch64/termbits.h b/linux-user/aarch64/termbits.h
index f9f80f0f37..31cfbd45f7 100644
--- a/linux-user/aarch64/termbits.h
+++ b/linux-user/aarch64/termbits.h
@@ -1,6 +1,8 @@
 /* from asm/termbits.h */
 /* NOTE: exactly the same as i386 */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/alpha/target_cpu.h b/linux-user/alpha/target_cpu.h
index ac4d255ae7..54697f55ad 100644
--- a/linux-user/alpha/target_cpu.h
+++ b/linux-user/alpha/target_cpu.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ALPHA_TARGET_CPU_H
 #define ALPHA_TARGET_CPU_H
 
diff --git a/linux-user/alpha/target_fcntl.h b/linux-user/alpha/target_fcntl.h
index 2617e73472..d39352b45f 100644
--- a/linux-user/alpha/target_fcntl.h
+++ b/linux-user/alpha/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ALPHA_TARGET_FCNTL_H
 #define ALPHA_TARGET_FCNTL_H
 
diff --git a/linux-user/alpha/target_signal.h b/linux-user/alpha/target_signal.h
index cd63d59fde..05dcb138b1 100644
--- a/linux-user/alpha/target_signal.h
+++ b/linux-user/alpha/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ALPHA_TARGET_SIGNAL_H
 #define ALPHA_TARGET_SIGNAL_H
 
diff --git a/linux-user/alpha/target_structs.h b/linux-user/alpha/target_structs.h
index db2bfe2876..5f57bfb815 100644
--- a/linux-user/alpha/target_structs.h
+++ b/linux-user/alpha/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ALPHA_TARGET_STRUCTS_H
 #define ALPHA_TARGET_STRUCTS_H
 
diff --git a/linux-user/alpha/target_syscall.h b/linux-user/alpha/target_syscall.h
index 3426cc5b4e..3f49f36247 100644
--- a/linux-user/alpha/target_syscall.h
+++ b/linux-user/alpha/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ALPHA_TARGET_SYSCALL_H
 #define ALPHA_TARGET_SYSCALL_H
 
diff --git a/linux-user/alpha/termbits.h b/linux-user/alpha/termbits.h
index 139bc87fa6..dfac5d2fec 100644
--- a/linux-user/alpha/termbits.h
+++ b/linux-user/alpha/termbits.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 typedef unsigned char	target_cc_t;
 typedef unsigned int	target_speed_t;
 typedef unsigned int	target_tcflag_t;
diff --git a/linux-user/arm/nwfpe/fpa11.h b/linux-user/arm/nwfpe/fpa11.h
index d459c5da02..beffc90bca 100644
--- a/linux-user/arm/nwfpe/fpa11.h
+++ b/linux-user/arm/nwfpe/fpa11.h
@@ -18,6 +18,9 @@
     along with this program; if not, see <http://www.gnu.org/licenses/>.
 */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef FPA11_H
 #define FPA11_H
 
diff --git a/linux-user/arm/nwfpe/fpopcode.h b/linux-user/arm/nwfpe/fpopcode.h
index 06cd909850..e628a5b6c9 100644
--- a/linux-user/arm/nwfpe/fpopcode.h
+++ b/linux-user/arm/nwfpe/fpopcode.h
@@ -18,6 +18,8 @@
     along with this program; if not, see <http://www.gnu.org/licenses/>.
 */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef FPOPCODE_H
 #define FPOPCODE_H
 
diff --git a/linux-user/arm/target_cpu.h b/linux-user/arm/target_cpu.h
index 8a3764919a..d30f855647 100644
--- a/linux-user/arm/target_cpu.h
+++ b/linux-user/arm/target_cpu.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ARM_TARGET_CPU_H
 #define ARM_TARGET_CPU_H
 
diff --git a/linux-user/arm/target_fcntl.h b/linux-user/arm/target_fcntl.h
index c8ff6b2505..4f469543c5 100644
--- a/linux-user/arm/target_fcntl.h
+++ b/linux-user/arm/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ARM_TARGET_FCNTL_H
 #define ARM_TARGET_FCNTL_H
 
diff --git a/linux-user/arm/target_signal.h b/linux-user/arm/target_signal.h
index ea123c40f3..e94a0b8c81 100644
--- a/linux-user/arm/target_signal.h
+++ b/linux-user/arm/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ARM_TARGET_SIGNAL_H
 #define ARM_TARGET_SIGNAL_H
 
diff --git a/linux-user/arm/target_structs.h b/linux-user/arm/target_structs.h
index 9a3dbce03d..a7db138167 100644
--- a/linux-user/arm/target_structs.h
+++ b/linux-user/arm/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ARM_TARGET_STRUCTS_H
 #define ARM_TARGET_STRUCTS_H
 
diff --git a/linux-user/arm/target_syscall.h b/linux-user/arm/target_syscall.h
index afc0772e19..beadaaac33 100644
--- a/linux-user/arm/target_syscall.h
+++ b/linux-user/arm/target_syscall.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ARM_TARGET_SYSCALL_H
 #define ARM_TARGET_SYSCALL_H
 
diff --git a/linux-user/arm/termbits.h b/linux-user/arm/termbits.h
index a61e138ec4..8bc288b38c 100644
--- a/linux-user/arm/termbits.h
+++ b/linux-user/arm/termbits.h
@@ -1,6 +1,8 @@
 /* from asm/termbits.h */
 /* NOTE: exactly the same as i386 */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/cpu_loop-common.h b/linux-user/cpu_loop-common.h
index c1d554a249..0c7eab2e03 100644
--- a/linux-user/cpu_loop-common.h
+++ b/linux-user/cpu_loop-common.h
@@ -17,6 +17,9 @@
  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CPU_LOOP_COMMON_H
 #define CPU_LOOP_COMMON_H
 
diff --git a/linux-user/cris/target_cpu.h b/linux-user/cris/target_cpu.h
index 2309343979..2c9aba607d 100644
--- a/linux-user/cris/target_cpu.h
+++ b/linux-user/cris/target_cpu.h
@@ -17,6 +17,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CRIS_TARGET_CPU_H
 #define CRIS_TARGET_CPU_H
 
diff --git a/linux-user/cris/target_fcntl.h b/linux-user/cris/target_fcntl.h
index df0aceea34..b9133be2f0 100644
--- a/linux-user/cris/target_fcntl.h
+++ b/linux-user/cris/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CRIS_TARGET_FCNTL_H
 #define CRIS_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/cris/target_signal.h b/linux-user/cris/target_signal.h
index 1cb5548f85..125db32d96 100644
--- a/linux-user/cris/target_signal.h
+++ b/linux-user/cris/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CRIS_TARGET_SIGNAL_H
 #define CRIS_TARGET_SIGNAL_H
 
diff --git a/linux-user/cris/target_structs.h b/linux-user/cris/target_structs.h
index 76f965325c..5d0dfbe975 100644
--- a/linux-user/cris/target_structs.h
+++ b/linux-user/cris/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CRIS_TARGET_STRUCTS_H
 #define CRIS_TARGET_STRUCTS_H
 
diff --git a/linux-user/cris/termbits.h b/linux-user/cris/termbits.h
index c825cd2f5e..e0adbcbea3 100644
--- a/linux-user/cris/termbits.h
+++ b/linux-user/cris/termbits.h
@@ -1,5 +1,7 @@
 /* from asm/termbits.h */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/fd-trans.h b/linux-user/fd-trans.h
index a3fcdaabc7..033308d47b 100644
--- a/linux-user/fd-trans.h
+++ b/linux-user/fd-trans.h
@@ -13,6 +13,8 @@
  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef FD_TRANS_H
 #define FD_TRANS_H
 
diff --git a/linux-user/flat.h b/linux-user/flat.h
index 6f2d0c4b2d..473fa61311 100644
--- a/linux-user/flat.h
+++ b/linux-user/flat.h
@@ -7,6 +7,8 @@
  * support uClinux flat-format executables.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define	FLAT_VERSION			0x00000004L
 
 #ifdef CONFIG_BINFMT_SHARED_FLAT
diff --git a/linux-user/generic/fcntl.h b/linux-user/generic/fcntl.h
index a775a491e9..e7bae5e8a6 100644
--- a/linux-user/generic/fcntl.h
+++ b/linux-user/generic/fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef GENERIC_FCNTL_H
 #define GENERIC_FCNTL_H
 
diff --git a/linux-user/host/aarch64/hostdep.h b/linux-user/host/aarch64/hostdep.h
index a8d41a21ad..e3ff0f7a73 100644
--- a/linux-user/host/aarch64/hostdep.h
+++ b/linux-user/host/aarch64/hostdep.h
@@ -9,6 +9,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef AARCH64_HOSTDEP_H
 #define AARCH64_HOSTDEP_H
 
diff --git a/linux-user/host/arm/hostdep.h b/linux-user/host/arm/hostdep.h
index 9276fe6ceb..651aa7da54 100644
--- a/linux-user/host/arm/hostdep.h
+++ b/linux-user/host/arm/hostdep.h
@@ -9,6 +9,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ARM_HOSTDEP_H
 #define ARM_HOSTDEP_H
 
diff --git a/linux-user/host/i386/hostdep.h b/linux-user/host/i386/hostdep.h
index 073be74d87..3f5ab0163a 100644
--- a/linux-user/host/i386/hostdep.h
+++ b/linux-user/host/i386/hostdep.h
@@ -9,6 +9,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef I386_HOSTDEP_H
 #define I386_HOSTDEP_H
 
diff --git a/linux-user/host/ppc64/hostdep.h b/linux-user/host/ppc64/hostdep.h
index 98979ad917..422c391c04 100644
--- a/linux-user/host/ppc64/hostdep.h
+++ b/linux-user/host/ppc64/hostdep.h
@@ -9,6 +9,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC64_HOSTDEP_H
 #define PPC64_HOSTDEP_H
 
diff --git a/linux-user/host/riscv64/hostdep.h b/linux-user/host/riscv64/hostdep.h
index 865f0fb9ff..18ed7677ba 100644
--- a/linux-user/host/riscv64/hostdep.h
+++ b/linux-user/host/riscv64/hostdep.h
@@ -5,6 +5,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef RISCV64_HOSTDEP_H
 #define RISCV64_HOSTDEP_H
 
diff --git a/linux-user/host/s390x/hostdep.h b/linux-user/host/s390x/hostdep.h
index 4f0171f36f..81a702b931 100644
--- a/linux-user/host/s390x/hostdep.h
+++ b/linux-user/host/s390x/hostdep.h
@@ -9,6 +9,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef S390X_HOSTDEP_H
 #define S390X_HOSTDEP_H
 
diff --git a/linux-user/host/x86_64/hostdep.h b/linux-user/host/x86_64/hostdep.h
index a4fefb5114..6bf3c930ce 100644
--- a/linux-user/host/x86_64/hostdep.h
+++ b/linux-user/host/x86_64/hostdep.h
@@ -9,6 +9,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef X86_64_HOSTDEP_H
 #define X86_64_HOSTDEP_H
 
diff --git a/linux-user/hppa/target_cpu.h b/linux-user/hppa/target_cpu.h
index 1c539bdbd6..75f4ef1d77 100644
--- a/linux-user/hppa/target_cpu.h
+++ b/linux-user/hppa/target_cpu.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HPPA_TARGET_CPU_H
 #define HPPA_TARGET_CPU_H
 
diff --git a/linux-user/hppa/target_fcntl.h b/linux-user/hppa/target_fcntl.h
index bd966a59b8..525e0a274c 100644
--- a/linux-user/hppa/target_fcntl.h
+++ b/linux-user/hppa/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HPPA_TARGET_FCNTL_H
 #define HPPA_TARGET_FCNTL_H
 
diff --git a/linux-user/hppa/target_signal.h b/linux-user/hppa/target_signal.h
index ba159ff8d0..ba1e803d7f 100644
--- a/linux-user/hppa/target_signal.h
+++ b/linux-user/hppa/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HPPA_TARGET_SIGNAL_H
 #define HPPA_TARGET_SIGNAL_H
 
diff --git a/linux-user/hppa/target_structs.h b/linux-user/hppa/target_structs.h
index b560b1872b..53a0fd586f 100644
--- a/linux-user/hppa/target_structs.h
+++ b/linux-user/hppa/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HPPA_TARGET_STRUCTS_H
 #define HPPA_TARGET_STRUCTS_H
 
diff --git a/linux-user/hppa/target_syscall.h b/linux-user/hppa/target_syscall.h
index e2f366839d..1c75d62e70 100644
--- a/linux-user/hppa/target_syscall.h
+++ b/linux-user/hppa/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HPPA_TARGET_SYSCALL_H
 #define HPPA_TARGET_SYSCALL_H
 
diff --git a/linux-user/hppa/termbits.h b/linux-user/hppa/termbits.h
index ad51c9c911..79e01c81bc 100644
--- a/linux-user/hppa/termbits.h
+++ b/linux-user/hppa/termbits.h
@@ -1,5 +1,7 @@
 /* from asm/termbits.h */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/i386/target_cpu.h b/linux-user/i386/target_cpu.h
index ece04d0966..d012c441e6 100644
--- a/linux-user/i386/target_cpu.h
+++ b/linux-user/i386/target_cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef I386_TARGET_CPU_H
 #define I386_TARGET_CPU_H
 
diff --git a/linux-user/i386/target_fcntl.h b/linux-user/i386/target_fcntl.h
index 4819743dae..6b3fa9f6ee 100644
--- a/linux-user/i386/target_fcntl.h
+++ b/linux-user/i386/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef I386_TARGET_FCNTL_H
 #define I386_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/i386/target_signal.h b/linux-user/i386/target_signal.h
index f55e78fd33..50aae79efb 100644
--- a/linux-user/i386/target_signal.h
+++ b/linux-user/i386/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef I386_TARGET_SIGNAL_H
 #define I386_TARGET_SIGNAL_H
 
diff --git a/linux-user/i386/target_structs.h b/linux-user/i386/target_structs.h
index 25388a7fd2..23ed22dfd9 100644
--- a/linux-user/i386/target_structs.h
+++ b/linux-user/i386/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef I386_TARGET_STRUCTS_H
 #define I386_TARGET_STRUCTS_H
 
diff --git a/linux-user/i386/target_syscall.h b/linux-user/i386/target_syscall.h
index 2854758134..69c30140dc 100644
--- a/linux-user/i386/target_syscall.h
+++ b/linux-user/i386/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef I386_TARGET_SYSCALL_H
 #define I386_TARGET_SYSCALL_H
 
diff --git a/linux-user/i386/termbits.h b/linux-user/i386/termbits.h
index 32dd0dde5d..c847ccbc4e 100644
--- a/linux-user/i386/termbits.h
+++ b/linux-user/i386/termbits.h
@@ -1,5 +1,7 @@
 /* from asm/termbits.h */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index 37501f575c..7064c71980 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
      /* emulated ioctl list */
 
      IOCTL(TCGETS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_termios)))
diff --git a/linux-user/linux_loop.h b/linux-user/linux_loop.h
index c69fea11e4..26974c9afd 100644
--- a/linux-user/linux_loop.h
+++ b/linux-user/linux_loop.h
@@ -2,6 +2,8 @@
  * and subsequently updated to match newer additions to the API.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef LINUX_LOOP_H
 #define LINUX_LOOP_H
 
diff --git a/linux-user/m68k/target_cpu.h b/linux-user/m68k/target_cpu.h
index 7a26f3c3fc..414b3cbfde 100644
--- a/linux-user/m68k/target_cpu.h
+++ b/linux-user/m68k/target_cpu.h
@@ -18,6 +18,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef M68K_TARGET_CPU_H
 #define M68K_TARGET_CPU_H
 
diff --git a/linux-user/m68k/target_elf.h b/linux-user/m68k/target_elf.h
index 998fe0fe2f..20700e4d43 100644
--- a/linux-user/m68k/target_elf.h
+++ b/linux-user/m68k/target_elf.h
@@ -5,6 +5,8 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef M68K_TARGET_ELF_H
 #define M68K_TARGET_ELF_H
 static inline const char *cpu_get_model(uint32_t eflags)
diff --git a/linux-user/m68k/target_fcntl.h b/linux-user/m68k/target_fcntl.h
index 068bc3243e..a6a544300f 100644
--- a/linux-user/m68k/target_fcntl.h
+++ b/linux-user/m68k/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef M68K_TARGET_FCNTL_H
 #define M68K_TARGET_FCNTL_H
 
diff --git a/linux-user/m68k/target_signal.h b/linux-user/m68k/target_signal.h
index 314e808844..5a5aa55c8e 100644
--- a/linux-user/m68k/target_signal.h
+++ b/linux-user/m68k/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef M68K_TARGET_SIGNAL_H
 #define M68K_TARGET_SIGNAL_H
 
diff --git a/linux-user/m68k/target_structs.h b/linux-user/m68k/target_structs.h
index e373d481e1..382318c087 100644
--- a/linux-user/m68k/target_structs.h
+++ b/linux-user/m68k/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef M68K_TARGET_STRUCTS_H
 #define M68K_TARGET_STRUCTS_H
 
diff --git a/linux-user/m68k/target_syscall.h b/linux-user/m68k/target_syscall.h
index 632ee4fcf8..501fdd7489 100644
--- a/linux-user/m68k/target_syscall.h
+++ b/linux-user/m68k/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef M68K_TARGET_SYSCALL_H
 #define M68K_TARGET_SYSCALL_H
 
diff --git a/linux-user/m68k/termbits.h b/linux-user/m68k/termbits.h
index 9df58dc5cb..ca9148d96f 100644
--- a/linux-user/m68k/termbits.h
+++ b/linux-user/m68k/termbits.h
@@ -1,6 +1,8 @@
 /* from asm/termbits.h */
 /* NOTE: exactly the same as i386 */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/microblaze/target_cpu.h b/linux-user/microblaze/target_cpu.h
index 73e139938c..22596fbc5e 100644
--- a/linux-user/microblaze/target_cpu.h
+++ b/linux-user/microblaze/target_cpu.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MICROBLAZE_TARGET_CPU_H
 #define MICROBLAZE_TARGET_CPU_H
 
diff --git a/linux-user/microblaze/target_fcntl.h b/linux-user/microblaze/target_fcntl.h
index 45402275ff..4fb61f8fbf 100644
--- a/linux-user/microblaze/target_fcntl.h
+++ b/linux-user/microblaze/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MICROBLAZE_TARGET_FCNTL_H
 #define MICROBLAZE_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/microblaze/target_signal.h b/linux-user/microblaze/target_signal.h
index 35efd5e928..42c9330027 100644
--- a/linux-user/microblaze/target_signal.h
+++ b/linux-user/microblaze/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MICROBLAZE_TARGET_SIGNAL_H
 #define MICROBLAZE_TARGET_SIGNAL_H
 
diff --git a/linux-user/microblaze/target_structs.h b/linux-user/microblaze/target_structs.h
index 70dbdb6101..4ff62a6c66 100644
--- a/linux-user/microblaze/target_structs.h
+++ b/linux-user/microblaze/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MICROBLAZE_TARGET_STRUCTS_H
 #define MICROBLAZE_TARGET_STRUCTS_H
 
diff --git a/linux-user/microblaze/termbits.h b/linux-user/microblaze/termbits.h
index c825cd2f5e..e0adbcbea3 100644
--- a/linux-user/microblaze/termbits.h
+++ b/linux-user/microblaze/termbits.h
@@ -1,5 +1,7 @@
 /* from asm/termbits.h */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/mips/target_cpu.h b/linux-user/mips/target_cpu.h
index 02cf5eeff7..6b65b4e0b8 100644
--- a/linux-user/mips/target_cpu.h
+++ b/linux-user/mips/target_cpu.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_TARGET_CPU_H
 #define MIPS_TARGET_CPU_H
 
diff --git a/linux-user/mips/target_elf.h b/linux-user/mips/target_elf.h
index a98c9bd6ad..2d5f74622e 100644
--- a/linux-user/mips/target_elf.h
+++ b/linux-user/mips/target_elf.h
@@ -5,6 +5,8 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_TARGET_ELF_H
 #define MIPS_TARGET_ELF_H
 static inline const char *cpu_get_model(uint32_t eflags)
diff --git a/linux-user/mips/target_fcntl.h b/linux-user/mips/target_fcntl.h
index 000527cc95..da6960a7f9 100644
--- a/linux-user/mips/target_fcntl.h
+++ b/linux-user/mips/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_TARGET_FCNTL_H
 #define MIPS_TARGET_FCNTL_H
 
diff --git a/linux-user/mips/target_signal.h b/linux-user/mips/target_signal.h
index 66e1ad44a6..db7793b655 100644
--- a/linux-user/mips/target_signal.h
+++ b/linux-user/mips/target_signal.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_TARGET_SIGNAL_H
 #define MIPS_TARGET_SIGNAL_H
 
diff --git a/linux-user/mips/target_structs.h b/linux-user/mips/target_structs.h
index 909ba89708..54b52dc7e9 100644
--- a/linux-user/mips/target_structs.h
+++ b/linux-user/mips/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_TARGET_STRUCTS_H
 #define MIPS_TARGET_STRUCTS_H
 
diff --git a/linux-user/mips/target_syscall.h b/linux-user/mips/target_syscall.h
index d5509a34a7..3b170bd55c 100644
--- a/linux-user/mips/target_syscall.h
+++ b/linux-user/mips/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_TARGET_SYSCALL_H
 #define MIPS_TARGET_SYSCALL_H
 
diff --git a/linux-user/mips/termbits.h b/linux-user/mips/termbits.h
index 49a72c5539..52e8c50b9c 100644
--- a/linux-user/mips/termbits.h
+++ b/linux-user/mips/termbits.h
@@ -1,5 +1,7 @@
 /* from asm/termbits.h */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 23
 
 struct target_termios {
diff --git a/linux-user/mips64/syscall_nr.h b/linux-user/mips64/syscall_nr.h
index ff218a9bf2..00baedafd2 100644
--- a/linux-user/mips64/syscall_nr.h
+++ b/linux-user/mips64/syscall_nr.h
@@ -1,3 +1,5 @@
+/* NOTE: May only be included into target-dependent code */
+
 #ifdef TARGET_ABI32
 /*
  * Linux N32 syscalls are in the range from 6000 to 6999.
diff --git a/linux-user/mips64/target_cpu.h b/linux-user/mips64/target_cpu.h
index f16991b4ef..147298dfba 100644
--- a/linux-user/mips64/target_cpu.h
+++ b/linux-user/mips64/target_cpu.h
@@ -16,4 +16,7 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "../mips/target_cpu.h"
diff --git a/linux-user/mips64/target_elf.h b/linux-user/mips64/target_elf.h
index ec55d8542a..35314aea5a 100644
--- a/linux-user/mips64/target_elf.h
+++ b/linux-user/mips64/target_elf.h
@@ -5,6 +5,8 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS64_TARGET_ELF_H
 #define MIPS64_TARGET_ELF_H
 static inline const char *cpu_get_model(uint32_t eflags)
diff --git a/linux-user/mips64/target_fcntl.h b/linux-user/mips64/target_fcntl.h
index a511bc0e6c..32a53ad84a 100644
--- a/linux-user/mips64/target_fcntl.h
+++ b/linux-user/mips64/target_fcntl.h
@@ -1 +1,4 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "../mips/target_fcntl.h"
diff --git a/linux-user/mips64/target_signal.h b/linux-user/mips64/target_signal.h
index 753e91fbd6..145e604c0a 100644
--- a/linux-user/mips64/target_signal.h
+++ b/linux-user/mips64/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS64_TARGET_SIGNAL_H
 #define MIPS64_TARGET_SIGNAL_H
 
diff --git a/linux-user/mips64/target_structs.h b/linux-user/mips64/target_structs.h
index a4f619e732..7fe2baa0c6 100644
--- a/linux-user/mips64/target_structs.h
+++ b/linux-user/mips64/target_structs.h
@@ -1,2 +1,4 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "../mips/target_structs.h"
 
diff --git a/linux-user/mips64/target_syscall.h b/linux-user/mips64/target_syscall.h
index 8ccc46822c..7c3541a7ba 100644
--- a/linux-user/mips64/target_syscall.h
+++ b/linux-user/mips64/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS64_TARGET_SYSCALL_H
 #define MIPS64_TARGET_SYSCALL_H
 
diff --git a/linux-user/mips64/termbits.h b/linux-user/mips64/termbits.h
index d0a271e1d4..5ebeca4615 100644
--- a/linux-user/mips64/termbits.h
+++ b/linux-user/mips64/termbits.h
@@ -1,2 +1,4 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "../mips/termbits.h"
 
diff --git a/linux-user/nios2/target_cpu.h b/linux-user/nios2/target_cpu.h
index 5596c05c9c..8f1684c66a 100644
--- a/linux-user/nios2/target_cpu.h
+++ b/linux-user/nios2/target_cpu.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef NIOS2_TARGET_CPU_H
 #define NIOS2_TARGET_CPU_H
 
diff --git a/linux-user/nios2/target_fcntl.h b/linux-user/nios2/target_fcntl.h
index 714583215d..2dd93b5c35 100644
--- a/linux-user/nios2/target_fcntl.h
+++ b/linux-user/nios2/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef NIOS2_TARGET_FCNTL_H
 #define NIOS2_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/nios2/target_signal.h b/linux-user/nios2/target_signal.h
index fe48721b3d..c1f738de74 100644
--- a/linux-user/nios2/target_signal.h
+++ b/linux-user/nios2/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef NIOS2_TARGET_SIGNAL_H
 #define NIOS2_TARGET_SIGNAL_H
 
diff --git a/linux-user/nios2/target_structs.h b/linux-user/nios2/target_structs.h
index 7145251706..321e19e00c 100644
--- a/linux-user/nios2/target_structs.h
+++ b/linux-user/nios2/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef NIOS2_TARGET_STRUCTS_H
 #define NIOS2_TARGET_STRUCTS_H
 
diff --git a/linux-user/nios2/termbits.h b/linux-user/nios2/termbits.h
index f9f80f0f37..31cfbd45f7 100644
--- a/linux-user/nios2/termbits.h
+++ b/linux-user/nios2/termbits.h
@@ -1,6 +1,8 @@
 /* from asm/termbits.h */
 /* NOTE: exactly the same as i386 */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/openrisc/target_cpu.h b/linux-user/openrisc/target_cpu.h
index 32ff135089..0df79d5b57 100644
--- a/linux-user/openrisc/target_cpu.h
+++ b/linux-user/openrisc/target_cpu.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef OPENRISC_TARGET_CPU_H
 #define OPENRISC_TARGET_CPU_H
 
diff --git a/linux-user/openrisc/target_fcntl.h b/linux-user/openrisc/target_fcntl.h
index ea31bf8b70..b060418765 100644
--- a/linux-user/openrisc/target_fcntl.h
+++ b/linux-user/openrisc/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef OPENRISC_TARGET_FCNTL_H
 #define OPENRISC_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/openrisc/target_signal.h b/linux-user/openrisc/target_signal.h
index 8283eaf544..b246e36c35 100644
--- a/linux-user/openrisc/target_signal.h
+++ b/linux-user/openrisc/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef OPENRISC_TARGET_SIGNAL_H
 #define OPENRISC_TARGET_SIGNAL_H
 
diff --git a/linux-user/openrisc/target_structs.h b/linux-user/openrisc/target_structs.h
index e98e2bc799..143c8ed08b 100644
--- a/linux-user/openrisc/target_structs.h
+++ b/linux-user/openrisc/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef OPENRISC_TARGET_STRUCTS_H
 #define OPENRISC_TARGET_STRUCTS_H
 
diff --git a/linux-user/openrisc/target_syscall.h b/linux-user/openrisc/target_syscall.h
index d586d2a018..ec88f20bac 100644
--- a/linux-user/openrisc/target_syscall.h
+++ b/linux-user/openrisc/target_syscall.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef OPENRISC_TARGET_SYSCALL_H
 #define OPENRISC_TARGET_SYSCALL_H
 
diff --git a/linux-user/openrisc/termbits.h b/linux-user/openrisc/termbits.h
index 231a49806b..596907f739 100644
--- a/linux-user/openrisc/termbits.h
+++ b/linux-user/openrisc/termbits.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 typedef unsigned char   target_openrisc_cc;        /*cc_t*/
 typedef unsigned int    target_openrisc_speed;     /*speed_t*/
 typedef unsigned int    target_openrisc_tcflag;    /*tcflag_t*/
diff --git a/linux-user/ppc/syscall_nr.h b/linux-user/ppc/syscall_nr.h
index afa36544f1..ce3b7d0f18 100644
--- a/linux-user/ppc/syscall_nr.h
+++ b/linux-user/ppc/syscall_nr.h
@@ -1,6 +1,9 @@
 /*
  * This file contains the system call numbers.
  */
+
+/* NOTE: May only be included into target-dependent code */
+
 #define TARGET_NR_restart_syscall          0
 #define TARGET_NR_exit                     1
 #define TARGET_NR_fork                     2
diff --git a/linux-user/ppc/target_cpu.h b/linux-user/ppc/target_cpu.h
index c4641834e7..89024759a6 100644
--- a/linux-user/ppc/target_cpu.h
+++ b/linux-user/ppc/target_cpu.h
@@ -16,6 +16,10 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_TARGET_CPU_H
 #define PPC_TARGET_CPU_H
 
diff --git a/linux-user/ppc/target_elf.h b/linux-user/ppc/target_elf.h
index 576a5b9959..a5d4999c06 100644
--- a/linux-user/ppc/target_elf.h
+++ b/linux-user/ppc/target_elf.h
@@ -5,6 +5,8 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef PPC_TARGET_ELF_H
 #define PPC_TARGET_ELF_H
 static inline const char *cpu_get_model(uint32_t eflags)
diff --git a/linux-user/ppc/target_fcntl.h b/linux-user/ppc/target_fcntl.h
index d74ab710cf..b11e87c035 100644
--- a/linux-user/ppc/target_fcntl.h
+++ b/linux-user/ppc/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_TARGET_FCNTL_H
 #define PPC_TARGET_FCNTL_H
 
diff --git a/linux-user/ppc/target_signal.h b/linux-user/ppc/target_signal.h
index 4453e2e7ef..2b0add1585 100644
--- a/linux-user/ppc/target_signal.h
+++ b/linux-user/ppc/target_signal.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_TARGET_SIGNAL_H
 #define PPC_TARGET_SIGNAL_H
 
diff --git a/linux-user/ppc/target_structs.h b/linux-user/ppc/target_structs.h
index 6b1f5791a9..0cb7145b8a 100644
--- a/linux-user/ppc/target_structs.h
+++ b/linux-user/ppc/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_TARGET_STRUCTS_H
 #define PPC_TARGET_STRUCTS_H
 
diff --git a/linux-user/ppc/target_syscall.h b/linux-user/ppc/target_syscall.h
index afc0570410..0a0b88fd6c 100644
--- a/linux-user/ppc/target_syscall.h
+++ b/linux-user/ppc/target_syscall.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_TARGET_SYSCALL_H
 #define PPC_TARGET_SYSCALL_H
 
diff --git a/linux-user/ppc/termbits.h b/linux-user/ppc/termbits.h
index a5b1bb783b..742a4a9424 100644
--- a/linux-user/ppc/termbits.h
+++ b/linux-user/ppc/termbits.h
@@ -1,5 +1,7 @@
 /* from asm/termbits.h */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/qemu.h b/linux-user/qemu.h
index ef400cb78a..7518fe666b 100644
--- a/linux-user/qemu.h
+++ b/linux-user/qemu.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_H
 #define QEMU_H
 
diff --git a/linux-user/riscv/target_cpu.h b/linux-user/riscv/target_cpu.h
index 90f9a4171e..86facc5e3a 100644
--- a/linux-user/riscv/target_cpu.h
+++ b/linux-user/riscv/target_cpu.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef RISCV_TARGET_CPU_H
 #define RISCV_TARGET_CPU_H
 
diff --git a/linux-user/riscv/target_fcntl.h b/linux-user/riscv/target_fcntl.h
index 9c3d0fbe2b..a830bf536a 100644
--- a/linux-user/riscv/target_fcntl.h
+++ b/linux-user/riscv/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef RISCV_TARGET_FCNTL_H
 #define RISCV_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/riscv/target_signal.h b/linux-user/riscv/target_signal.h
index f113ba9a55..d4e14a3074 100644
--- a/linux-user/riscv/target_signal.h
+++ b/linux-user/riscv/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef RISCV_TARGET_SIGNAL_H
 #define RISCV_TARGET_SIGNAL_H
 
diff --git a/linux-user/riscv/target_structs.h b/linux-user/riscv/target_structs.h
index ea3e5ed17e..7d8dff7a33 100644
--- a/linux-user/riscv/target_structs.h
+++ b/linux-user/riscv/target_structs.h
@@ -4,6 +4,9 @@
  * This is a copy of ../aarch64/target_structs.h atm.
  *
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef RISCV_TARGET_STRUCTS_H
 #define RISCV_TARGET_STRUCTS_H
 
diff --git a/linux-user/riscv/target_syscall.h b/linux-user/riscv/target_syscall.h
index ee81d8bc88..6374d09839 100644
--- a/linux-user/riscv/target_syscall.h
+++ b/linux-user/riscv/target_syscall.h
@@ -5,6 +5,8 @@
  * Reference: linux/arch/riscv/include/uapi/asm/ptrace.h
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 struct target_pt_regs {
     abi_long sepc;
     abi_long ra;
diff --git a/linux-user/riscv/termbits.h b/linux-user/riscv/termbits.h
index 7e4e230588..62784abfc3 100644
--- a/linux-user/riscv/termbits.h
+++ b/linux-user/riscv/termbits.h
@@ -1,6 +1,8 @@
 /* from asm/termbits.h */
 /* NOTE: exactly the same as i386 */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/s390x/syscall_nr.h b/linux-user/s390x/syscall_nr.h
index 1a66c5561d..dea18ec37a 100644
--- a/linux-user/s390x/syscall_nr.h
+++ b/linux-user/s390x/syscall_nr.h
@@ -2,6 +2,8 @@
  * This file contains the system call numbers.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #define TARGET_NR_exit                 1
 #define TARGET_NR_fork                 2
 #define TARGET_NR_read                 3
diff --git a/linux-user/s390x/target_cpu.h b/linux-user/s390x/target_cpu.h
index aa181ceaee..f10770c33e 100644
--- a/linux-user/s390x/target_cpu.h
+++ b/linux-user/s390x/target_cpu.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef S390X_TARGET_CPU_H
 #define S390X_TARGET_CPU_H
 
diff --git a/linux-user/s390x/target_fcntl.h b/linux-user/s390x/target_fcntl.h
index 36dc50fba0..bd918aafac 100644
--- a/linux-user/s390x/target_fcntl.h
+++ b/linux-user/s390x/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef S390X_TARGET_FCNTL_H
 #define S390X_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/s390x/target_signal.h b/linux-user/s390x/target_signal.h
index b58bc7c20f..a4c6bebe2c 100644
--- a/linux-user/s390x/target_signal.h
+++ b/linux-user/s390x/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef S390X_TARGET_SIGNAL_H
 #define S390X_TARGET_SIGNAL_H
 
diff --git a/linux-user/s390x/target_structs.h b/linux-user/s390x/target_structs.h
index cadff6db3d..1d8f975361 100644
--- a/linux-user/s390x/target_structs.h
+++ b/linux-user/s390x/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef S390X_TARGET_STRUCTS_H
 #define S390X_TARGET_STRUCTS_H
 
diff --git a/linux-user/s390x/target_syscall.h b/linux-user/s390x/target_syscall.h
index 8d4f609eaa..c52471ef21 100644
--- a/linux-user/s390x/target_syscall.h
+++ b/linux-user/s390x/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef S390X_TARGET_SYSCALL_H
 #define S390X_TARGET_SYSCALL_H
 
diff --git a/linux-user/s390x/termbits.h b/linux-user/s390x/termbits.h
index 8bcca89cd7..2c2a3d6972 100644
--- a/linux-user/s390x/termbits.h
+++ b/linux-user/s390x/termbits.h
@@ -6,6 +6,8 @@
  *  Derived from "include/asm-i386/termbits.h"
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 struct target_termios {
     unsigned int c_iflag;		/* input mode flags */
diff --git a/linux-user/sh4/target_cpu.h b/linux-user/sh4/target_cpu.h
index b0be9a2c1b..8e90aa30b3 100644
--- a/linux-user/sh4/target_cpu.h
+++ b/linux-user/sh4/target_cpu.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SH4_TARGET_CPU_H
 #define SH4_TARGET_CPU_H
 
diff --git a/linux-user/sh4/target_fcntl.h b/linux-user/sh4/target_fcntl.h
index 2622d95539..478ea0ec76 100644
--- a/linux-user/sh4/target_fcntl.h
+++ b/linux-user/sh4/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SH4_TARGET_FCNTL_H
 #define SH4_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/sh4/target_signal.h b/linux-user/sh4/target_signal.h
index 434970a990..ca9b216491 100644
--- a/linux-user/sh4/target_signal.h
+++ b/linux-user/sh4/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SH4_TARGET_SIGNAL_H
 #define SH4_TARGET_SIGNAL_H
 
diff --git a/linux-user/sh4/target_structs.h b/linux-user/sh4/target_structs.h
index 00ac39478b..e4fcfe6f46 100644
--- a/linux-user/sh4/target_structs.h
+++ b/linux-user/sh4/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SH4_TARGET_STRUCTS_H
 #define SH4_TARGET_STRUCTS_H
 
diff --git a/linux-user/sh4/target_syscall.h b/linux-user/sh4/target_syscall.h
index 2b5f75be13..39e11cdc5b 100644
--- a/linux-user/sh4/target_syscall.h
+++ b/linux-user/sh4/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SH4_TARGET_SYSCALL_H
 #define SH4_TARGET_SYSCALL_H
 
diff --git a/linux-user/sh4/termbits.h b/linux-user/sh4/termbits.h
index 5723ed7752..c3a18d954a 100644
--- a/linux-user/sh4/termbits.h
+++ b/linux-user/sh4/termbits.h
@@ -1,5 +1,7 @@
 /* from asm/termbits.h */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/signal-common.h b/linux-user/signal-common.h
index 51030a9306..68e8bc35fe 100644
--- a/linux-user/signal-common.h
+++ b/linux-user/signal-common.h
@@ -17,6 +17,9 @@
  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SIGNAL_COMMON_H
 #define SIGNAL_COMMON_H
 extern struct target_sigaltstack target_sigaltstack_used;
diff --git a/linux-user/socket.h b/linux-user/socket.h
index 4c0b5c2dfa..3de90d7c6c 100644
--- a/linux-user/socket.h
+++ b/linux-user/socket.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "sockbits.h"
 
 #ifndef TARGET_ARCH_HAS_SOCKET_TYPES
diff --git a/linux-user/sparc/target_cpu.h b/linux-user/sparc/target_cpu.h
index 1ffc0ae9f2..436bfce0d4 100644
--- a/linux-user/sparc/target_cpu.h
+++ b/linux-user/sparc/target_cpu.h
@@ -17,6 +17,10 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SPARC_TARGET_CPU_H
 #define SPARC_TARGET_CPU_H
 
diff --git a/linux-user/sparc/target_elf.h b/linux-user/sparc/target_elf.h
index a510ceb612..58f6c395a9 100644
--- a/linux-user/sparc/target_elf.h
+++ b/linux-user/sparc/target_elf.h
@@ -5,6 +5,8 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef SPARC_TARGET_ELF_H
 #define SPARC_TARGET_ELF_H
 static inline const char *cpu_get_model(uint32_t eflags)
diff --git a/linux-user/sparc/target_fcntl.h b/linux-user/sparc/target_fcntl.h
index c2532989e5..d6afb73fae 100644
--- a/linux-user/sparc/target_fcntl.h
+++ b/linux-user/sparc/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SPARC_TARGET_FCNTL_H
 #define SPARC_TARGET_FCNTL_H
 
diff --git a/linux-user/sparc/target_signal.h b/linux-user/sparc/target_signal.h
index 5cc40327d2..2a435f3250 100644
--- a/linux-user/sparc/target_signal.h
+++ b/linux-user/sparc/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SPARC_TARGET_SIGNAL_H
 #define SPARC_TARGET_SIGNAL_H
 
diff --git a/linux-user/sparc/target_structs.h b/linux-user/sparc/target_structs.h
index ee24c3b5fc..3a20ea7afe 100644
--- a/linux-user/sparc/target_structs.h
+++ b/linux-user/sparc/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SPARC_TARGET_STRUCTS_H
 #define SPARC_TARGET_STRUCTS_H
 
diff --git a/linux-user/sparc/target_syscall.h b/linux-user/sparc/target_syscall.h
index b9160a771b..cf03c33413 100644
--- a/linux-user/sparc/target_syscall.h
+++ b/linux-user/sparc/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SPARC_TARGET_SYSCALL_H
 #define SPARC_TARGET_SYSCALL_H
 
diff --git a/linux-user/sparc/termbits.h b/linux-user/sparc/termbits.h
index 113d6dfbdb..60f347a049 100644
--- a/linux-user/sparc/termbits.h
+++ b/linux-user/sparc/termbits.h
@@ -1,5 +1,7 @@
 /* from asm/termbits.h */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/sparc64/target_cpu.h b/linux-user/sparc64/target_cpu.h
index b22263d2db..e7a25b4b46 100644
--- a/linux-user/sparc64/target_cpu.h
+++ b/linux-user/sparc64/target_cpu.h
@@ -1 +1,4 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "../sparc/target_cpu.h"
diff --git a/linux-user/sparc64/target_fcntl.h b/linux-user/sparc64/target_fcntl.h
index 053c774257..3cad57fdc4 100644
--- a/linux-user/sparc64/target_fcntl.h
+++ b/linux-user/sparc64/target_fcntl.h
@@ -1 +1,4 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "../sparc/target_fcntl.h"
diff --git a/linux-user/sparc64/target_signal.h b/linux-user/sparc64/target_signal.h
index 6a7d57d024..f6ec4304e1 100644
--- a/linux-user/sparc64/target_signal.h
+++ b/linux-user/sparc64/target_signal.h
@@ -1 +1,3 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "../sparc/target_signal.h"
diff --git a/linux-user/sparc64/target_structs.h b/linux-user/sparc64/target_structs.h
index 1808132b18..c13fa84c12 100644
--- a/linux-user/sparc64/target_structs.h
+++ b/linux-user/sparc64/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SPARC64_TARGET_STRUCTS_H
 #define SPARC64_TARGET_STRUCTS_H
 
diff --git a/linux-user/sparc64/target_syscall.h b/linux-user/sparc64/target_syscall.h
index 3073a23e03..e5f9a07a68 100644
--- a/linux-user/sparc64/target_syscall.h
+++ b/linux-user/sparc64/target_syscall.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SPARC64_TARGET_SYSCALL_H
 #define SPARC64_TARGET_SYSCALL_H
 
diff --git a/linux-user/sparc64/termbits.h b/linux-user/sparc64/termbits.h
index 113d6dfbdb..60f347a049 100644
--- a/linux-user/sparc64/termbits.h
+++ b/linux-user/sparc64/termbits.h
@@ -1,5 +1,7 @@
 /* from asm/termbits.h */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 struct target_termios {
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 1f5b2d18db..edc43ede91 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -4,6 +4,8 @@
    most of them stay the same, so we handle it by putting ifdefs if
    necessary */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SYSCALL_DEFS_H
 #define SYSCALL_DEFS_H
 
diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h
index b98a23b0f1..3388bdc8de 100644
--- a/linux-user/syscall_types.h
+++ b/linux-user/syscall_types.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 STRUCT_SPECIAL(termios)
 
 STRUCT(winsize,
diff --git a/linux-user/tilegx/target_cpu.h b/linux-user/tilegx/target_cpu.h
index d1aa5824f2..0576da5ec5 100644
--- a/linux-user/tilegx/target_cpu.h
+++ b/linux-user/tilegx/target_cpu.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TILEGX_TARGET_CPU_H
 #define TILEGX_TARGET_CPU_H
 
diff --git a/linux-user/tilegx/target_fcntl.h b/linux-user/tilegx/target_fcntl.h
index 5ed7438459..f8b93fcaf7 100644
--- a/linux-user/tilegx/target_fcntl.h
+++ b/linux-user/tilegx/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TILEGX_TARGET_FCNTL_H
 #define TILEGX_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/tilegx/target_signal.h b/linux-user/tilegx/target_signal.h
index 655be13009..9527ef265c 100644
--- a/linux-user/tilegx/target_signal.h
+++ b/linux-user/tilegx/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TILEGX_TARGET_SIGNAL_H
 #define TILEGX_TARGET_SIGNAL_H
 
diff --git a/linux-user/tilegx/target_structs.h b/linux-user/tilegx/target_structs.h
index de8b1f2f45..aa4556ae6f 100644
--- a/linux-user/tilegx/target_structs.h
+++ b/linux-user/tilegx/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TILEGX_TARGET_STRUCTS_H
 #define TILEGX_TARGET_STRUCTS_H
 
diff --git a/linux-user/tilegx/target_syscall.h b/linux-user/tilegx/target_syscall.h
index d731acdafa..453c1501b4 100644
--- a/linux-user/tilegx/target_syscall.h
+++ b/linux-user/tilegx/target_syscall.h
@@ -1,3 +1,5 @@
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef TILEGX_TARGET_SYSCALL_H
 #define TILEGX_TARGET_SYSCALL_H
 
diff --git a/linux-user/uname.h b/linux-user/uname.h
index 4503094211..e0f4dc920f 100644
--- a/linux-user/uname.h
+++ b/linux-user/uname.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef UNAME_H
 #define UNAME_H
 
diff --git a/linux-user/x86_64/target_cpu.h b/linux-user/x86_64/target_cpu.h
index 9ec7cbb7a4..3d451086d8 100644
--- a/linux-user/x86_64/target_cpu.h
+++ b/linux-user/x86_64/target_cpu.h
@@ -1 +1,4 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "../i386/target_cpu.h"
diff --git a/linux-user/x86_64/target_fcntl.h b/linux-user/x86_64/target_fcntl.h
index 3c7238e56b..102c4938fa 100644
--- a/linux-user/x86_64/target_fcntl.h
+++ b/linux-user/x86_64/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef X86_64_TARGET_FCNTL_H
 #define X86_64_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/x86_64/target_signal.h b/linux-user/x86_64/target_signal.h
index 4c4380f7b9..5607f4c301 100644
--- a/linux-user/x86_64/target_signal.h
+++ b/linux-user/x86_64/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef X86_64_TARGET_SIGNAL_H
 #define X86_64_TARGET_SIGNAL_H
 
diff --git a/linux-user/x86_64/target_structs.h b/linux-user/x86_64/target_structs.h
index b6e82a822c..2a1c29f91b 100644
--- a/linux-user/x86_64/target_structs.h
+++ b/linux-user/x86_64/target_structs.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef X86_64_TARGET_STRUCTS_H
 #define X86_64_TARGET_STRUCTS_H
 
diff --git a/linux-user/x86_64/target_syscall.h b/linux-user/x86_64/target_syscall.h
index 5e221e1d9d..f44d3d999a 100644
--- a/linux-user/x86_64/target_syscall.h
+++ b/linux-user/x86_64/target_syscall.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef X86_64_TARGET_SYSCALL_H
 #define X86_64_TARGET_SYSCALL_H
 
diff --git a/linux-user/x86_64/termbits.h b/linux-user/x86_64/termbits.h
index f5776a8aa6..b51885c130 100644
--- a/linux-user/x86_64/termbits.h
+++ b/linux-user/x86_64/termbits.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #define TARGET_NCCS 19
 
 typedef unsigned char	target_cc_t;
diff --git a/linux-user/xtensa/target_cpu.h b/linux-user/xtensa/target_cpu.h
index e31efe3ea0..935702c66b 100644
--- a/linux-user/xtensa/target_cpu.h
+++ b/linux-user/xtensa/target_cpu.h
@@ -1,6 +1,9 @@
 /*
  * Xtensa-specific CPU ABI and functions for linux-user
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XTENSA_TARGET_CPU_H
 #define XTENSA_TARGET_CPU_H
 
diff --git a/linux-user/xtensa/target_elf.h b/linux-user/xtensa/target_elf.h
index a9a3fabd89..a23e73cd77 100644
--- a/linux-user/xtensa/target_elf.h
+++ b/linux-user/xtensa/target_elf.h
@@ -5,6 +5,8 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XTENSA_TARGET_ELF_H
 #define XTENSA_TARGET_ELF_H
 
diff --git a/linux-user/xtensa/target_fcntl.h b/linux-user/xtensa/target_fcntl.h
index dc1ca7eaa5..42f5e904c5 100644
--- a/linux-user/xtensa/target_fcntl.h
+++ b/linux-user/xtensa/target_fcntl.h
@@ -5,6 +5,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XTENSA_TARGET_FCNTL_H
 #define XTENSA_TARGET_FCNTL_H
 #include "../generic/fcntl.h"
diff --git a/linux-user/xtensa/target_signal.h b/linux-user/xtensa/target_signal.h
index c60bf656f6..1abcf6fbb3 100644
--- a/linux-user/xtensa/target_signal.h
+++ b/linux-user/xtensa/target_signal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XTENSA_TARGET_SIGNAL_H
 #define XTENSA_TARGET_SIGNAL_H
 
diff --git a/linux-user/xtensa/target_structs.h b/linux-user/xtensa/target_structs.h
index 9cde6844b8..ce34cdfca9 100644
--- a/linux-user/xtensa/target_structs.h
+++ b/linux-user/xtensa/target_structs.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XTENSA_TARGET_STRUCTS_H
 #define XTENSA_TARGET_STRUCTS_H
 
diff --git a/linux-user/xtensa/target_syscall.h b/linux-user/xtensa/target_syscall.h
index 3866dad849..3ef626ee48 100644
--- a/linux-user/xtensa/target_syscall.h
+++ b/linux-user/xtensa/target_syscall.h
@@ -1,3 +1,5 @@
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef XTENSA_TARGET_SYSCALL_H
 #define XTENSA_TARGET_SYSCALL_H
 
diff --git a/linux-user/xtensa/termbits.h b/linux-user/xtensa/termbits.h
index d1e09e61a6..6a8eadad8c 100644
--- a/linux-user/xtensa/termbits.h
+++ b/linux-user/xtensa/termbits.h
@@ -10,6 +10,8 @@
  * Copyright (C) 2001 - 2005 Tensilica Inc.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_LINUX, yet! */
+
 #ifndef XTENSA_TERMBITS_H
 #define XTENSA_TERMBITS_H
 
diff --git a/migration/postcopy-ram.h b/migration/postcopy-ram.h
index 9d55536fd1..a8729631f4 100644
--- a/migration/postcopy-ram.h
+++ b/migration/postcopy-ram.h
@@ -10,6 +10,9 @@
  * See the COPYING file in the top-level directory.
  *
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_POSTCOPY_RAM_H
 #define QEMU_POSTCOPY_RAM_H
 
diff --git a/migration/qemu-file.h b/migration/qemu-file.h
index 13baf896bd..1107d9dbc3 100644
--- a/migration/qemu-file.h
+++ b/migration/qemu-file.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIGRATION_QEMU_FILE_H
 #define MIGRATION_QEMU_FILE_H
 
diff --git a/net/colo-compare.h b/net/colo-compare.h
index 22ddd512e2..1ad6583dd0 100644
--- a/net/colo-compare.h
+++ b/net/colo-compare.h
@@ -14,6 +14,8 @@
  * later.  See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_COLO_COMPARE_H
 #define QEMU_COLO_COMPARE_H
 
diff --git a/qemu-options-wrapper.h b/qemu-options-wrapper.h
index 6f548e3922..ee72bbc004 100644
--- a/qemu-options-wrapper.h
+++ b/qemu-options-wrapper.h
@@ -1,3 +1,4 @@
+/* FIXME Does not pass make check-headers, yet! */
 
 #if defined(QEMU_OPTIONS_GENERATE_ENUM)
 
diff --git a/qga/guest-agent-core.h b/qga/guest-agent-core.h
index 60eae16f27..6cf8c288e8 100644
--- a/qga/guest-agent-core.h
+++ b/qga/guest-agent-core.h
@@ -10,6 +10,9 @@
  * This work is licensed under the terms of the GNU GPL, version 2 or later.
  * See the COPYING file in the top-level directory.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef GUEST_AGENT_CORE_H
 #define GUEST_AGENT_CORE_H
 
diff --git a/qga/service-win32.h b/qga/service-win32.h
index 7b16d69b57..125eb4d235 100644
--- a/qga/service-win32.h
+++ b/qga/service-win32.h
@@ -11,6 +11,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_WIN32, yet! */
+
 #ifndef QGA_SERVICE_WIN32_H
 #define QGA_SERVICE_WIN32_H
 
diff --git a/qga/vss-win32.h b/qga/vss-win32.h
index ce2abe5a72..deede5290c 100644
--- a/qga/vss-win32.h
+++ b/qga/vss-win32.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef VSS_WIN32_H
 #define VSS_WIN32_H
 
diff --git a/qga/vss-win32/install.h b/qga/vss-win32/install.h
index 35364afdea..d90ae63c21 100644
--- a/qga/vss-win32/install.h
+++ b/qga/vss-win32/install.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_WIN32, yet! */
+
 #ifndef INSTALL_H
 #define INSTALL_H
 
diff --git a/qga/vss-win32/requester.h b/qga/vss-win32/requester.h
index 5a8e8faf0c..ffbaa3476f 100644
--- a/qga/vss-win32/requester.h
+++ b/qga/vss-win32/requester.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_WIN32, yet! */
+
 #ifndef VSS_WIN32_REQUESTER_H
 #define VSS_WIN32_REQUESTER_H
 
diff --git a/qga/vss-win32/vss-common.h b/qga/vss-win32/vss-common.h
index 61c170b52e..938e176311 100644
--- a/qga/vss-win32/vss-common.h
+++ b/qga/vss-win32/vss-common.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef VSS_COMMON_H
 #define VSS_COMMON_H
 
diff --git a/replay/replay-internal.h b/replay/replay-internal.h
index af6f4d55d4..7380321c8c 100644
--- a/replay/replay-internal.h
+++ b/replay/replay-internal.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef REPLAY_INTERNAL_H
 #define REPLAY_INTERNAL_H
 
diff --git a/replication.h b/replication.h
index 4c8354de23..0a8cc2be7c 100644
--- a/replication.h
+++ b/replication.h
@@ -12,6 +12,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_REPLICATION, yet! */
+
 #ifndef REPLICATION_H
 #define REPLICATION_H
 
diff --git a/target/alpha/cpu.h b/target/alpha/cpu.h
index ba6bc31b15..72f4dc2f07 100644
--- a/target/alpha/cpu.h
+++ b/target/alpha/cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ALPHA_CPU_H
 #define ALPHA_CPU_H
 
diff --git a/target/alpha/helper.h b/target/alpha/helper.h
index d60f208703..ee5fcfc058 100644
--- a/target/alpha/helper.h
+++ b/target/alpha/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_3(excp, noreturn, env, int, int)
 DEF_HELPER_FLAGS_1(load_pcc, TCG_CALL_NO_RWG_SE, i64, env)
 
diff --git a/target/arm/arm-powerctl.h b/target/arm/arm-powerctl.h
index 37c8a04f0a..7dfca71a04 100644
--- a/target/arm/arm-powerctl.h
+++ b/target/arm/arm-powerctl.h
@@ -8,6 +8,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_ARM_POWERCTL_H
 #define QEMU_ARM_POWERCTL_H
 
diff --git a/target/arm/arm_ldst.h b/target/arm/arm_ldst.h
index 5e0ac8bef0..94fba8c712 100644
--- a/target/arm/arm_ldst.h
+++ b/target/arm/arm_ldst.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ARM_LDST_H
 #define ARM_LDST_H
 
diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index 733b840a71..07500d3d60 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ARM_CPU_H
 #define ARM_CPU_H
 
diff --git a/target/arm/helper-a64.h b/target/arm/helper-a64.h
index a915c1247f..8ff3d5e30c 100644
--- a/target/arm/helper-a64.h
+++ b/target/arm/helper-a64.h
@@ -16,6 +16,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_FLAGS_2(udiv64, TCG_CALL_NO_RWG_SE, i64, i64, i64)
 DEF_HELPER_FLAGS_2(sdiv64, TCG_CALL_NO_RWG_SE, s64, s64, s64)
 DEF_HELPER_FLAGS_1(rbit64, TCG_CALL_NO_RWG_SE, i64, i64)
diff --git a/target/arm/helper-sve.h b/target/arm/helper-sve.h
index 9e79182ab4..f14b1a0d16 100644
--- a/target/arm/helper-sve.h
+++ b/target/arm/helper-sve.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_FLAGS_2(sve_predtest1, TCG_CALL_NO_WG, i32, i64, i64)
 DEF_HELPER_FLAGS_3(sve_predtest, TCG_CALL_NO_WG, i32, ptr, ptr, i32)
 
diff --git a/target/arm/helper.h b/target/arm/helper.h
index 132aa1682e..b7f4346a5a 100644
--- a/target/arm/helper.h
+++ b/target/arm/helper.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_FLAGS_1(sxtb16, TCG_CALL_NO_RWG_SE, i32, i32)
 DEF_HELPER_FLAGS_1(uxtb16, TCG_CALL_NO_RWG_SE, i32, i32)
 
diff --git a/target/arm/internals.h b/target/arm/internals.h
index 5a02f458f3..d9eac9cec0 100644
--- a/target/arm/internals.h
+++ b/target/arm/internals.h
@@ -22,6 +22,8 @@
  * private to it and not required by the rest of QEMU.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_ARM_INTERNALS_H
 #define TARGET_ARM_INTERNALS_H
 
diff --git a/target/arm/kvm-consts.h b/target/arm/kvm-consts.h
index aad28258a3..f850f8af4c 100644
--- a/target/arm/kvm-consts.h
+++ b/target/arm/kvm-consts.h
@@ -11,6 +11,10 @@
  * This work is licensed under the terms of the GNU GPL, version 2 or later.
  * See the COPYING file in the top-level directory.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef ARM_KVM_CONSTS_H
 #define ARM_KVM_CONSTS_H
 
diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h
index 2a07333c61..c9da9d9bb2 100644
--- a/target/arm/kvm_arm.h
+++ b/target/arm/kvm_arm.h
@@ -8,6 +8,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_KVM_ARM_H
 #define QEMU_KVM_ARM_H
 
diff --git a/target/arm/op_addsub.h b/target/arm/op_addsub.h
index ca4a1893c3..6ad54b477f 100644
--- a/target/arm/op_addsub.h
+++ b/target/arm/op_addsub.h
@@ -7,6 +7,8 @@
  * This code is licensed under the GPL.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifdef ARITH_GE
 #define GE_ARG , void *gep
 #define DECLARE_GE uint32_t ge = 0
diff --git a/target/arm/translate-a64.h b/target/arm/translate-a64.h
index 63d958cf50..50ab289596 100644
--- a/target/arm/translate-a64.h
+++ b/target/arm/translate-a64.h
@@ -15,6 +15,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_ARM_TRANSLATE_A64_H
 #define TARGET_ARM_TRANSLATE_A64_H
 
diff --git a/target/arm/translate.h b/target/arm/translate.h
index c2348def0d..a586575e56 100644
--- a/target/arm/translate.h
+++ b/target/arm/translate.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_ARM_TRANSLATE_H
 #define TARGET_ARM_TRANSLATE_H
 
diff --git a/target/cris/cpu.h b/target/cris/cpu.h
index 857de79e24..71c3052362 100644
--- a/target/cris/cpu.h
+++ b/target/cris/cpu.h
@@ -18,6 +18,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CRIS_CPU_H
 #define CRIS_CPU_H
 
diff --git a/target/cris/helper.h b/target/cris/helper.h
index 20d21c4358..a0dc20b129 100644
--- a/target/cris/helper.h
+++ b/target/cris/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_2(raise_exception, void, env, i32)
 DEF_HELPER_2(tlb_flush_pid, void, env, i32)
 DEF_HELPER_2(spc_write, void, env, i32)
diff --git a/target/cris/mmu.h b/target/cris/mmu.h
index 0217f476de..b37942fce6 100644
--- a/target/cris/mmu.h
+++ b/target/cris/mmu.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #define CRIS_MMU_ERR_EXEC  0
 #define CRIS_MMU_ERR_READ  1
 #define CRIS_MMU_ERR_WRITE 2
diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h
index c1e0215e66..ca10301b72 100644
--- a/target/hppa/cpu.h
+++ b/target/hppa/cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HPPA_CPU_H
 #define HPPA_CPU_H
 
diff --git a/target/hppa/helper.h b/target/hppa/helper.h
index 38d834ef6b..629b614de3 100644
--- a/target/hppa/helper.h
+++ b/target/hppa/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #if TARGET_REGISTER_BITS == 64
 # define dh_alias_tr     i64
 # define dh_is_64bit_tr  1
diff --git a/target/i386/cc_helper_template.h b/target/i386/cc_helper_template.h
index 607311f195..5df5549743 100644
--- a/target/i386/cc_helper_template.h
+++ b/target/i386/cc_helper_template.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define DATA_BITS (1 << (3 + SHIFT))
 
 #if DATA_BITS == 8
diff --git a/target/i386/cpu-qom.h b/target/i386/cpu-qom.h
index 22f95eb3a4..04f706580c 100644
--- a/target/i386/cpu-qom.h
+++ b/target/i386/cpu-qom.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see
  * <http://www.gnu.org/licenses/lgpl-2.1.html>
  */
+
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef QEMU_I386_CPU_QOM_H
 #define QEMU_I386_CPU_QOM_H
 
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index fce6660bac..f612681331 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -18,6 +18,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef I386_CPU_H
 #define I386_CPU_H
 
diff --git a/target/i386/hax-i386.h b/target/i386/hax-i386.h
index 54e9d8b057..f0c15ed071 100644
--- a/target/i386/hax-i386.h
+++ b/target/i386/hax-i386.h
@@ -10,6 +10,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HAX_I386_H
 #define HAX_I386_H
 
diff --git a/target/i386/hax-posix.h b/target/i386/hax-posix.h
index fb7c64426d..0554858cc4 100644
--- a/target/i386/hax-posix.h
+++ b/target/i386/hax-posix.h
@@ -12,6 +12,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_I386_HAX_POSIX_H
 #define TARGET_I386_HAX_POSIX_H
 
diff --git a/target/i386/hax-windows.h b/target/i386/hax-windows.h
index 12cbd813dc..34cfab38f4 100644
--- a/target/i386/hax-windows.h
+++ b/target/i386/hax-windows.h
@@ -17,6 +17,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_I386_HAX_WINDOWS_H
 #define TARGET_I386_HAX_WINDOWS_H
 
diff --git a/target/i386/helper.h b/target/i386/helper.h
index 6fb8fb9b74..fc02e2a156 100644
--- a/target/i386/helper.h
+++ b/target/i386/helper.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_FLAGS_4(cc_compute_all, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl, int)
 DEF_HELPER_FLAGS_4(cc_compute_c, TCG_CALL_NO_RWG_SE, tl, tl, tl, tl, int)
 
diff --git a/target/i386/hvf/hvf-i386.h b/target/i386/hvf/hvf-i386.h
index 15ee4835cf..db4ec6b847 100644
--- a/target/i386/hvf/hvf-i386.h
+++ b/target/i386/hvf/hvf-i386.h
@@ -13,6 +13,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HVF_I386_H
 #define HVF_I386_H
 
diff --git a/target/i386/hvf/vmcs.h b/target/i386/hvf/vmcs.h
index 42de7ebc3a..d8c84eaf4a 100644
--- a/target/i386/hvf/vmcs.h
+++ b/target/i386/hvf/vmcs.h
@@ -26,6 +26,8 @@
  * $FreeBSD$
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef VMCS_H
 #define VMCS_H
 
diff --git a/target/i386/hvf/vmx.h b/target/i386/hvf/vmx.h
index 5dc52ecad6..a8680fd11a 100644
--- a/target/i386/hvf/vmx.h
+++ b/target/i386/hvf/vmx.h
@@ -22,6 +22,8 @@
  * https://github.com/mist64/hvdos
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef VMX_H
 #define VMX_H
 
diff --git a/target/i386/hvf/x86.h b/target/i386/hvf/x86.h
index c95d5b2116..7de21f208b 100644
--- a/target/i386/hvf/x86.h
+++ b/target/i386/hvf/x86.h
@@ -16,6 +16,8 @@
  * License along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HVF_X86_H
 #define HVF_X86_H
 
diff --git a/target/i386/hvf/x86_decode.h b/target/i386/hvf/x86_decode.h
index bc574a7a44..f43028d9e8 100644
--- a/target/i386/hvf/x86_decode.h
+++ b/target/i386/hvf/x86_decode.h
@@ -15,6 +15,9 @@
  * License along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HVF_X86_DECODE_H
 #define HVF_X86_DECODE_H
 
diff --git a/target/i386/hvf/x86_descr.h b/target/i386/hvf/x86_descr.h
index 049ef9a417..2258033958 100644
--- a/target/i386/hvf/x86_descr.h
+++ b/target/i386/hvf/x86_descr.h
@@ -16,6 +16,8 @@
  * License along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HVF_X86_DESCR_H
 #define HVF_X86_DESCR_H
 
diff --git a/target/i386/hvf/x86_emu.h b/target/i386/hvf/x86_emu.h
index f92a9c54b5..cbceaf88a4 100644
--- a/target/i386/hvf/x86_emu.h
+++ b/target/i386/hvf/x86_emu.h
@@ -16,6 +16,9 @@
  * License along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef X86_EMU_H
 #define X86_EMU_H
 
diff --git a/target/i386/hvf/x86_flags.h b/target/i386/hvf/x86_flags.h
index 785e80cfca..e303651dc4 100644
--- a/target/i386/hvf/x86_flags.h
+++ b/target/i386/hvf/x86_flags.h
@@ -21,6 +21,9 @@
  * x86 eflags functions
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef X86_FLAGS_H
 #define X86_FLAGS_H
 
diff --git a/target/i386/hvf/x86_mmu.h b/target/i386/hvf/x86_mmu.h
index cd6e137e79..4a20cccaa0 100644
--- a/target/i386/hvf/x86_mmu.h
+++ b/target/i386/hvf/x86_mmu.h
@@ -16,6 +16,8 @@
  * License along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef X86_MMU_H
 #define X86_MMU_H
 
diff --git a/target/i386/hvf/x86_task.h b/target/i386/hvf/x86_task.h
index 4eaa61a7de..8b3b8a0f4a 100644
--- a/target/i386/hvf/x86_task.h
+++ b/target/i386/hvf/x86_task.h
@@ -12,6 +12,8 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HVF_X86_TASK_H
 #define HVF_X86_TASK_H
 
diff --git a/target/i386/hvf/x86hvf.h b/target/i386/hvf/x86hvf.h
index 79539f7282..88c78d83b2 100644
--- a/target/i386/hvf/x86hvf.h
+++ b/target/i386/hvf/x86hvf.h
@@ -15,6 +15,10 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef X86HVF_H
 #define X86HVF_H
 #include "cpu.h"
diff --git a/target/i386/hyperv.h b/target/i386/hyperv.h
index 67543296c3..437f3a7f9c 100644
--- a/target/i386/hyperv.h
+++ b/target/i386/hyperv.h
@@ -11,6 +11,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_I386_HYPERV_H
 #define TARGET_I386_HYPERV_H
 
diff --git a/target/i386/kvm_i386.h b/target/i386/kvm_i386.h
index 3057ba4f7d..c8d13334c3 100644
--- a/target/i386/kvm_i386.h
+++ b/target/i386/kvm_i386.h
@@ -8,6 +8,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_KVM_I386_H
 #define QEMU_KVM_I386_H
 
diff --git a/target/i386/ops_sse.h b/target/i386/ops_sse.h
index ed05989768..d4492c8564 100644
--- a/target/i386/ops_sse.h
+++ b/target/i386/ops_sse.h
@@ -18,6 +18,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "crypto/aes.h"
 
 #if SHIFT == 0
diff --git a/target/i386/ops_sse_header.h b/target/i386/ops_sse_header.h
index 094aafc573..407500d4f3 100644
--- a/target/i386/ops_sse_header.h
+++ b/target/i386/ops_sse_header.h
@@ -16,6 +16,10 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #if SHIFT == 0
 #define Reg MMXReg
 #define SUFFIX _mmx
diff --git a/target/i386/sev_i386.h b/target/i386/sev_i386.h
index c0f9373beb..2d9119e58c 100644
--- a/target/i386/sev_i386.h
+++ b/target/i386/sev_i386.h
@@ -11,6 +11,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_SEV_I386_H
 #define QEMU_SEV_I386_H
 
diff --git a/target/i386/shift_helper_template.h b/target/i386/shift_helper_template.h
index cf91a2d284..be7e1352ed 100644
--- a/target/i386/shift_helper_template.h
+++ b/target/i386/shift_helper_template.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define DATA_BITS (1 << (3 + SHIFT))
 #define SHIFT_MASK (DATA_BITS - 1)
 #if DATA_BITS <= 32
diff --git a/target/i386/whp-dispatch.h b/target/i386/whp-dispatch.h
index a23fb33a29..79f2fec9b1 100644
--- a/target/i386/whp-dispatch.h
+++ b/target/i386/whp-dispatch.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #include <windows.h>
 
 #include <WinHvPlatform.h>
diff --git a/target/lm32/cpu.h b/target/lm32/cpu.h
index d224d4426e..1cbbef3dc6 100644
--- a/target/lm32/cpu.h
+++ b/target/lm32/cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef LM32_CPU_H
 #define LM32_CPU_H
 
diff --git a/target/lm32/helper.h b/target/lm32/helper.h
index 445578c439..ba7ce5a53b 100644
--- a/target/lm32/helper.h
+++ b/target/lm32/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_2(raise_exception, void, env, i32)
 DEF_HELPER_1(hlt, void, env)
 DEF_HELPER_3(wcsr_bp, void, env, i32, i32)
diff --git a/target/m68k/cpu.h b/target/m68k/cpu.h
index 9deff9e234..62702232fa 100644
--- a/target/m68k/cpu.h
+++ b/target/m68k/cpu.h
@@ -18,6 +18,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef M68K_CPU_H
 #define M68K_CPU_H
 
diff --git a/target/m68k/helper.h b/target/m68k/helper.h
index feee7be626..cbfb184ff9 100644
--- a/target/m68k/helper.h
+++ b/target/m68k/helper.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_1(bitrev, i32, i32)
 DEF_HELPER_1(ff1, i32, i32)
 DEF_HELPER_FLAGS_2(sats, TCG_CALL_NO_RWG_SE, i32, i32, i32)
diff --git a/target/m68k/softfloat.h b/target/m68k/softfloat.h
index 602661d5a8..c37f2d368c 100644
--- a/target/m68k/softfloat.h
+++ b/target/m68k/softfloat.h
@@ -18,6 +18,8 @@
  * version 2 or later. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef TARGET_M68K_SOFTFLOAT_H
 #define TARGET_M68K_SOFTFLOAT_H
 #include "fpu/softfloat.h"
diff --git a/target/m68k/softfloat_fpsp_tables.h b/target/m68k/softfloat_fpsp_tables.h
index 3f1419ee6e..6435e54401 100644
--- a/target/m68k/softfloat_fpsp_tables.h
+++ b/target/m68k/softfloat_fpsp_tables.h
@@ -18,6 +18,8 @@
  * version 2 or later. See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_M68K_SOFTFLOAT_FPSP_TABLES_H
 #define TARGET_M68K_SOFTFLOAT_FPSP_TABLES_H
 
diff --git a/target/microblaze/cpu.h b/target/microblaze/cpu.h
index 7a9fb8f4aa..903e489f89 100644
--- a/target/microblaze/cpu.h
+++ b/target/microblaze/cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MICROBLAZE_CPU_H
 #define MICROBLAZE_CPU_H
 
diff --git a/target/microblaze/helper.h b/target/microblaze/helper.h
index 2f8bdea22b..7f1ab95158 100644
--- a/target/microblaze/helper.h
+++ b/target/microblaze/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_2(raise_exception, void, env, i32)
 DEF_HELPER_1(debug, void, env)
 DEF_HELPER_FLAGS_3(carry, TCG_CALL_NO_RWG_SE, i32, i32, i32, i32)
diff --git a/target/microblaze/mmu.h b/target/microblaze/mmu.h
index a4272b6356..e0585b3d66 100644
--- a/target/microblaze/mmu.h
+++ b/target/microblaze/mmu.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define MMU_R_PID    0
 #define MMU_R_ZPR    1
 #define MMU_R_TLBX   2
diff --git a/target/mips/cpu-qom.h b/target/mips/cpu-qom.h
index ee58606afe..a1157d3758 100644
--- a/target/mips/cpu-qom.h
+++ b/target/mips/cpu-qom.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see
  * <http://www.gnu.org/licenses/lgpl-2.1.html>
  */
+
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef QEMU_MIPS_CPU_QOM_H
 #define QEMU_MIPS_CPU_QOM_H
 
diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 1f41cf66d5..9ea41fd007 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_CPU_H
 #define MIPS_CPU_H
 
diff --git a/target/mips/helper.h b/target/mips/helper.h
index a6d687e340..6c00b93c97 100644
--- a/target/mips/helper.h
+++ b/target/mips/helper.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_3(raise_exception_err, noreturn, env, i32, int)
 DEF_HELPER_2(raise_exception, noreturn, env, i32)
 DEF_HELPER_1(raise_exception_debug, noreturn, env)
diff --git a/target/mips/internal.h b/target/mips/internal.h
index b2b41a51ab..3a26d1b85a 100644
--- a/target/mips/internal.h
+++ b/target/mips/internal.h
@@ -4,6 +4,9 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_INTERNAL_H
 #define MIPS_INTERNAL_H
 
diff --git a/target/mips/kvm_mips.h b/target/mips/kvm_mips.h
index ae957f37f0..cea59e3566 100644
--- a/target/mips/kvm_mips.h
+++ b/target/mips/kvm_mips.h
@@ -9,6 +9,8 @@
  * Authors: Sanjay Lal <sanjayl@kymasys.com>
 */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef KVM_MIPS_H
 #define KVM_MIPS_H
 
diff --git a/target/mips/mips-defs.h b/target/mips/mips-defs.h
index dbdb4b2b2d..fad47c1fe9 100644
--- a/target/mips/mips-defs.h
+++ b/target/mips/mips-defs.h
@@ -1,3 +1,5 @@
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef QEMU_MIPS_DEFS_H
 #define QEMU_MIPS_DEFS_H
 
diff --git a/target/moxie/cpu.h b/target/moxie/cpu.h
index a63a96bc05..393726e395 100644
--- a/target/moxie/cpu.h
+++ b/target/moxie/cpu.h
@@ -17,6 +17,9 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MOXIE_CPU_H
 #define MOXIE_CPU_H
 
diff --git a/target/moxie/helper.h b/target/moxie/helper.h
index d94ef7a17e..88d974480e 100644
--- a/target/moxie/helper.h
+++ b/target/moxie/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_2(raise_exception, void, env, int)
 DEF_HELPER_1(debug, void, env)
 
diff --git a/target/moxie/machine.h b/target/moxie/machine.h
index a1b72907ae..e8ab248984 100644
--- a/target/moxie/machine.h
+++ b/target/moxie/machine.h
@@ -1 +1,3 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 extern const VMStateDescription vmstate_moxie_cpu;
diff --git a/target/moxie/mmu.h b/target/moxie/mmu.h
index 284a44d18e..874d4a4b30 100644
--- a/target/moxie/mmu.h
+++ b/target/moxie/mmu.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #define MOXIE_MMU_ERR_EXEC  0
 #define MOXIE_MMU_ERR_READ  1
 #define MOXIE_MMU_ERR_WRITE 2
diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h
index 35d3886dc2..d17a66734d 100644
--- a/target/nios2/cpu.h
+++ b/target/nios2/cpu.h
@@ -18,6 +18,9 @@
  * <http://www.gnu.org/licenses/lgpl-2.1.html>
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef NIOS2_CPU_H
 #define NIOS2_CPU_H
 
diff --git a/target/nios2/helper.h b/target/nios2/helper.h
index b0cb9146a5..697822c728 100644
--- a/target/nios2/helper.h
+++ b/target/nios2/helper.h
@@ -18,6 +18,8 @@
  * <http://www.gnu.org/licenses/lgpl-2.1.html>
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_2(raise_exception, void, env, i32)
 
 #if !defined(CONFIG_USER_ONLY)
diff --git a/target/nios2/mmu.h b/target/nios2/mmu.h
index 4f46fbb82e..ef7ce93500 100644
--- a/target/nios2/mmu.h
+++ b/target/nios2/mmu.h
@@ -18,6 +18,8 @@
  * <http://www.gnu.org/licenses/lgpl-2.1.html>
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef NIOS2_MMU_H
 #define NIOS2_MMU_H
 
diff --git a/target/openrisc/cpu.h b/target/openrisc/cpu.h
index 9473d94d0c..f7e506f406 100644
--- a/target/openrisc/cpu.h
+++ b/target/openrisc/cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef OPENRISC_CPU_H
 #define OPENRISC_CPU_H
 
diff --git a/target/openrisc/exception.h b/target/openrisc/exception.h
index c9c4e471d2..43267b5337 100644
--- a/target/openrisc/exception.h
+++ b/target/openrisc/exception.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_OPENRISC_EXCEPTION_H
 #define TARGET_OPENRISC_EXCEPTION_H
 
diff --git a/target/openrisc/helper.h b/target/openrisc/helper.h
index 96d79a8113..5da784bfed 100644
--- a/target/openrisc/helper.h
+++ b/target/openrisc/helper.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /* exception */
 DEF_HELPER_FLAGS_2(exception, TCG_CALL_NO_WG, void, env, i32)
 DEF_HELPER_FLAGS_1(ove_cy, TCG_CALL_NO_WG, void, env)
diff --git a/target/ppc/cpu-models.h b/target/ppc/cpu-models.h
index 4fdb73034d..87def9e8ae 100644
--- a/target/ppc/cpu-models.h
+++ b/target/ppc/cpu-models.h
@@ -18,6 +18,9 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef TARGET_PPC_CPU_MODELS_H
 #define TARGET_PPC_CPU_MODELS_H
 
diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
index be9b4c30c3..4fae18b691 100644
--- a/target/ppc/cpu-qom.h
+++ b/target/ppc/cpu-qom.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see
  * <http://www.gnu.org/licenses/lgpl-2.1.html>
  */
+
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef QEMU_PPC_CPU_QOM_H
 #define QEMU_PPC_CPU_QOM_H
 
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
index d7f23ad5e0..79c163eeb8 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_CPU_H
 #define PPC_CPU_H
 
diff --git a/target/ppc/helper.h b/target/ppc/helper.h
index 638a6e99c4..6a86305870 100644
--- a/target/ppc/helper.h
+++ b/target/ppc/helper.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_FLAGS_3(raise_exception_err, TCG_CALL_NO_WG, void, env, i32, i32)
 DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, void, env, i32)
 DEF_HELPER_FLAGS_4(tw, TCG_CALL_NO_WG, void, env, tl, tl, i32)
diff --git a/target/ppc/helper_regs.h b/target/ppc/helper_regs.h
index 922da76c6c..7c2cd5b10c 100644
--- a/target/ppc/helper_regs.h
+++ b/target/ppc/helper_regs.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef HELPER_REGS_H
 #define HELPER_REGS_H
 
diff --git a/target/ppc/internal.h b/target/ppc/internal.h
index fb6f64ed1e..ebf411eb47 100644
--- a/target/ppc/internal.h
+++ b/target/ppc/internal.h
@@ -15,6 +15,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_INTERNAL_H
 #define PPC_INTERNAL_H
 
diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h
index 22385134b4..2a70446c22 100644
--- a/target/ppc/kvm_ppc.h
+++ b/target/ppc/kvm_ppc.h
@@ -6,6 +6,9 @@
  *
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef KVM_PPC_H
 #define KVM_PPC_H
 
diff --git a/target/ppc/mmu-book3s-v3.h b/target/ppc/mmu-book3s-v3.h
index 0f3c9d09c6..f72db5eed2 100644
--- a/target/ppc/mmu-book3s-v3.h
+++ b/target/ppc/mmu-book3s-v3.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PPC_MMU_BOOK3S_V3_H
 #define PPC_MMU_BOOK3S_V3_H
 
diff --git a/target/ppc/mmu-hash32.h b/target/ppc/mmu-hash32.h
index 898021f0d8..00452b4981 100644
--- a/target/ppc/mmu-hash32.h
+++ b/target/ppc/mmu-hash32.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MMU_HASH32_H
 #define MMU_HASH32_H
 
diff --git a/target/ppc/mmu-hash64.h b/target/ppc/mmu-hash64.h
index 87729d48b3..8c8497410d 100644
--- a/target/ppc/mmu-hash64.h
+++ b/target/ppc/mmu-hash64.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MMU_HASH64_H
 #define MMU_HASH64_H
 
diff --git a/target/ppc/mmu-radix64.h b/target/ppc/mmu-radix64.h
index 96228546aa..b066bee6a6 100644
--- a/target/ppc/mmu-radix64.h
+++ b/target/ppc/mmu-radix64.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MMU_RADIX64_H
 #define MMU_RADIX64_H
 
diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
index c17184f4e4..68a01848d6 100644
--- a/target/riscv/cpu.h
+++ b/target/riscv/cpu.h
@@ -17,6 +17,9 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef RISCV_CPU_H
 #define RISCV_CPU_H
 
diff --git a/target/riscv/helper.h b/target/riscv/helper.h
index debb22a480..fafa499429 100644
--- a/target/riscv/helper.h
+++ b/target/riscv/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 /* Exceptions */
 DEF_HELPER_2(raise_exception, noreturn, env, i32)
 
diff --git a/target/riscv/instmap.h b/target/riscv/instmap.h
index 58baa1ba1f..a4d05f2990 100644
--- a/target/riscv/instmap.h
+++ b/target/riscv/instmap.h
@@ -16,6 +16,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #define MASK_OP_MAJOR(op)  (op & 0x7F)
 enum {
     /* rv32i, rv64i, rv32m */
diff --git a/target/riscv/pmp.h b/target/riscv/pmp.h
index 66790950eb..c778a6ba55 100644
--- a/target/riscv/pmp.h
+++ b/target/riscv/pmp.h
@@ -19,6 +19,8 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef RISCV_PMP_H
 #define RISCV_PMP_H
 
diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
index 7305cacc7b..ae2fa10a05 100644
--- a/target/s390x/cpu.h
+++ b/target/s390x/cpu.h
@@ -18,6 +18,8 @@
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef S390X_CPU_H
 #define S390X_CPU_H
 
diff --git a/target/s390x/cpu_features.h b/target/s390x/cpu_features.h
index da695a8346..4d2f33dc52 100644
--- a/target/s390x/cpu_features.h
+++ b/target/s390x/cpu_features.h
@@ -11,6 +11,8 @@
  * directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_S390X_CPU_FEATURES_H
 #define TARGET_S390X_CPU_FEATURES_H
 
diff --git a/target/s390x/cpu_models.h b/target/s390x/cpu_models.h
index 174a99e561..fdf37abe67 100644
--- a/target/s390x/cpu_models.h
+++ b/target/s390x/cpu_models.h
@@ -10,6 +10,8 @@
  * directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_S390X_CPU_MODELS_H
 #define TARGET_S390X_CPU_MODELS_H
 
diff --git a/target/s390x/helper.h b/target/s390x/helper.h
index 7755a96c33..3617126823 100644
--- a/target/s390x/helper.h
+++ b/target/s390x/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_2(exception, noreturn, env, i32)
 DEF_HELPER_2(data_exception, noreturn, env, i32)
 DEF_HELPER_FLAGS_4(nc, TCG_CALL_NO_WG, i32, env, i32, i64, i64)
diff --git a/target/s390x/internal.h b/target/s390x/internal.h
index 9893fc094b..dac290f6f9 100644
--- a/target/s390x/internal.h
+++ b/target/s390x/internal.h
@@ -7,6 +7,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef S390X_INTERNAL_H
 #define S390X_INTERNAL_H
 
diff --git a/target/s390x/tcg_s390x.h b/target/s390x/tcg_s390x.h
index ab2c4ba703..cd30791f30 100644
--- a/target/s390x/tcg_s390x.h
+++ b/target/s390x/tcg_s390x.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TCG_S390X_H
 #define TCG_S390X_H
 
diff --git a/target/sh4/cpu.h b/target/sh4/cpu.h
index 547194aac7..5e0a5de2fe 100644
--- a/target/sh4/cpu.h
+++ b/target/sh4/cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SH4_CPU_H
 #define SH4_CPU_H
 
diff --git a/target/sh4/helper.h b/target/sh4/helper.h
index 1e768fcbc7..ddb86b21fc 100644
--- a/target/sh4/helper.h
+++ b/target/sh4/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_1(ldtlb, void, env)
 DEF_HELPER_1(raise_illegal_instruction, noreturn, env)
 DEF_HELPER_1(raise_slot_illegal_instruction, noreturn, env)
diff --git a/target/sparc/cpu-qom.h b/target/sparc/cpu-qom.h
index af6d57a9e0..d3b42092a7 100644
--- a/target/sparc/cpu-qom.h
+++ b/target/sparc/cpu-qom.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see
  * <http://www.gnu.org/licenses/lgpl-2.1.html>
  */
+
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef QEMU_SPARC_CPU_QOM_H
 #define QEMU_SPARC_CPU_QOM_H
 
diff --git a/target/sparc/cpu.h b/target/sparc/cpu.h
index f31e8535df..2aa36fceef 100644
--- a/target/sparc/cpu.h
+++ b/target/sparc/cpu.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef SPARC_CPU_H
 #define SPARC_CPU_H
 
diff --git a/target/sparc/helper.h b/target/sparc/helper.h
index b8f1e78c75..025f583cfc 100644
--- a/target/sparc/helper.h
+++ b/target/sparc/helper.h
@@ -1,3 +1,6 @@
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TARGET_SPARC64
 DEF_HELPER_1(rett, void, env)
 DEF_HELPER_2(wrpsr, void, env, tl)
diff --git a/target/tilegx/cpu.h b/target/tilegx/cpu.h
index 238f8d36d7..6dafca1426 100644
--- a/target/tilegx/cpu.h
+++ b/target/tilegx/cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TILEGX_CPU_H
 #define TILEGX_CPU_H
 
diff --git a/target/tilegx/helper.h b/target/tilegx/helper.h
index 16745c266f..2b5172ebc3 100644
--- a/target/tilegx/helper.h
+++ b/target/tilegx/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_2(exception, noreturn, env, i32)
 DEF_HELPER_1(ext01_ics, void, env)
 DEF_HELPER_FLAGS_1(revbits, TCG_CALL_NO_RWG_SE, i64, i64)
diff --git a/target/tricore/cpu.h b/target/tricore/cpu.h
index 287f4328a3..7c0da95bec 100644
--- a/target/tricore/cpu.h
+++ b/target/tricore/cpu.h
@@ -17,6 +17,9 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TRICORE_CPU_H
 #define TRICORE_CPU_H
 
diff --git a/target/tricore/helper.h b/target/tricore/helper.h
index f60e81096b..678e1c3700 100644
--- a/target/tricore/helper.h
+++ b/target/tricore/helper.h
@@ -15,6 +15,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /* Arithmetic */
 DEF_HELPER_3(add_ssov, i32, env, i32, i32)
 DEF_HELPER_3(add64_ssov, i64, env, i64, i64)
diff --git a/target/tricore/tricore-defs.h b/target/tricore/tricore-defs.h
index e871aa1c6b..13880da779 100644
--- a/target/tricore/tricore-defs.h
+++ b/target/tricore/tricore-defs.h
@@ -15,6 +15,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef QEMU_TRICORE_DEFS_H
 #define QEMU_TRICORE_DEFS_H
 
diff --git a/target/tricore/tricore-opcodes.h b/target/tricore/tricore-opcodes.h
index 40bc121ba4..17c48480d5 100644
--- a/target/tricore/tricore-opcodes.h
+++ b/target/tricore/tricore-opcodes.h
@@ -15,6 +15,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /*
  * Opcode Masks for Tricore
  * Format MASK_OP_InstrFormatName_Field
diff --git a/target/unicore32/cpu.h b/target/unicore32/cpu.h
index f052ee08bf..ab33f17ad1 100644
--- a/target/unicore32/cpu.h
+++ b/target/unicore32/cpu.h
@@ -9,6 +9,9 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef UNICORE32_CPU_H
 #define UNICORE32_CPU_H
 
diff --git a/target/unicore32/helper.h b/target/unicore32/helper.h
index a4a5d45d1d..eb59028a8a 100644
--- a/target/unicore32/helper.h
+++ b/target/unicore32/helper.h
@@ -7,6 +7,8 @@
  * later version. See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef CONFIG_USER_ONLY
 DEF_HELPER_4(cp0_set, void, env, i32, i32, i32)
 DEF_HELPER_3(cp0_get, i32, env, i32, i32)
diff --git a/target/xtensa/cpu.h b/target/xtensa/cpu.h
index a0df46f73b..594c66b1a1 100644
--- a/target/xtensa/cpu.h
+++ b/target/xtensa/cpu.h
@@ -25,6 +25,9 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XTENSA_CPU_H
 #define XTENSA_CPU_H
 
diff --git a/target/xtensa/helper.h b/target/xtensa/helper.h
index 8532de0b35..952b771c9a 100644
--- a/target/xtensa/helper.h
+++ b/target/xtensa/helper.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF_HELPER_2(exception, noreturn, env, i32)
 DEF_HELPER_3(exception_cause, noreturn, env, i32, i32)
 DEF_HELPER_4(exception_cause_vaddr, noreturn, env, i32, i32, i32)
diff --git a/target/xtensa/overlay_tool.h b/target/xtensa/overlay_tool.h
index f0cc33adfe..0024e8f04a 100644
--- a/target/xtensa/overlay_tool.h
+++ b/target/xtensa/overlay_tool.h
@@ -25,6 +25,9 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #define XTREG(idx, ofs, bi, sz, al, no, fl, cp, typ, grp, name, \
               a1, a2, a3, a4, a5, a6) { \
     .targno = (no), \
diff --git a/target/xtensa/xtensa-isa-internal.h b/target/xtensa/xtensa-isa-internal.h
index 40dd8bac96..c0520902f2 100644
--- a/target/xtensa/xtensa-isa-internal.h
+++ b/target/xtensa/xtensa-isa-internal.h
@@ -22,6 +22,8 @@
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef XTENSA_ISA_INTERNAL_H
 #define XTENSA_ISA_INTERNAL_H
 
diff --git a/tcg/aarch64/tcg-target.h b/tcg/aarch64/tcg-target.h
index e43554c3c7..ea959961fb 100644
--- a/tcg/aarch64/tcg-target.h
+++ b/tcg/aarch64/tcg-target.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory for details.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef AARCH64_TCG_TARGET_H
 #define AARCH64_TCG_TARGET_H
 
diff --git a/tcg/aarch64/tcg-target.opc.h b/tcg/aarch64/tcg-target.opc.h
index 59e1d3f7f7..01e40e217a 100644
--- a/tcg/aarch64/tcg-target.opc.h
+++ b/tcg/aarch64/tcg-target.opc.h
@@ -2,4 +2,7 @@
    emitted by tcg_expand_vec_op.  For those familiar with GCC internals,
    consider these to be UNSPEC with names.  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF(aa64_sshl_vec, 1, 2, 0, IMPLVEC)
diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h
index 17e771374d..af08634eff 100644
--- a/tcg/arm/tcg-target.h
+++ b/tcg/arm/tcg-target.h
@@ -23,6 +23,8 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef ARM_TCG_TARGET_H
 #define ARM_TCG_TARGET_H
 
diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
index 66f16fbe3c..9f36696298 100644
--- a/tcg/i386/tcg-target.h
+++ b/tcg/i386/tcg-target.h
@@ -22,6 +22,9 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef I386_TCG_TARGET_H
 #define I386_TCG_TARGET_H
 
diff --git a/tcg/i386/tcg-target.opc.h b/tcg/i386/tcg-target.opc.h
index e5fa88ba25..1a0c0ec764 100644
--- a/tcg/i386/tcg-target.opc.h
+++ b/tcg/i386/tcg-target.opc.h
@@ -2,6 +2,8 @@
    emitted by tcg_expand_vec_op.  For those familiar with GCC internals,
    consider these to be UNSPEC with names.  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 DEF(x86_shufps_vec, 1, 2, 1, IMPLVEC)
 DEF(x86_vpblendvb_vec, 1, 3, 0, IMPLVEC)
 DEF(x86_blend_vec, 1, 2, 1, IMPLVEC)
diff --git a/tcg/mips/tcg-target.h b/tcg/mips/tcg-target.h
index c6b091d849..2b8baa569e 100644
--- a/tcg/mips/tcg-target.h
+++ b/tcg/mips/tcg-target.h
@@ -24,6 +24,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef MIPS_TCG_TARGET_H
 #define MIPS_TCG_TARGET_H
 
diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc/tcg-target.h
index 7627fb62d3..a1696b9f4a 100644
--- a/tcg/ppc/tcg-target.h
+++ b/tcg/ppc/tcg-target.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef PPC_TCG_TARGET_H
 #define PPC_TCG_TARGET_H
 
diff --git a/tcg/riscv/tcg-target.h b/tcg/riscv/tcg-target.h
index 032439d806..8a7e3e5e2c 100644
--- a/tcg/riscv/tcg-target.h
+++ b/tcg/riscv/tcg-target.h
@@ -22,6 +22,9 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef RISCV_TCG_TARGET_H
 #define RISCV_TCG_TARGET_H
 
diff --git a/tcg/s390/tcg-target.h b/tcg/s390/tcg-target.h
index 07accabbd1..6169500167 100644
--- a/tcg/s390/tcg-target.h
+++ b/tcg/s390/tcg-target.h
@@ -22,6 +22,9 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef S390_TCG_TARGET_H
 #define S390_TCG_TARGET_H
 
diff --git a/tcg/tcg-gvec-desc.h b/tcg/tcg-gvec-desc.h
index 2dda7d6ba1..cd8c6f79ca 100644
--- a/tcg/tcg-gvec-desc.h
+++ b/tcg/tcg-gvec-desc.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /* ??? These bit widths are set for ARM SVE, maxing out at 256 byte vectors. */
 #define SIMD_OPRSZ_SHIFT   0
 #define SIMD_OPRSZ_BITS    5
diff --git a/tcg/tcg-op-gvec.h b/tcg/tcg-op-gvec.h
index 52a398c190..5af2fb7e10 100644
--- a/tcg/tcg-op-gvec.h
+++ b/tcg/tcg-op-gvec.h
@@ -17,6 +17,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /*
  * "Generic" vectors.  All operands are given as offsets from ENV,
  * and therefore cannot also be allocated via tcg_global_mem_new_*.
diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
index 660fe205d0..2ab3b95803 100644
--- a/tcg/tcg-op.h
+++ b/tcg/tcg-op.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef TCG_TCG_OP_H
 #define TCG_TCG_OP_H
 
diff --git a/tcg/tcg-opc.h b/tcg/tcg-opc.h
index 4a2dd116eb..567dee2a14 100644
--- a/tcg/tcg-opc.h
+++ b/tcg/tcg-opc.h
@@ -22,11 +22,15 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+/* FIXME Does not pass make check-headers, yet! */
+
 /*
  * DEF(name, oargs, iargs, cargs, flags)
  */
 
 /* predefined ops */
+
 DEF(discard, 1, 0, 0, TCG_OPF_NOT_PRESENT)
 DEF(set_label, 0, 0, 1, TCG_OPF_BB_END | TCG_OPF_NOT_PRESENT)
 
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 0e01a70d66..39e27e6440 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef TCG_H
 #define TCG_H
 
diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h
index 8b90ab71cb..4212c274fb 100644
--- a/tcg/tci/tcg-target.h
+++ b/tcg/tci/tcg-target.h
@@ -37,6 +37,8 @@
  * Therefore, we need both 32 and 64 bit virtual machines (interpreter).
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TCG_TARGET_H
 #define TCG_TARGET_H
 
diff --git a/tests/check-headers.mak b/tests/check-headers.mak
index 1facce517e..589c62d66b 100644
--- a/tests/check-headers.mak
+++ b/tests/check-headers.mak
@@ -10,8 +10,6 @@ excluded-headers := $(filter disas/libvixl/vixl/% include/standard-headers/% lin
 # Funny stuff we don't want to mess with:
 excluded-headers += $(filter tests/multiboot/% tests/tcg/% tests/uefi-test-tools/%, $(src-headers))
 excluded-headers += scripts/cocci-macro-file.h
-# Exclude all but include/ for now:
-excluded-headers += $(filter-out include/%, $(src-headers))
 
 # Headers that require -DNEED_CPU_H etc.
 target-header-comment := NOTE: May only be included into target-dependent code
@@ -21,11 +19,14 @@ target-headers := $(shell cd $(SRC_PATH) && egrep -l '$(target-header-comment)'
 bad-header-without-linux$(CONFIG_LINUX) := | without CONFIG_LINUX
 bad-header-without-opengl$(CONFIG_OPENGL) := | without CONFIG_OPENGL
 bad-header-without-posix$(CONFIG_POSIX) := | without CONFIG_POSIX
+bad-header-without-rdma$(CONFIG_RDMA) := | without CONFIG_RDMA
+bad-header-without-replication$(CONFIG_REPLICATION) := | without CONFIG_REPLICATION
 bad-header-without-spice$(CONFIG_SPICE) := | without CONFIG_SPICE
 bad-header-without-system-emu$(TARGET_DIRS) := | without system emulation
 bad-header-without-win32$(CONFIG_WIN32) := | without CONFIG_WIN32
+bad-header-without-x11$(CONFIG_X11) := | without CONFIG_X11
 bad-header-without-xen$(CONFIG_XEN) := | without CONFIG_XEN
-bad-header-comment := FIXME Does not pass make check-headers($(bad-header-without-linux)$(bad-header-without-opengl)$(bad-header-without-posix)$(bad-header-without-spice)$(bad-header-without-system-emu)$(bad-header-without-win32)$(bad-header-without-xen)), yet!
+bad-header-comment := FIXME Does not pass make check-headers($(bad-header-without-linux)$(bad-header-without-opengl)$(bad-header-without-posix)$(bad-header-without-rdma)$(bad-header-without-replication)$(bad-header-without-spice)$(bad-header-without-system-emu)$(bad-header-without-win32)$(bad-header-without-x11)$(bad-header-without-xen)), yet!
 bad-headers := $(shell cd $(SRC_PATH) && egrep -l '$(bad-header-comment)' $(src-headers))
 bad-target-headers := $(filter $(target-headers), $(bad-headers))
 
diff --git a/tests/crypto-tls-x509-helpers.h b/tests/crypto-tls-x509-helpers.h
index 88c30d7c94..2985347330 100644
--- a/tests/crypto-tls-x509-helpers.h
+++ b/tests/crypto-tls-x509-helpers.h
@@ -18,6 +18,8 @@
  * Author: Daniel P. Berrange <berrange@redhat.com>
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include <gnutls/gnutls.h>
 #include <gnutls/x509.h>
 
diff --git a/tests/fp/platform.h b/tests/fp/platform.h
index c20ba70baa..4fe3f9d7de 100644
--- a/tests/fp/platform.h
+++ b/tests/fp/platform.h
@@ -29,6 +29,9 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
+
+/* FIXME Does not pass make check-headers without CONFIG_POSIX, yet! */
+
 #include "config-host.h"
 
 #ifndef HOST_WORDS_BIGENDIAN
diff --git a/tests/libqos/virtio-9p.h b/tests/libqos/virtio-9p.h
index dba22772b5..e4e19c43a4 100644
--- a/tests/libqos/virtio-9p.h
+++ b/tests/libqos/virtio-9p.h
@@ -16,6 +16,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "libqos/qgraph.h"
 #include "libqos/virtio.h"
 #include "libqos/virtio-pci.h"
diff --git a/tests/libqos/virtio-balloon.h b/tests/libqos/virtio-balloon.h
index e8066c42bb..122e18437b 100644
--- a/tests/libqos/virtio-balloon.h
+++ b/tests/libqos/virtio-balloon.h
@@ -16,6 +16,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "libqos/qgraph.h"
 #include "libqos/virtio.h"
 #include "libqos/virtio-pci.h"
diff --git a/tests/libqos/virtio-blk.h b/tests/libqos/virtio-blk.h
index dc258496ba..ab585bbacb 100644
--- a/tests/libqos/virtio-blk.h
+++ b/tests/libqos/virtio-blk.h
@@ -16,6 +16,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "libqos/qgraph.h"
 #include "libqos/virtio.h"
 #include "libqos/virtio-pci.h"
diff --git a/tests/libqos/virtio-net.h b/tests/libqos/virtio-net.h
index 28238a1b20..cc3af6056a 100644
--- a/tests/libqos/virtio-net.h
+++ b/tests/libqos/virtio-net.h
@@ -16,6 +16,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "libqos/qgraph.h"
 #include "libqos/virtio.h"
 #include "libqos/virtio-pci.h"
diff --git a/tests/libqos/virtio-rng.h b/tests/libqos/virtio-rng.h
index fbba988875..1d36c9728a 100644
--- a/tests/libqos/virtio-rng.h
+++ b/tests/libqos/virtio-rng.h
@@ -16,6 +16,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "libqos/qgraph.h"
 #include "libqos/virtio.h"
 #include "libqos/virtio-pci.h"
diff --git a/tests/libqos/virtio-scsi.h b/tests/libqos/virtio-scsi.h
index 17a47beddc..d0dffb7530 100644
--- a/tests/libqos/virtio-scsi.h
+++ b/tests/libqos/virtio-scsi.h
@@ -16,6 +16,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "libqos/qgraph.h"
 #include "libqos/virtio.h"
 #include "libqos/virtio-pci.h"
diff --git a/tests/libqos/virtio-serial.h b/tests/libqos/virtio-serial.h
index b7e2a5d178..d8829d7246 100644
--- a/tests/libqos/virtio-serial.h
+++ b/tests/libqos/virtio-serial.h
@@ -16,6 +16,8 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #include "libqos/qgraph.h"
 #include "libqos/virtio.h"
 #include "libqos/virtio-pci.h"
diff --git a/tests/migration/Makefile b/tests/migration/Makefile
index 13e99b1692..4a2015a6d4 100644
--- a/tests/migration/Makefile
+++ b/tests/migration/Makefile
@@ -28,6 +28,8 @@ override define __note
  * inside tests/migration to update, and then remember to send both
  * the header and the assembler differences in your patch submission.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
 endef
 export __note
 
diff --git a/tests/migration/aarch64/a-b-kernel.h b/tests/migration/aarch64/a-b-kernel.h
index 0a9b01137e..8539ee862c 100644
--- a/tests/migration/aarch64/a-b-kernel.h
+++ b/tests/migration/aarch64/a-b-kernel.h
@@ -3,6 +3,9 @@
  * inside tests/migration to update, and then remember to send both
  * the header and the assembler differences in your patch submission.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 unsigned char aarch64_kernel[] = {
   0x00, 0x10, 0x38, 0xd5, 0x00, 0xf8, 0x7f, 0x92, 0x00, 0x10, 0x18, 0xd5,
   0xdf, 0x3f, 0x03, 0xd5, 0x00, 0x02, 0xa8, 0xd2, 0x01, 0xc8, 0xa8, 0xd2,
diff --git a/tests/migration/i386/a-b-bootblock.h b/tests/migration/i386/a-b-bootblock.h
index 7d459d4fde..a2f48f18c6 100644
--- a/tests/migration/i386/a-b-bootblock.h
+++ b/tests/migration/i386/a-b-bootblock.h
@@ -3,6 +3,9 @@
  * inside tests/migration to update, and then remember to send both
  * the header and the assembler differences in your patch submission.
  */
+
+/* FIXME Does not pass make check-headers, yet! */
+
 unsigned char x86_bootsect[] = {
   0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00,
   0x0f, 0x22, 0xc0, 0x66, 0xea, 0x20, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00,
diff --git a/tests/migration/s390x/a-b-bios.h b/tests/migration/s390x/a-b-bios.h
index e722dc7c40..7156b709e2 100644
--- a/tests/migration/s390x/a-b-bios.h
+++ b/tests/migration/s390x/a-b-bios.h
@@ -3,6 +3,8 @@
  * inside tests/migration to update, and then remember to send both
  * the header and the assembler differences in your patch submission.
  */
+/* FIXME Does not pass make check-headers, yet! */
+
 unsigned char s390x_elf[] = {
   0x7f, 0x45, 0x4c, 0x46, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01,
diff --git a/tests/ptimer-test.h b/tests/ptimer-test.h
index 09ac56da9e..fcfdefb3be 100644
--- a/tests/ptimer-test.h
+++ b/tests/ptimer-test.h
@@ -8,6 +8,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef PTIMER_TEST_H
 #define PTIMER_TEST_H
 
diff --git a/tests/socket-helpers.h b/tests/socket-helpers.h
index 1c07d6d656..fc50331ff0 100644
--- a/tests/socket-helpers.h
+++ b/tests/socket-helpers.h
@@ -15,9 +15,10 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
- *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 /*
  * @hostname: a DNS name or numeric IP address
  *
diff --git a/tests/tpm-emu.h b/tests/tpm-emu.h
index a4f1d64226..752c6c1199 100644
--- a/tests/tpm-emu.h
+++ b/tests/tpm-emu.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TESTS_TPM_EMU_H
 #define TESTS_TPM_EMU_H
 
diff --git a/tests/tpm-tests.h b/tests/tpm-tests.h
index b97688fe75..e2f2efc50d 100644
--- a/tests/tpm-tests.h
+++ b/tests/tpm-tests.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TESTS_TPM_TESTS_H
 #define TESTS_TPM_TESTS_H
 
diff --git a/tests/tpm-util.h b/tests/tpm-util.h
index 5755698ad2..af8886a731 100644
--- a/tests/tpm-util.h
+++ b/tests/tpm-util.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TESTS_TPM_UTIL_H
 #define TESTS_TPM_UTIL_H
 
diff --git a/trace/control-internal.h b/trace/control-internal.h
index c7fbe2d3bf..947303ceaf 100644
--- a/trace/control-internal.h
+++ b/trace/control-internal.h
@@ -7,6 +7,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TRACE__CONTROL_INTERNAL_H
 #define TRACE__CONTROL_INTERNAL_H
 
diff --git a/trace/mem-internal.h b/trace/mem-internal.h
index f6efaf6d6b..fbd7ce2fcb 100644
--- a/trace/mem-internal.h
+++ b/trace/mem-internal.h
@@ -7,6 +7,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef TRACE__MEM_INTERNAL_H
 #define TRACE__MEM_INTERNAL_H
 
diff --git a/trace/mem.h b/trace/mem.h
index 2b58196e53..67adedaea5 100644
--- a/trace/mem.h
+++ b/trace/mem.h
@@ -7,6 +7,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* NOTE: May only be included into target-dependent code */
+
 #ifndef TRACE__MEM_H
 #define TRACE__MEM_H
 
diff --git a/ui/curses_keys.h b/ui/curses_keys.h
index 71e04acdc7..d8d4972761 100644
--- a/ui/curses_keys.h
+++ b/ui/curses_keys.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_CURSES_KEYS_H
 #define QEMU_CURSES_KEYS_H
 
diff --git a/ui/vgafont.h b/ui/vgafont.h
index 3606dd7338..6e49e8af9f 100644
--- a/ui/vgafont.h
+++ b/ui/vgafont.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 static const uint8_t vgafont16[256 * 16] = {
 
 	/* 0 0x00 '^@' */
diff --git a/ui/vnc-auth-sasl.h b/ui/vnc-auth-sasl.h
index fb55fe04ca..9d8c2a9d70 100644
--- a/ui/vnc-auth-sasl.h
+++ b/ui/vnc-auth-sasl.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_VNC_AUTH_SASL_H
 #define QEMU_VNC_AUTH_SASL_H
 
diff --git a/ui/vnc-auth-vencrypt.h b/ui/vnc-auth-vencrypt.h
index 1e35406664..5c2e746e76 100644
--- a/ui/vnc-auth-vencrypt.h
+++ b/ui/vnc-auth-vencrypt.h
@@ -24,6 +24,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_VNC_AUTH_VENCRYPT_H
 #define QEMU_VNC_AUTH_VENCRYPT_H
 
diff --git a/ui/vnc-enc-hextile-template.h b/ui/vnc-enc-hextile-template.h
index 0c56262aff..2db61b9962 100644
--- a/ui/vnc-enc-hextile-template.h
+++ b/ui/vnc-enc-hextile-template.h
@@ -1,3 +1,5 @@
+/* FIXME Does not pass make check-headers, yet! */
+
 #define CONCAT_I(a, b) a ## b
 #define CONCAT(a, b) CONCAT_I(a, b)
 #define pixel_t CONCAT(uint, CONCAT(BPP, _t))
diff --git a/ui/vnc-jobs.h b/ui/vnc-jobs.h
index 59f66bcc35..2e0ef21633 100644
--- a/ui/vnc-jobs.h
+++ b/ui/vnc-jobs.h
@@ -27,6 +27,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef VNC_JOBS_H
 #define VNC_JOBS_H
 
diff --git a/ui/vnc-ws.h b/ui/vnc-ws.h
index 396cacfcb0..d31c72f20b 100644
--- a/ui/vnc-ws.h
+++ b/ui/vnc-ws.h
@@ -18,6 +18,8 @@
  * along with this software; if not, see <http://www.gnu.org/licenses/>.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_UI_VNC_WS_H
 #define QEMU_UI_VNC_WS_H
 
diff --git a/ui/vnc.h b/ui/vnc.h
index ee3da08f4a..e79b313704 100644
--- a/ui/vnc.h
+++ b/ui/vnc.h
@@ -24,6 +24,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers without system emulation, yet! */
+
 #ifndef QEMU_VNC_H
 #define QEMU_VNC_H
 
diff --git a/ui/vnc_keysym.h b/ui/vnc_keysym.h
index e8a2ec73c5..fd80f1a749 100644
--- a/ui/vnc_keysym.h
+++ b/ui/vnc_keysym.h
@@ -1,3 +1,4 @@
+/* FIXME Does not pass make check-headers, yet! */
 
 #include "keymaps.h"
 
diff --git a/ui/x_keymap.h b/ui/x_keymap.h
index 0395e335ff..78c0f580ce 100644
--- a/ui/x_keymap.h
+++ b/ui/x_keymap.h
@@ -22,6 +22,8 @@
  * THE SOFTWARE.
  */
 
+/* FIXME Does not pass make check-headers without CONFIG_X11, yet! */
+
 #ifndef QEMU_X_KEYMAP_H
 #define QEMU_X_KEYMAP_H
 
diff --git a/util/qemu-thread-common.h b/util/qemu-thread-common.h
index 2af6b12085..606fbf6c20 100644
--- a/util/qemu-thread-common.h
+++ b/util/qemu-thread-common.h
@@ -10,6 +10,8 @@
  * See the COPYING file in the top-level directory.
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef QEMU_THREAD_COMMON_H
 #define QEMU_THREAD_COMMON_H
 
diff --git a/win_dump.h b/win_dump.h
index b8c25348f4..7d65125b04 100644
--- a/win_dump.h
+++ b/win_dump.h
@@ -8,6 +8,8 @@
  *
  */
 
+/* FIXME Does not pass make check-headers, yet! */
+
 #ifndef WIN_DUMP_H
 #define WIN_DUMP_H
 
-- 
2.17.2



^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [Qemu-devel] [RFC v4 7/7] tests: Make check-source cover generated headers
  2019-05-23  8:15 [Qemu-devel] [RFC v4 0/7] Baby steps towards saner headers Markus Armbruster
                   ` (5 preceding siblings ...)
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/ Markus Armbruster
@ 2019-05-23  8:15 ` Markus Armbruster
  6 siblings, 0 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-23  8:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, pbonzini

FIXME Computation of generated target-dependent headers

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 tests/check-headers.mak | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/tests/check-headers.mak b/tests/check-headers.mak
index 589c62d66b..16a5f4e214 100644
--- a/tests/check-headers.mak
+++ b/tests/check-headers.mak
@@ -4,16 +4,26 @@ ifneq ($(wildcard $(SRC_PATH)/.git),)
 
 # All headers:
 src-headers := $(filter %.h, $(shell cd $(SRC_PATH) && git ls-files))
+gen-headers := $(filter %.h, $(generated-files-y))
+ifeq ($(generated-files-y),) # FIXME empty when included from Makefile.target
+$(warning warning: working around empty generated-files-y)
+# Work-around: hard-code the generated headers that are actually
+# target-dependent
+gen-headers := qapi/qapi-types-target.h qapi/qapi-visit-target.h qapi/qapi-commands-target.h qapi/qapi-events-target.h qapi/qapi-types.h qapi/qapi-visit.h qapi/qapi-commands.h qapi/qapi-events.h
+endif
 
 # Third party headers we don't want to mess with:
 excluded-headers := $(filter disas/libvixl/vixl/% include/standard-headers/% linux-headers/% pc-bios/% slirp/%, $(src-headers))
+excluded-headers += $(filter trace-dtrace-root.h %/trace-dtrace.h, $(gen-headers))
 # Funny stuff we don't want to mess with:
 excluded-headers += $(filter tests/multiboot/% tests/tcg/% tests/uefi-test-tools/%, $(src-headers))
 excluded-headers += scripts/cocci-macro-file.h
 
 # Headers that require -DNEED_CPU_H etc.
 target-header-comment := NOTE: May only be included into target-dependent code
-target-headers := $(shell cd $(SRC_PATH) && egrep -l '$(target-header-comment)' $(src-headers))
+target-headers := $(filter qapi/qapi-%-target.h, $(gen-headers))
+target-headers += $(target-headers:-target.h=.h)
+target-headers += $(shell cd $(SRC_PATH) && egrep -l '$(target-header-comment)' $(src-headers))
 
 # Headers carrying a FIXME about this test:
 bad-header-without-linux$(CONFIG_LINUX) := | without CONFIG_LINUX
@@ -28,10 +38,11 @@ bad-header-without-x11$(CONFIG_X11) := | without CONFIG_X11
 bad-header-without-xen$(CONFIG_XEN) := | without CONFIG_XEN
 bad-header-comment := FIXME Does not pass make check-headers($(bad-header-without-linux)$(bad-header-without-opengl)$(bad-header-without-posix)$(bad-header-without-rdma)$(bad-header-without-replication)$(bad-header-without-spice)$(bad-header-without-system-emu)$(bad-header-without-win32)$(bad-header-without-x11)$(bad-header-without-xen)), yet!
 bad-headers := $(shell cd $(SRC_PATH) && egrep -l '$(bad-header-comment)' $(src-headers))
+bad-headers += trace/generated-tcg-tracers.h trace/generated-helpers-wrappers.h trace/generated-helpers.h
 bad-target-headers := $(filter $(target-headers), $(bad-headers))
 
 # Checked headers (all less excluded and bad):
-checked-headers := $(filter-out $(excluded-headers) $(bad-headers) $(target-headers), $(src-headers))
+checked-headers := $(filter-out $(excluded-headers) $(bad-headers) $(target-headers), $(src-headers) $(gen-headers))
 check-header-tests := $(patsubst %.h, tests/headers/%.c, $(checked-headers))
 checked-target-headers := $(filter-out $(excluded-headers) $(bad-headers), $(target-headers))
 check-target-header-tests := $(patsubst %.h, tests/headers/%.c, $(checked-target-headers))
-- 
2.17.2



^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 1/7] Makefile: Remove code to smooth transition to config.status
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 1/7] Makefile: Remove code to smooth transition to config.status Markus Armbruster
@ 2019-05-23 13:54   ` Richard Henderson
  2019-05-24  5:15   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 30+ messages in thread
From: Richard Henderson @ 2019-05-23 13:54 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: peter.maydell, pbonzini

On 5/23/19 4:15 AM, Markus Armbruster wrote:
> When commit bdf523e6923 made configure generate config.status, it
> added a fallback to Makefile to smooth the transition, with a TODO
> "code can be removed after QEMU 1.7."  It's been more than five years.
> Remove it.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  Makefile | 9 +--------
>  1 file changed, 1 insertion(+), 8 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 2/7] Makefile: Drop bogus cleaning of $(ALL_SUBDIRS)/qemu-options.def
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 2/7] Makefile: Drop bogus cleaning of $(ALL_SUBDIRS)/qemu-options.def Markus Armbruster
@ 2019-05-23 13:56   ` Richard Henderson
  2019-05-24  5:17   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 30+ messages in thread
From: Richard Henderson @ 2019-05-23 13:56 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: peter.maydell, pbonzini

On 5/23/19 4:15 AM, Markus Armbruster wrote:
> When commit df2943ba3c7 moved "rm -f qemu-options.def" from distclean
> to clean, it also added "rm -f $$d/qemu-options.def" to the for d in
> $(ALL_SUBDIRS) loop.  That file doesn't exist.  Remove the mistaken
> rm.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  Makefile | 1 -
>  1 file changed, 1 deletion(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 3/7] Makefile: Rename targets for make recursion
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 3/7] Makefile: Rename targets for make recursion Markus Armbruster
@ 2019-05-23 14:10   ` Richard Henderson
  2019-05-24  5:28   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 30+ messages in thread
From: Richard Henderson @ 2019-05-23 14:10 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: peter.maydell, pbonzini

On 5/23/19 4:15 AM, Markus Armbruster wrote:
> We make a few sub-directories recursively, in particular
> $(TARGET_DIRS).
> 
> For goal "all", we do it the nice way: "all" has a prerequisite
> subdir-T for each T in $(TARGET_DIRS), and T's recipe runs make
> recursively.  Behaves nicely with -j and -k.
> 
> For other goals such as "clean" and "install", the recipe runs make
> recursively in a for loop.  Ignores -j and -k.
> 
> The next commit will fix that for "clean" and "install".  This commit
> prepares the ground by renaming the targets we use for "all" to
> include the goal for the sub-make.  This will permit reusing them for
> goals other than "all".
> 
> Targets subdir-T for T in $(TARGET_DIRS) run "make all" in T.  Rename
> to T/all, and declare phony.
> 
> Targets romsubdir-R for R in $(ROMS) run "make" in pc-bios/R.  Default
> goal is "all" for all R.  Rename to pc-bios/R/all, and declare phony.
> 
> The remainder are renamed just for consistency.
> 
> Target subdir-dtc runs "make libbft/libfdt.a" in dtc.  Rename to
> dtc/all, and declare phony.
> 
> Target subdir-capstone runs make $(BUILD_DIR)/capstone/$(LIBCAPSTONE)
> in $(SRC_PATH)/capstone.  Rename to capstone/all, and declare phony.
> 
> Target subdir-slirp runs "make" in $(SRC_PATH)/slirp.  Default goal is
> all, which builds $(BUILD_DIR)/libslirp.a.  Rename to slirp/all, and
> declare phony.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  Makefile               | 30 ++++++++++++++++++------------
>  configure              |  6 +++---
>  tests/Makefile.include |  3 ++-
>  3 files changed, 23 insertions(+), 16 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 4/7] Makefile: Reuse all's recursion machinery for clean and install
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 4/7] Makefile: Reuse all's recursion machinery for clean and install Markus Armbruster
@ 2019-05-23 14:14   ` Richard Henderson
  0 siblings, 0 replies; 30+ messages in thread
From: Richard Henderson @ 2019-05-23 14:14 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: peter.maydell, pbonzini

On 5/23/19 4:15 AM, Markus Armbruster wrote:
> Targets "clean" and "install" run make recursively in a for loop.
> This ignores -j and -k.  Target "all" depends on SUBDIR/all to recurse
> into each SUBDIR.  Behaves nicely with -j and -k.  Put that to use for
> "clean" and "install": depend on SUBDIR/clean or SUBDIR/install,
> respectively, and delete the loop.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  Makefile | 53 +++++++++++++++++++++++++----------------------------
>  1 file changed, 25 insertions(+), 28 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 5/7] tests: New make target check-source
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 5/7] tests: New make target check-source Markus Armbruster
@ 2019-05-23 16:51   ` Paolo Bonzini
  2019-05-23 19:57     ` Markus Armbruster
  2019-05-24  5:49   ` Philippe Mathieu-Daudé
  1 sibling, 1 reply; 30+ messages in thread
From: Paolo Bonzini @ 2019-05-23 16:51 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: peter.maydell

On 23/05/19 10:15, Markus Armbruster wrote:
> A large number of headers don't pass this test, by design or by
> accident.  To keep things more manageable, exclude all headers outside
> include/ for now.

A lot of these, either in include/ or outside, are _meant_ to be
included many times.  What about renaming those to .inc.h and
whitelisting them in the script?

Paolo


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 5/7] tests: New make target check-source
  2019-05-23 16:51   ` Paolo Bonzini
@ 2019-05-23 19:57     ` Markus Armbruster
  2019-05-24 16:25       ` Paolo Bonzini
  0 siblings, 1 reply; 30+ messages in thread
From: Markus Armbruster @ 2019-05-23 19:57 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: peter.maydell, qemu-devel

Paolo Bonzini <pbonzini@redhat.com> writes:

> On 23/05/19 10:15, Markus Armbruster wrote:
>> A large number of headers don't pass this test, by design or by
>> accident.  To keep things more manageable, exclude all headers outside
>> include/ for now.
>
> A lot of these, either in include/ or outside, are _meant_ to be
> included many times.  What about renaming those to .inc.h and
> whitelisting them in the script?

Yes, that would be nice.


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 1/7] Makefile: Remove code to smooth transition to config.status
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 1/7] Makefile: Remove code to smooth transition to config.status Markus Armbruster
  2019-05-23 13:54   ` Richard Henderson
@ 2019-05-24  5:15   ` Philippe Mathieu-Daudé
  2019-05-24 11:50     ` Markus Armbruster
  1 sibling, 1 reply; 30+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-05-24  5:15 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: peter.maydell, pbonzini

Hi Markus,

On 5/23/19 10:15 AM, Markus Armbruster wrote:
> When commit bdf523e6923 made configure generate config.status, it
> added a fallback to Makefile to smooth the transition, with a TODO
> "code can be removed after QEMU 1.7."  It's been more than five years.
> Remove it.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  Makefile | 9 +--------
>  1 file changed, 1 insertion(+), 8 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 155f066a20..8ec833a5fb 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -69,14 +69,7 @@ CONFIG_ALL=y
>  
>  config-host.mak: $(SRC_PATH)/configure $(SRC_PATH)/pc-bios $(SRC_PATH)/VERSION
>  	@echo $@ is out-of-date, running configure
> -	@# TODO: The next lines include code which supports a smooth
> -	@# transition from old configurations without config.status.
> -	@# This code can be removed after QEMU 1.7.
> -	@if test -x config.status; then \
> -	    ./config.status; \
> -        else \
> -	    sed -n "/.*Configured with/s/[^:]*: //p" $@ | sh; \
> -	fi
> +	./config.status

We could prepend a '@' since we already describe what this rule does
("config-host.mak is out-of-date, running configure").

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

>  else
>  config-host.mak:
>  ifneq ($(filter-out $(UNCHECKED_GOALS),$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
> 


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 2/7] Makefile: Drop bogus cleaning of $(ALL_SUBDIRS)/qemu-options.def
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 2/7] Makefile: Drop bogus cleaning of $(ALL_SUBDIRS)/qemu-options.def Markus Armbruster
  2019-05-23 13:56   ` Richard Henderson
@ 2019-05-24  5:17   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 30+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-05-24  5:17 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: peter.maydell, pbonzini

On 5/23/19 10:15 AM, Markus Armbruster wrote:
> When commit df2943ba3c7 moved "rm -f qemu-options.def" from distclean
> to clean, it also added "rm -f $$d/qemu-options.def" to the for d in
> $(ALL_SUBDIRS) loop.  That file doesn't exist.  Remove the mistaken
> rm.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  Makefile | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 8ec833a5fb..12e470fa03 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -647,7 +647,6 @@ clean:
>  	rm -rf qga/qapi-generated
>  	for d in $(ALL_SUBDIRS); do \
>  	if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
> -	rm -f $$d/qemu-options.def; \
>          done
>  	rm -f config-all-devices.mak
>  
> 

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 3/7] Makefile: Rename targets for make recursion
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 3/7] Makefile: Rename targets for make recursion Markus Armbruster
  2019-05-23 14:10   ` Richard Henderson
@ 2019-05-24  5:28   ` Philippe Mathieu-Daudé
  2019-05-24 12:34     ` Markus Armbruster
  1 sibling, 1 reply; 30+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-05-24  5:28 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: peter.maydell, pbonzini

On 5/23/19 10:15 AM, Markus Armbruster wrote:
> We make a few sub-directories recursively, in particular
> $(TARGET_DIRS).
> 
> For goal "all", we do it the nice way: "all" has a prerequisite
> subdir-T for each T in $(TARGET_DIRS), and T's recipe runs make
> recursively.  Behaves nicely with -j and -k.
> 
> For other goals such as "clean" and "install", the recipe runs make
> recursively in a for loop.  Ignores -j and -k.
> 
> The next commit will fix that for "clean" and "install".  This commit
> prepares the ground by renaming the targets we use for "all" to
> include the goal for the sub-make.  This will permit reusing them for
> goals other than "all".
> 
> Targets subdir-T for T in $(TARGET_DIRS) run "make all" in T.  Rename
> to T/all, and declare phony.
> 
> Targets romsubdir-R for R in $(ROMS) run "make" in pc-bios/R.  Default
> goal is "all" for all R.  Rename to pc-bios/R/all, and declare phony.
> 
> The remainder are renamed just for consistency.
> 
> Target subdir-dtc runs "make libbft/libfdt.a" in dtc.  Rename to
> dtc/all, and declare phony.
> 
> Target subdir-capstone runs make $(BUILD_DIR)/capstone/$(LIBCAPSTONE)
> in $(SRC_PATH)/capstone.  Rename to capstone/all, and declare phony.
> 
> Target subdir-slirp runs "make" in $(SRC_PATH)/slirp.  Default goal is
> all, which builds $(BUILD_DIR)/libslirp.a.  Rename to slirp/all, and
> declare phony.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  Makefile               | 30 ++++++++++++++++++------------
>  configure              |  6 +++---
>  tests/Makefile.include |  3 ++-
>  3 files changed, 23 insertions(+), 16 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 12e470fa03..09c726bcc2 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -436,8 +436,8 @@ config-host.h-timestamp: config-host.mak
>  qemu-options.def: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
>  	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
>  
> -SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
> -SOFTMMU_SUBDIR_RULES=$(filter %-softmmu,$(SUBDIR_RULES))
> +SUBDIR_RULES=$(addsuffix /all, $(TARGET_DIRS))
> +SOFTMMU_SUBDIR_RULES=$(filter %-softmmu/all,$(SUBDIR_RULES))
>  
>  $(SOFTMMU_SUBDIR_RULES): $(authz-obj-y)
>  $(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
> @@ -447,14 +447,16 @@ $(SOFTMMU_SUBDIR_RULES): $(io-obj-y)
>  $(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
>  $(SOFTMMU_SUBDIR_RULES): $(edk2-decompressed)
>  
> -subdir-%:
> -	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
> +.PHONY: $(SUBDIR_RULES)
> +$(SUBDIR_RULES):
> +	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" all,)
>  
>  DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
>  DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
>  DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
>  
> -subdir-dtc: .git-submodule-status dtc/libfdt dtc/tests
> +.PHONY: dtc/all
> +dtc/all: .git-submodule-status dtc/libfdt dtc/tests
>  	$(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS) CPPFLAGS="$(DTC_CPPFLAGS)" CFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(LDFLAGS)" ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) libfdt/libfdt.a,)

OK

>  
>  dtc/%: .git-submodule-status
> @@ -472,21 +474,25 @@ CAP_CFLAGS += -DCAPSTONE_HAS_ARM64
>  CAP_CFLAGS += -DCAPSTONE_HAS_POWERPC
>  CAP_CFLAGS += -DCAPSTONE_HAS_X86
>  
> -subdir-capstone: .git-submodule-status
> +.PHONY: capstone/all
> +capstone/all: .git-submodule-status
>  	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))

OK

>  
> -subdir-slirp: .git-submodule-status
> +.PHONY: slirp/all
> +slirp/all: .git-submodule-status
>  	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/slirp BUILD_DIR="$(BUILD_DIR)/slirp" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)")

OK

>  
>  $(SUBDIR_RULES): libqemuutil.a $(common-obj-y) \
>  	$(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
>  
> -ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
> +ROM_DIRS = $(addprefix pc-bios/, $(ROMS))
> +ROMSUBDIR_RULES=$(addsuffix /all, $(ROM_DIRS))
>  # Only keep -O and -g cflags
> -romsubdir-%:
> -	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pc-bios/$* V="$(V)" TARGET_DIR="$*/" CFLAGS="$(filter -O% -g%,$(CFLAGS))",)
> +.PHONY: $(ROMSUBDIR_RULES)
> +$(ROMSUBDIR_RULES):
> +	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" CFLAGS="$(filter -O% -g%,$(CFLAGS))",)

OK

>  
> -ALL_SUBDIRS=$(TARGET_DIRS) $(patsubst %,pc-bios/%, $(ROMS))
> +ALL_SUBDIRS=$(TARGET_DIRS) $(ROM_DIRS)
>  
>  recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES)
>  
> @@ -1087,7 +1093,7 @@ endif
>  	@$(if $(TARGET_DIRS), \
>  		echo 'Architecture specific targets:'; \
>  		$(foreach t, $(TARGET_DIRS), \
> -		printf "  %-30s - Build for %s\\n" $(patsubst %,subdir-%,$(t)) $(t);) \
> +		printf "  %-30s - Build for %s\\n" $(t)/all $(t);) \

OK

>  		echo '')
>  	@echo  'Cleaning targets:'
>  	@echo  '  clean           - Remove most generated files but keep the config'
> diff --git a/configure b/configure
> index d2fc346302..2897434dda 100755
> --- a/configure
> +++ b/configure
> @@ -6570,7 +6570,7 @@ if test "$slirp" != "no"; then
>    echo "SLIRP_LIBS=$slirp_libs" >> $config_host_mak
>  fi
>  if [ "$slirp" = "git" -o "$slirp" = "internal" ]; then
> -    echo "config-host.h: subdir-slirp" >> $config_host_mak
> +    echo "config-host.h: slirp/all" >> $config_host_mak
>  fi
>  if test "$vde" = "yes" ; then
>    echo "CONFIG_VDE=y" >> $config_host_mak
> @@ -7836,10 +7836,10 @@ if test -n "$enabled_cross_compilers"; then
>  fi
>  
>  if [ "$fdt" = "git" ]; then
> -  echo "config-host.h: subdir-dtc" >> $config_host_mak
> +  echo "config-host.h: dtc/all" >> $config_host_mak
>  fi
>  if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
> -  echo "config-host.h: subdir-capstone" >> $config_host_mak
> +  echo "config-host.h: capstone/all" >> $config_host_mak
>  fi
>  if test -n "$LIBCAPSTONE"; then
>    echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index 1865f6b322..2b8d34ca25 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -1,3 +1,4 @@
> +# -*- Mode: makefile -*-
>  
>  .PHONY: check-help
>  check-help:
> @@ -880,7 +881,7 @@ define do_test_tap
>  endef
>  
>  .PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS))
> -$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: subdir-%-softmmu $(check-qtest-y)
> +$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: %-softmmu/all $(check-qtest-y)
>  	$(call do_test_human,$(check-qtest-$*-y) $(check-qtest-generic-y), \
>  	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
>  	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
> 

There is another one:

-- >8 --
 # gtester tests with TAP output

-$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)):
check-report-qtest-%.tap: subdir-%-softmmu $(check-qtest-y)
+$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)):
check-report-qtest-%.tap: %-softmmu/all $(check-qtest-y)
        $(call do_test_tap, $(check-qtest-$*-y) $(check-qtest-generic-y), \
          QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
          QTEST_QEMU_IMG=qemu-img$(EXESUF))
---

With the fix amended:
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Regards,

Phil.


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 5/7] tests: New make target check-source
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 5/7] tests: New make target check-source Markus Armbruster
  2019-05-23 16:51   ` Paolo Bonzini
@ 2019-05-24  5:49   ` Philippe Mathieu-Daudé
  2019-05-24 12:36     ` Markus Armbruster
  1 sibling, 1 reply; 30+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-05-24  5:49 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: peter.maydell, pbonzini

On 5/23/19 10:15 AM, Markus Armbruster wrote:
> Make target check-source is for checking the source code itself.  For
> now, there's just one such check, make target check-headers.  It
> checks basic header sanity: for each header "FOO.h", test whether
> 
> 	#include "qemu/osdep.h"
> 	#include "FOO.h"
> 	#include "FOO.h"
> 
> compiles.
> 
> The test works only in a git tree, with git installed.  It is skipped
> unless $(SRC_PATH)/.git exists.
> 
> Third-party headers we don't intend to clean up are excluded from this
> test.  So are a few "funny" headers.  See make variable
> excluded-headers.
> 
> A large number of headers don't pass this test, by design or by
> accident.  To keep things more manageable, exclude all headers outside
> include/ for now.
> 
> Headers known to fail the test are marked with
> 
>     /* FIXME Does not pass make check-headers, yet! */
> 
> Headers known to work only in certain configurations are marked like
> 
>     /* FIXME Does not pass make check-headers without CONFIG_WIN32, yet! */
> 
> I tried to find and mark all of them by testing various
> configurations.  Still, "make check" might fail for configurations I
> didn't test.
> 
> Known issue: some of these don't actually need fixing; they're *meant*
> to work only in certain configurations.  We'll want to invent a
> suitable marker that doesn't claim FIXME.
> 
> Some headers may only be included into target-dependent code: they use
> identifiers poisoned by exec/poison.h, or include cpu.h.  These
> headers are marked with a comment
> 
>     /* NOTE: May only be included into target-dependent code */
> 
> The test treats them specially.
> 
> Known issue: some of these are intended for specific targets.  The
> test should skip them for other targets, but doesn't.  They're marked
> FIXME instead, which is wrong.
> 
> New make target check-bad-headers runs the test for headers expected
> to fail it.  This helps with examining the failures.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
[...]>
> diff --git a/Makefile b/Makefile
> index 59de8e2494..42f02c5ceb 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -416,6 +416,8 @@ dummy := $(call unnest-vars,, \
>                  audio-obj-m \
>                  trace-obj-y)
>  
> +RECURSIVE_TARGETS := all clean install
> +
>  include $(SRC_PATH)/tests/Makefile.include
>  
>  all: $(DOCS) $(if $(BUILD_DOCS),sphinxdocs) $(TOOLS) $(HELPERS-y) recurse-all modules
> @@ -436,7 +438,7 @@ config-host.h-timestamp: config-host.mak
>  qemu-options.def: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
>  	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
>  
> -TARGET_DIRS_RULES := $(foreach t, all clean install, $(addsuffix /$(t), $(TARGET_DIRS)))
> +TARGET_DIRS_RULES:=$(foreach t, $(RECURSIVE_TARGETS), $(addsuffix /$(t), $(TARGET_DIRS)))
>  
>  SOFTMMU_ALL_RULES=$(filter %-softmmu/all, $(TARGET_DIRS_RULES))
>  $(SOFTMMU_ALL_RULES): $(authz-obj-y)
> diff --git a/Makefile.target b/Makefile.target
> index fdbe7c89f4..a46cfda580 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -41,6 +41,7 @@ STPFILES=
>  
>  # Makefile Tests
>  include $(SRC_PATH)/tests/tcg/Makefile.include
> +include $(SRC_PATH)/tests/check-headers.mak
>  
>  config-target.h: config-target.h-timestamp
>  config-target.h-timestamp: config-target.mak
> @@ -216,6 +217,22 @@ hmp-commands.h: $(SRC_PATH)/hmp-commands.hx $(SRC_PATH)/scripts/hxtool
>  hmp-commands-info.h: $(SRC_PATH)/hmp-commands-info.hx $(SRC_PATH)/scripts/hxtool
>  	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$(TARGET_DIR)$@")
>  
> +.PHONY: check-headers
> +ifeq ($(wildcard $(SRC_PATH)/.git),)
> +check-headers check-bad-headers:
> +	@echo "  SKIP  $@ (requires a git tree)"
> +else
> +check-headers: $(check-target-header-tests:.c=.o)
> +
> +# Expected to fail:
> +check-bad-headers: $(check-bad-target-header-tests:.c=.o)
> +
> +.SECONDARY: $(check-target-header-tests)
> +$(check-target-header-tests) $(check-bad-target-header-tests): tests/header-test-template.c
> +	@mkdir -p $(dir $@)
> +	@sed 's,@header@,$(subst tests/headers/,,$(@:.c=.h)),' <$< >$@
> +endif
> +
>  clean: clean-target
>  	rm -f *.a *~ $(PROGS)
>  	rm -f $(shell find . -name '*.[od]')
> @@ -238,3 +255,5 @@ endif
>  
>  generated-files-y += config-target.h
>  Makefile: $(generated-files-y)
> +
> +-include $(check-target-header-tests:.c=.d) $(check-bad-target-header-tests:.c=.d)

$ make microblazeel-softmmu/tests/headers/include/exec/user/abitypes.o
./include/exec/user/abitypes.h:6:10: fatal error: cpu.h: No such file or
directory
make: *** [./rules.mak:69:
microblazeel-softmmu/tests/headers/include/exec/user/abitypes.o] Error 1

^ this one looks legit, it's arch-specific, right?

$ make tests/headers/include/hw/net/lance.o
  CC      tests/headers/include/hw/net/lance.o
In file included from tests/headers/include/hw/net/lance.c:14:
./include/hw/net/lance.h:42:5: error: unknown type name ‘SysBusDevice’
     SysBusDevice parent_obj;
     ^~~~~~~~~~~~
make: *** [./rules.mak:69: tests/headers/include/hw/net/lance.o] Error 1

$ make tests/headers/include/hw/isa/vt82c686.o
  CC      tests/headers/include/hw/isa/vt82c686.o
In file included from tests/headers/include/hw/isa/vt82c686.c:14:
./include/hw/isa/vt82c686.h:13:27: error: unknown type name ‘qemu_irq’
                           qemu_irq sci_irq);
                           ^~~~~~~~
make: *** [./rules.mak:69: tests/headers/include/hw/isa/vt82c686.o]

Nice, I like it :)

The rule pattern is not obvious (in particular with arch-specific
targets), but it has probably always been like that.

Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/ Markus Armbruster
@ 2019-05-24  7:24   ` Thomas Huth
  2019-05-24  7:32     ` Philippe Mathieu-Daudé
  2019-05-24 11:52     ` Markus Armbruster
  2019-05-24  9:11   ` Peter Maydell
  1 sibling, 2 replies; 30+ messages in thread
From: Thomas Huth @ 2019-05-24  7:24 UTC (permalink / raw)
  To: qemu-devel

On 23/05/2019 10.15, Markus Armbruster wrote:
> Signed-off-by: Markus Armbruster <armbru@redhat.com>

Please add a proper patch description. You don't really expect someone
to review this monster patch without instructions where to look first?

 Thomas


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/
  2019-05-24  7:24   ` Thomas Huth
@ 2019-05-24  7:32     ` Philippe Mathieu-Daudé
  2019-05-24 11:52     ` Markus Armbruster
  1 sibling, 0 replies; 30+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-05-24  7:32 UTC (permalink / raw)
  To: Thomas Huth, qemu-devel, Markus Armbruster

On 5/24/19 9:24 AM, Thomas Huth wrote:
> On 23/05/2019 10.15, Markus Armbruster wrote:
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> 
> Please add a proper patch description. You don't really expect someone
> to review this monster patch without instructions where to look first?

From the cover letter:

PATCH 5 adds the tests, but only for include/.  764 headers, 179
known-bad.  We may decide to clean up include/ some before we apply
PATCH 6+7.

PATCH 6 extends them to all headers, except for generated ones.  Adds
797 headers, 409 known-bad.

Markus, you could have use "This patch is RFC, see the cover letter of
this series" :)


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/
  2019-05-23  8:15 ` [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/ Markus Armbruster
  2019-05-24  7:24   ` Thomas Huth
@ 2019-05-24  9:11   ` Peter Maydell
  2019-05-24 12:25     ` Markus Armbruster
  1 sibling, 1 reply; 30+ messages in thread
From: Peter Maydell @ 2019-05-24  9:11 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: Paolo Bonzini, QEMU Developers

On Thu, 23 May 2019 at 09:15, Markus Armbruster <armbru@redhat.com> wrote:
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---

>  432 files changed, 1035 insertions(+), 8 deletions(-)
>
> diff --git a/accel/tcg/atomic_template.h b/accel/tcg/atomic_template.h
> index 685602b076..352da0c745 100644
> --- a/accel/tcg/atomic_template.h
> +++ b/accel/tcg/atomic_template.h
> @@ -18,6 +18,9 @@
>   * License along with this library; if not, see <http://www.gnu.org/licenses/>.
>   */
>
> +/* NOTE: May only be included into target-dependent code */
> +/* FIXME Does not pass make check-headers, yet! */
> +

I'm not sure I see much point in touching several hundred
header files just to add a FIXME note. We can fix them,
or we can just leave things as they are...

thanks
-- PMM


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 1/7] Makefile: Remove code to smooth transition to config.status
  2019-05-24  5:15   ` Philippe Mathieu-Daudé
@ 2019-05-24 11:50     ` Markus Armbruster
  0 siblings, 0 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-24 11:50 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé; +Cc: peter.maydell, qemu-devel, pbonzini

Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> Hi Markus,
>
> On 5/23/19 10:15 AM, Markus Armbruster wrote:
>> When commit bdf523e6923 made configure generate config.status, it
>> added a fallback to Makefile to smooth the transition, with a TODO
>> "code can be removed after QEMU 1.7."  It's been more than five years.
>> Remove it.
>> 
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
>>  Makefile | 9 +--------
>>  1 file changed, 1 insertion(+), 8 deletions(-)
>> 
>> diff --git a/Makefile b/Makefile
>> index 155f066a20..8ec833a5fb 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -69,14 +69,7 @@ CONFIG_ALL=y
>>  
>>  config-host.mak: $(SRC_PATH)/configure $(SRC_PATH)/pc-bios $(SRC_PATH)/VERSION
>>  	@echo $@ is out-of-date, running configure
>> -	@# TODO: The next lines include code which supports a smooth
>> -	@# transition from old configurations without config.status.
>> -	@# This code can be removed after QEMU 1.7.
>> -	@if test -x config.status; then \
>> -	    ./config.status; \
>> -        else \
>> -	    sed -n "/.*Configured with/s/[^:]*: //p" $@ | sh; \
>> -	fi
>> +	./config.status
>
> We could prepend a '@' since we already describe what this rule does
> ("config-host.mak is out-of-date, running configure").

You're right, my patch loses the @.

> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Thanks!

[...]


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/
  2019-05-24  7:24   ` Thomas Huth
  2019-05-24  7:32     ` Philippe Mathieu-Daudé
@ 2019-05-24 11:52     ` Markus Armbruster
  1 sibling, 0 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-24 11:52 UTC (permalink / raw)
  To: Thomas Huth; +Cc: qemu-devel

Thomas Huth <thuth@redhat.com> writes:

> On 23/05/2019 10.15, Markus Armbruster wrote:
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>
> Please add a proper patch description. You don't really expect someone
> to review this monster patch without instructions where to look first?

Fair point.  RFC is no excuse for making review harder than necessary.


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/
  2019-05-24  9:11   ` Peter Maydell
@ 2019-05-24 12:25     ` Markus Armbruster
  2019-05-24 12:29       ` Peter Maydell
  0 siblings, 1 reply; 30+ messages in thread
From: Markus Armbruster @ 2019-05-24 12:25 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Paolo Bonzini, QEMU Developers

Peter Maydell <peter.maydell@linaro.org> writes:

> On Thu, 23 May 2019 at 09:15, Markus Armbruster <armbru@redhat.com> wrote:
>>
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
>
>>  432 files changed, 1035 insertions(+), 8 deletions(-)
>>
>> diff --git a/accel/tcg/atomic_template.h b/accel/tcg/atomic_template.h
>> index 685602b076..352da0c745 100644
>> --- a/accel/tcg/atomic_template.h
>> +++ b/accel/tcg/atomic_template.h
>> @@ -18,6 +18,9 @@
>>   * License along with this library; if not, see <http://www.gnu.org/licenses/>.
>>   */
>>
>> +/* NOTE: May only be included into target-dependent code */
>> +/* FIXME Does not pass make check-headers, yet! */
>> +
>
> I'm not sure I see much point in touching several hundred
> header files just to add a FIXME note. We can fix them,
> or we can just leave things as they are...

Adding FIXMEs without an intent to actually fix them would be stupid.

The FIXMEs direct "make check-headers" to skip the headers so marked.
Without the FIXMEs, "make check-headers" fails.  I want it to succeed,
so we can run it from "make check", and gain protection against clean
headers becoming unclean.

What "make check-headers" covers is for us to choose.  This RFC series
starts with include/, then widens to everything in two big steps:

* PATCH 5: include/.  764 headers, 179 known-bad.

* PATCH 6: all of the source tree.  Adds 797 headers, 409 known-bad.

* PATCH 7: plus generated headers.  Adds 177 headers, 3 known-bad.

We can start smaller, and take smaller steps.


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/
  2019-05-24 12:25     ` Markus Armbruster
@ 2019-05-24 12:29       ` Peter Maydell
  0 siblings, 0 replies; 30+ messages in thread
From: Peter Maydell @ 2019-05-24 12:29 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: Paolo Bonzini, QEMU Developers

On Fri, 24 May 2019 at 13:25, Markus Armbruster <armbru@redhat.com> wrote:
>
> Peter Maydell <peter.maydell@linaro.org> writes:
>
> > On Thu, 23 May 2019 at 09:15, Markus Armbruster <armbru@redhat.com> wrote:
> >>
> >> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> >> ---
> >
> >>  432 files changed, 1035 insertions(+), 8 deletions(-)
> >>
> >> diff --git a/accel/tcg/atomic_template.h b/accel/tcg/atomic_template.h
> >> index 685602b076..352da0c745 100644
> >> --- a/accel/tcg/atomic_template.h
> >> +++ b/accel/tcg/atomic_template.h
> >> @@ -18,6 +18,9 @@
> >>   * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> >>   */
> >>
> >> +/* NOTE: May only be included into target-dependent code */
> >> +/* FIXME Does not pass make check-headers, yet! */
> >> +
> >
> > I'm not sure I see much point in touching several hundred
> > header files just to add a FIXME note. We can fix them,
> > or we can just leave things as they are...
>
> Adding FIXMEs without an intent to actually fix them would be stupid.
>
> The FIXMEs direct "make check-headers" to skip the headers so marked.

Ah, right. It wasn't clear that this is a directive to the script:
it looks like the usual free-text aimed-at-human-readers kind of
FIXME/TODO comment.

thanks
-- PMM


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 3/7] Makefile: Rename targets for make recursion
  2019-05-24  5:28   ` Philippe Mathieu-Daudé
@ 2019-05-24 12:34     ` Markus Armbruster
  0 siblings, 0 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-24 12:34 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: peter.maydell, pbonzini, Markus Armbruster, qemu-devel

Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> On 5/23/19 10:15 AM, Markus Armbruster wrote:
>> We make a few sub-directories recursively, in particular
>> $(TARGET_DIRS).
>> 
>> For goal "all", we do it the nice way: "all" has a prerequisite
>> subdir-T for each T in $(TARGET_DIRS), and T's recipe runs make
>> recursively.  Behaves nicely with -j and -k.
>> 
>> For other goals such as "clean" and "install", the recipe runs make
>> recursively in a for loop.  Ignores -j and -k.
>> 
>> The next commit will fix that for "clean" and "install".  This commit
>> prepares the ground by renaming the targets we use for "all" to
>> include the goal for the sub-make.  This will permit reusing them for
>> goals other than "all".
>> 
>> Targets subdir-T for T in $(TARGET_DIRS) run "make all" in T.  Rename
>> to T/all, and declare phony.
>> 
>> Targets romsubdir-R for R in $(ROMS) run "make" in pc-bios/R.  Default
>> goal is "all" for all R.  Rename to pc-bios/R/all, and declare phony.
>> 
>> The remainder are renamed just for consistency.
>> 
>> Target subdir-dtc runs "make libbft/libfdt.a" in dtc.  Rename to
>> dtc/all, and declare phony.
>> 
>> Target subdir-capstone runs make $(BUILD_DIR)/capstone/$(LIBCAPSTONE)
>> in $(SRC_PATH)/capstone.  Rename to capstone/all, and declare phony.
>> 
>> Target subdir-slirp runs "make" in $(SRC_PATH)/slirp.  Default goal is
>> all, which builds $(BUILD_DIR)/libslirp.a.  Rename to slirp/all, and
>> declare phony.
>> 
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
>>  Makefile               | 30 ++++++++++++++++++------------
>>  configure              |  6 +++---
>>  tests/Makefile.include |  3 ++-
>>  3 files changed, 23 insertions(+), 16 deletions(-)
>> 
>> diff --git a/Makefile b/Makefile
>> index 12e470fa03..09c726bcc2 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -436,8 +436,8 @@ config-host.h-timestamp: config-host.mak
>>  qemu-options.def: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
>>  	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
>>  
>> -SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
>> -SOFTMMU_SUBDIR_RULES=$(filter %-softmmu,$(SUBDIR_RULES))
>> +SUBDIR_RULES=$(addsuffix /all, $(TARGET_DIRS))
>> +SOFTMMU_SUBDIR_RULES=$(filter %-softmmu/all,$(SUBDIR_RULES))
>>  
>>  $(SOFTMMU_SUBDIR_RULES): $(authz-obj-y)
>>  $(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
>> @@ -447,14 +447,16 @@ $(SOFTMMU_SUBDIR_RULES): $(io-obj-y)
>>  $(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
>>  $(SOFTMMU_SUBDIR_RULES): $(edk2-decompressed)
>>  
>> -subdir-%:
>> -	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
>> +.PHONY: $(SUBDIR_RULES)
>> +$(SUBDIR_RULES):
>> +	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" all,)
>>  
>>  DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
>>  DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
>>  DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
>>  
>> -subdir-dtc: .git-submodule-status dtc/libfdt dtc/tests
>> +.PHONY: dtc/all
>> +dtc/all: .git-submodule-status dtc/libfdt dtc/tests
>>  	$(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS) CPPFLAGS="$(DTC_CPPFLAGS)" CFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(LDFLAGS)" ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) libfdt/libfdt.a,)
>
> OK
>
>>  
>>  dtc/%: .git-submodule-status
>> @@ -472,21 +474,25 @@ CAP_CFLAGS += -DCAPSTONE_HAS_ARM64
>>  CAP_CFLAGS += -DCAPSTONE_HAS_POWERPC
>>  CAP_CFLAGS += -DCAPSTONE_HAS_X86
>>  
>> -subdir-capstone: .git-submodule-status
>> +.PHONY: capstone/all
>> +capstone/all: .git-submodule-status
>>  	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(CAP_CFLAGS)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/$(LIBCAPSTONE))
>
> OK
>
>>  
>> -subdir-slirp: .git-submodule-status
>> +.PHONY: slirp/all
>> +slirp/all: .git-submodule-status
>>  	$(call quiet-command,$(MAKE) -C $(SRC_PATH)/slirp BUILD_DIR="$(BUILD_DIR)/slirp" CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)")
>
> OK
>
>>  
>>  $(SUBDIR_RULES): libqemuutil.a $(common-obj-y) \
>>  	$(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY))
>>  
>> -ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
>> +ROM_DIRS = $(addprefix pc-bios/, $(ROMS))
>> +ROMSUBDIR_RULES=$(addsuffix /all, $(ROM_DIRS))
>>  # Only keep -O and -g cflags
>> -romsubdir-%:
>> -	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pc-bios/$* V="$(V)" TARGET_DIR="$*/" CFLAGS="$(filter -O% -g%,$(CFLAGS))",)
>> +.PHONY: $(ROMSUBDIR_RULES)
>> +$(ROMSUBDIR_RULES):
>> +	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" CFLAGS="$(filter -O% -g%,$(CFLAGS))",)
>
> OK
>
>>  
>> -ALL_SUBDIRS=$(TARGET_DIRS) $(patsubst %,pc-bios/%, $(ROMS))
>> +ALL_SUBDIRS=$(TARGET_DIRS) $(ROM_DIRS)
>>  
>>  recurse-all: $(SUBDIR_RULES) $(ROMSUBDIR_RULES)
>>  
>> @@ -1087,7 +1093,7 @@ endif
>>  	@$(if $(TARGET_DIRS), \
>>  		echo 'Architecture specific targets:'; \
>>  		$(foreach t, $(TARGET_DIRS), \
>> -		printf "  %-30s - Build for %s\\n" $(patsubst %,subdir-%,$(t)) $(t);) \
>> +		printf "  %-30s - Build for %s\\n" $(t)/all $(t);) \
>
> OK
>
>>  		echo '')
>>  	@echo  'Cleaning targets:'
>>  	@echo  '  clean           - Remove most generated files but keep the config'
>> diff --git a/configure b/configure
>> index d2fc346302..2897434dda 100755
>> --- a/configure
>> +++ b/configure
>> @@ -6570,7 +6570,7 @@ if test "$slirp" != "no"; then
>>    echo "SLIRP_LIBS=$slirp_libs" >> $config_host_mak
>>  fi
>>  if [ "$slirp" = "git" -o "$slirp" = "internal" ]; then
>> -    echo "config-host.h: subdir-slirp" >> $config_host_mak
>> +    echo "config-host.h: slirp/all" >> $config_host_mak
>>  fi
>>  if test "$vde" = "yes" ; then
>>    echo "CONFIG_VDE=y" >> $config_host_mak
>> @@ -7836,10 +7836,10 @@ if test -n "$enabled_cross_compilers"; then
>>  fi
>>  
>>  if [ "$fdt" = "git" ]; then
>> -  echo "config-host.h: subdir-dtc" >> $config_host_mak
>> +  echo "config-host.h: dtc/all" >> $config_host_mak
>>  fi
>>  if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
>> -  echo "config-host.h: subdir-capstone" >> $config_host_mak
>> +  echo "config-host.h: capstone/all" >> $config_host_mak
>>  fi
>>  if test -n "$LIBCAPSTONE"; then
>>    echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
>> diff --git a/tests/Makefile.include b/tests/Makefile.include
>> index 1865f6b322..2b8d34ca25 100644
>> --- a/tests/Makefile.include
>> +++ b/tests/Makefile.include
>> @@ -1,3 +1,4 @@
>> +# -*- Mode: makefile -*-
>>  
>>  .PHONY: check-help
>>  check-help:
>> @@ -880,7 +881,7 @@ define do_test_tap
>>  endef
>>  
>>  .PHONY: $(patsubst %, check-qtest-%, $(QTEST_TARGETS))
>> -$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: subdir-%-softmmu $(check-qtest-y)
>> +$(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: %-softmmu/all $(check-qtest-y)
>>  	$(call do_test_human,$(check-qtest-$*-y) $(check-qtest-generic-y), \
>>  	  QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
>>  	  QTEST_QEMU_IMG=qemu-img$(EXESUF))
>> 
>
> There is another one:
>
> -- >8 --
>  # gtester tests with TAP output
>
> -$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: subdir-%-softmmu $(check-qtest-y)
> +$(patsubst %, check-report-qtest-%.tap, $(QTEST_TARGETS)): check-report-qtest-%.tap: %-softmmu/all $(check-qtest-y)
>         $(call do_test_tap, $(check-qtest-$*-y) $(check-qtest-generic-y), \
>           QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
>           QTEST_QEMU_IMG=qemu-img$(EXESUF))

Good catch.

> ---
>
> With the fix amended:
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Thanks!


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 5/7] tests: New make target check-source
  2019-05-24  5:49   ` Philippe Mathieu-Daudé
@ 2019-05-24 12:36     ` Markus Armbruster
  0 siblings, 0 replies; 30+ messages in thread
From: Markus Armbruster @ 2019-05-24 12:36 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé; +Cc: peter.maydell, qemu-devel, pbonzini

Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> On 5/23/19 10:15 AM, Markus Armbruster wrote:
>> Make target check-source is for checking the source code itself.  For
>> now, there's just one such check, make target check-headers.  It
>> checks basic header sanity: for each header "FOO.h", test whether
>> 
>> 	#include "qemu/osdep.h"
>> 	#include "FOO.h"
>> 	#include "FOO.h"
>> 
>> compiles.
>> 
>> The test works only in a git tree, with git installed.  It is skipped
>> unless $(SRC_PATH)/.git exists.
>> 
>> Third-party headers we don't intend to clean up are excluded from this
>> test.  So are a few "funny" headers.  See make variable
>> excluded-headers.
>> 
>> A large number of headers don't pass this test, by design or by
>> accident.  To keep things more manageable, exclude all headers outside
>> include/ for now.
>> 
>> Headers known to fail the test are marked with
>> 
>>     /* FIXME Does not pass make check-headers, yet! */
>> 
>> Headers known to work only in certain configurations are marked like
>> 
>>     /* FIXME Does not pass make check-headers without CONFIG_WIN32, yet! */
>> 
>> I tried to find and mark all of them by testing various
>> configurations.  Still, "make check" might fail for configurations I
>> didn't test.
>> 
>> Known issue: some of these don't actually need fixing; they're *meant*
>> to work only in certain configurations.  We'll want to invent a
>> suitable marker that doesn't claim FIXME.
>> 
>> Some headers may only be included into target-dependent code: they use
>> identifiers poisoned by exec/poison.h, or include cpu.h.  These
>> headers are marked with a comment
>> 
>>     /* NOTE: May only be included into target-dependent code */
>> 
>> The test treats them specially.
>> 
>> Known issue: some of these are intended for specific targets.  The
>> test should skip them for other targets, but doesn't.  They're marked
>> FIXME instead, which is wrong.
>> 
>> New make target check-bad-headers runs the test for headers expected
>> to fail it.  This helps with examining the failures.
>> 
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
> [...]>
>> diff --git a/Makefile b/Makefile
>> index 59de8e2494..42f02c5ceb 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -416,6 +416,8 @@ dummy := $(call unnest-vars,, \
>>                  audio-obj-m \
>>                  trace-obj-y)
>>  
>> +RECURSIVE_TARGETS := all clean install
>> +
>>  include $(SRC_PATH)/tests/Makefile.include
>>  
>>  all: $(DOCS) $(if $(BUILD_DOCS),sphinxdocs) $(TOOLS) $(HELPERS-y) recurse-all modules
>> @@ -436,7 +438,7 @@ config-host.h-timestamp: config-host.mak
>>  qemu-options.def: $(SRC_PATH)/qemu-options.hx $(SRC_PATH)/scripts/hxtool
>>  	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$@")
>>  
>> -TARGET_DIRS_RULES := $(foreach t, all clean install, $(addsuffix /$(t), $(TARGET_DIRS)))
>> +TARGET_DIRS_RULES:=$(foreach t, $(RECURSIVE_TARGETS), $(addsuffix /$(t), $(TARGET_DIRS)))
>>  
>>  SOFTMMU_ALL_RULES=$(filter %-softmmu/all, $(TARGET_DIRS_RULES))
>>  $(SOFTMMU_ALL_RULES): $(authz-obj-y)
>> diff --git a/Makefile.target b/Makefile.target
>> index fdbe7c89f4..a46cfda580 100644
>> --- a/Makefile.target
>> +++ b/Makefile.target
>> @@ -41,6 +41,7 @@ STPFILES=
>>  
>>  # Makefile Tests
>>  include $(SRC_PATH)/tests/tcg/Makefile.include
>> +include $(SRC_PATH)/tests/check-headers.mak
>>  
>>  config-target.h: config-target.h-timestamp
>>  config-target.h-timestamp: config-target.mak
>> @@ -216,6 +217,22 @@ hmp-commands.h: $(SRC_PATH)/hmp-commands.hx $(SRC_PATH)/scripts/hxtool
>>  hmp-commands-info.h: $(SRC_PATH)/hmp-commands-info.hx $(SRC_PATH)/scripts/hxtool
>>  	$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@,"GEN","$(TARGET_DIR)$@")
>>  
>> +.PHONY: check-headers
>> +ifeq ($(wildcard $(SRC_PATH)/.git),)
>> +check-headers check-bad-headers:
>> +	@echo "  SKIP  $@ (requires a git tree)"
>> +else
>> +check-headers: $(check-target-header-tests:.c=.o)
>> +
>> +# Expected to fail:
>> +check-bad-headers: $(check-bad-target-header-tests:.c=.o)
>> +
>> +.SECONDARY: $(check-target-header-tests)
>> +$(check-target-header-tests) $(check-bad-target-header-tests): tests/header-test-template.c
>> +	@mkdir -p $(dir $@)
>> +	@sed 's,@header@,$(subst tests/headers/,,$(@:.c=.h)),' <$< >$@
>> +endif
>> +
>>  clean: clean-target
>>  	rm -f *.a *~ $(PROGS)
>>  	rm -f $(shell find . -name '*.[od]')
>> @@ -238,3 +255,5 @@ endif
>>  
>>  generated-files-y += config-target.h
>>  Makefile: $(generated-files-y)
>> +
>> +-include $(check-target-header-tests:.c=.d) $(check-bad-target-header-tests:.c=.d)
>
> $ make microblazeel-softmmu/tests/headers/include/exec/user/abitypes.o
> ./include/exec/user/abitypes.h:6:10: fatal error: cpu.h: No such file or
> directory
> make: *** [./rules.mak:69:
> microblazeel-softmmu/tests/headers/include/exec/user/abitypes.o] Error 1
>
> ^ this one looks legit, it's arch-specific, right?

Yes: it includes cpu.h.

> $ make tests/headers/include/hw/net/lance.o
>   CC      tests/headers/include/hw/net/lance.o
> In file included from tests/headers/include/hw/net/lance.c:14:
> ./include/hw/net/lance.h:42:5: error: unknown type name ‘SysBusDevice’
>      SysBusDevice parent_obj;
>      ^~~~~~~~~~~~
> make: *** [./rules.mak:69: tests/headers/include/hw/net/lance.o] Error 1
>
> $ make tests/headers/include/hw/isa/vt82c686.o
>   CC      tests/headers/include/hw/isa/vt82c686.o
> In file included from tests/headers/include/hw/isa/vt82c686.c:14:
> ./include/hw/isa/vt82c686.h:13:27: error: unknown type name ‘qemu_irq’
>                            qemu_irq sci_irq);
>                            ^~~~~~~~
> make: *** [./rules.mak:69: tests/headers/include/hw/isa/vt82c686.o]
>
> Nice, I like it :)
>
> The rule pattern is not obvious (in particular with arch-specific
> targets), but it has probably always been like that.
>
> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Thanks!


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 5/7] tests: New make target check-source
  2019-05-23 19:57     ` Markus Armbruster
@ 2019-05-24 16:25       ` Paolo Bonzini
  2019-05-27  5:10         ` Markus Armbruster
  0 siblings, 1 reply; 30+ messages in thread
From: Paolo Bonzini @ 2019-05-24 16:25 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: peter.maydell, qemu-devel

On 23/05/19 21:57, Markus Armbruster wrote:
>>> A large number of headers don't pass this test, by design or by
>>> accident.  To keep things more manageable, exclude all headers outside
>>> include/ for now.
>> A lot of these, either in include/ or outside, are _meant_ to be
>> included many times.  What about renaming those to .inc.h and
>> whitelisting them in the script?
> Yes, that would be nice.

Another suggestion: are there headers that cannot even be included once
(due to dependencies)?  Is it worth including a test for those even in
the first iteration?

.inc.h files would skip that test too.

Paolo


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 5/7] tests: New make target check-source
  2019-05-24 16:25       ` Paolo Bonzini
@ 2019-05-27  5:10         ` Markus Armbruster
  2019-05-27  9:58           ` Paolo Bonzini
  0 siblings, 1 reply; 30+ messages in thread
From: Markus Armbruster @ 2019-05-27  5:10 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: peter.maydell, qemu-devel

Paolo Bonzini <pbonzini@redhat.com> writes:

> On 23/05/19 21:57, Markus Armbruster wrote:
>>>> A large number of headers don't pass this test, by design or by
>>>> accident.  To keep things more manageable, exclude all headers outside
>>>> include/ for now.
>>> A lot of these, either in include/ or outside, are _meant_ to be
>>> included many times.  What about renaming those to .inc.h and
>>> whitelisting them in the script?
>> Yes, that would be nice.
>
> Another suggestion: are there headers that cannot even be included once
> (due to dependencies)?  Is it worth including a test for those even in
> the first iteration?
>
> .inc.h files would skip that test too.

I'm not sure I get what you mean.

Most headers failing the test fail it in the first #include: they fail
to conform to 2. Headers should normally include everything they need
beyond osdep.h.

The only way to fail in the second #include is a missing header guard.
If it's missing intentionally, it's "_meant_ to be included many times",
and you propose renaming to .inc.h.  Else, easy fix.

I think I'll make a list of headers that fail in the second #include,
and try to sort them into "intentional" and "bug" buckets.


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [Qemu-devel] [RFC v4 5/7] tests: New make target check-source
  2019-05-27  5:10         ` Markus Armbruster
@ 2019-05-27  9:58           ` Paolo Bonzini
  0 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2019-05-27  9:58 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: peter.maydell, qemu-devel

On 27/05/19 07:10, Markus Armbruster wrote:
>> Another suggestion: are there headers that cannot even be included once
>> (due to dependencies)?  Is it worth including a test for those even in
>> the first iteration?
>>
> I'm not sure I get what you mean.
> 
> Most headers failing the test fail it in the first #include: they fail
> to conform to 2. Headers should normally include everything they need
> beyond osdep.h.

Ok, good to know.

> The only way to fail in the second #include is a missing header guard.
> If it's missing intentionally, it's "_meant_ to be included many times",
> and you propose renaming to .inc.h.  Else, easy fix.
> 
> I think I'll make a list of headers that fail in the second #include,
> and try to sort them into "intentional" and "bug" buckets.

The proposal is to make two tests, but it can come later.

Another idea could be to make it print the result as TAP.  But I could
work on that later.

Paolo


^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2019-05-27 10:00 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-23  8:15 [Qemu-devel] [RFC v4 0/7] Baby steps towards saner headers Markus Armbruster
2019-05-23  8:15 ` [Qemu-devel] [RFC v4 1/7] Makefile: Remove code to smooth transition to config.status Markus Armbruster
2019-05-23 13:54   ` Richard Henderson
2019-05-24  5:15   ` Philippe Mathieu-Daudé
2019-05-24 11:50     ` Markus Armbruster
2019-05-23  8:15 ` [Qemu-devel] [RFC v4 2/7] Makefile: Drop bogus cleaning of $(ALL_SUBDIRS)/qemu-options.def Markus Armbruster
2019-05-23 13:56   ` Richard Henderson
2019-05-24  5:17   ` Philippe Mathieu-Daudé
2019-05-23  8:15 ` [Qemu-devel] [RFC v4 3/7] Makefile: Rename targets for make recursion Markus Armbruster
2019-05-23 14:10   ` Richard Henderson
2019-05-24  5:28   ` Philippe Mathieu-Daudé
2019-05-24 12:34     ` Markus Armbruster
2019-05-23  8:15 ` [Qemu-devel] [RFC v4 4/7] Makefile: Reuse all's recursion machinery for clean and install Markus Armbruster
2019-05-23 14:14   ` Richard Henderson
2019-05-23  8:15 ` [Qemu-devel] [RFC v4 5/7] tests: New make target check-source Markus Armbruster
2019-05-23 16:51   ` Paolo Bonzini
2019-05-23 19:57     ` Markus Armbruster
2019-05-24 16:25       ` Paolo Bonzini
2019-05-27  5:10         ` Markus Armbruster
2019-05-27  9:58           ` Paolo Bonzini
2019-05-24  5:49   ` Philippe Mathieu-Daudé
2019-05-24 12:36     ` Markus Armbruster
2019-05-23  8:15 ` [Qemu-devel] [RFC v4 6/7] tests: Don't limit check-headers to include/ Markus Armbruster
2019-05-24  7:24   ` Thomas Huth
2019-05-24  7:32     ` Philippe Mathieu-Daudé
2019-05-24 11:52     ` Markus Armbruster
2019-05-24  9:11   ` Peter Maydell
2019-05-24 12:25     ` Markus Armbruster
2019-05-24 12:29       ` Peter Maydell
2019-05-23  8:15 ` [Qemu-devel] [RFC v4 7/7] tests: Make check-source cover generated headers Markus Armbruster

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.