On Tue, May 26, 2015 at 6:29 AM, Paolo Bonzini <pbonz...@redhat.com> wrote: > > > On 26/05/2015 07:38, Peter Crosthwaite wrote: >> make can be invoked in the individual build dirs to build an individual >> target or just a single file of a target. e.g. >> >> touch translate-all.c >> make -C microblazeel-softmmu translate-all.o > > Out of curiosity, why not use "make subdir-microblazeel-softmmu" instead? >
Does that in any way allow you to specify a single file? This come up in my multi-arch work, where I am constantly touching core headers while being a fully configured build. Every change triggers major recompilation. So to make my quick edits I have started a process where I use this fuller make specification to rebuild the one under-development file+target combo that failed until the build bugs go away. Then once is works I continue with unqualified build. I also want to avoid retrigger of the common-obj build. I guess I can pass BUILD_DIR in on the command line though. Regards, Peter > Paolo > >> There is however a small bug when using the pixman submodule. >> config-host.mak will ref BUILD_DIR for the pixman -I CFLAGS: >> >> grep BUILD_DIR config-host.mak >> QEMU_CFLAGS=-I$(SRC_PATH)/pixman/pixman -I$(BUILD_DIR)/pixman/pixman ... >> >> This causes a build failure as -I/pixman/pixman (BUILD_DIR=="") will >> not be found. >> >> BUILD_DIR is usually set by the top level Makefile. Just lazy-set it in >> Makefile.target to the parent directory. >> >> Granted, this will not work if the pixman submodule is not prebuilt, >> but it at least means you can do incremental partial builds once you >> have done your initial full build (or attempt) from the top level. >> >> The next step would be refactor make infrastructure to rebuild pixman >> on a submake like the one above. >> >> Cc: Gerd Hoffmann <kra...@redhat.com> >> Signed-off-by: Peter Crosthwaite <crosthwaite.pe...@gmail.com> >> --- >> Pixman is the only config-host.mak user of BUILD dir so maybe there is >> a pixman specific solution out there too? >> --- >> Makefile.target | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/Makefile.target b/Makefile.target >> index 3e861c8..ec5b92c 100644 >> --- a/Makefile.target >> +++ b/Makefile.target >> @@ -1,5 +1,7 @@ >> # -*- Mode: makefile -*- >> >> +BUILD_DIR?=$(CURDIR)/.. >> + >> include ../config-host.mak >> include config-target.mak >> include config-devices.mak >> >