All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tyler Retzlaff <roretzla@linux.microsoft.com>
To: dev@dpdk.org
Cc: Bruce Richardson <bruce.richardson@intel.com>,
	Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>,
	david.marchand@redhat.com, thomas@monjalon.net,
	Tyler Retzlaff <roretzla@linux.microsoft.com>
Subject: [PATCH v5 1/4] build: unblock the use of the MSVC compiler
Date: Wed, 16 Aug 2023 14:56:13 -0700	[thread overview]
Message-ID: <1692222976-2908-2-git-send-email-roretzla@linux.microsoft.com> (raw)
In-Reply-To: <1692222976-2908-1-git-send-email-roretzla@linux.microsoft.com>

Detect when MSVC toolset is available and tweak toolchain arguments
where the meson build system offers no abstraction.

Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build     | 23 +++++++++++++++--------
 config/x86/meson.build | 10 ++++++----
 lib/meson.build        | 13 ++++++++++---
 3 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index d822371..b6c7d48 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -16,7 +16,8 @@ endforeach
 
 # MS linker requires special treatment.
 # TODO: use cc.get_linker_id() with Meson >= 0.54
-is_ms_linker = is_windows and (cc.get_id() == 'clang')
+is_ms_compiler = is_windows and (cc.get_id() == 'msvc')
+is_ms_linker = is_windows and (cc.get_id() == 'clang' or is_ms_compiler)
 
 # set the major version, which might be used by drivers and libraries
 # depending on the configuration options
@@ -129,12 +130,14 @@ endif
 dpdk_conf.set('RTE_MACHINE', cpu_instruction_set)
 machine_args = []
 
-# ppc64 does not support -march= at all, use -mcpu and -mtune for that
-if host_machine.cpu_family().startswith('ppc')
-    machine_args += '-mcpu=' + cpu_instruction_set
-    machine_args += '-mtune=' + cpu_instruction_set
-else
-    machine_args += '-march=' + cpu_instruction_set
+if not is_ms_compiler
+    # ppc64 does not support -march= at all, use -mcpu and -mtune for that
+    if host_machine.cpu_family().startswith('ppc')
+        machine_args += '-mcpu=' + cpu_instruction_set
+        machine_args += '-mtune=' + cpu_instruction_set
+    else
+        machine_args += '-march=' + cpu_instruction_set
+    endif
 endif
 
 toolchain = cc.get_id()
@@ -253,7 +256,11 @@ if cc.get_id() == 'clang' and dpdk_conf.get('RTE_ARCH_64') == false
 endif
 
 # add -include rte_config to cflags
-add_project_arguments('-include', 'rte_config.h', language: 'c')
+if is_ms_compiler
+    add_project_arguments('/FI', 'rte_config.h', language: 'c')
+else
+    add_project_arguments('-include', 'rte_config.h', language: 'c')
+endif
 
 # enable extra warnings and disable any unwanted warnings
 # -Wall is added by default at warning level 1, and -Wextra
diff --git a/config/x86/meson.build b/config/x86/meson.build
index 54345c4..38cc1e3 100644
--- a/config/x86/meson.build
+++ b/config/x86/meson.build
@@ -24,10 +24,12 @@ if cc.has_argument('-mavx512f')
     endif
 endif
 
-# we require SSE4.2 for DPDK
-if cc.get_define('__SSE4_2__', args: machine_args) == ''
-    message('SSE 4.2 not enabled by default, explicitly enabling')
-    machine_args += '-msse4'
+if not is_ms_compiler
+    # we require SSE4.2 for DPDK
+    if cc.get_define('__SSE4_2__', args: machine_args) == ''
+        message('SSE 4.2 not enabled by default, explicitly enabling')
+        machine_args += '-msse4'
+    endif
 endif
 
 base_flags = ['SSE', 'SSE2', 'SSE3','SSSE3', 'SSE4_1', 'SSE4_2']
diff --git a/lib/meson.build b/lib/meson.build
index 92cbd6b..7da3698 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -230,9 +230,16 @@ foreach l:libraries
                 output: '@0@_exports.def'.format(libname))
         lk_deps += [def_file]
 
-        lk_args = ['-Wl,/def:' + def_file.full_path()]
-        if meson.version().version_compare('<0.54.0')
-            lk_args += ['-Wl,/implib:lib\\librte_' + l + '.dll.a']
+        if is_ms_compiler
+            lk_args = ['/def:' + def_file.full_path()]
+            if meson.version().version_compare('<0.54.0')
+                lk_args += ['/implib:lib\\librte_' + l + '.dll.a']
+            endif
+        else
+            lk_args = ['-Wl,/def:' + def_file.full_path()]
+            if meson.version().version_compare('<0.54.0')
+                lk_args += ['-Wl,/implib:lib\\librte_' + l + '.dll.a']
+            endif
         endif
     else
         if is_windows
