[v12,01/14] build: alias default build as generic

Message ID 1605277875-13625-2-git-send-email-juraj.linkes@pantheon.tech (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series Arm build options rework |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Juraj Linkeš Nov. 13, 2020, 2:31 p.m. UTC
  The current machine='default' build name is not descriptive. The actual
default build is machine='native'. Add an alternative string which does
the same build and better describes what we're building:
machine='generic'. Leave machine='default' for backwards compatibility.

Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
---
 config/arm/meson.build                    | 5 +++--
 config/meson.build                        | 9 +++++----
 doc/guides/prog_guide/build-sdk-meson.rst | 4 ++--
 meson_options.txt                         | 2 +-
 4 files changed, 11 insertions(+), 9 deletions(-)
  

Comments

Thomas Monjalon Nov. 16, 2020, 7:32 a.m. UTC | #1
13/11/2020 15:31, Juraj Linkeš:
> The current machine='default' build name is not descriptive. The actual
> default build is machine='native'. Add an alternative string which does
> the same build and better describes what we're building:
> machine='generic'. Leave machine='default' for backwards compatibility.

What?

"default" should be the most common set of options to make a build work everywhere.
"native" is the build machine.

"generic" means... nothing.
  
Juraj Linkeš Nov. 16, 2020, 3:50 p.m. UTC | #2
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Monday, November 16, 2020 8:33 AM
> To: Juraj Linkeš <juraj.linkes@pantheon.tech>
> Cc: bruce.richardson@intel.com; Ruifeng.Wang@arm.com;
> Honnappa.Nagarahalli@arm.com; Phil.Yang@arm.com;
> vcchunga@amazon.com; Dharmik.Thakkar@arm.com; jerinjacobk@gmail.com;
> hemant.agrawal@nxp.com; ajit.khaparde@broadcom.com;
> ferruh.yigit@intel.com; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v12 01/14] build: alias default build as generic
> 
> 13/11/2020 15:31, Juraj Linkeš:
> > The current machine='default' build name is not descriptive. The
> > actual default build is machine='native'. Add an alternative string
> > which does the same build and better describes what we're building:
> > machine='generic'. Leave machine='default' for backwards compatibility.
> 
> What?
> 
> "generic" means... nothing.
> 

An absence of anything means nothing. Generic means "characteristic of or relating to a class or group of things; not specific", which is pretty much what we're looking for.

> "default" should be the most common set of options to make a build work
> everywhere.

What we want is a value of machine that would "be the most common set of options to make a build work everywhere" and using the above definition of generic, it fits very well.
The reason I said the actual default build is machine='native' is because that's how the machine option is defined in meson_options.txt. It follows from what default actually means - "a preselected option adopted by a computer program or other mechanism when no alternative is specified by the user or programmer". Default then means no user input, which means machine='native', which means the default build is the default build.

What ""default" should mean" looks like an attempt at redefining what the word actually means and leads to confusion, in my experience. Hence an attempt to remove the potential ambiguity.

> "native" is the build machine.
> 

The other thing we want is a value for build machine and there's no need to change anything about that.
  
