Here is v2 of the nested Makefile patches. Thanks all for the enthusiasm! The main change is that rules can now be put in the per-directory snippets. This is done for op_helper.o already.
Paolo v1->v2: do not call nested files "Makefile" (Andreas) do not create directories at configure time (Anthony) allow per-snippet rules, use it for op_helper.o (Blue Swirl) whitespace fixes (Blue Swirl) fix Xen (myself) Paolo Bonzini (25): build: remove trace-nested-y build: do not sprinkle around GENERATED_HEADERS dependencies build: add rules for nesting build: move *-user/ objects to nested Makefile.objs build: move obj-TARGET-y variables to nested Makefile.objs build: move libobj-y variable to nested Makefile.objs build: move other target-*/ objects to nested Makefile.objs build: move rules for nesting to Makefile.objs build: put qom/ rules in a Makefile.objs file build: move block/ objects to nested Makefile.objs build: move net/ objects to nested Makefile.objs build: move fsdev/ objects to nested Makefile.objs build: move ui/ objects to nested Makefile.objs build: move audio/ objects to nested Makefile.objs build: move slirp/ objects to nested Makefile.objs build: move qapi/ objects to nested Makefile.objs build: move qga/ objects to nested Makefile.objs build: move target-independent hw/ objects to nested Makefile.objs build: convert libhw to nested Makefile.objs build: move per-target hw/ objects to nested Makefile.objs build: move device tree to per-target Makefile build: libcacard Makefile cleanups build: limit usage of vpath build: compile oslib-obj-y once build: do not create directories at configure time Makefile | 32 ++- Makefile.hw | 7 +- Makefile.objs | 317 ++++-------------------- Makefile.target | 333 ++++---------------------- audio/Makefile.objs | 14 ++ block/Makefile.objs | 11 + bsd-user/Makefile.objs | 2 + configure | 55 ++--- fsdev/Makefile.objs | 9 + hw/9pfs/Makefile.objs | 9 + hw/Makefile.objs | 165 +++++++++++++ hw/alpha/Makefile.objs | 4 + hw/arm/Makefile.objs | 40 ++++ hw/cris/Makefile.objs | 13 + hw/i386/Makefile.objs | 13 + hw/ide/Makefile.objs | 10 + hw/lm32/Makefile.objs | 23 ++ hw/m68k/Makefile.objs | 4 + hw/microblaze/Makefile.objs | 14 ++ hw/mips/Makefile.objs | 6 + hw/ppc/Makefile.objs | 32 +++ hw/s390x/Makefile.objs | 3 + hw/sh4/Makefile.objs | 5 + hw/sparc/Makefile.objs | 8 + hw/sparc64/Makefile.objs | 4 + hw/usb/Makefile.objs | 13 + hw/xtensa/Makefile.objs | 5 + libcacard/Makefile | 17 +- linux-user/Makefile.objs | 7 + linux-user/arm/nwfpe/Makefile.objs | 2 + net/Makefile.objs | 12 + qapi/Makefile.objs | 3 + qga/Makefile.objs | 3 + qom/Makefile | 2 - qom/Makefile.objs | 4 + rules.mak | 40 ++++ slirp/Makefile.objs | 3 + target-alpha/Makefile.objs | 3 + target-arm/Makefile.objs | 6 + arm-semi.c => target-arm/arm-semi.c | 0 target-cris/Makefile.objs | 4 + target-i386/Makefile.objs | 7 + ioport-user.c => target-i386/ioport-user.c | 0 target-lm32/Makefile.objs | 4 + target-m68k/Makefile.objs | 5 + m68k-semi.c => target-m68k/m68k-semi.c | 0 target-microblaze/Makefile.objs | 4 + target-mips/Makefile.objs | 4 + target-ppc/Makefile.objs | 6 + target-s390x/Makefile.objs | 5 + target-sh4/Makefile.objs | 4 + target-sparc/Makefile.objs | 8 + target-unicore32/Makefile.objs | 4 + target-xtensa/Makefile.objs | 8 + xtensa-semi.c => target-xtensa/xtensa-semi.c | 0 tests/Makefile | 1 - ui/Makefile.objs | 18 ++ 57 files changed, 701 insertions(+), 634 deletions(-) create mode 100644 audio/Makefile.objs create mode 100644 block/Makefile.objs create mode 100644 bsd-user/Makefile.objs create mode 100644 fsdev/Makefile.objs create mode 100644 hw/9pfs/Makefile.objs create mode 100644 hw/Makefile.objs create mode 100644 hw/alpha/Makefile.objs create mode 100644 hw/arm/Makefile.objs create mode 100644 hw/cris/Makefile.objs create mode 100644 hw/i386/Makefile.objs create mode 100644 hw/ide/Makefile.objs create mode 100644 hw/lm32/Makefile.objs create mode 100644 hw/m68k/Makefile.objs create mode 100644 hw/microblaze/Makefile.objs create mode 100644 hw/mips/Makefile.objs create mode 100644 hw/ppc/Makefile.objs create mode 100644 hw/s390x/Makefile.objs create mode 100644 hw/sh4/Makefile.objs create mode 100644 hw/sparc/Makefile.objs create mode 100644 hw/sparc64/Makefile.objs create mode 100644 hw/usb/Makefile.objs create mode 100644 hw/xtensa/Makefile.objs create mode 100644 linux-user/Makefile.objs create mode 100644 linux-user/arm/nwfpe/Makefile.objs create mode 100644 net/Makefile.objs create mode 100644 qapi/Makefile.objs create mode 100644 qga/Makefile.objs delete mode 100644 qom/Makefile create mode 100644 qom/Makefile.objs create mode 100644 slirp/Makefile.objs create mode 100644 target-alpha/Makefile.objs create mode 100644 target-arm/Makefile.objs rename arm-semi.c => target-arm/arm-semi.c (100%) create mode 100644 target-cris/Makefile.objs create mode 100644 target-i386/Makefile.objs rename ioport-user.c => target-i386/ioport-user.c (100%) create mode 100644 target-lm32/Makefile.objs create mode 100644 target-m68k/Makefile.objs rename m68k-semi.c => target-m68k/m68k-semi.c (100%) create mode 100644 target-microblaze/Makefile.objs create mode 100644 target-mips/Makefile.objs create mode 100644 target-ppc/Makefile.objs create mode 100644 target-s390x/Makefile.objs create mode 100644 target-sh4/Makefile.objs create mode 100644 target-sparc/Makefile.objs create mode 100644 target-unicore32/Makefile.objs create mode 100644 target-xtensa/Makefile.objs rename xtensa-semi.c => target-xtensa/xtensa-semi.c (100%) create mode 100644 ui/Makefile.objs -- 1.7.10.1