diff options
| author | Tyler Retzlaff <[email protected]> | 2023-08-16 14:56:13 -0700 |
|---|---|---|
| committer | David Marchand <[email protected]> | 2023-08-25 10:52:31 +0200 |
| commit | e5c42402cdda047bb7b00154b4966a009d662753 (patch) | |
| tree | db624bf27dd281070ac88406b6d88fbeda4e7a3b | |
| parent | 9d32bf8839b99fed3ac41f3ed1a6855dc9876954 (diff) | |
build: unblock the MSVC compiler
Detect when MSVC toolset is available and tweak toolchain arguments
where the meson build system offers no abstraction.
Signed-off-by: Tyler Retzlaff <[email protected]>
Acked-by: Bruce Richardson <[email protected]>
| -rw-r--r-- | config/meson.build | 23 | ||||
| -rw-r--r-- | config/x86/meson.build | 10 | ||||
| -rw-r--r-- | devtools/words-case.txt | 1 | ||||
| -rw-r--r-- | lib/meson.build | 13 |
4 files changed, 32 insertions, 15 deletions
diff --git a/config/meson.build b/config/meson.build index f606beb798..821a1c3663 100644 --- a/config/meson.build +++ b/config/meson.build @@ -24,7 +24,8 @@ dpdk_conf.set('RTE_EXEC_ENV_' + exec_env.to_upper(), 1) # 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 @@ -137,12 +138,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() @@ -261,7 +264,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 b2315c051f..812bbd6669 100644 --- a/config/x86/meson.build +++ b/config/x86/meson.build @@ -27,10 +27,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/devtools/words-case.txt b/devtools/words-case.txt index 0f005796af..0200741ed8 100644 --- a/devtools/words-case.txt +++ b/devtools/words-case.txt @@ -54,6 +54,7 @@ MPU MSI MSI-X MSS +MSVC MTU NEON Netlink diff --git a/lib/meson.build b/lib/meson.build index 1a01bfde4d..c81baf1800 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -267,9 +267,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 |
