Add various vendor specific cross build targets. This can be verified by using linaro toolchain and running
meson build --cross-file config/arm/arch64_armv8_<cpu>_cross In future more cross build targets can be added. Signed-off-by: Pavan Nikhilesh <pbhagavat...@caviumnetworks.com> --- config/arm/arch64_armv8_generic_cross | 10 +++++++ config/arm/arch64_armv8_thunderx_cross | 13 +++++++++ config/arm/meson.build | 52 +++++++++++++++++++--------------- 3 files changed, 52 insertions(+), 23 deletions(-) create mode 100644 config/arm/arch64_armv8_generic_cross create mode 100644 config/arm/arch64_armv8_thunderx_cross diff --git a/config/arm/arch64_armv8_generic_cross b/config/arm/arch64_armv8_generic_cross new file mode 100644 index 000000000..3b4d3c469 --- /dev/null +++ b/config/arm/arch64_armv8_generic_cross @@ -0,0 +1,10 @@ +[binaries] +c = 'aarch64-linux-gnu-gcc' +cpp = 'aarch64-linux-gnu-cpp' +ar = 'aarch64-linux-gnu-gcc-ar' + +[host_machine] +system = 'linux' +cpu_family = 'aarch64' +cpu = 'armv8-a' +endian = 'little' diff --git a/config/arm/arch64_armv8_thunderx_cross b/config/arm/arch64_armv8_thunderx_cross new file mode 100644 index 000000000..7ff34af74 --- /dev/null +++ b/config/arm/arch64_armv8_thunderx_cross @@ -0,0 +1,13 @@ +[binaries] +c = 'aarch64-linux-gnu-gcc' +cpp = 'aarch64-linux-gnu-cpp' +ar = 'aarch64-linux-gnu-gcc-ar' + +[host_machine] +system = 'linux' +cpu_family = 'aarch64' +cpu = 'armv8-a' +endian = 'little' + +[properties] +implementor_id = '0x43' diff --git a/config/arm/meson.build b/config/arm/meson.build index 62af5e68a..79e453997 100644 --- a/config/arm/meson.build +++ b/config/arm/meson.build @@ -34,6 +34,8 @@ else dpdk_conf.set('RTE_ARCH_ARM64', 1) dpdk_conf.set('RTE_ARCH_64', 1) + machine = [] + cmd_output = [] if not meson.is_cross_build() # The script returns ['Implementor', 'Variant', 'Architecture', # 'Primary Part number', 'Revision'] @@ -46,31 +48,35 @@ else machine_args = [] # Clear previous machine args cmd_output = cmd.stdout().strip().split(' ') machine = get_variable('impl_' + cmd_output[0]) - message('Implementor : ' + machine[0]) + endif + else + impl_id = meson.get_cross_property('implementor_id', 'generic') + machine = get_variable('impl_' + impl_id, 'generic') + endif - foreach flag: machine[1] - dpdk_conf.set(flag[0], flag[1]) + if machine != 'generic' + message('Implementor : ' + machine[0]) + foreach flag: machine[1] + dpdk_conf.set(flag[0], flag[1]) + endforeach + # Primary part number based mcpu flags are supported + # for gcc versions > 7 + if cc.version().version_compare('<7.0') or cmd_output.length() == 0 + foreach marg: machine[2] + if marg[0] == 'default' + foreach f: marg[1] + machine_args += f + endforeach + endif + endforeach + else + foreach marg: machine[2] + if marg[0] == cmd_output[3] + foreach f: marg[1] + machine_args += f + endforeach + endif endforeach - - # Primary part number based mcpu flags are supported - # for gcc versions > 7 - if cc.version().version_compare('<7.0') - foreach marg: machine[2] - if marg[0] == 'default' - foreach f: marg[1] - machine_args += f - endforeach - endif - endforeach - else - foreach marg: machine[2] - if marg[0] == cmd_output[3] - foreach f: marg[1] - machine_args += f - endforeach - endif - endforeach - endif endif endif endif -- 2.14.1