[RFC PATCH 1/3] os: begin separating some OS compatibility from EAL
David Marchand
david.marchand at redhat.com
Tue Aug 30 10:42:43 CEST 2022
On Mon, Aug 29, 2022 at 5:19 PM Bruce Richardson
<bruce.richardson at intel.com> wrote:
>
> Some library functionality we may want ahead of EAL build depends upon
> some OS-specific functionality, so we create a new lib for that to be
> built separately. For now, just includes fnmatch function for windows.
>
> Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
> ---
> lib/eal/windows/meson.build | 1 -
> lib/meson.build | 11 ++++++-----
> lib/os/freebsd/fnmatch.c | 3 +++
> lib/os/linux/fnmatch.c | 3 +++
> lib/os/meson.build | 8 ++++++++
> lib/os/os.c | 3 +++
> lib/os/version.map | 7 +++++++
> lib/{eal => os}/windows/fnmatch.c | 0
> lib/{eal/windows/include => os/windows}/fnmatch.h | 0
> 9 files changed, 30 insertions(+), 6 deletions(-)
> create mode 100644 lib/os/freebsd/fnmatch.c
> create mode 100644 lib/os/linux/fnmatch.c
> create mode 100644 lib/os/meson.build
> create mode 100644 lib/os/os.c
> create mode 100644 lib/os/version.map
> rename lib/{eal => os}/windows/fnmatch.c (100%)
> rename lib/{eal/windows/include => os/windows}/fnmatch.h (100%)
>
> diff --git a/lib/eal/windows/meson.build b/lib/eal/windows/meson.build
> index 845e406ca1..e4b2427610 100644
> --- a/lib/eal/windows/meson.build
> +++ b/lib/eal/windows/meson.build
> @@ -18,7 +18,6 @@ sources += files(
> 'eal_mp.c',
> 'eal_thread.c',
> 'eal_timer.c',
> - 'fnmatch.c',
> 'getopt.c',
> 'rte_thread.c',
> )
> diff --git a/lib/meson.build b/lib/meson.build
> index c648f7d800..7b61b2a5d7 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -9,6 +9,7 @@
> # given as a dep, no need to mention ring. This is especially true for the
> # core libs which are widely reused, so their deps are kept to a minimum.
> libraries = [
> + 'os', # load os compatibility material
> 'kvargs', # eal depends on kvargs
> 'telemetry', # basic info querying
> 'eal', # everything depends on eal
> @@ -106,6 +107,7 @@ if cc.has_argument('-Wno-format-truncation')
> endif
>
> enabled_libs = [] # used to print summary at the end
> +default_deps = []
>
> foreach l:libraries
> build = true
> @@ -124,11 +126,7 @@ foreach l:libraries
> # use "deps" for internal DPDK dependencies, and "ext_deps" for
> # external package/library requirements
> ext_deps = []
> - deps = []
> - # eal is standard dependency once built
> - if dpdk_conf.has('RTE_LIB_EAL')
> - deps += ['eal']
> - endif
> + deps = default_deps
>
> if disabled_libs.contains(l)
> build = false
> @@ -271,4 +269,7 @@ foreach l:libraries
> if developer_mode
> message('lib/@0@: Defining dependency "@1@"'.format(l, name))
> endif
> + if name == 'os' or name == 'eal'
> + default_deps = [name]
> + endif
> endforeach
> diff --git a/lib/os/freebsd/fnmatch.c b/lib/os/freebsd/fnmatch.c
> new file mode 100644
> index 0000000000..ca8a050fda
> --- /dev/null
> +++ b/lib/os/freebsd/fnmatch.c
> @@ -0,0 +1,3 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2022 Intel Corporation
> + */
> diff --git a/lib/os/linux/fnmatch.c b/lib/os/linux/fnmatch.c
> new file mode 100644
> index 0000000000..ca8a050fda
> --- /dev/null
> +++ b/lib/os/linux/fnmatch.c
> @@ -0,0 +1,3 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2022 Intel Corporation
> + */
> diff --git a/lib/os/meson.build b/lib/os/meson.build
> new file mode 100644
> index 0000000000..53949ca17e
> --- /dev/null
> +++ b/lib/os/meson.build
> @@ -0,0 +1,8 @@
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2022 Intel Corporation
> +
> +includes += global_inc
> +includes += include_directories(exec_env)
> +sources += files(
> + exec_env / 'fnmatch.c',
> +)
Not really important (that's only a RFC), but os.c is not compiled anywhere.
> diff --git a/lib/os/os.c b/lib/os/os.c
> new file mode 100644
> index 0000000000..ca8a050fda
> --- /dev/null
> +++ b/lib/os/os.c
> @@ -0,0 +1,3 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2022 Intel Corporation
> + */
> diff --git a/lib/os/version.map b/lib/os/version.map
> new file mode 100644
> index 0000000000..e1dbd6051e
> --- /dev/null
> +++ b/lib/os/version.map
> @@ -0,0 +1,7 @@
> +DPDK_22 {
> + global:
> +
> + fnmatch;
> +
> + local: *;
> +};
Could we perhaps consider a per-os version.map file or some kind of
inclusion of os specific symbols?
That would avoid odd exporting of a symbol that is provided by the C
library in other OS.
> diff --git a/lib/eal/windows/fnmatch.c b/lib/os/windows/fnmatch.c
> similarity index 100%
> rename from lib/eal/windows/fnmatch.c
> rename to lib/os/windows/fnmatch.c
> diff --git a/lib/eal/windows/include/fnmatch.h b/lib/os/windows/fnmatch.h
> similarity index 100%
> rename from lib/eal/windows/include/fnmatch.h
> rename to lib/os/windows/fnmatch.h
> --
> 2.34.1
>
--
David Marchand
More information about the dev
mailing list