X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=config%2Fmeson.build;h=43ab1131061571a67174048ffa091765c0f23323;hb=6735434917ab4af24063078b72d9ebd3b214b5de;hp=28a57f56fc0fbde56246653fe170052fdf7b407b;hpb=063c4c5fa0658e53d2187036532d1273acf5d645;p=dpdk.git diff --git a/config/meson.build b/config/meson.build index 28a57f56fc..43ab113106 100644 --- a/config/meson.build +++ b/config/meson.build @@ -14,6 +14,10 @@ foreach env:supported_exec_envs set_variable('is_' + env, exec_env == env) 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') + # set the major version, which might be used by drivers and libraries # depending on the configuration options pver = meson.project_version().split('.') @@ -31,8 +35,8 @@ abi_version = run_command(find_program('cat', 'more'), # sonames => librte_stable.so.20.0, librte_experimental.so.0.200 abi_va = abi_version.split('.') stable_so_version = abi_va.length() == 2 ? abi_va[0] : abi_va[0] + '.' + abi_va[1] -experimental_abi_version = '0.' + ''.join(abi_va) -experimental_so_version = '0.' + ''.join(stable_so_version.split('.')) +experimental_abi_version = '0.' + abi_va[0] + abi_va[1] + '.' + abi_va[2] +experimental_so_version = experimental_abi_version # extract all version information into the build configuration dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int()) @@ -108,11 +112,15 @@ dpdk_conf.set('RTE_TOOLCHAIN_' + toolchain.to_upper(), 1) dpdk_conf.set('RTE_ARCH_64', cc.sizeof('void *') == 8) -add_project_link_arguments('-Wl,--no-as-needed', language: 'c') +if not is_windows + add_project_link_arguments('-Wl,--no-as-needed', language: 'c') +endif -# use pthreads -add_project_link_arguments('-pthread', language: 'c') -dpdk_extra_ldflags += '-pthread' +# use pthreads if available for the platform +if not is_ms_linker + add_project_link_arguments('-pthread', language: 'c') + dpdk_extra_ldflags += '-pthread' +endif # on some OS, maths functions are in a separate library if cc.find_library('m', required : false).found() @@ -165,6 +173,13 @@ if pcap_dep.found() and cc.has_header('pcap.h', dependencies: pcap_dep) dpdk_extra_ldflags += '-lpcap' endif +# for clang 32-bit compiles we need libatomic for 64-bit atomic ops +if cc.get_id() == 'clang' and dpdk_conf.get('RTE_ARCH_64') == false + atomic_dep = cc.find_library('atomic', required: true) + add_project_link_arguments('-latomic', language: 'c') + dpdk_extra_ldflags += '-latomic' +endif + # add -include rte_config to cflags add_project_arguments('-include', 'rte_config.h', language: 'c') @@ -193,10 +208,20 @@ warning_flags = [ '-Wno-packed-not-aligned', '-Wno-missing-field-initializers' ] +if cc.get_id() == 'gcc' and cc.version().version_compare('>=10.0') +# FIXME: Bugzilla 396 + warning_flags += '-Wno-zero-length-bounds' +endif if not dpdk_conf.get('RTE_ARCH_64') # for 32-bit, don't warn about casting a 32-bit pointer to 64-bit int - it's fine!! warning_flags += '-Wno-pointer-to-int-cast' endif +if cc.get_id() == 'intel' + warning_ids = [188, 2203, 2279, 2557, 3179, 3656] + foreach i:warning_ids + warning_flags += '-diag-disable=@0@'.format(i) + endforeach +endif foreach arg: warning_flags if cc.has_argument(arg) add_project_arguments(arg, language: 'c') @@ -208,6 +233,7 @@ dpdk_conf.set('RTE_MAX_LCORE', get_option('max_lcores')) dpdk_conf.set('RTE_MAX_NUMA_NODES', get_option('max_numa_nodes')) dpdk_conf.set('RTE_MAX_ETHPORTS', get_option('max_ethports')) dpdk_conf.set('RTE_LIBEAL_USE_HPET', get_option('use_hpet')) +dpdk_conf.set('RTE_ENABLE_TRACE_FP', get_option('enable_trace_fp')) # values which have defaults which may be overridden dpdk_conf.set('RTE_MAX_VFIO_GROUPS', 64) dpdk_conf.set('RTE_DRIVER_MEMPOOL_BUCKET_SIZE_KB', 64) @@ -215,13 +241,6 @@ dpdk_conf.set('RTE_LIBRTE_DPAA2_USE_PHYS_IOVA', true) compile_time_cpuflags = [] -if host_machine.cpu_family().startswith('x86') - arch_subdir = 'x86' -elif host_machine.cpu_family().startswith('arm') or host_machine.cpu_family().startswith('aarch') - arch_subdir = 'arm' -elif host_machine.cpu_family().startswith('ppc') - arch_subdir = 'ppc_64' -endif subdir(arch_subdir) dpdk_conf.set('RTE_COMPILE_TIME_CPUFLAGS', ','.join(compile_time_cpuflags)) @@ -241,6 +260,16 @@ if is_freebsd add_project_arguments('-D__BSD_VISIBLE', language: 'c') endif +if is_windows + # Minimum supported API is Windows 7. + add_project_arguments('-D_WIN32_WINNT=0x0601', language: 'c') + + # Use MinGW-w64 stdio, because DPDK assumes ANSI-compliant formatting. + if cc.get_id() == 'gcc' + add_project_arguments('-D__USE_MINGW_ANSI_STDIO', language: 'c') + endif +endif + if get_option('b_lto') if cc.has_argument('-ffat-lto-objects') add_project_arguments('-ffat-lto-objects', language: 'c')