From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by dpdk.org (Postfix) with ESMTP id 4A6E81B630 for ; Wed, 18 Oct 2017 12:14:10 +0200 (CEST) Received: by mail-wm0-f67.google.com with SMTP id i124so9149970wmf.3 for ; Wed, 18 Oct 2017 03:14:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:content-transfer-encoding:mime-version; bh=EIVtkZdVBA6MWi1Z6kP3jpPPiUP09aFc97VMgq8ur+k=; b=hqLdiODdC6quVL2Y/DD81r2nSuNMzTehWiNw4gFfwBFtSm/YZobWlU90Hcn0qeav3p 3VQUHLRAg4sAHm1XwMwwKpMKT6ei8LEmfTlSqFP3ubG+5VvrXhoSiJxmrcMonjH/kbtX zQscT+zU57xQKo+scJQo55wxDUna6Q4l9e6z8VK5SE3+Qp201f+WPt4b24VCODjcwkl5 9KG/PF19A3ifU4wcfEWp9tQOiKNjLUx5ZmtLlMWH7GvWiFbWof0a5F8+sMqo2Wjq6Z4g ZrxbjUZiSzt3NJvGY0IV80fYjULhMbcRyAXZByFQQzg/8vFcNsX2o34r9SBw4Tr73ZYB Bc1Q== X-Gm-Message-State: AMCzsaXvpLf//+t6Z65sd90PEXKJBKtJtLK9w5coJT1Q4XMuQ80U/75q 4UO4KEyrURI/AzP0Z2FG4kkhyQl6 X-Google-Smtp-Source: AOwi7QDl5tbNMyHWzTlJE4ukU3tFud2IhjQQnMeSjXjIpsZpao76dh5h3fMtpQC+yJywgQpAaMjYbA== X-Received: by 10.80.183.193 with SMTP id i1mr20382295ede.167.1508321649646; Wed, 18 Oct 2017 03:14:09 -0700 (PDT) Received: from localhost ([213.251.34.151]) by smtp.gmail.com with ESMTPSA id a99sm8171992edf.54.2017.10.18.03.14.08 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Oct 2017 03:14:08 -0700 (PDT) Message-ID: <1508321647.25747.4.camel@debian.org> From: Luca Boccassi To: Bruce Richardson Cc: dev@dpdk.org, thomas@monjalon.net, olivier.matz@6wind.com, sergio.gonzalez.monroy@intel.com Date: Wed, 18 Oct 2017 11:14:07 +0100 In-Reply-To: <20171018095149.GA14720@bricha3-MOBL3.ger.corp.intel.com> References: <20171017161220.59941-1-bruce.richardson@intel.com> <20171017161220.59941-2-bruce.richardson@intel.com> <1508263898.32437.1.camel@debian.org> <1508264229.32437.3.camel@debian.org> <20171018093548.GA15216@bricha3-MOBL3.ger.corp.intel.com> <20171018095149.GA14720@bricha3-MOBL3.ger.corp.intel.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 1/8] build: add maths library to libs in pkg-config file X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Oct 2017 10:14:10 -0000 On Wed, 2017-10-18 at 10:51 +0100, Bruce Richardson wrote: > On Wed, Oct 18, 2017 at 10:35:48AM +0100, Bruce Richardson wrote: > > On Tue, Oct 17, 2017 at 07:17:09PM +0100, Luca Boccassi wrote: > > > On Tue, 2017-10-17 at 19:11 +0100, Luca Boccassi wrote: > > > > On Tue, 2017-10-17 at 17:12 +0100, Bruce Richardson wrote: > > > > > Since a number of libraries depend on the maths lib, as well > > > > > as > > > > > adding it > > > > > to the project args, we also need to add it to the pkgconfig > > > > > file > > > > > args. > > > > >=20 > > > > > Signed-off-by: Bruce Richardson > > > > > --- > > > > > =C2=A0config/meson.build | 1 + > > > > > =C2=A01 file changed, 1 insertion(+) > > > > >=20 > > > > > diff --git a/config/meson.build b/config/meson.build > > > > > index db68a08d4..542fea4de 100644 > > > > > --- a/config/meson.build > > > > > +++ b/config/meson.build > > > > > @@ -35,6 +35,7 @@ dpdk_conf.set('RTE_MACHINE', machine) > > > > > =C2=A0add_project_arguments('-march=3D@0@'.format(machine), > > > > > language: 'c') > > > > > =C2=A0# some libs depend on maths lib > > > > > =C2=A0add_project_link_arguments('-lm', language: 'c') > > > > > +dpdk_extra_ldflags +=3D '-lm' > > > > > =C2=A0 > > > > > =C2=A0# add -include rte_config to cflags > > > > > =C2=A0add_project_arguments('-include', 'rte_config.h', language: > > > > > 'c') > > > >=20 > > > > This is for static builds, right? If so it should go into the > > > > Libs.private section of the .pc file, so that it's only used > > > > when > > > > calling pkg-config --static --libs > > >=20 > > > Bit of a brain fart - what I meant is, in order to have static > > > builds > > > work out of the box with pkg-config --static, -lm (and any other > > > dependency used internally) could also be added to Libs.private > > > in the > > > .pc > >=20 > > Does that not assume that both static and dynamic libs are > > installed > > side-by-side? In DPDK case, we will either build static libs or > > shared > > libs, but not both. If we require applications to use different > > pkg-config commands depending on the type of DPDK build that was > > done, > > it makes things awkward for the apps. Right now by putting all libs > > and > > flags into the libs section of pkgconfig, and having the build > > system > > track whether it's static or dynamic and therefore what is actually > > necessary, we end up in a case where apps can be built against DPDK > > irrespective of the actual build type done. For this particular -lm > > flag, for instance, it only appears in the .pc file for static > > builds. > >=20 > > See the patches for the sample app Makefiles. Not sure how that can > > be > > made to work if we use different pkg-config settings for different > > build > > types. > >=20 > > Your input and suggestions here would be welcome. Yes that works nicely when the libraries are rebuilt locally - then it can be chosen whether to build the static or dynamic ones. In the packaging case though, at least in Debian and Ubuntu (not sure about RHEL/SUSE), we do ship both static and dynamic libraries at the same time, following best practices. So we'd have to choose and either cause applications linking dynamically to over-link (which is what we currently do in Debian/Ubuntu and many developers really don't like that) or to cause applications that use the static libraries to have to manually add the missing flags. >>From what I can see, the most common workflow for applications that want to do static builds when using packaged libraries is to use the -- static flag of pkgconfig. This has the advantage of being a ""standardised"" workflow, expected to work across any dependency, not just DPDK. Of course that's not always the case, but one can dream :-) If you prefer to optimise for the local build workflow that's fine, we can patch it in the distro, it's not too much overhead (I need to do it anyway for the old build system at some point). >=20 > +Thomas, Olivier, Sergio to get more input >=20 > Thinking about it some more, is there any reason why we can't or > shouldn't do both static and dynamic libs in all builds, and then let > apps use pkg-config to determine what they want to link against? It > wouldn't be a massive change to the new build system to do that, I > think. >=20 > /Bruce Yes that would be ideal! Right now in Debian/Ubuntu we have to build twice, doubling the required time unfortunately. In theory the same objects could be packed into .ar and .so but sadly Meson doesn't support that yet like autotools/cmake do: https://github.com/mesonbuild/meson/issues/484 (please do add some feedback there as developers!) It looks like it could be possible with some extensive hacking, not sure if it would be worth it. --=20 Kind regards, Luca Boccassi