diff options
| author | Daniel P. Berrange | 2015-09-02 11:57:27 +0200 |
|---|---|---|
| committer | Daniel P. Berrange | 2015-09-15 15:18:18 +0200 |
| commit | fb37726db77b21f3731b90693d2c93ade1777528 (patch) | |
| tree | 03e6990ab7b59cd867f3a27925246107ffe9600a /Makefile.target | |
| parent | tests: remove repetition in unit test object deps (diff) | |
| download | qemu-fb37726db77b21f3731b90693d2c93ade1777528.tar.gz qemu-fb37726db77b21f3731b90693d2c93ade1777528.tar.xz qemu-fb37726db77b21f3731b90693d2c93ade1777528.zip | |
crypto: move crypto objects out of libqemuutil.la
Future patches will be adding more crypto related APIs which
rely on QOM infrastructure. This creates a problem, because
QOM relies on library constructors to register objects. When
you have a file in a static .a library though which is only
referenced by a constructor the linker is dumb and will drop
that file when linking to the final executable :-( The only
workaround for this is to link the .a library to the executable
using the -Wl,--whole-archive flag, but this creates its own
set of problems because QEMU is relying on lazy linking for
libqemuutil.a. Using --whole-archive majorly increases the
size of final executables as they now contain a bunch of
object code they don't actually use.
The least bad option is to thus not include the crypto objects
in libqemuutil.la, and instead define a crypto-obj-y variable
that is referenced directly by all the executables that need
this code (tools + softmmu, but not qemu-ga). We avoid pulling
entire of crypto-obj-y into the userspace emulators as that
would force them to link to gnutls too, which is not required.
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Diffstat (limited to 'Makefile.target')
| -rw-r--r-- | Makefile.target | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Makefile.target b/Makefile.target index dc322942f4..3d97966e75 100644 --- a/Makefile.target +++ b/Makefile.target @@ -170,12 +170,16 @@ target-obj-y-save := $(target-obj-y) dummy := $(call unnest-vars,.., \ block-obj-y \ block-obj-m \ + crypto-obj-y \ + crypto-aes-obj-y \ common-obj-y \ common-obj-m) target-obj-y := $(target-obj-y-save) all-obj-y += $(common-obj-y) all-obj-y += $(target-obj-y) all-obj-$(CONFIG_SOFTMMU) += $(block-obj-y) +all-obj-$(CONFIG_USER_ONLY) += $(crypto-aes-obj-y) +all-obj-$(CONFIG_SOFTMMU) += $(crypto-obj-y) $(QEMU_PROG_BUILD): config-devices.mak |