Bruce Richardson Nov. 16, 2020, 4:16 p.m. UTC | #3
On Mon, Nov 16, 2020 at 03:50:31PM +0000, Juraj Linkeš wrote:
> 
> 
> > -----Original Message-----
> > From: Thomas Monjalon <thomas@monjalon.net>
> > Sent: Monday, November 16, 2020 8:33 AM
> > To: Juraj Linkeš <juraj.linkes@pantheon.tech>
> > Cc: bruce.richardson@intel.com; Ruifeng.Wang@arm.com;
> > Honnappa.Nagarahalli@arm.com; Phil.Yang@arm.com;
> > vcchunga@amazon.com; Dharmik.Thakkar@arm.com; jerinjacobk@gmail.com;
> > hemant.agrawal@nxp.com; ajit.khaparde@broadcom.com;
> > ferruh.yigit@intel.com; dev@dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH v12 01/14] build: alias default build as generic
> > 
> > 13/11/2020 15:31, Juraj Linkeš:
> > > The current machine='default' build name is not descriptive. The
> > > actual default build is machine='native'. Add an alternative string
> > > which does the same build and better describes what we're building:
> > > machine='generic'. Leave machine='default' for backwards compatibility.
> > 
> > What?
> > 
> > "generic" means... nothing.
> > 
> 
> An absence of anything means nothing. Generic means "characteristic of or relating to a class or group of things; not specific", which is pretty much what we're looking for.
> 
> > "default" should be the most common set of options to make a build work
> > everywhere.
> 
> What we want is a value of machine that would "be the most common set of options to make a build work everywhere" and using the above definition of generic, it fits very well.
> The reason I said the actual default build is machine='native' is because that's how the machine option is defined in meson_options.txt. It follows from what default actually means - "a preselected option adopted by a computer program or other mechanism when no alternative is specified by the user or programmer". Default then means no user input, which means machine='native', which means the default build is the default build.
> 
> What ""default" should mean" looks like an attempt at redefining what the word actually means and leads to confusion, in my experience. Hence an attempt to remove the potential ambiguity.
> 

I would tend to agree that "generic" is probably a better term than
"default" for what we use it for here in the config.

/Bruce
  
Thomas Monjalon Nov. 16, 2020, 8:35 p.m. UTC | #4
16/11/2020 17:16, Bruce Richardson:
> On Mon, Nov 16, 2020 at 03:50:31PM +0000, Juraj Linkeš wrote:
> > From: Thomas Monjalon <thomas@monjalon.net>
> > > 13/11/2020 15:31, Juraj Linkeš:
> > > > The current machine='default' build name is not descriptive. The
> > > > actual default build is machine='native'. Add an alternative string
> > > > which does the same build and better describes what we're building:
> > > > machine='generic'. Leave machine='default' for backwards compatibility.
> > > 
> > > What?
> > > 
> > > "generic" means... nothing.
> > > 
> > 
> > An absence of anything means nothing. Generic means "characteristic of or relating to a class or group of things; not specific", which is pretty much what we're looking for.
> > 
> > > "default" should be the most common set of options to make a build work
> > > everywhere.
> > 
> > What we want is a value of machine that would "be the most common set of options to make a build work everywhere" and using the above definition of generic, it fits very well.
> > The reason I said the actual default build is machine='native' is because that's how the machine option is defined in meson_options.txt. It follows from what default actually means - "a preselected option adopted by a computer program or other mechanism when no alternative is specified by the user or programmer". Default then means no user input, which means machine='native', which means the default build is the default build.
> > 
> > What ""default" should mean" looks like an attempt at redefining what the word actually means and leads to confusion, in my experience. Hence an attempt to remove the potential ambiguity.
> > 
> 
> I would tend to agree that "generic" is probably a better term than
> "default" for what we use it for here in the config.

In the past, we had a different definition with make config.
I am just trying to be consistent.
Even with meson, default means "minimal CPU instructions".

Example in devtools/test-meson-builds.sh:
"test compilation with minimal x86 instruction set"
is called build-x86-default.

In config/meson.build:
"
machine type 'default' is special, it defaults to the per arch agreed common
minimal baseline needed for DPDK.
That might not be the most optimized, but the most portable version while
still being able to support the CPU features required for DPDK.
This can be bumped up by the DPDK project, but it can never be an
invariant like 'native'
"

So, why this definition is called "generic" in meson Arm config?
  
Honnappa Nagarahalli Nov. 17, 2020, 2:46 a.m. UTC | #5
<snip>

