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 v4 1/4] build: unblock the use of the MSVC compiler
Date: Fri, 11 Aug 2023 11:24:44 -0700 [thread overview]
Message-ID: <1691778287-15746-2-git-send-email-roretzla@linux.microsoft.com> (raw)
In-Reply-To: <1691778287-15746-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
next prev parent reply other threads:[~2023-08-11 18:25 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 ` Tyler Retzlaff [this message]
2023-08-14 8:27 ` [PATCH v4 1/4] build: unblock the " 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 ` [PATCH v5 1/4] build: unblock the " Tyler Retzlaff
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=1691778287-15746-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.