From nobody Mon May 6 12:05:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504702235212497.48859891611676; Wed, 6 Sep 2017 05:50:35 -0700 (PDT) Received: from localhost ([::1]:36048 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dpZms-000358-2T for importer@patchew.org; Wed, 06 Sep 2017 08:50:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55675) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dpZlV-0002YL-38 for qemu-devel@nongnu.org; Wed, 06 Sep 2017 08:49:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dpZlQ-0004IZ-QT for qemu-devel@nongnu.org; Wed, 06 Sep 2017 08:49:09 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48922) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dpZlQ-0004IH-HK for qemu-devel@nongnu.org; Wed, 06 Sep 2017 08:49:04 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5A758356D4 for ; Wed, 6 Sep 2017 12:49:03 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-90.pek2.redhat.com [10.72.12.90]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0AD266B577; Wed, 6 Sep 2017 12:49:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 5A758356D4 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Wed, 6 Sep 2017 20:49:00 +0800 Message-Id: <20170906124900.17354-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 06 Sep 2017 12:49:03 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4] buildsys: Move crypto cflags/libs to per object variables X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This patch groups the crypto objects into a few .mo objects based on functional submodules, and moves inclusion conditions to *-objs variables, then moves the global cflags/libs to the *-cflags and *-libs variables. For init.o and cipher.o, which may or may not need the library flags depending on config, adding flags and libs unconditionally doesn't hurt, because if the library is not available, the variables are empty. This makes less code. Signed-off-by: Fam Zheng --- v4: Merge into one patch which is supposedly easier to manage and review, and use .mo appraoch to avoid $(foreach) and $(eval) magics. Fixes the gcrypt patch typo in v3 while doing this. --- configure | 15 +++++------- crypto/Makefile.objs | 66 ++++++++++++++++++++++++++++++++++++----------= ---- tests/Makefile.include | 10 ++++---- 3 files changed, 59 insertions(+), 32 deletions(-) diff --git a/configure b/configure index fb7e34a901..b37cd54bda 100755 --- a/configure +++ b/configure @@ -2472,9 +2472,6 @@ if test "$gnutls" !=3D "no"; then if gnutls_works; then gnutls_cflags=3D$($pkg_config --cflags gnutls) gnutls_libs=3D$($pkg_config --libs gnutls) - libs_softmmu=3D"$gnutls_libs $libs_softmmu" - libs_tools=3D"$gnutls_libs $libs_tools" - QEMU_CFLAGS=3D"$QEMU_CFLAGS $gnutls_cflags" gnutls=3D"yes" =20 # gnutls_rnd requires >=3D 2.11.0 @@ -2568,9 +2565,6 @@ if test "$gcrypt" !=3D "no"; then then gcrypt_libs=3D"$gcrypt_libs -lgpg-error" fi - libs_softmmu=3D"$gcrypt_libs $libs_softmmu" - libs_tools=3D"$gcrypt_libs $libs_tools" - QEMU_CFLAGS=3D"$QEMU_CFLAGS $gcrypt_cflags" gcrypt=3D"yes" if test -z "$nettle"; then nettle=3D"no" @@ -2616,9 +2610,6 @@ if test "$nettle" !=3D "no"; then nettle_cflags=3D$($pkg_config --cflags nettle) nettle_libs=3D$($pkg_config --libs nettle) nettle_version=3D$($pkg_config --modversion nettle) - libs_softmmu=3D"$nettle_libs $libs_softmmu" - libs_tools=3D"$nettle_libs $libs_tools" - QEMU_CFLAGS=3D"$QEMU_CFLAGS $nettle_cflags" nettle=3D"yes" =20 cat > $TMPC << EOF @@ -5713,12 +5704,16 @@ fi echo "CONFIG_TLS_PRIORITY=3D\"$tls_priority\"" >> $config_host_mak if test "$gnutls" =3D "yes" ; then echo "CONFIG_GNUTLS=3Dy" >> $config_host_mak + echo "GNUTLS_CFLAGS=3D$gnutls_cflags" >> $config_host_mak + echo "GNUTLS_LIBS=3D$gnutls_libs" >> $config_host_mak fi if test "$gnutls_rnd" =3D "yes" ; then echo "CONFIG_GNUTLS_RND=3Dy" >> $config_host_mak fi if test "$gcrypt" =3D "yes" ; then echo "CONFIG_GCRYPT=3Dy" >> $config_host_mak + echo "GCRYPT_CFLAGS=3D$gcrypt_cflags" >> $config_host_mak + echo "GCRYPT_LIBS=3D$gcrypt_libs" >> $config_host_mak if test "$gcrypt_hmac" =3D "yes" ; then echo "CONFIG_GCRYPT_HMAC=3Dy" >> $config_host_mak fi @@ -5732,6 +5727,8 @@ if test "$nettle" =3D "yes" ; then if test "$nettle_kdf" =3D "yes" ; then echo "CONFIG_NETTLE_KDF=3Dy" >> $config_host_mak fi + echo "NETTLE_CFLAGS=3D$nettle_cflags" >> $config_host_mak + echo "NETTLE_LIBS=3D$nettle_libs" >> $config_host_mak fi if test "$tasn1" =3D "yes" ; then echo "CONFIG_TASN1=3Dy" >> $config_host_mak diff --git a/crypto/Makefile.objs b/crypto/Makefile.objs index 2b99e08062..a3ff1417c7 100644 --- a/crypto/Makefile.objs +++ b/crypto/Makefile.objs @@ -1,29 +1,53 @@ crypto-obj-y =3D init.o -crypto-obj-y +=3D hash.o -crypto-obj-$(CONFIG_NETTLE) +=3D hash-nettle.o -crypto-obj-$(if $(CONFIG_NETTLE),n,$(CONFIG_GCRYPT)) +=3D hash-gcrypt.o -crypto-obj-$(if $(CONFIG_NETTLE),n,$(if $(CONFIG_GCRYPT),n,y)) +=3D hash-g= lib.o -crypto-obj-y +=3D hmac.o -crypto-obj-$(CONFIG_NETTLE) +=3D hmac-nettle.o -crypto-obj-$(CONFIG_GCRYPT_HMAC) +=3D hmac-gcrypt.o -crypto-obj-$(if $(CONFIG_NETTLE),n,$(if $(CONFIG_GCRYPT_HMAC),n,y)) +=3D h= mac-glib.o +crypto-obj-y +=3D hash.mo + +hash.mo-objs :=3D hash.o \ + $(if $(CONFIG_NETTLE), \ + hash-nettle.o, \ + $(if $(CONFIG_GCRYPT), hash-gcrypt.o, hash-glib.o)) +hash.mo-cflags :=3D $(NETTLE_CFLAGS) $(GCRYPT_CFLAGS) +hash.mo-libs :=3D $(NETTLE_LIBS) $(GCRYPT_LIBS) + +crypto-obj-y +=3D hmac.mo +hmac.mo-objs :=3D hmac.o \ + $(if $(CONFIG_NETTLE), \ + hmac-nettle.o, \ + $(if $(CONFIG_GCRYPT_HMAC), hmac-gcrypt.o, hmac-glib.o)) +hmac.mo-cflags :=3D $(NETTLE_CFLAGS) $(GCRYPT_CFLAGS) +hmac.mo-libs :=3D $(NETTLE_LIBS) $(GCRYPT_LIBS) + crypto-obj-y +=3D aes.o crypto-obj-y +=3D desrfb.o crypto-obj-y +=3D cipher.o crypto-obj-$(CONFIG_AF_ALG) +=3D afalg.o crypto-obj-$(CONFIG_AF_ALG) +=3D cipher-afalg.o crypto-obj-$(CONFIG_AF_ALG) +=3D hash-afalg.o -crypto-obj-y +=3D tlscreds.o -crypto-obj-y +=3D tlscredsanon.o -crypto-obj-y +=3D tlscredsx509.o -crypto-obj-y +=3D tlssession.o + +crypto-obj-y +=3D tls.mo +tls.mo-objs :=3D \ + tlscreds.o \ + tlscredsanon.o \ + tlscredsx509.o \ + tlssession.o +tls.mo-cflags :=3D $(GNUTLS_CFLAGS) +tls.mo-libs :=3D $(GNUTLS_LIBS) + crypto-obj-y +=3D secret.o -crypto-obj-$(CONFIG_GCRYPT) +=3D random-gcrypt.o -crypto-obj-$(if $(CONFIG_GCRYPT),n,$(CONFIG_GNUTLS_RND)) +=3D random-gnutl= s.o -crypto-obj-$(if $(CONFIG_GCRYPT),n,$(if $(CONFIG_GNUTLS_RND),n,y)) +=3D ra= ndom-platform.o -crypto-obj-y +=3D pbkdf.o -crypto-obj-$(CONFIG_NETTLE_KDF) +=3D pbkdf-nettle.o -crypto-obj-$(if $(CONFIG_NETTLE_KDF),n,$(CONFIG_GCRYPT_KDF)) +=3D pbkdf-gc= rypt.o + +crypto-obj-y +=3D random.mo +random.mo-objs :=3D \ + $(if $(CONFIG_GCRYPT), random-gcrypt.o, \ + $(if $(CONFIG_GNUTLS_RND), random-gnutls.o, random-platform.o)) +random.mo-cflags :=3D $(GNUTLS_CFLAGS) $(GCRYPT_CFLAGS) +random.mo-libs :=3D $(GNUTLS_LIBS) $(GCRYPT_LIBS) + +crypto-obj-y +=3D pbkdf.mo +pbkdf.mo-objs :=3D pbkdf.o \ + $(if $(CONFIG_NETTLE_KDF), pbkdf-nettle.o, \ + $(if $(CONFIG_GCRYPT_KDF), pbkdf-gcrypt.o)) +pbkdf.mo-cflags :=3D $(NETTLE_CFLAGS) $(GCRYPT_CFLAGS) +pbkdf.mo-libs :=3D $(NETTLE_LIBS) $(GCRYPT_LIBS) + crypto-obj-y +=3D ivgen.o crypto-obj-y +=3D ivgen-essiv.o crypto-obj-y +=3D ivgen-plain.o @@ -34,6 +58,12 @@ crypto-obj-y +=3D block.o crypto-obj-y +=3D block-qcow.o crypto-obj-y +=3D block-luks.o =20 +init.o-cflags :=3D $(GNUTLS_CFLAGS) $(GCRYPT_CFLAGS) +init.o-libs :=3D $(GNUTLS_LIBS) $(GCRYPT_LIBS) + +cipher.o-cflags :=3D $(NETTLE_CFLAGS) $(GCRYPT_CFLAGS) +cipher.o-libs :=3D $(NETTLE_LIBS) $(GCRYPT_LIBS) + # Let the userspace emulators avoid linking gnutls/etc crypto-aes-obj-y =3D aes.o =20 diff --git a/tests/Makefile.include b/tests/Makefile.include index fae5715e9c..d46c22d1ec 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -677,15 +677,15 @@ tests/benchmark-crypto-cipher$(EXESUF): tests/benchma= rk-crypto-cipher.o $(test-c tests/test-crypto-secret$(EXESUF): tests/test-crypto-secret.o $(test-crypt= o-obj-y) tests/test-crypto-xts$(EXESUF): tests/test-crypto-xts.o $(test-crypto-obj-= y) =20 -tests/crypto-tls-x509-helpers.o-cflags :=3D $(TASN1_CFLAGS) -tests/crypto-tls-x509-helpers.o-libs :=3D $(TASN1_LIBS) -tests/pkix_asn1_tab.o-cflags :=3D $(TASN1_CFLAGS) +tests/crypto-tls-x509-helpers.o-cflags :=3D $(TASN1_CFLAGS) $(GNUTLS_CFLAG= S) +tests/crypto-tls-x509-helpers.o-libs :=3D $(TASN1_LIBS) $(GNUTLS_LIBS) +tests/pkix_asn1_tab.o-cflags :=3D $(TASN1_CFLAGS) $(GNUTLS_LIBS) =20 -tests/test-crypto-tlscredsx509.o-cflags :=3D $(TASN1_CFLAGS) +tests/test-crypto-tlscredsx509.o-cflags :=3D $(TASN1_CFLAGS) $(GNUTLS_CFLA= GS) tests/test-crypto-tlscredsx509$(EXESUF): tests/test-crypto-tlscredsx509.o \ tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o $(test-crypto-obj-y) =20 -tests/test-crypto-tlssession.o-cflags :=3D $(TASN1_CFLAGS) +tests/test-crypto-tlssession.o-cflags :=3D $(TASN1_CFLAGS) $(GNUTLS_CFLAGS) tests/test-crypto-tlssession$(EXESUF): tests/test-crypto-tlssession.o \ tests/crypto-tls-x509-helpers.o tests/pkix_asn1_tab.o $(test-crypto-obj-y) tests/test-io-task$(EXESUF): tests/test-io-task.o $(test-io-obj-y) --=20 2.13.5