> 
> 16/11/2020 17:16, Bruce Richardson:
> > On Mon, Nov 16, 2020 at 03:50:31PM +0000, Juraj Linkeš wrote:
> > > From: Thomas Monjalon <thomas@monjalon.net>
> > > > 13/11/2020 15:31, Juraj Linkeš:
> > > > > The current machine='default' build name is not descriptive. The
> > > > > actual default build is machine='native'. Add an alternative
> > > > > string which does the same build and better describes what we're
> building:
> > > > > machine='generic'. Leave machine='default' for backwards
> compatibility.
> > > >
> > > > What?
> > > >
> > > > "generic" means... nothing.
> > > >
> > >
> > > An absence of anything means nothing. Generic means "characteristic of
> or relating to a class or group of things; not specific", which is pretty much
> what we're looking for.
> > >
> > > > "default" should be the most common set of options to make a build
> > > > work everywhere.
> > >
> > > What we want is a value of machine that would "be the most common
> set of options to make a build work everywhere" and using the above
> definition of generic, it fits very well.
> > > The reason I said the actual default build is machine='native' is because
> that's how the machine option is defined in meson_options.txt. It follows
> from what default actually means - "a preselected option adopted by a
> computer program or other mechanism when no alternative is specified by
> the user or programmer". Default then means no user input, which means
> machine='native', which means the default build is the default build.
> > >
> > > What ""default" should mean" looks like an attempt at redefining what
> the word actually means and leads to confusion, in my experience. Hence an
> attempt to remove the potential ambiguity.
> > >
> >
> > I would tend to agree that "generic" is probably a better term than
> > "default" for what we use it for here in the config.
> 
> In the past, we had a different definition with make config.
> I am just trying to be consistent.
> Even with meson, default means "minimal CPU instructions".
> 
> Example in devtools/test-meson-builds.sh:
> "test compilation with minimal x86 instruction set"
> is called build-x86-default.
> 
> In config/meson.build:
> "
> machine type 'default' is special, it defaults to the per arch agreed common
> minimal baseline needed for DPDK.
> That might not be the most optimized, but the most portable version while
> still being able to support the CPU features required for DPDK.
> This can be bumped up by the DPDK project, but it can never be an invariant
> like 'native'
> "
> 
> So, why this definition is called "generic" in meson Arm config?
The explanation above is for a build type 'default'. Whereas meson by default builds for build type 'native'. Also when you look at the config/arm/meson.build the word 'default' was used where it was not related to the build type default. It created lot of confusion.

From the dictionary 'default' - "a preselected option adopted by a computer program or other mechanism when no alternative is specified by the user or programmer." But, if one had to do build of type default, they have to mention -Dmachine=default. If nothing is mentioned, it is a build type 'native', which does not go along with the definition of 'default'.

But for 'generic' - "characteristic of or relating to a class or group of things; not specific". IMO, it better suits the explanation you have provided above. So, separating this machine type to 'generic' to cover the same definition makes more sense.

However, 'default' is still supported for backward compatibility.


>
  
