[v5,4/4] build: enable MSVC specific compiler options

Message ID 1692222976-2908-5-git-send-email-roretzla@linux.microsoft.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series enable use of the MSVC compiler |

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/github-robot: build success github build: passed
ci/iol-compile-amd64-testing success Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/Intel-compilation warning apply issues

Commit Message

Tyler Retzlaff Aug. 16, 2023, 9:56 p.m. UTC
  * Enable optional use of C11 atomics support.
* Enable use of C23 typeof operator.
* Explicitly force intrinsics when building with MSVC.
* Disable MSVC C runtime checks.

Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
---
 config/meson.build | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
  

Comments

Bruce Richardson Aug. 17, 2023, 8:33 a.m. UTC | #1
On Wed, Aug 16, 2023 at 02:56:16PM -0700, Tyler Retzlaff wrote:
> * Enable optional use of C11 atomics support.
> * Enable use of C23 typeof operator.
> * Explicitly force intrinsics when building with MSVC.
> * Disable MSVC C runtime checks.
> 
> Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
  

Patch

diff --git a/config/meson.build b/config/meson.build
index 821a1c3..7a04347 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -27,6 +27,22 @@  dpdk_conf.set('RTE_EXEC_ENV_' + exec_env.to_upper(), 1)
 is_ms_compiler = is_windows and (cc.get_id() == 'msvc')
 is_ms_linker = is_windows and (cc.get_id() == 'clang' or is_ms_compiler)
 
+if is_ms_compiler
+    # force the use of intrinsics the MSVC compiler (except x86)
+    # does not support inline assembly
+    dpdk_conf.set('RTE_FORCE_INTRINSICS', 1)
+
+    # suppress warnings raised for using standard library functions
+    # the MSVC compiler regards as unsafe but are used by DPDK
+    dpdk_conf.set('_CRT_SECURE_NO_WARNINGS', 1)
+
+    # enable non-locking atomic operations
+    add_project_arguments('/experimental:c11atomics', language: 'c')
+
+    # enable typeof operator
+    add_project_arguments('/d1experimental:typeof', language: 'c')
+endif
+
 # set the major version, which might be used by drivers and libraries
 # depending on the configuration options
 pver = meson.project_version().split('.')