This series implements feature of shared object building as described in: http://wiki.qemu.org/Features/Modules
It's achieved in three steps, with extra bonus to change curl and qed to shared library modules in the end (only to demonstrate the usage, no "make install" support of .so files yet). v5: Keep foo.mo-objs idea for module objects. Unnest block-obj-m and common-obj-m in Makefile.target. Move add-modules to unnest-vars to be reused in Makefile.target. Use /dev/null to replace realpath for expand-objs. v4: Added --enable-modules in the end of series. Make nested-vars and obj-base as arguemnts to unnest-vars. Take Paolo's idea in comments for v2 and switch back module objects syntax to: $(obj)/foo.mo : $(addprefix $(obj)/, bar.o biz.o qux.o) because this needs less duplication among Makefiles. Fam Zheng (6): make.rule: fix $(obj) to a real relative path rule.mak: allow per object cflags and libs Makefile: introduce common-obj-m and block-obj-m for DSO module: implement module loading function configure: introduce --enable-modules block: build qed and curl as shared library Makefile | 22 ++++++++++++++- Makefile.objs | 18 ++---------- Makefile.target | 20 +++++++++++-- block.c | 1 + block/Makefile.objs | 7 +++-- bsd-user/main.c | 3 ++ configure | 40 ++++++++++++++++++-------- include/qemu/module.h | 9 ++++++ linux-user/main.c | 3 ++ rules.mak | 77 ++++++++++++++++++++++++++++++++++++++++++--------- scripts/create_config | 4 +++ tests/Makefile | 2 ++ util/module.c | 53 +++++++++++++++++++++++++++++++++++ vl.c | 2 ++ 14 files changed, 215 insertions(+), 46 deletions(-) -- 1.8.3.1