On Wed, 09/11 09:27, Paolo Bonzini wrote: > Il 11/09/2013 07:38, Fam Zheng ha scritto: > > The new option will enable support of shared object build. Otherwise > > objects are static linked to executables. > > > > Signed-off-by: Fam Zheng <f...@redhat.com> > > --- > > Makefile.target | 6 +++++- > > configure | 8 ++++++++ > > rules.mak | 8 ++++++-- > > 3 files changed, 19 insertions(+), 3 deletions(-) > > > > diff --git a/Makefile.target b/Makefile.target > > index 1d92523..beab0f9 100644 > > --- a/Makefile.target > > +++ b/Makefile.target > > @@ -152,7 +152,11 @@ obj-y-save := $(obj-y) > > block-obj-y := > > common-obj-y := > > include $(SRC_PATH)/Makefile.objs > > -dummy := $(call unnest-vars,..,block-obj-y common-obj-y) > > +dummy := $(call unnest-vars,.., \ > > + block-obj-y \ > > + block-obj-m \ > > + common-obj-y \ > > + common-obj-m) > > > > # Now restore obj-y > > obj-y := $(obj-y-save) > > diff --git a/configure b/configure > > index a2858c2..f1d7fa7 100755 > > --- a/configure > > +++ b/configure > > @@ -192,6 +192,7 @@ gcov_tool="gcov" > > EXESUF="" > > DSOSUF=".so" > > LDFLAGS_SHARED="-shared" > > +modules="no" > > prefix="/usr/local" > > mandir="\${prefix}/share/man" > > datadir="\${prefix}/share" > > @@ -650,6 +651,8 @@ for opt do > > ;; > > --disable-debug-info) > > ;; > > + --enable-modules) modules="yes" > > + ;; > > --cpu=*) > > ;; > > --target-list=*) target_list="$optarg" > > @@ -1052,6 +1055,7 @@ echo " --libdir=PATH install libraries in > > PATH" > > echo " --sysconfdir=PATH install config in PATH$confsuffix" > > echo " --localstatedir=PATH install local state in PATH (set at > > runtime on win32)" > > echo " --with-confsuffix=SUFFIX suffix for QEMU data inside datadir and > > sysconfdir [$confsuffix]" > > +echo " --enable-modules enable modules support" > > echo " --enable-debug-tcg enable TCG debugging" > > echo " --disable-debug-tcg disable TCG debugging (default)" > > echo " --enable-debug-info enable debugging information (default)" > > @@ -3580,6 +3584,7 @@ echo "python $python" > > if test "$slirp" = "yes" ; then > > echo "smbd $smbd" > > fi > > +echo "module support $modules" > > echo "host CPU $cpu" > > echo "host big endian $bigendian" > > echo "target list $target_list" > > @@ -3697,6 +3702,9 @@ echo "libs_softmmu=$libs_softmmu" >> $config_host_mak > > > > echo "ARCH=$ARCH" >> $config_host_mak > > > > +if test "$modules" = "yes"; then > > + echo "CONFIG_MODULES=y" >> $config_host_mak > > +fi > > case "$cpu" in > > arm|i386|x86_64|x32|ppc|aarch64) > > # The TCG interpreter currently does not support ld/st optimization. > > diff --git a/rules.mak b/rules.mak > > index ea97888..860b8ac 100644 > > --- a/rules.mak > > +++ b/rules.mak > > @@ -185,7 +185,11 @@ $(foreach var,$(nested-vars), $(eval \ > > $(foreach v,$(filter %-m,$(nested-vars)), \ > > $(call add-modules,$v)) > > > > -$(eval modules: $(patsubst %.mo,%$(DSOSUF),$(modules-m))) > > -$(eval all: modules) > > +$(if $(CONFIG_MODULES), \ > > + $(eval modules: $(patsubst %.mo,%$(DSOSUF),$(modules-m))) \ > > + $(eval all: modules), \ > > Since you'll have a v6, please move "all: modules" to Makefile, and in > rules.mak: > > .PHONY: modules > modules: > Why is ".PHONY: modules" not in Makefile too? And why do we need blank "modules:", with the real one generated above?
Fam > There are a couple of things that can be improved still (I don't like > obj-save-y for example), but things are taking shape and all of this > looks like something that can be fixed on top. If you look at > converting more parts to modules (e.g. rbd or spice), you can drop that > RFC! :) > > Thanks, > > Paolo > > > + $(foreach v,$(filter %-m,$(nested-vars)), \ > > + $(eval $(patsubst %-m,%-y,$v) += $($v)) \ > > + $(eval $v := ))) > > > > endef > > >