Thomas Monjalon Nov. 17, 2020, 7:49 a.m. UTC | #6
17/11/2020 03:46, Honnappa Nagarahalli:
> <snip>
> 
> > 
> > 16/11/2020 17:16, Bruce Richardson:
> > > On Mon, Nov 16, 2020 at 03:50:31PM +0000, Juraj Linkeš wrote:
> > > > From: Thomas Monjalon <thomas@monjalon.net>
> > > > > 13/11/2020 15:31, Juraj Linkeš:
> > > > > > The current machine='default' build name is not descriptive. The
> > > > > > actual default build is machine='native'. Add an alternative
> > > > > > string which does the same build and better describes what we're
> > building:
> > > > > > machine='generic'. Leave machine='default' for backwards
> > compatibility.
> > > > >
> > > > > What?
> > > > >
> > > > > "generic" means... nothing.
> > > > >
> > > >
> > > > An absence of anything means nothing. Generic means "characteristic of
> > or relating to a class or group of things; not specific", which is pretty much
> > what we're looking for.
> > > >
> > > > > "default" should be the most common set of options to make a build
> > > > > work everywhere.
> > > >
> > > > What we want is a value of machine that would "be the most common
> > set of options to make a build work everywhere" and using the above
> > definition of generic, it fits very well.
> > > > The reason I said the actual default build is machine='native' is because
> > that's how the machine option is defined in meson_options.txt. It follows
> > from what default actually means - "a preselected option adopted by a
> > computer program or other mechanism when no alternative is specified by
> > the user or programmer". Default then means no user input, which means
> > machine='native', which means the default build is the default build.
> > > >
> > > > What ""default" should mean" looks like an attempt at redefining what
> > the word actually means and leads to confusion, in my experience. Hence an
> > attempt to remove the potential ambiguity.
> > > >
> > >
> > > I would tend to agree that "generic" is probably a better term than
> > > "default" for what we use it for here in the config.
> > 
> > In the past, we had a different definition with make config.
> > I am just trying to be consistent.
> > Even with meson, default means "minimal CPU instructions".
> > 
> > Example in devtools/test-meson-builds.sh:
> > "test compilation with minimal x86 instruction set"
> > is called build-x86-default.
> > 
> > In config/meson.build:
> > "
> > machine type 'default' is special, it defaults to the per arch agreed common
> > minimal baseline needed for DPDK.
> > That might not be the most optimized, but the most portable version while
> > still being able to support the CPU features required for DPDK.
> > This can be bumped up by the DPDK project, but it can never be an invariant
> > like 'native'
> > "
> > 
> > So, why this definition is called "generic" in meson Arm config?
> The explanation above is for a build type 'default'. Whereas meson by default builds for build type 'native'. Also when you look at the config/arm/meson.build the word 'default' was used where it was not related to the build type default. It created lot of confusion.
> 
> From the dictionary 'default' - "a preselected option adopted by a computer program or other mechanism when no alternative is specified by the user or programmer." But, if one had to do build of type default, they have to mention -Dmachine=default. If nothing is mentioned, it is a build type 'native', which does not go along with the definition of 'default'.
> 
> But for 'generic' - "characteristic of or relating to a class or group of things; not specific". IMO, it better suits the explanation you have provided above. So, separating this machine type to 'generic' to cover the same definition makes more sense.
> 
> However, 'default' is still supported for backward compatibility.

So? Are you going to change the DPDK definitions we had for years?
  
Bruce Richardson Nov. 17, 2020, 9:15 a.m. UTC | #7
On Tue, Nov 17, 2020 at 08:49:45AM +0100, Thomas Monjalon wrote:
> 17/11/2020 03:46, Honnappa Nagarahalli:
> > <snip>
> > 
> > > 
> > > 16/11/2020 17:16, Bruce Richardson:
> > > > On Mon, Nov 16, 2020 at 03:50:31PM +0000, Juraj Linkeš wrote:
> > > > > From: Thomas Monjalon <thomas@monjalon.net>
> > > > > > 13/11/2020 15:31, Juraj Linkeš:
> > > > > > > The current machine='default' build name is not descriptive. The
> > > > > > > actual default build is machine='native'. Add an alternative
> > > > > > > string which does the same build and better describes what we're
> > > building:
> > > > > > > machine='generic'. Leave machine='default' for backwards
> > > compatibility.
> > > > > >
> > > > > > What?
> > > > > >
> > > > > > "generic" means... nothing.
> > > > > >
> > > > >
> > > > > An absence of anything means nothing. Generic means "characteristic of
> > > or relating to a class or group of things; not specific", which is pretty much
> > > what we're looking for.
> > > > >
> > > > > > "default" should be the most common set of options to make a build
> > > > > > work everywhere.
> > > > >
> > > > > What we want is a value of machine that would "be the most common
> > > set of options to make a build work everywhere" and using the above
> > > definition of generic, it fits very well.
> > > > > The reason I said the actual default build is machine='native' is because
> > > that's how the machine option is defined in meson_options.txt. It follows
> > > from what default actually means - "a preselected option adopted by a
> > > computer program or other mechanism when no alternative is specified by
> > > the user or programmer". Default then means no user input, which means
> > > machine='native', which means the default build is the default build.
> > > > >
> > > > > What ""default" should mean" looks like an attempt at redefining what
> > > the word actually means and leads to confusion, in my experience. Hence an
> > > attempt to remove the potential ambiguity.
> > > > >
> > > >
> > > > I would tend to agree that "generic" is probably a better term than
> > > > "default" for what we use it for here in the config.
> > > 
> > > In the past, we had a different definition with make config.
> > > I am just trying to be consistent.
> > > Even with meson, default means "minimal CPU instructions".
> > > 
> > > Example in devtools/test-meson-builds.sh:
> > > "test compilation with minimal x86 instruction set"
> > > is called build-x86-default.
> > > 
> > > In config/meson.build:
> > > "
> > > machine type 'default' is special, it defaults to the per arch agreed common
> > > minimal baseline needed for DPDK.
> > > That might not be the most optimized, but the most portable version while
> > > still being able to support the CPU features required for DPDK.
> > > This can be bumped up by the DPDK project, but it can never be an invariant
> > > like 'native'
> > > "
> > > 
> > > So, why this definition is called "generic" in meson Arm config?
> > The explanation above is for a build type 'default'. Whereas meson by default builds for build type 'native'. Also when you look at the config/arm/meson.build the word 'default' was used where it was not related to the build type default. It created lot of confusion.
> > 
> > From the dictionary 'default' - "a preselected option adopted by a computer program or other mechanism when no alternative is specified by the user or programmer." But, if one had to do build of type default, they have to mention -Dmachine=default. If nothing is mentioned, it is a build type 'native', which does not go along with the definition of 'default'.
> > 
> > But for 'generic' - "characteristic of or relating to a class or group of things; not specific". IMO, it better suits the explanation you have provided above. So, separating this machine type to 'generic' to cover the same definition makes more sense.
> > 
> > However, 'default' is still supported for backward compatibility.
> 
> So? Are you going to change the DPDK definitions we had for years?
> 

