On 08-Jan-24 1:28 PM, jerinj@marvell.com wrote: > From: Jerin Jacob > > Define qualification criteria for external library > based on a techboard meeting minutes [1] and past > learnings from mailing list discussion. > > [1] > http://mails.dpdk.org/archives/dev/2019-June/135847.html > https://mails.dpdk.org/archives/dev/2024-January/284849.html > > Signed-off-by: Jerin Jacob > Acked-by: Thomas Monjalon > --- > doc/guides/contributing/index.rst | 1 + > .../contributing/library_dependency.rst | 52 +++++++++++++++++++ > 2 files changed, 53 insertions(+) > create mode 100644 doc/guides/contributing/library_dependency.rst > > v5: > - Added "Dependency nature" section based on Stephen's input > > v4: > - Address Thomas comments from https://patches.dpdk.org/project/dpdk/patch/20240105121215.3950532-1-jerinj@ marvell.com/ > > v3: > - Updated the content based on TB discussion which is documented at > https://mails.dpdk.org/archives/dev/2024-January/284849.html > > v2: > - Added "Meson build integration" and "Code readability" sections. > > > diff --git a/doc/guides/contributing/index.rst b/doc/guides/contributing/index.rst > index dcb9b1fbf0..e5a8c2b0a3 100644 > --- a/doc/guides/contributing/index.rst > +++ b/doc/guides/contributing/index.rst > @@ -15,6 +15,7 @@ Contributor's Guidelines > documentation > unit_test > new_library > + library_dependency > patches > vulnerability > stable > diff --git a/doc/guides/contributing/library_dependency.rst b/doc/guides/contributing/library_dependency.rst > new file mode 100644 > index 0000000000..94025fdf60 > --- /dev/null > +++ b/doc/guides/contributing/library_dependency.rst > @@ -0,0 +1,52 @@ > +.. SPDX-License-Identifier: BSD-3-Clause > + Copyright(c) 2024 Marvell. > + > +External Library dependency > +=========================== > + > +This document defines the qualification criteria for external libraries that may be > +used as dependencies in DPDK drivers or libraries. > + > +#. **Documentation:** > + > + - Must have adequate documentation for the steps to build it. > + - Must have clear license documentation on distribution and usage aspects of external library. > + > +#. **Free availability:** > + > + - The library must be freely available to build in either source or binary form. > + - It shall be downloadable from a direct link. There shall not be any requirement to explicitly > + login or sign a user agreement. > + > +#. **Usage License:** > + > + - Both permissive (e.g., BSD-3 or Apache) and non-permissive (e.g., GPLv3) licenses are acceptable. > + - In the case of a permissive license, automatic inclusion in the build process is assumed. > + For non-permissive licenses, an additional build configuration option is required. > + > +#. **Distributions License:** > + > + - No specific constraints beyond documentation. Though we are not mandatory open distribution. However we should ask for the defining the distribution aspect clearly in the library. > > + > +#. **Compiler compatibility:** > + > + - The library must be able to compile with a DPDK supported compiler for the given execution > + environment. > + For example, for Linux, the library must be able to compile with GCC and/or clang. > + - Library may be limited to a specific OS. > + > +#. **Meson build integration:** > + > + - The library must have standard method like ``pkg-config`` for seamless integration with > + DPDK's build environment. > + > +#. **Code readability:** > + > + - Optional dependencies should use stubs to minimize ``ifdef`` clutter, promoting improved > + code readability. > + > +#. **Dependency nature:** > + > + - The external library dependency should be optional. > + i.e Missing external library must not impact the core functionality of the DPDK, specific > + library and/or driver will not built if dependencies are not meet.