[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 00/24] per-directory Makefile snippets, limit vp
From: |
Blue Swirl |
Subject: |
Re: [Qemu-devel] [PATCH 00/24] per-directory Makefile snippets, limit vpath abuse |
Date: |
Sun, 3 Jun 2012 13:31:31 +0000 |
On Sun, Jun 3, 2012 at 12:25 PM, Paolo Bonzini <address@hidden> wrote:
> One source of complexity in the QEMU source is that we have a very
> shallow tree for a source code of over 750,000 lines of code. In
> fact, one third of these lines alone is in one directory, hw/.
>
> As a prerequisite to cleaning up the structure, but as a worthwhile
> step on its own, this patchset cleans up the build system so that
> separate directories have their own Makefile snippet. As in the Linux
> kernel build system, the overall build system is generally flat (in
> the case of QEMU, with one recursive invocation per emulation target).
> Subdirectories do not include complete Makefiles, instead they only host
> the declarations for a few variables (common-obj-y, universal-obj-y,
> obj-y, etc.). Definitions for all the directories are merged with a
> little GNU Make magic (not much, only 20 lines).
>
> Two nice side effects are:
>
> - we can match the source tree and the object tree (for example the
> per-target device models will be in XYZ-softmmu/hw, not in
> XYZ-softmmu; those that are compiled once will be in hw/ rather
> than in the root).
>
> - because the resolution of nested makefiles tracks the nested
> directory, there is no need to use VPATH to find sources in
> the hw/ and target-*/ directory.
>
> - there is a lot less Makefile programming (conditionals, addprefix,
> etc.), replaced by only 20 lines in rules.mak and 1 in Makefile.objs.
>
> The series is entirely bisectable, and mostly consists of boring patches.
> If the concept is accepted, I would like to get it in as soon as possible.
> I have a few other cleanups on top (I stopped once I undid the diffstat
> of this series :)), but they can be covered later.
>
> Thoughts, approvals, rejections?
Neat. Could we (eventually) eliminate Makefile.dis, Makefile.hw,
Makefile.target and Makefile.user completely?
>
> Paolo
>
>
> Paolo Bonzini (24):
> remove trace-nested-y
> do not sprinkle around GENERATED_HEADERS dependencies
> add rules for nesting
> move *-user/ objects to nested Makefile
> move obj-TARGET-y variables to nested Makefile
> move libobj-y variable to nested Makefile
> move other target-*/ objects to nested Makefiles
> move rules for nesting to Makefile.objs
> use nested Makefile rules for qom/ objects
> move block/ objects to nested Makefile
> move net/ objects to nested Makefile
> move fsdev/ objects to nested Makefile
> move ui/ objects to nested Makefile
> move audio/ objects to nested Makefile
> move slirp/ objects to nested Makefile
> move qapi/ objects to nested Makefile
> move qga/ objects to nested Makefile
> move target-independent hw/ objects to nested Makefiles
> convert libhw to nested Makefiles
> move per-target hw/ objects to nested Makefiles
> move device tree to per-target Makefile
> libcacard Makefile cleanups
> limit usage of vpath
> compile oslib-obj-y once
>
> Makefile | 30 ++-
> Makefile.hw | 7 +-
> Makefile.objs | 316 ++++---------------------
> Makefile.target | 325
> ++++----------------------
> audio/Makefile | 15 ++
> block/Makefile | 11 +
> bsd-user/Makefile | 3 +
> configure | 70 +++---
> fsdev/Makefile | 6 +
> hw/9pfs/Makefile | 9 +
> hw/Makefile | 162 +++++++++++++
> hw/alpha/Makefile | 4 +
> hw/arm/Makefile | 40 ++++
> hw/cris/Makefile | 13 ++
> hw/i386/Makefile | 13 ++
> hw/ide/Makefile | 10 +
> hw/lm32/Makefile | 23 ++
> hw/m68k/Makefile | 4 +
> hw/microblaze/Makefile | 14 ++
> hw/mips/Makefile | 6 +
> hw/ppc/Makefile | 32 +++
> hw/s390x/Makefile | 3 +
> hw/sh4/Makefile | 5 +
> hw/sparc/Makefile | 8 +
> hw/sparc64/Makefile | 4 +
> hw/usb/Makefile | 13 ++
> hw/xtensa/Makefile | 5 +
> libcacard/Makefile | 17 +-
> linux-user/Makefile | 7 +
> linux-user/arm/nwfpe/Makefile | 3 +
> net/Makefile | 13 ++
> qapi/Makefile | 3 +
> qga/Makefile | 4 +
> qom/Makefile | 6 +-
> rules.mak | 21 ++
> slirp/Makefile | 4 +
> target-alpha/Makefile | 3 +
> target-arm/Makefile | 4 +
> arm-semi.c => target-arm/arm-semi.c | 0
> target-cris/Makefile | 2 +
> target-i386/Makefile | 6 +
> ioport-user.c => target-i386/ioport-user.c | 0
> target-lm32/Makefile | 2 +
> target-m68k/Makefile | 3 +
> m68k-semi.c => target-m68k/m68k-semi.c | 0
> target-microblaze/Makefile | 2 +
> target-mips/Makefile | 2 +
> target-ppc/Makefile | 3 +
> target-s390x/Makefile | 3 +
> target-sh4/Makefile | 2 +
> target-sparc/Makefile | 6 +
> target-unicore32/Makefile | 2 +
> target-xtensa/Makefile | 6 +
> xtensa-semi.c => target-xtensa/xtensa-semi.c | 0
> tests/Makefile | 1 -
> ui/Makefile | 18 ++
> 56 files changed, 674 insertions(+), 620 deletions(-)
> create mode 100644 audio/Makefile
> create mode 100644 block/Makefile
> create mode 100644 bsd-user/Makefile
> create mode 100644 fsdev/Makefile
> create mode 100644 hw/9pfs/Makefile
> create mode 100644 hw/Makefile
> create mode 100644 hw/alpha/Makefile
> create mode 100644 hw/arm/Makefile
> create mode 100644 hw/cris/Makefile
> create mode 100644 hw/i386/Makefile
> create mode 100644 hw/ide/Makefile
> create mode 100644 hw/lm32/Makefile
> create mode 100644 hw/m68k/Makefile
> create mode 100644 hw/microblaze/Makefile
> create mode 100644 hw/mips/Makefile
> create mode 100644 hw/ppc/Makefile
> create mode 100644 hw/s390x/Makefile
> create mode 100644 hw/sh4/Makefile
> create mode 100644 hw/sparc/Makefile
> create mode 100644 hw/sparc64/Makefile
> create mode 100644 hw/usb/Makefile
> create mode 100644 hw/xtensa/Makefile
> create mode 100644 linux-user/Makefile
> create mode 100644 linux-user/arm/nwfpe/Makefile
> create mode 100644 net/Makefile
> create mode 100644 qapi/Makefile
> create mode 100644 qga/Makefile
> create mode 100644 slirp/Makefile
> create mode 100644 target-alpha/Makefile
> create mode 100644 target-arm/Makefile
> rename arm-semi.c => target-arm/arm-semi.c (100%)
> create mode 100644 target-cris/Makefile
> create mode 100644 target-i386/Makefile
> rename ioport-user.c => target-i386/ioport-user.c (100%)
> create mode 100644 target-lm32/Makefile
> create mode 100644 target-m68k/Makefile
> rename m68k-semi.c => target-m68k/m68k-semi.c (100%)
> create mode 100644 target-microblaze/Makefile
> create mode 100644 target-mips/Makefile
> create mode 100644 target-ppc/Makefile
> create mode 100644 target-s390x/Makefile
> create mode 100644 target-sh4/Makefile
> create mode 100644 target-sparc/Makefile
> create mode 100644 target-unicore32/Makefile
> create mode 100644 target-xtensa/Makefile
> rename xtensa-semi.c => target-xtensa/xtensa-semi.c (100%)
> create mode 100644 ui/Makefile
>
> --
> 1.7.10.1
>
>
- [Qemu-devel] [PATCH 14/24] move audio/ objects to nested Makefile, (continued)
- [Qemu-devel] [PATCH 14/24] move audio/ objects to nested Makefile, Paolo Bonzini, 2012/06/03
- [Qemu-devel] [PATCH 15/24] move slirp/ objects to nested Makefile, Paolo Bonzini, 2012/06/03
- [Qemu-devel] [PATCH 18/24] move target-independent hw/ objects to nested Makefiles, Paolo Bonzini, 2012/06/03
- [Qemu-devel] [PATCH 19/24] convert libhw to nested Makefiles, Paolo Bonzini, 2012/06/03
- [Qemu-devel] [PATCH 20/24] move per-target hw/ objects to nested Makefiles, Paolo Bonzini, 2012/06/03
- [Qemu-devel] [PATCH 17/24] move qga/ objects to nested Makefile, Paolo Bonzini, 2012/06/03
- [Qemu-devel] [PATCH 24/24] compile oslib-obj-y once, Paolo Bonzini, 2012/06/03
- Re: [Qemu-devel] [PATCH 00/24] per-directory Makefile snippets, limit vpath abuse,
Blue Swirl <=
- [Qemu-devel] [PATCH 16/24] move qapi/ objects to nested Makefile, Paolo Bonzini, 2012/06/03
- [Qemu-devel] [PATCH 22/24] libcacard Makefile cleanups, Paolo Bonzini, 2012/06/03
- [Qemu-devel] [PATCH 23/24] limit usage of vpath, Paolo Bonzini, 2012/06/03
- [Qemu-devel] [PATCH 21/24] move device tree to per-target Makefile, Paolo Bonzini, 2012/06/03
- Re: [Qemu-devel] [PATCH 00/24] per-directory Makefile snippets, limit vpath abuse, Andreas Färber, 2012/06/03