Currently all what's needed for single file libcacard/vcard_emul_nss.c (libnss cflags) and hw/usb/ccid-card-emulated.c (libcacard includes) together with the libs is added to global QEMU_CFLAGS and libs_softmmu.
Use the cflags only where really used (for two mentioned files), and libs only where needed. While at it, rename variables to better reflect reality: libcacard_* is really nss_*. This needs a bit more tweaking: $(NSS_LIBS) should not contain $glib_libs (ditto for _cflags). But in order to fix it, some more preparations should be made first. So add a FIXME comment. Signed-off-by: Michael Tokarev <m...@tls.msk.ru> --- I don't like the libs_softmmu addition in hw/usb/Makefile.objs, it should be done a bit differently, using per-object libs, but this mechanism currently does not work. Makefile.objs | 1 + configure | 17 ++++++++--------- hw/usb/Makefile.objs | 2 ++ libcacard/Makefile | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Makefile.objs b/Makefile.objs index a6e0e2a..de1ccde 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -31,6 +31,7 @@ libcacard-y += libcacard/vcard_emul_nss.o libcacard-y += libcacard/vcard_emul_type.o libcacard-y += libcacard/card_7816.o libcacard-y += libcacard/vcardt.o +libcacard/vcard_emul_nss.o-cflags := $(NSS_CFLAGS) ###################################################################### # Target independent part of system emulation. The long term path is to diff --git a/configure b/configure index ac2fa15..b0c0c9c 100755 --- a/configure +++ b/configure @@ -3471,9 +3471,10 @@ if test "$smartcard_nss" != "no"; then int main(void) { PK11_FreeSlot(0); return 0; } EOF smartcard_includes="-I\$(SRC_PATH)/libcacard" - libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" - libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" - test_cflags="$libcacard_cflags" + # FIXME: do not include $glib_* in here + nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" + nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" + test_cflags="$nss_cflags" # The header files in nss < 3.13.3 have a bug which causes them to # emit a warning. If we're going to compile QEMU with -Werror, then # test that the headers don't have this bug. Otherwise we would pass @@ -3483,11 +3484,8 @@ EOF fi if test -n "$libtool" && $pkg_config --atleast-version=3.12.8 nss && \ - compile_prog "$test_cflags" "$libcacard_libs"; then + compile_prog "$test_cflags" "$nss_libs"; then smartcard_nss="yes" - QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags" - QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes" - libs_softmmu="$libcacard_libs $libs_softmmu" else if test "$smartcard_nss" = "yes"; then feature_not_found "nss" @@ -4499,8 +4497,9 @@ fi if test "$smartcard_nss" = "yes" ; then echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak - echo "libcacard_libs=$libcacard_libs" >> $config_host_mak - echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak + echo "SMARTCARD_INCLUDES=$smartcard_includes" >> $config_host_mak + echo "NSS_LIBS=$nss_libs" >> $config_host_mak + echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak fi if test "$libusb" = "yes" ; then diff --git a/hw/usb/Makefile.objs b/hw/usb/Makefile.objs index 17d460c..54d3982 100644 --- a/hw/usb/Makefile.objs +++ b/hw/usb/Makefile.objs @@ -24,6 +24,8 @@ ifeq ($(CONFIG_USB_SMARTCARD),y) common-obj-y += dev-smartcard-reader.o common-obj-y += ccid-card-passthru.o common-obj-$(CONFIG_SMARTCARD_NSS) += ccid-card-emulated.o +ccid-card-emulated.o-cflags := $(SMARTCARD_INCLUDES) +libs_softmmu += $(NSS_LIBS) endif ifeq ($(CONFIG_POSIX),y) diff --git a/libcacard/Makefile b/libcacard/Makefile index 6b06448..4a76d03 100644 --- a/libcacard/Makefile +++ b/libcacard/Makefile @@ -25,7 +25,7 @@ vscclient$(EXESUF): libcacard/vscclient.o libcacard.la libcacard.la: LDFLAGS += -rpath $(libdir) -no-undefined \ -export-syms $(SRC_PATH)/libcacard/libcacard.syms -libcacard.la: LIBS = $(libcacard_libs) +libcacard.la: LIBS = $(NSS_LIBS) libcacard.la: $(libcacard-lobj-y) $(call LINK,$^) -- 1.7.10.4