I think we should, or at least support "generic" alongside it. Using the term
"default" for something that is not the default is confusing. It's also not
a good description of what the result is, since it's a generic binary for
the architecture, rather than a "default" one for the architecture.

/Bruce
  
Thomas Monjalon Nov. 17, 2020, 9:58 a.m. UTC | #8
17/11/2020 10:15, Bruce Richardson:
> On Tue, Nov 17, 2020 at 08:49:45AM +0100, Thomas Monjalon wrote:
> > 17/11/2020 03:46, Honnappa Nagarahalli:
> > > <snip>
> > > 
> > > > 
> > > > 16/11/2020 17:16, Bruce Richardson:
> > > > > On Mon, Nov 16, 2020 at 03:50:31PM +0000, Juraj Linkeš wrote:
> > > > > > From: Thomas Monjalon <thomas@monjalon.net>
> > > > > > > 13/11/2020 15:31, Juraj Linkeš:
> > > > > > > > The current machine='default' build name is not descriptive. The
> > > > > > > > actual default build is machine='native'. Add an alternative
> > > > > > > > string which does the same build and better describes what we're
> > > > building:
> > > > > > > > machine='generic'. Leave machine='default' for backwards
> > > > compatibility.
> > > > > > >
> > > > > > > What?
> > > > > > >
> > > > > > > "generic" means... nothing.
> > > > > > >
> > > > > >
> > > > > > An absence of anything means nothing. Generic means "characteristic of
> > > > or relating to a class or group of things; not specific", which is pretty much
> > > > what we're looking for.
> > > > > >
> > > > > > > "default" should be the most common set of options to make a build
> > > > > > > work everywhere.
> > > > > >
> > > > > > What we want is a value of machine that would "be the most common
> > > > set of options to make a build work everywhere" and using the above
> > > > definition of generic, it fits very well.
> > > > > > The reason I said the actual default build is machine='native' is because
> > > > that's how the machine option is defined in meson_options.txt. It follows
> > > > from what default actually means - "a preselected option adopted by a
> > > > computer program or other mechanism when no alternative is specified by
> > > > the user or programmer". Default then means no user input, which means
> > > > machine='native', which means the default build is the default build.
> > > > > >
> > > > > > What ""default" should mean" looks like an attempt at redefining what
> > > > the word actually means and leads to confusion, in my experience. Hence an
> > > > attempt to remove the potential ambiguity.
> > > > > >
> > > > >
> > > > > I would tend to agree that "generic" is probably a better term than
> > > > > "default" for what we use it for here in the config.
> > > > 
> > > > In the past, we had a different definition with make config.
> > > > I am just trying to be consistent.
> > > > Even with meson, default means "minimal CPU instructions".
> > > > 
> > > > Example in devtools/test-meson-builds.sh:
> > > > "test compilation with minimal x86 instruction set"
> > > > is called build-x86-default.
> > > > 
> > > > In config/meson.build:
> > > > "
> > > > machine type 'default' is special, it defaults to the per arch agreed common
> > > > minimal baseline needed for DPDK.
> > > > That might not be the most optimized, but the most portable version while
> > > > still being able to support the CPU features required for DPDK.
> > > > This can be bumped up by the DPDK project, but it can never be an invariant
> > > > like 'native'
> > > > "
> > > > 
> > > > So, why this definition is called "generic" in meson Arm config?
> > > The explanation above is for a build type 'default'. Whereas meson by default builds for build type 'native'. Also when you look at the config/arm/meson.build the word 'default' was used where it was not related to the build type default. It created lot of confusion.
> > > 
> > > From the dictionary 'default' - "a preselected option adopted by a computer program or other mechanism when no alternative is specified by the user or programmer." But, if one had to do build of type default, they have to mention -Dmachine=default. If nothing is mentioned, it is a build type 'native', which does not go along with the definition of 'default'.
> > > 
> > > But for 'generic' - "characteristic of or relating to a class or group of things; not specific". IMO, it better suits the explanation you have provided above. So, separating this machine type to 'generic' to cover the same definition makes more sense.
> > > 
> > > However, 'default' is still supported for backward compatibility.
> > 
> > So? Are you going to change the DPDK definitions we had for years?
> > 
> 
> I think we should, or at least support "generic" alongside it. Using the term
> "default" for something that is not the default is confusing. It's also not
> a good description of what the result is, since it's a generic binary for
> the architecture, rather than a "default" one for the architecture.