-- 
1.8.3.1


  reply	other threads:[~2023-08-16 21:56 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-25 19:25 [PATCH 0/3] unblock the use of the MSVC compiler Tyler Retzlaff
2023-01-25 19:25 ` [PATCH 1/3] build: " Tyler Retzlaff
2023-01-26 10:07   ` Bruce Richardson
2023-01-25 19:25 ` [PATCH 2/3] build: determine execution environment at config time Tyler Retzlaff
2023-01-26 10:09   ` Bruce Richardson
2023-01-25 19:25 ` [PATCH 3/3] build: limit what is built when using MSVC compiler Tyler Retzlaff
2023-01-26 11:10   ` Bruce Richardson
2023-01-26 17:28     ` Tyler Retzlaff
2023-01-26 17:34       ` Bruce Richardson
2023-01-26 17:36         ` Tyler Retzlaff
2023-01-26 18:03 ` [PATCH v2 0/3] unblock the use of the " Tyler Retzlaff
2023-01-26 18:03   ` [PATCH v2 1/3] build: " Tyler Retzlaff
2023-01-26 18:03   ` [PATCH v2 2/3] build: determine execution environment at config time Tyler Retzlaff
2023-01-26 18:03   ` [PATCH v2 3/3] build: limit what is built when using MSVC compiler Tyler Retzlaff
2023-01-26 18:18     ` Bruce Richardson
2023-01-26 18:05   ` [PATCH v2 0/3] unblock the use of the " Tyler Retzlaff
2023-04-25 20:08 ` [PATCH v3 0/4] enable " Tyler Retzlaff
2023-04-25 20:08   ` [PATCH v3 1/4] build: unblock the " Tyler Retzlaff
2023-08-11 13:31     ` David Marchand
2023-04-25 20:08   ` [PATCH v3 2/4] build: determine execution environment at config time Tyler Retzlaff
2023-04-25 20:08   ` [PATCH v3 3/4] build: limit what is built when using MSVC compiler Tyler Retzlaff
2023-08-11 13:31     ` David Marchand
2023-04-25 20:08   ` [PATCH v3 4/4] build: enable MSVC specific compiler options Tyler Retzlaff
2023-08-11 18:24 ` [PATCH v4 0/4] enable use of the MSVC compiler Tyler Retzlaff
2023-08-11 18:24   ` [PATCH v4 1/4] build: unblock the " Tyler Retzlaff
2023-08-14  8:27     ` Bruce Richardson
2023-08-14  9:07       ` Dmitry Kozlyuk
2023-08-14  9:12         ` Bruce Richardson
2023-08-11 18:24   ` [PATCH v4 2/4] build: determine execution environment at config time Tyler Retzlaff
2023-08-11 18:24   ` [PATCH v4 3/4] build: limit what is built when using MSVC compiler Tyler Retzlaff
2023-08-11 18:26     ` Tyler Retzlaff
2023-08-11 18:24   ` [PATCH v4 4/4] build: enable MSVC specific compiler options Tyler Retzlaff
2023-08-14  8:30     ` Bruce Richardson
2023-08-14 16:10       ` Tyler Retzlaff
2023-08-14 16:46         ` Bruce Richardson
2023-08-14 18:28           ` Morten Brørup
2023-08-15 13:21     ` David Marchand
2023-08-16 21:56 ` [PATCH v5 0/4] enable use of the MSVC compiler Tyler Retzlaff
2023-08-16 21:56   ` Tyler Retzlaff [this message]
2023-08-16 21:56   ` [PATCH v5 2/4] build: determine execution environment at config time Tyler Retzlaff
2023-08-16 21:56   ` [PATCH v5 3/4] build: limit what is built when using MSVC compiler Tyler Retzlaff
2023-08-16 21:56   ` [PATCH v5 4/4] build: enable MSVC specific compiler options Tyler Retzlaff
2023-08-17  8:33     ` Bruce Richardson
2023-08-25  8:43   ` [PATCH v5 0/4] enable use of the MSVC compiler David Marchand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1692222976-2908-2-git-send-email-roretzla@linux.microsoft.com \
    --to=roretzla@linux.microsoft.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=konstantin.v.ananyev@yandex.ru \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.