[v5,1/4] mk: introduce helper to check valid compiler argument

Message ID 20190224181041.27127-1-jerinj@marvell.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series [v5,1/4] mk: introduce helper to check valid compiler argument |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS
ci/Intel-compilation success Compilation OK

Commit Message

Jerin Jacob Kollanukkaran Feb. 24, 2019, 6:11 p.m. UTC
  Introduce rte_cc_has_argument() Makefile helper to
check a given argument is support by the compiler.

Example Usage:

include $(RTE_SDK)/mk/rte.helper.mk
MACHINE_CFLAGS += $(call rte_cc_has_argument, -mcpu=octeontx2)

This would allow adding -mcpu=octeontx2 in MACHINE_CFLAGS
if it is only supported by the compiler. The use case for such
scheme is to enable the mcpu optimization if the compiler
supports else it needs to compile the source code without
any errors.

This patch also moves inclusion of toolchain's rte.vars.mk
to before the machine's rte.vars.mk inclusion to make
correct CC available for the cross compile case.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---

Change history of this series:

v2 Changes:
 - Add meson build support.

v3 Changes:
 - Squash meson build support into config support for thunderx2/octeontx2.

v4 Changes:
 - Fix incorrect signoff marrvell -> marvell.

v5 Changes:
 - Fix incorrect meson flag parsing(Phil Yang)
 - Squash meson cross build patch(5/5) into configuration update patches for
 thunderx2(3/5) and octeontx2(4/5)(Thomas)
 - Changed octeontx2's march as armv8-a and added the extension required
   instead of armv8-2a(Phil Yang)
 - Improved rte_cc_has_argument() implementaion by removing the temp
   file(Thomas)

---
 mk/rte.helper.mk              | 10 ++++++++++
 mk/target/generic/rte.vars.mk | 22 +++++++++++-----------
 2 files changed, 21 insertions(+), 11 deletions(-)
 create mode 100644 mk/rte.helper.mk
  

Comments

Phil Yang March 21, 2019, 10:13 a.m. UTC | #1
> -----Original Message-----
> From: Jerin Jacob Kollanukkaran <jerinj@marvell.com>
> Sent: Monday, February 25, 2019 2:11 AM
> To: thomas@monjalon.net
> Cc: dev@dpdk.org; Phil Yang (Arm Technology China) <Phil.Yang@arm.com>;
> bruce.richardson@intel.com; jerinj@marvell.com; Pavan Nikhilesh
> Bhagavatula <pbhagavatula@marvell.com>
> Subject: [dpdk-dev] [PATCH v5 1/4] mk: introduce helper to check valid
> compiler argument
> 
> Introduce rte_cc_has_argument() Makefile helper to check a given argument is
> support by the compiler.
> 
> Example Usage:
> 
> include $(RTE_SDK)/mk/rte.helper.mk
> MACHINE_CFLAGS += $(call rte_cc_has_argument, -mcpu=octeontx2)
> 
> This would allow adding -mcpu=octeontx2 in MACHINE_CFLAGS if it is only
> supported by the compiler. The use case for such scheme is to enable the
> mcpu optimization if the compiler supports else it needs to compile the
> source code without any errors.
> 
> This patch also moves inclusion of toolchain's rte.vars.mk to before the
> machine's rte.vars.mk inclusion to make correct CC available for the cross
> compile case.
> 
> Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
> ---
> 
> Change history of this series:
> 
> v2 Changes:
>  - Add meson build support.
> 
> v3 Changes:
>  - Squash meson build support into config support for thunderx2/octeontx2.
> 
> v4 Changes:
>  - Fix incorrect signoff marrvell -> marvell.
> 
> v5 Changes:
>  - Fix incorrect meson flag parsing(Phil Yang)
>  - Squash meson cross build patch(5/5) into configuration update patches for
>  thunderx2(3/5) and octeontx2(4/5)(Thomas)
>  - Changed octeontx2's march as armv8-a and added the extension required
>    instead of armv8-2a(Phil Yang)
>  - Improved rte_cc_has_argument() implementaion by removing the temp
>    file(Thomas)
> 
> ---
>  mk/rte.helper.mk              | 10 ++++++++++
>  mk/target/generic/rte.vars.mk | 22 +++++++++++-----------
>  2 files changed, 21 insertions(+), 11 deletions(-)  create mode 100644
> mk/rte.helper.mk
> 
> diff --git a/mk/rte.helper.mk b/mk/rte.helper.mk new file mode 100644 index
> 000000000..6e7fd03d7
> --- /dev/null
> +++ b/mk/rte.helper.mk
> @@ -0,0 +1,10 @@
> +# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Marvell
> +International Ltd
> +
> +# rte_cc_has_argument
> +# Usage: MACHINE_CFLAGS += $(call rte_cc_has_argument, -mno-avx512f) #
> +Return the argument if the argument is supported by the compiler.
> +#
> +define rte_cc_has_argument
> +	$(shell $(CC) -E $(1) -xc /dev/null 1>/dev/null 2>/dev/null && echo
> +$(1)) endef
> diff --git a/mk/target/generic/rte.vars.mk b/mk/target/generic/rte.vars.mk
> index dd149acc9..25a578ad7 100644
> --- a/mk/target/generic/rte.vars.mk
> +++ b/mk/target/generic/rte.vars.mk
> @@ -7,6 +7,17 @@
>  # executive environment.
>  #
> 
> +#
> +# toolchain:
> +#
> +#   - define CC, LD, AR, AS, ...
> +#   - define TOOLCHAIN_CFLAGS variable (overridden by cmdline value)
> +#   - define TOOLCHAIN_LDFLAGS variable (overridden by cmdline value)
> +#   - define TOOLCHAIN_ASFLAGS variable (overridden by cmdline value)
> +#   - may override any previously defined variable
> +#
> +include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.vars.mk
> +
>  #
>  # machine:
>  #
> @@ -45,17 +56,6 @@ endif
>  #
>  include $(RTE_SDK)/mk/arch/$(RTE_ARCH)/rte.vars.mk
> 
> -#
> -# toolchain:
> -#
> -#   - define CC, LD, AR, AS, ...
> -#   - define TOOLCHAIN_CFLAGS variable (overridden by cmdline value)
> -#   - define TOOLCHAIN_LDFLAGS variable (overridden by cmdline value)
> -#   - define TOOLCHAIN_ASFLAGS variable (overridden by cmdline value)
> -#   - may override any previously defined variable
> -#
> -include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.vars.mk
> -
>  #
>  # exec-env:
>  #
> --
> 2.20.1