OK in this case, please do the patch which changes it everywhere,
not only for Arm. We can change our names as long as it is explained
and have some consistency.
  
Juraj Linkeš Nov. 18, 2020, 2:23 p.m. UTC | #9
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Tuesday, November 17, 2020 10:58 AM
> To: Bruce Richardson <bruce.richardson@intel.com>
> Cc: Juraj Linkeš <juraj.linkes@pantheon.tech>; Honnappa Nagarahalli
> <Honnappa.Nagarahalli@arm.com>; Ruifeng Wang
> <Ruifeng.Wang@arm.com>; Phil Yang <Phil.Yang@arm.com>;
> vcchunga@amazon.com; Dharmik Thakkar <Dharmik.Thakkar@arm.com>;
> jerinjacobk@gmail.com; hemant.agrawal@nxp.com; Ajit Khaparde
> (ajit.khaparde@broadcom.com) <ajit.khaparde@broadcom.com>;
> ferruh.yigit@intel.com; dev@dpdk.org; david.marchand@redhat.com; nd
> <nd@arm.com>
> Subject: Re: [dpdk-dev] [PATCH v12 01/14] build: alias default build as generic
> 
> 17/11/2020 10:15, Bruce Richardson:
> > On Tue, Nov 17, 2020 at 08:49:45AM +0100, Thomas Monjalon wrote:
> > > 17/11/2020 03:46, Honnappa Nagarahalli:
> > > > <snip>
> > > >
> > > > >
> > > > > 16/11/2020 17:16, Bruce Richardson:
> > > > > > On Mon, Nov 16, 2020 at 03:50:31PM +0000, Juraj Linkeš wrote:
> > > > > > > From: Thomas Monjalon <thomas@monjalon.net>
> > > > > > > > 13/11/2020 15:31, Juraj Linkeš:
> > > > > > > > > The current machine='default' build name is not
> > > > > > > > > descriptive. The actual default build is
> > > > > > > > > machine='native'. Add an alternative string which does
> > > > > > > > > the same build and better describes what we're
> > > > > building:
> > > > > > > > > machine='generic'. Leave machine='default' for backwards
> > > > > compatibility.
> > > > > > > >
> > > > > > > > What?
> > > > > > > >
> > > > > > > > "generic" means... nothing.
> > > > > > > >
> > > > > > >
> > > > > > > An absence of anything means nothing. Generic means
> > > > > > > "characteristic of
> > > > > or relating to a class or group of things; not specific", which
> > > > > is pretty much what we're looking for.
> > > > > > >
> > > > > > > > "default" should be the most common set of options to make
> > > > > > > > a build work everywhere.
> > > > > > >
> > > > > > > What we want is a value of machine that would "be the most
> > > > > > > common
> > > > > set of options to make a build work everywhere" and using the
> > > > > above definition of generic, it fits very well.
> > > > > > > The reason I said the actual default build is
> > > > > > > machine='native' is because
> > > > > that's how the machine option is defined in meson_options.txt.
> > > > > It follows from what default actually means - "a preselected
> > > > > option adopted by a computer program or other mechanism when no
> > > > > alternative is specified by the user or programmer". Default
> > > > > then means no user input, which means machine='native', which means
> the default build is the default build.
> > > > > > >
> > > > > > > What ""default" should mean" looks like an attempt at
> > > > > > > redefining what
> > > > > the word actually means and leads to confusion, in my
> > > > > experience. Hence an attempt to remove the potential ambiguity.
> > > > > > >
> > > > > >
> > > > > > I would tend to agree that "generic" is probably a better term
> > > > > > than "default" for what we use it for here in the config.
> > > > >
> > > > > In the past, we had a different definition with make config.
> > > > > I am just trying to be consistent.
> > > > > Even with meson, default means "minimal CPU instructions".
> > > > >
> > > > > Example in devtools/test-meson-builds.sh:
> > > > > "test compilation with minimal x86 instruction set"
> > > > > is called build-x86-default.
> > > > >
> > > > > In config/meson.build:
> > > > > "
> > > > > machine type 'default' is special, it defaults to the per arch
> > > > > agreed common minimal baseline needed for DPDK.
> > > > > That might not be the most optimized, but the most portable
> > > > > version while still being able to support the CPU features required for
> DPDK.
> > > > > This can be bumped up by the DPDK project, but it can never be
> > > > > an invariant like 'native'
> > > > > "
> > > > >
> > > > > So, why this definition is called "generic" in meson Arm config?
> > > > The explanation above is for a build type 'default'. Whereas meson by
> default builds for build type 'native'. Also when you look at the
> config/arm/meson.build the word 'default' was used where it was not related to
> the build type default. It created lot of confusion.
> > > >
> > > > From the dictionary 'default' - "a preselected option adopted by a
> computer program or other mechanism when no alternative is specified by the
> user or programmer." But, if one had to do build of type default, they have to
> mention -Dmachine=default. If nothing is mentioned, it is a build type 'native',
> which does not go along with the definition of 'default'.
> > > >
> > > > But for 'generic' - "characteristic of or relating to a class or group of things;
> not specific". IMO, it better suits the explanation you have provided above. So,
> separating this machine type to 'generic' to cover the same definition makes
> more sense.
> > > >
> > > > However, 'default' is still supported for backward compatibility.
> > >
> > > So? Are you going to change the DPDK definitions we had for years?
> > >
> >
> > I think we should, or at least support "generic" alongside it. Using
> > the term "default" for something that is not the default is confusing.
> > It's also not a good description of what the result is, since it's a
> > generic binary for the architecture, rather than a "default" one for the
> architecture.
> 
> OK in this case, please do the patch which changes it everywhere, not only for
> Arm. We can change our names as long as it is explained and have some
> consistency.
> 

