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), \ + $(foreach v,$(filter %-m,$(nested-vars)), \ + $(eval $(patsubst %-m,%-y,$v) += $($v)) \ + $(eval $v := ))) endef -- 1.8.3.1