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: 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 >