Yes, I'll make a separate patchset for this. In this case the change also started out as arm specific and we made it arch agnostic over time.
  

Patch

diff --git a/config/arm/meson.build b/config/arm/meson.build
index 42b4e43c7..d4066ade8 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -1,12 +1,13 @@ 
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation.
 # Copyright(c) 2017 Cavium, Inc
+# Copyright(c) 2020 PANTHEON.tech s.r.o.
 
 # for checking defines we need to use the correct compiler flags
 march_opt = '-march=@0@'.format(machine)
 
 arm_force_native_march = false
-arm_force_default_march = (machine == 'default')
+arm_force_generic_march = (machine == 'generic')
 
 flags_common_default = [
 	# Accelarate rte_memcpy. Be sure to run unit test (memcpy_perf_autotest)
@@ -148,7 +149,7 @@  else
 	cmd_generic = ['generic', '', '', 'default', '']
 	cmd_output = cmd_generic # Set generic by default
 	machine_args = [] # Clear previous machine args
-	if arm_force_default_march and not meson.is_cross_build()
+	if arm_force_generic_march and not meson.is_cross_build()
 		machine = impl_generic
 		impl_pn = 'default'
 	elif not meson.is_cross_build()
diff --git a/config/meson.build b/config/meson.build
index a29693b88..04694b8ad 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -70,13 +70,14 @@  else
 	machine = get_option('machine')
 endif
 
-# machine type 'default' is special, it defaults to the per arch agreed common
-# minimal baseline needed for DPDK.
+# machine type 'generic' is special, it defaults to the per arch agreed common
+# minimal baseline needed for DPDK. Machine type 'default' is also supported
+# with the same meaning for backwards compatibility.
 # That might not be the most optimized, but the most portable version while
 # still being able to support the CPU features required for DPDK.
 # This can be bumped up by the DPDK project, but it can never be an
 # invariant like 'native'
-if machine == 'default'
+if machine == 'default' or machine == 'generic'
 	if host_machine.cpu_family().startswith('x86')
 		# matches the old pre-meson build systems default
 		machine = 'corei7'
@@ -84,7 +85,7 @@  if machine == 'default'
 		machine = 'armv7-a'
 	elif host_machine.cpu_family().startswith('aarch')
 		# arm64 manages defaults in config/arm/meson.build
-		machine = 'default'
+		machine = 'generic'
 	elif host_machine.cpu_family().startswith('ppc')
 		machine = 'power8'
 	endif
diff --git a/doc/guides/prog_guide/build-sdk-meson.rst b/doc/guides/prog_guide/build-sdk-meson.rst
index 3429e2647..c7e12eedf 100644
--- a/doc/guides/prog_guide/build-sdk-meson.rst
+++ b/doc/guides/prog_guide/build-sdk-meson.rst
@@ -85,7 +85,7 @@  Project-specific options are passed used -Doption=value::
 
 	meson -Denable_docs=true fullbuild  # build and install docs
 
-	meson -Dmachine=default  # use builder-independent baseline -march
+	meson -Dmachine=generic  # use builder-independent baseline -march
 
 	meson -Ddisable_drivers=event/*,net/tap  # disable tap driver and all
 					# eventdev PMDs for a smaller build
@@ -114,7 +114,7 @@  Examples of setting some of the same options using meson configure::
         re-scan from meson.
 
 .. note::
-        machine=default uses a config that works on all supported architectures
+        machine=generic uses a config that works on all supported architectures
         regardless of the capabilities of the machine where the build is happening.
 
 As well as those settings taken from ``meson configure``, other options
diff --git a/meson_options.txt b/meson_options.txt
index e384e6dbb..dd9b37f98 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -21,7 +21,7 @@  option('kernel_dir', type: 'string', value: '',
 option('lib_musdk_dir', type: 'string', value: '',
 	description: 'path to the MUSDK library installation directory')
 option('machine', type: 'string', value: 'native',
-	description: 'set the target machine type')
+	description: 'set the target machine type. Set to generic for a build usable on all machines of the build machine architecture, set to native to let the compiler pick the architecture of the build machine.')
 option('max_ethports', type: 'integer', value: 32,
 	description: 'maximum number of Ethernet devices')
 option('max_lcores', type: 'integer', value: 128,