# Copyright(c) 2017 Intel Corporation.
# Copyright(c) 2017 Cavium, Inc
-arm_force_native_march = false
-
# common flags to all aarch64 builds, with lowest priority
flags_common = [
# Accelerate rte_memcpy. Be sure to run unit test (memcpy_perf_autotest)
['RTE_ARCH_ARM64', true],
['RTE_CACHE_LINE_SIZE', 128]
]
+native_machine_args = ['-mcpu=native']
## Part numbers are specific to Arm implementers
# implementer specific aarch64 flags have middle priority
}
part_number_config_arm = {
- 'native': {'machine_args': ['-march=native']},
'0xd03': {'machine_args': ['-mcpu=cortex-a53']},
'0xd04': {'machine_args': ['-mcpu=cortex-a35']},
'0xd07': {'machine_args': ['-mcpu=cortex-a57']},
['RTE_MAX_NUMA_NODES', 2]
],
'part_number_config': {
- 'native': {'machine_args': ['-march=native']},
'0xa1': {
'machine_args': ['-mcpu=thunderxt88'],
'flags': flags_part_number_thunderx
],
'part_number_config': {
'0x0': {'machine_args': ['-march=armv8-a+crc+crypto',
- '-mtune=emag']},
- 'native': {'machine_args': ['-march=native']}
+ '-mtune=emag']}
}
}
machine_args += '-mfpu=neon'
else
# aarch64 build
- if machine == 'default' and not meson.is_cross_build()
- # default build
- implementer_id = 'generic'
- part_number = 'generic'
- elif not meson.is_cross_build()
- # native build
- # The script returns ['Implementer', 'Variant', 'Architecture',
- # 'Primary Part number', 'Revision']
- detect_vendor = find_program(join_paths(
- meson.current_source_dir(), 'armv8_machine.py'))
- cmd = run_command(detect_vendor.path())
- if cmd.returncode() == 0
- cmd_output = cmd.stdout().to_lower().strip().split(' ')
- implementer_id = cmd_output[0]
- part_number = cmd_output[3]
+ use_native_machine_args = false
+ if not meson.is_cross_build()
+ if machine == 'default'
+ # default build
+ implementer_id = 'generic'
+ part_number = 'generic'
else
- error('Error when getting Arm Implementer ID and part number.')
- endif
- if arm_force_native_march == true
- part_number = 'native'
+ # native build
+ # The script returns ['Implementer', 'Variant', 'Architecture',
+ # 'Primary Part number', 'Revision']
+ detect_vendor = find_program(join_paths(
+ meson.current_source_dir(), 'armv8_machine.py'))
+ cmd = run_command(detect_vendor.path())
+ if cmd.returncode() == 0
+ cmd_output = cmd.stdout().to_lower().strip().split(' ')
+ implementer_id = cmd_output[0]
+ part_number = cmd_output[3]
+ else
+ error('Error when getting Arm Implementer ID and part number.')
+ endif
+ use_native_machine_args = true
endif
else
# cross build
# apply supported machine args
machine_args = [] # Clear previous machine args
- foreach flag: part_number_config['machine_args']
+ if use_native_machine_args
+ candidate_machine_args = native_machine_args
+ else
+ candidate_machine_args = part_number_config['machine_args']
+ endif
+ foreach flag: candidate_machine_args
if cc.has_argument(flag)
machine_args += flag
endif