[dpdk-dev,2/3] build: add optional arch-specific headers install path

Message ID 20170915173612.13636-3-luca.boccassi@gmail.com (mailing list archive)
State Accepted, archived
Delegated to: Bruce Richardson
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Luca Boccassi Sept. 15, 2017, 5:36 p.m. UTC
  From: Luca Boccassi <bluca@debian.org>

A subset of the dpdk headers are arch-dependent, but have common names
and thus cause a clash in a multiarch installation.
For example, rte_config.h is different for each target.

Add a "include_subdir_arch"  option to allow a user to specify a
subdirectory for arch independent headers to fix multiarch support.

Signed-off-by: Luca Boccassi <bluca@debian.org>
---
 config/meson.build                                 | 2 +-
 lib/librte_eal/common/include/arch/x86/meson.build | 3 ++-
 meson.build                                        | 3 ++-
 meson_options.txt                                  | 1 +
 4 files changed, 6 insertions(+), 3 deletions(-)
  

Comments

Bruce Richardson Sept. 18, 2017, 11:27 a.m. UTC | #1
On Fri, Sep 15, 2017 at 06:36:11PM +0100, luca.boccassi@gmail.com wrote:
> From: Luca Boccassi <bluca@debian.org>
> 
> A subset of the dpdk headers are arch-dependent, but have common names
> and thus cause a clash in a multiarch installation.
> For example, rte_config.h is different for each target.
> 
> Add a "include_subdir_arch"  option to allow a user to specify a
> subdirectory for arch independent headers to fix multiarch support.
> 
> Signed-off-by: Luca Boccassi <bluca@debian.org>
> ---
>  config/meson.build                                 | 2 +-
>  lib/librte_eal/common/include/arch/x86/meson.build | 3 ++-
>  meson.build                                        | 3 ++-
>  meson_options.txt                                  | 1 +
>  4 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/config/meson.build b/config/meson.build
> index b57a7e64b..db68a08d4 100644
> --- a/config/meson.build
> +++ b/config/meson.build
> @@ -69,4 +69,4 @@ dpdk_conf.set('RTE_MAX_NUMA_NODES', get_option('max_numa_nodes'))
>  dpdk_conf.set('RTE_LIBEAL_USE_HPET', get_option('use_hpet'))
>  dpdk_conf.set('RTE_EAL_ALLOW_INV_SOCKET_ID', get_option('allow_invalid_socket_id'))
>  
> -install_headers('rte_config.h')
> +install_headers('rte_config.h', subdir: get_option('include_subdir_arch'))
> diff --git a/lib/librte_eal/common/include/arch/x86/meson.build b/lib/librte_eal/common/include/arch/x86/meson.build
> index 80b5980c1..5e9c02687 100644
> --- a/lib/librte_eal/common/include/arch/x86/meson.build
> +++ b/lib/librte_eal/common/include/arch/x86/meson.build
> @@ -45,4 +45,5 @@ install_headers(
>  	'rte_rtm.h',
>  	'rte_rwlock.h',
>  	'rte_spinlock.h',
> -	'rte_vect.h')
> +	'rte_vect.h',
> +	subdir: get_option('include_subdir_arch'))
> diff --git a/meson.build b/meson.build
> index f41fb4120..134158dae 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -70,7 +70,7 @@ subdir('app')
>  build_cfg = 'rte_build_config.h'
>  configure_file(output: build_cfg,
>  		configuration: dpdk_conf,
> -		install_dir: get_option('includedir'))
> +		install_dir: get_option('includedir') + '/' + get_option('include_subdir_arch'))

Minor nit: use "join_paths()" function. Will fix on apply.

Acked-by: Bruce Richardson <bruce.richardson@intel.com>
  

Patch

diff --git a/config/meson.build b/config/meson.build
index b57a7e64b..db68a08d4 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -69,4 +69,4 @@  dpdk_conf.set('RTE_MAX_NUMA_NODES', get_option('max_numa_nodes'))
 dpdk_conf.set('RTE_LIBEAL_USE_HPET', get_option('use_hpet'))
 dpdk_conf.set('RTE_EAL_ALLOW_INV_SOCKET_ID', get_option('allow_invalid_socket_id'))
 
-install_headers('rte_config.h')
+install_headers('rte_config.h', subdir: get_option('include_subdir_arch'))
diff --git a/lib/librte_eal/common/include/arch/x86/meson.build b/lib/librte_eal/common/include/arch/x86/meson.build
index 80b5980c1..5e9c02687 100644
--- a/lib/librte_eal/common/include/arch/x86/meson.build
+++ b/lib/librte_eal/common/include/arch/x86/meson.build
@@ -45,4 +45,5 @@  install_headers(
 	'rte_rtm.h',
 	'rte_rwlock.h',
 	'rte_spinlock.h',
-	'rte_vect.h')
+	'rte_vect.h',
+	subdir: get_option('include_subdir_arch'))
diff --git a/meson.build b/meson.build
index f41fb4120..134158dae 100644
--- a/meson.build
+++ b/meson.build
@@ -70,7 +70,7 @@  subdir('app')
 build_cfg = 'rte_build_config.h'
 configure_file(output: build_cfg,
 		configuration: dpdk_conf,
-		install_dir: get_option('includedir'))
+		install_dir: get_option('includedir') + '/' + get_option('include_subdir_arch'))
 
 # for static builds, include the drivers as libs, and also any
 # other dependent libs that DPDK needs to link against
@@ -85,5 +85,6 @@  pkg.generate(name: meson.project_name(),
 	version: meson.project_version(),
 	libraries: dpdk_libraries,
 	description: 'The Data Plane Development Kit (DPDK)',
+	subdirs: [get_option('include_subdir_arch'), '.'],
 	extra_cflags: '-include "rte_config.h"'
 )
diff --git a/meson_options.txt b/meson_options.txt
index 636226ce8..fb945db91 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -7,3 +7,4 @@  option('allow_invalid_socket_id', type: 'boolean', value: false,
 option('enable_kmods', type: 'boolean', value: true, description: 'build kernel modules')
 option('kernel_dir', type: 'string', value: '', description: 'path to the kernel for building kernel modules')
 option('per_library_versions', type: 'boolean', value: true, description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
+option('include_subdir_arch', type: 'string', value: '', description: 'subdirectory where to install arch-dependent headers')