On Wed, 10/16 11:26, Fam Zheng wrote: > This series implements feature of shared object building as described in: > > http://wiki.qemu.org/Features/Modules > > The main idea behind modules is to isolate dependencies on third party > libraries from qemu executables, such as libglusterfs or librbd, so that the > end users can install core qemu package with fewer dependencies. And only for > those who want to use particular modules, need they install qemu-foo > sub-package, which in turn requires libbar and libbiz packages. > > It's implemented in three steps: > > 1. The first patches fix current build system to correctly handle nested > variables and object specific options: > > [01/08] ui/Makefile.objs: delete unnecessary cocoa.o dependency > [02/08] make.rule: fix $(obj) to a real relative path > [03/08] rule.mak: allow per object cflags and libs > > 2. The Makefile changes adds necessary options and rules to build DSO objects: > > [04/08] build-sys: introduce common-obj-m and block-obj-m for DSO > > 3. The next patch adds code to load modules from installed directory: > > [05/08] module: implement module loading > > A few more changes are following to complete it: > > [06/08] Makefile: install modules with "make install" > [07/08] .gitignore: ignore module related files (dll, so, mo) > > In the end of series, the block drivers are converted: > > [08/08] block: convert block drivers linked with libs to modules > > v14: Fix alpha-linux-user compiling by: > a) Add object specific libs to qcow.o and linux-aio.o.
Patch 08 for this. > b) Only link block-obj-m to softmmu targets. Patch 02 for this. > (Thanks Paolo) > > v13: Drop --moddir option in configure. (Paolo) > > v12: Rebase to current master, no conflict. > Drop "-Wl,--enable-new-tags -Wl,-rpath,'$$ORIGIN'". (Paolo) > > v11: > [04] Link DSO with -Wl,--enable-new-dtags -Wl,-rpath,'$$ORIGIN' (Richard) > [05] Reuse module_init_type in module_load, no separate load type enums. > Separate list of modules by type. It's simply list of built modules > now. No whitelist option in configure. > Support multiple module_init() in single module. > > v10: > All modules in a single directory (moddir), with module type prefixed: > /usr/lib/qemu/block-{curl,iscsi,...}.so > The module names for user to list in module whitelist is consequently: > block-curl, block-iscsi, ui-*, etc. > In Makfile, the installed module filename is simply generated by: > $(subst /,-,%.so) > Which is also the rule for module names. > > [05] Add #undef CONFIG_MODULE_WHITELIST in config-host.h. > Use static array for whitelist. (Richard) > > Fam Zheng (7): > make.rule: fix $(obj) to a real relative path > rule.mak: allow per object cflags and libs > build-sys: introduce common-obj-m and block-obj-m for DSO > module: implement module loading > Makefile: install modules with "make install" > .gitignore: ignore module related files (dll, so, mo) > block: convert block drivers linked with libs to modules > > Peter Maydell (1): > ui/Makefile.objs: delete unnecessary cocoa.o dependency > > .gitignore | 3 ++ > Makefile | 30 +++++++++++++- > Makefile.objs | 19 ++------- > Makefile.target | 24 +++++++++-- > block/Makefile.objs | 13 +++++- > configure | 81 ++++++++++++++++++++++++++------------ > include/qemu/module.h | 12 ++++++ > module-common.c | 10 +++++ > rules.mak | 80 +++++++++++++++++++++++++++++++------ > scripts/create_config | 14 +++++++ > ui/Makefile.objs | 2 - > util/module.c | 107 > +++++++++++++++++++++++++++++++++++++++++++++++++- > 12 files changed, 330 insertions(+), 65 deletions(-) > create mode 100644 module-common.c > > -- > 1.8.3.1 > >