[v2] build: set rte toolchain macros from predefined macros

Message ID 1704240675-3964-1-git-send-email-roretzla@linux.microsoft.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series [v2] build: set rte toolchain macros from predefined macros |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/github-robot: build success github build: passed
ci/intel-Testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-compile-amd64-testing success Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/intel-Functional success Functional PASS

Commit Message

Tyler Retzlaff Jan. 3, 2024, 12:11 a.m. UTC
  Stop writing RTE_TOOLCHAIN_XXX macros to rte_build_config.h. When an
application builds it doesn't necessarily use the same toolchain that
DPDK was built with.

Instead evaluate toolchain predefined macros and define
RTE_TOOLCHAIN_XXX macros as appropriate each time rte_config.h is
preprocessed.

Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
---

v2:
  * use defined(macro) to correctly test for predefined macros

 config/meson.build  |  2 --
 config/rte_config.h | 11 +++++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)
  

Comments

Bruce Richardson Jan. 8, 2024, 11:18 a.m. UTC | #1
On Tue, Jan 02, 2024 at 04:11:15PM -0800, Tyler Retzlaff wrote:
> Stop writing RTE_TOOLCHAIN_XXX macros to rte_build_config.h. When an
> application builds it doesn't necessarily use the same toolchain that
> DPDK was built with.
> 
> Instead evaluate toolchain predefined macros and define
> RTE_TOOLCHAIN_XXX macros as appropriate each time rte_config.h is
> preprocessed.
> 
> Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>

I don't see an issue with doing this.

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

> ---
> 
> v2:
>   * use defined(macro) to correctly test for predefined macros
> 
>  config/meson.build  |  2 --
>  config/rte_config.h | 11 +++++++++++
>  2 files changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/config/meson.build b/config/meson.build
> index a9ccd56..0c3550e 100644
> --- a/config/meson.build
> +++ b/config/meson.build
> @@ -180,8 +180,6 @@ if not is_ms_compiler
>  endif
>  
>  toolchain = cc.get_id()
> -dpdk_conf.set_quoted('RTE_TOOLCHAIN', toolchain)
> -dpdk_conf.set('RTE_TOOLCHAIN_' + toolchain.to_upper().underscorify(), 1)
>  
>  dpdk_conf.set('RTE_ARCH_64', cc.sizeof('void *') == 8)
>  dpdk_conf.set('RTE_ARCH_32', cc.sizeof('void *') == 4)
> diff --git a/config/rte_config.h b/config/rte_config.h
> index da265d7..d743a5c 100644
> --- a/config/rte_config.h
> +++ b/config/rte_config.h
> @@ -14,6 +14,17 @@
>  
>  #include <rte_build_config.h>
>  
> +#if defined(__clang__)
> +#define RTE_TOOLCHAIN "clang"
> +#define RTE_TOOLCHAIN_CLANG 1
> +#elif defined(__GNUC__)
> +#define RTE_TOOLCHAIN "gcc"
> +#define RTE_TOOLCHAIN_GCC 1
> +#elif defined(_MSC_VER)
> +#define RTE_TOOLCHAIN "msvc"
> +#define RTE_TOOLCHAIN_MSVC 1
> +#endif
> +
>  /* legacy defines */
>  #ifdef RTE_EXEC_ENV_LINUX
>  #define RTE_EXEC_ENV_LINUXAPP 1
> -- 
> 1.8.3.1
>
  
Thomas Monjalon Feb. 19, 2024, 1:51 a.m. UTC | #2
08/01/2024 12:18, Bruce Richardson:
> On Tue, Jan 02, 2024 at 04:11:15PM -0800, Tyler Retzlaff wrote:
> > Stop writing RTE_TOOLCHAIN_XXX macros to rte_build_config.h. When an
> > application builds it doesn't necessarily use the same toolchain that
> > DPDK was built with.
> > 
> > Instead evaluate toolchain predefined macros and define
> > RTE_TOOLCHAIN_XXX macros as appropriate each time rte_config.h is
> > preprocessed.
> > 
> > Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> 
> I don't see an issue with doing this.
> 
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>

Applied, thanks.
  

Patch

diff --git a/config/meson.build b/config/meson.build
index a9ccd56..0c3550e 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -180,8 +180,6 @@  if not is_ms_compiler
 endif
 
 toolchain = cc.get_id()
-dpdk_conf.set_quoted('RTE_TOOLCHAIN', toolchain)
-dpdk_conf.set('RTE_TOOLCHAIN_' + toolchain.to_upper().underscorify(), 1)
 
 dpdk_conf.set('RTE_ARCH_64', cc.sizeof('void *') == 8)
 dpdk_conf.set('RTE_ARCH_32', cc.sizeof('void *') == 4)
diff --git a/config/rte_config.h b/config/rte_config.h
index da265d7..d743a5c 100644
--- a/config/rte_config.h
+++ b/config/rte_config.h
@@ -14,6 +14,17 @@ 
 
 #include <rte_build_config.h>
 
+#if defined(__clang__)
+#define RTE_TOOLCHAIN "clang"
+#define RTE_TOOLCHAIN_CLANG 1
+#elif defined(__GNUC__)
+#define RTE_TOOLCHAIN "gcc"
+#define RTE_TOOLCHAIN_GCC 1
+#elif defined(_MSC_VER)
+#define RTE_TOOLCHAIN "msvc"
+#define RTE_TOOLCHAIN_MSVC 1
+#endif
+
 /* legacy defines */
 #ifdef RTE_EXEC_ENV_LINUX
 #define RTE_EXEC_ENV_LINUXAPP 1