Reviewed-by: Phil Yang <phil.yang@arm.com>
For this patch set.

Thanks,
Phil
  

Patch

diff --git a/mk/rte.helper.mk b/mk/rte.helper.mk
new file mode 100644
index 000000000..6e7fd03d7
--- /dev/null
+++ b/mk/rte.helper.mk
@@ -0,0 +1,10 @@ 
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Marvell International Ltd
+
+# rte_cc_has_argument
+# Usage: MACHINE_CFLAGS += $(call rte_cc_has_argument, -mno-avx512f)
+# Return the argument if the argument is supported by the compiler.
+#
+define rte_cc_has_argument
+	$(shell $(CC) -E $(1) -xc /dev/null 1>/dev/null 2>/dev/null && echo $(1))
+endef
diff --git a/mk/target/generic/rte.vars.mk b/mk/target/generic/rte.vars.mk
index dd149acc9..25a578ad7 100644
--- a/mk/target/generic/rte.vars.mk
+++ b/mk/target/generic/rte.vars.mk
@@ -7,6 +7,17 @@ 
 # executive environment.
 #
 
+#
+# toolchain:
+#
+#   - define CC, LD, AR, AS, ...
+#   - define TOOLCHAIN_CFLAGS variable (overridden by cmdline value)
+#   - define TOOLCHAIN_LDFLAGS variable (overridden by cmdline value)
+#   - define TOOLCHAIN_ASFLAGS variable (overridden by cmdline value)
+#   - may override any previously defined variable
+#
+include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.vars.mk
+
 #
 # machine:
 #
@@ -45,17 +56,6 @@  endif
 #
 include $(RTE_SDK)/mk/arch/$(RTE_ARCH)/rte.vars.mk
 
-#
-# toolchain:
-#
-#   - define CC, LD, AR, AS, ...
-#   - define TOOLCHAIN_CFLAGS variable (overridden by cmdline value)
-#   - define TOOLCHAIN_LDFLAGS variable (overridden by cmdline value)
-#   - define TOOLCHAIN_ASFLAGS variable (overridden by cmdline value)
-#   - may override any previously defined variable
-#
-include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.vars.mk
-
 #
 # exec-env:
 #