@@ -22,8 +22,11 @@ endian = 'little'
# 'dpaa': NXP DPAA
implementer_id = 'generic'
-# 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)
+part_number = 'generic'
+
+# Supported part_numbers for 0x41, 0x56, dpaa:
# '0xd03': cortex-a53
# '0xd04': cortex-a35
# '0xd05': cortex-a55
@@ -33,10 +36,8 @@ implementer_id = 'generic'
# '0xd0a': cortex-a75
# '0xd0b': cortex-a76
# '0xd0c': neoverse-n1
-part_number = 'generic'
# Supported part_numbers for 0x43:
-# 'generic': valid for all Cavium builds
# '0xa1': thunderxt88
# '0xa2': thunderxt81
# '0xa3': thunderxt83
@@ -44,4 +45,4 @@ part_number = 'generic'
# '0xb2': octeontx2
# Supported part_numbers for 0x50:
-# 'generic': valid for all Ampere builds
+# '0x0': emag
@@ -14,3 +14,4 @@ endian = 'little'
[properties]
implementer_id = '0x50'
+part_number = '0x0'
similarity index 93%
rename from config/arm/arm64_thunderx_linux_gcc
rename to config/arm/arm64_thunderxt88_linux_gcc
@@ -14,3 +14,4 @@ endian = 'little'
[properties]
implementer_id = '0x43'
+part_number = '0xa1'
@@ -33,7 +33,6 @@ flags_part_number_thunderx = [
['RTE_USE_C11_MEM_MODEL', false]
]
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']},
@@ -73,7 +72,9 @@ implementers = {
['RTE_CACHE_LINE_SIZE', 128],
['RTE_MAX_LCORE', 256]
],
- 'part_number_config': part_number_config_arm
+ 'part_number_config': {
+ 'generic': {'machine_args': ['-march=armv8-a+crc', '-moutline-atomics']}
+ }
},
'0x41': {
'description': 'Arm',
@@ -94,7 +95,6 @@ implementers = {
['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'],
@@ -141,7 +141,7 @@ implementers = {
['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']}
}
},
@@ -180,10 +180,9 @@ if dpdk_conf.get('RTE_ARCH_32')
machine_args += '-mfpu=neon'
else
# aarch64 build
- implementer_id = 'generic'
if machine == 'generic' and not meson.is_cross_build()
# generic build
- implementer_config = implementer['generic']
+ implementer_id = 'generic'
part_number = 'generic'
elif not meson.is_cross_build()
# native build
@@ -196,21 +195,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'])
@@ -220,15 +222,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