config/arm: isolate generic build
Use generic configuration for the only build where it makes sense - the generic build. For other builds, if we don't know either of implementer ID or part number, the build is not supported. Add part numbers to cross files where fallback to generic configuration is assumed. Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Acked-by: Jerin Jacob <jerinj@marvell.com> Tested-by: Jerin Jacob <jerinj@marvell.com> Tested-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Tested-by: Vimal Chungath <vcchunga@amazon.com> Tested-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
This commit is contained in:
parent
2aea8000c3
commit
9ca2f16faa
@ -15,3 +15,4 @@ endian = 'little'
|
||||
|
||||
[properties]
|
||||
implementer_id = '0x56'
|
||||
part_number = '0xd08'
|
||||
|
@ -15,3 +15,4 @@ endian = 'little'
|
||||
|
||||
[properties]
|
||||
implementer_id = 'dpaa'
|
||||
part_number = '0xd08'
|
||||
|
@ -14,3 +14,4 @@ endian = 'little'
|
||||
|
||||
[properties]
|
||||
implementer_id = '0x50'
|
||||
part_number = '0x0'
|
||||
|
@ -14,3 +14,4 @@ endian = 'little'
|
||||
|
||||
[properties]
|
||||
implementer_id = '0x43'
|
||||
part_number = '0xa1'
|
@ -46,8 +46,6 @@ implementer_generic = {
|
||||
}
|
||||
|
||||
part_number_config_arm = {
|
||||
'generic': {'machine_args': ['-march=armv8-a+crc',
|
||||
'-moutline-atomics']},
|
||||
'native': {'machine_args': ['-march=native']},
|
||||
'0xd03': {'machine_args': ['-mcpu=cortex-a53']},
|
||||
'0xd04': {'machine_args': ['-mcpu=cortex-a35']},
|
||||
@ -103,8 +101,6 @@ implementer_cavium = {
|
||||
['RTE_MAX_NUMA_NODES', 2]
|
||||
],
|
||||
'part_number_config': {
|
||||
'generic': {'machine_args': ['-march=armv8-a+crc+crypto',
|
||||
'-mcpu=thunderx']},
|
||||
'native': {'machine_args': ['-march=native']},
|
||||
'0xa1': {
|
||||
'machine_args': ['-mcpu=thunderxt88'],
|
||||
@ -154,8 +150,8 @@ implementer_ampere = {
|
||||
['RTE_MAX_NUMA_NODES', 1]
|
||||
],
|
||||
'part_number_config': {
|
||||
'generic': {'machine_args': ['-march=armv8-a+crc+crypto',
|
||||
'-mtune=emag']},
|
||||
'0x0': {'machine_args': ['-march=armv8-a+crc+crypto',
|
||||
'-mtune=emag']},
|
||||
'native': {'machine_args': ['-march=native']}
|
||||
}
|
||||
}
|
||||
@ -205,10 +201,9 @@ if dpdk_conf.get('RTE_ARCH_32')
|
||||
machine_args += '-mfpu=neon'
|
||||
else
|
||||
# aarch64 build
|
||||
implementer_id = 'generic'
|
||||
if machine == 'default' and not meson.is_cross_build()
|
||||
# default build
|
||||
implementer_config = implementer['generic']
|
||||
implementer_id = 'generic'
|
||||
part_number = 'generic'
|
||||
elif not meson.is_cross_build()
|
||||
# native build
|
||||
@ -221,21 +216,24 @@ else
|
||||
cmd_output = cmd.stdout().to_lower().strip().split(' ')
|
||||
implementer_id = cmd_output[0]
|
||||
part_number = cmd_output[3]
|
||||
endif
|
||||
# Set to generic if variable is not found
|
||||
implementer_config = implementers.get(implementer_id, ['generic'])
|
||||
if implementer_config[0] == 'generic'
|
||||
implementer_config = implementer['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'
|
||||
endif
|
||||
else
|
||||
# cross build
|
||||
implementer_id = meson.get_cross_property('implementer_id', 'generic')
|
||||
part_number = meson.get_cross_property('part_number', 'generic')
|
||||
implementer_config = implementers.get(implementer_id)
|
||||
implementer_id = meson.get_cross_property('implementer_id')
|
||||
part_number = meson.get_cross_property('part_number')
|
||||
endif
|
||||
|
||||
if implementers.has_key(implementer_id)
|
||||
implementer_config = implementers[implementer_id]
|
||||
else
|
||||
error('Unsupported Arm implementer: @0@. '.format(implementer_id) +
|
||||
'Please add support for it or use the generic ' +
|
||||
'(-Dmachine=generic) build.')
|
||||
endif
|
||||
|
||||
message('Arm implementer: ' + implementer_config['description'])
|
||||
@ -245,15 +243,12 @@ else
|
||||
if part_number_config.has_key(part_number)
|
||||
# use the specified part_number machine args if found
|
||||
part_number_config = part_number_config[part_number]
|
||||
elif not meson.is_cross_build()
|
||||
# default to generic machine args if part_number is not found
|
||||
# and not forcing native machine args
|
||||
# but don't default in cross-builds; if part_number is specified
|
||||
# incorrectly in a cross-file, it needs to be fixed there
|
||||
part_number_config = part_number_config['generic']
|
||||
else
|
||||
# doing cross build and part number is not in part_number_config
|
||||
error('Cross build part number 0@0 not found.'.format(part_number))
|
||||
# unknown part number
|
||||
error('Unsupported part number @0@ of implementer @1@. '
|
||||
.format(part_number, implementer_id) +
|
||||
'Please add support for it or use the generic ' +
|
||||
'(-Dmachine=generic) build.')
|
||||
endif
|
||||
|
||||
# use default flags with implementer flags
|
||||
|
@ -114,8 +114,10 @@ you may use various combinations of implementer/part number::
|
||||
'0x56': Marvell ARMADA
|
||||
'dpaa': NXP DPAA
|
||||
|
||||
Supported part_numbers for generic, 0x41, 0x56, dpaa:
|
||||
'generic': valid for all armv8-a architectures (default value)
|
||||
Supported part_numbers for generic:
|
||||
'generic': valid for all armv8-a architectures (unoptimized portable build)
|
||||
|
||||
Supported part_numbers for 0x41, 0x56, dpaa:
|
||||
'0xd03': cortex-a53
|
||||
'0xd04': cortex-a35
|
||||
'0xd09': cortex-a73
|
||||
@ -124,7 +126,6 @@ you may use various combinations of implementer/part number::
|
||||
'0xd0c': neoverse-n1
|
||||
|
||||
Supported part_numbers for 0x43:
|
||||
'generic': valid for all Cavium builds
|
||||
'0xa1': thunderxt88
|
||||
'0xa2': thunderxt81
|
||||
'0xa3': thunderxt83
|
||||
@ -132,4 +133,4 @@ you may use various combinations of implementer/part number::
|
||||
'0xb2': octeontx2
|
||||
|
||||
Supported part_numbers for 0x50:
|
||||
'generic': valid for all Ampere builds
|
||||
'0x0': emag
|
||||
|
Loading…
Reference in New Issue
Block a user