01.07.2013 17:39, Paolo Bonzini wrote: > What used to be there was something like > > net-obj-y = foo.o bar.o > common-obj-y += $(addprefix net/, $(net-obj-y)) > > and this has been replaced by net/Makefile.objs and friends.
Maybe we should just list them all in a single makefile after all, with proper paths common-obj-y += net/foo.o net/bar.o block/baz.o and be done with it, without the need to put them in different makefiles and without re-merging them back in a non-trivial way during make invocation? It isn't much typing really, and it is rather obvious this way and easy to deal with. And for every program we build, $(PROGRAM)-obj = program.o $(foo-objs-y) $(bar-objs-y) etc. Why do we re-merge them back making things shorter to write (without paths), non-obvious and half-working? (by "half" i mean that some variables gets prefixed while some arent). Something similar for a (softmmu|user) target too, with maybe even all target variations listed in a single top-level makefile. > This should not be undone, but it is completely different from what you > are trying to do. You need a much more fine-grained assignment of > libraries to object files. > > I think the build system parts are hard because we haven't found the > right design. What's wrong with a single makefile for everything, except of the need to use full pathnames from the top-level source dir? Thanks, /mjt