08/01/2021 21:20, Honnappa Nagarahalli:
> > On Mon, Jan 04, 2021 at 05:46:20PM -0500, Andrew Boyer wrote:
> > >
> > > 1)  Bruce - when the “-Ddefault_library=both” flag is passed in, the build
> > fails with this error. It’s been broken for a long time; maybe this option 
> > isn’t
> > supported and should be blocked earlier?
> > >
> > >   ../../dpdk/app/meson.build:48:3: ERROR: Tried to get unknown
> > variable "both_rte_ethdev".
> > >
> > Revisiting this point, since there are a number of possible approaches we 
> > can
> > take here, and I'd like feedback on them before we do anything. Of these
> > approaches, 2 are simple, and 1 is more complicated.
> > 
> > 1. We can just detect this as an invalid/unsupported setting and error out
> > earlier with a suitable errors message 2. Since we already support in all 
> > cases
> 
> I would prefer option 1 here (detect and error out). IMO, the option "both" 
> does not seem to solve a compelling problem. I would prefer to avoid the 
> additional code and complications. Mostly, everyone would do the development 
> with either 'static' or 'shared' and test the other at the end when the 
> development is completed.

+1 for not supporting linking with both.


> > building "both" libraries, we can just convert "both" to be the same as
> > "shared" for app linking (since app linking is all the value is actually 
> > used for
> I do not think option 2 solves the problem completely. i.e. if the user 
> specifies 'both', app needs to be built for both static and shared libraries.
> 
> > by us) 3. We can change how we do the builds to actually repect the value as
> > intended - only build static or shared libs as requested and only build both
> > when value "both" is passed.
> > 
> > Of these, #3 is obviously the most work, but may make the most sense to
> > users. However, it does have the following open issues - which are all 
> > linked:
> > 1. What way do we make the default linkage in the case of "both" being
> > selected?
> > 2. What do we make the default for builds?
> > 3. Is there ever a case where someone needs both libraries build but non-
> > default linkage?
> > 
> > The initial answers I thought for these would be that the default for "both"
> > builds should be "shared", and that "both" should be the default.
> > However, that then is a behaviour change for DPDK since we don't get static
> > binaries by default. The solution to that is that we change the default to
> > "static", but then we revert to the situation we used to have with the make
> > build where we regularly got patches upstreamed which failed to build with
> > shared libs because the map file update was missing and the submitter never
> > tested shared builds.
> 
> I have been one among submitting the patches without testing for shared 
> libraries. But, I am thinking that we have a good CI now that compiles for 
> various combinations. I think that should be enough.
> 
> > The third alternative there is that we default to "both"
> > but have "static" binaries when that is selected. That option runs against
> > question #3 where I suspect there will be cases (e.g.
> > packaging) where one does want both library sets generated but shared
> > binaries.
> > 
> > Therefore, is keeping things largely as they are and taking the simpler 
> > options
> > #1 or #2 better? Do we want to look into #3 but with further additions such
> > as a "default_app_linkage" DPDK option, or linking all apps twice when
> > "both" is specified as "default_library"?
> 
> I would say stick with #1 as there is not a compelling problem to solve.

me too
And I want to avoid linking static apps by default because they are huge.



Reply via email to