On Wed, 09/11 15:59, Daniel P. Berrange wrote: > On Wed, Sep 11, 2013 at 09:34:01PM +0800, Fam Zheng wrote: > > Makefile.target includes rule.mak and unnested common-obj-y, then prefix > > them with '../', this will ignore object specific QEMU_CFLAGS in subdir > > Makefile.objs: > > > > $(obj)/curl.o: QEMU_CFLAGS += $(CURL_CFLAGS) > > > > Because $(obj) here is './block', instead of '../block'. This doesn't > > hurt compiling because we basically build all .o from top Makefile, > > before entering Makefile.target, but it will affact arriving per-object > > libs support. > > > > The starting point of $(obj) is passed in as argument of unnest-vars, as > > well as nested variables, so that different Makefiles can pass in a > > right value. > > > > Signed-off-by: Fam Zheng <f...@redhat.com> > > --- > > Makefile | 16 +++++++++++++++- > > Makefile.objs | 16 +--------------- > > Makefile.target | 17 +++++++++++++---- > > configure | 1 + > > rules.mak | 16 +++++++++++----- > > 5 files changed, 41 insertions(+), 25 deletions(-) > > This change appears to break the build of libcacard.so when I tried > the following sequence with current git master > > $ git clean -f -x -d > $ ./configure --prefix=$HOME/usr/qemu-git --target-list=x86_64-softmmu > $ make -j 20 > .... > lt LINK vscclient > ./.libs/libcacard.so: undefined reference to `monitor_fdset_get_fd' > ./.libs/libcacard.so: undefined reference to `monitor_fdset_dup_fd_add' > ./.libs/libcacard.so: undefined reference to `monitor_fdset_dup_fd_remove' > ./.libs/libcacard.so: undefined reference to `monitor_fdset_dup_fd_find' > collect2: error: ld returned 1 exit status > > I'm also seeing make report circular deps > > make: Circular stubs/ <- stubs/ dependency dropped. > make: Circular trace/ <- stubs/ dependency dropped. > make: Circular trace/ <- trace/ dependency dropped. > >
I fixed it, the order of including libcacard/Makefile and unnest-vars in top Makefile is reversed. A Good catch, thanks. Thanks.