get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/81701/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 81701,
    "url": "http://patches.dpdk.org/api/patches/81701/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1603280261-20206-3-git-send-email-juraj.linkes@pantheon.tech/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1603280261-20206-3-git-send-email-juraj.linkes@pantheon.tech>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1603280261-20206-3-git-send-email-juraj.linkes@pantheon.tech",
    "date": "2020-10-21T11:37:37",
    "name": "[RFC,v3,2/6] build: refactor Arm build",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "25e611b026aea99d145e6c356c24648acbda8247",
    "submitter": {
        "id": 1626,
        "url": "http://patches.dpdk.org/api/people/1626/?format=api",
        "name": "Juraj Linkeš",
        "email": "juraj.linkes@pantheon.tech"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1603280261-20206-3-git-send-email-juraj.linkes@pantheon.tech/mbox/",
    "series": [
        {
            "id": 13176,
            "url": "http://patches.dpdk.org/api/series/13176/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=13176",
            "date": "2020-10-21T11:37:36",
            "name": "Arm build options rework",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/13176/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/81701/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/81701/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 1D842A04DF;\n\tWed, 21 Oct 2020 13:38:59 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 9ECBFAD19;\n\tWed, 21 Oct 2020 13:38:08 +0200 (CEST)",
            "from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20])\n by dpdk.org (Postfix) with ESMTP id 5711BACEB\n for <dev@dpdk.org>; Wed, 21 Oct 2020 13:37:58 +0200 (CEST)",
            "from localhost (localhost [127.0.0.1])\n by lb.pantheon.sk (Postfix) with ESMTP id 36477B6B4D;\n Wed, 21 Oct 2020 13:37:56 +0200 (CEST)",
            "from lb.pantheon.sk ([127.0.0.1])\n by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024)\n with ESMTP id W6b73bB5ZfTx; Wed, 21 Oct 2020 13:37:53 +0200 (CEST)",
            "from service-node1.lab.pantheon.local (unknown [46.229.239.141])\n by lb.pantheon.sk (Postfix) with ESMTP id 994EAB6A8F;\n Wed, 21 Oct 2020 13:37:50 +0200 (CEST)"
        ],
        "X-Virus-Scanned": "amavisd-new at siecit.sk",
        "From": "=?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "To": "bruce.richardson@intel.com, Ruifeng.Wang@arm.com,\n Honnappa.Nagarahalli@arm.com, Phil.Yang@arm.com, vcchunga@amazon.com,\n Dharmik.Thakkar@arm.com, jerinjacobk@gmail.com, hemant.agrawal@nxp.com",
        "Cc": "dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "Date": "Wed, 21 Oct 2020 13:37:37 +0200",
        "Message-Id": "<1603280261-20206-3-git-send-email-juraj.linkes@pantheon.tech>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1603280261-20206-1-git-send-email-juraj.linkes@pantheon.tech>",
        "References": "<1602600882-695-1-git-send-email-juraj.linkes@pantheon.tech>\n <1603280261-20206-1-git-send-email-juraj.linkes@pantheon.tech>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [RFC PATCH v3 2/6] build: refactor Arm build",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "* Rename variables to have names that better describe what the variables\nstore\n* Remove unused or superfluous variables\n* Change a list to dictionary where key lookup is needed\n* Add informatory comments in the code\n* Minor code restructure and reformatting\n\nSigned-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>\n---\n config/arm/arm64_armada_linux_gcc    |   2 +-\n config/arm/arm64_armv8_linux_gcc     |   8 +-\n config/arm/arm64_bluefield_linux_gcc |   4 +-\n config/arm/arm64_dpaa_linux_gcc      |   2 +-\n config/arm/arm64_emag_linux_gcc      |   2 +-\n config/arm/arm64_n1sdp_linux_gcc     |   4 +-\n config/arm/arm64_octeontx2_linux_gcc |   4 +-\n config/arm/arm64_stingray_linux_gcc  |   4 +-\n config/arm/arm64_thunderx2_linux_gcc |   4 +-\n config/arm/arm64_thunderx_linux_gcc  |   2 +-\n config/arm/meson.build               | 247 +++++++++++++++------------\n 11 files changed, 153 insertions(+), 130 deletions(-)",
    "diff": "diff --git a/config/arm/arm64_armada_linux_gcc b/config/arm/arm64_armada_linux_gcc\nindex fa40c0398..52c5f4476 100644\n--- a/config/arm/arm64_armada_linux_gcc\n+++ b/config/arm/arm64_armada_linux_gcc\n@@ -14,4 +14,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementor_id = '0x56'\n+implementer_id = '0x56'\ndiff --git a/config/arm/arm64_armv8_linux_gcc b/config/arm/arm64_armv8_linux_gcc\nindex 88f0ff9da..13ee8b223 100644\n--- a/config/arm/arm64_armv8_linux_gcc\n+++ b/config/arm/arm64_armv8_linux_gcc\n@@ -13,10 +13,10 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementor_id = 'generic'\n+implementer_id = 'generic'\n \n-# Valid options for Arm's implementor_pn:\n-# 'default': valid for all armv8-a architectures (default value)\n+# Valid options for Arm's part_number:\n+# 'generic': valid for all armv8-a architectures (default value)\n # '0xd03':   cortex-a53\n # '0xd04':   cortex-a35\n # '0xd05':   cortex-a55\n@@ -25,4 +25,4 @@ implementor_id = 'generic'\n # '0xd09':   cortex-a73\n # '0xd0a':   cortex-a75\n # '0xd0b':   cortex-a76\n-implementor_pn = 'default'\n+part_number = 'generic'\ndiff --git a/config/arm/arm64_bluefield_linux_gcc b/config/arm/arm64_bluefield_linux_gcc\nindex 86797d23c..b79389d85 100644\n--- a/config/arm/arm64_bluefield_linux_gcc\n+++ b/config/arm/arm64_bluefield_linux_gcc\n@@ -13,5 +13,5 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementor_id = '0x41'\n-implementor_pn = '0xd08'\n+implementer_id = '0x41'\n+part_number = '0xd08'\ndiff --git a/config/arm/arm64_dpaa_linux_gcc b/config/arm/arm64_dpaa_linux_gcc\nindex 1a4682154..573ae7e42 100644\n--- a/config/arm/arm64_dpaa_linux_gcc\n+++ b/config/arm/arm64_dpaa_linux_gcc\n@@ -14,4 +14,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementor_id = 'dpaa'\n+implementer_id = 'dpaa'\ndiff --git a/config/arm/arm64_emag_linux_gcc b/config/arm/arm64_emag_linux_gcc\nindex 8edcd3e97..24f3d533e 100644\n--- a/config/arm/arm64_emag_linux_gcc\n+++ b/config/arm/arm64_emag_linux_gcc\n@@ -13,4 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementor_id = '0x50'\n+implementer_id = '0x50'\ndiff --git a/config/arm/arm64_n1sdp_linux_gcc b/config/arm/arm64_n1sdp_linux_gcc\nindex 022e06303..6fb3f02ea 100644\n--- a/config/arm/arm64_n1sdp_linux_gcc\n+++ b/config/arm/arm64_n1sdp_linux_gcc\n@@ -13,5 +13,5 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementor_id = '0x41'\n-implementor_pn = '0xd0c'\n+implementer_id = '0x41'\n+part_number = '0xd0c'\ndiff --git a/config/arm/arm64_octeontx2_linux_gcc b/config/arm/arm64_octeontx2_linux_gcc\nindex 365bd7cbd..ac1042806 100644\n--- a/config/arm/arm64_octeontx2_linux_gcc\n+++ b/config/arm/arm64_octeontx2_linux_gcc\n@@ -13,5 +13,5 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementor_id = '0x43'\n-implementor_pn = '0xb2'\n+implementer_id = '0x43'\n+part_number = '0xb2'\ndiff --git a/config/arm/arm64_stingray_linux_gcc b/config/arm/arm64_stingray_linux_gcc\nindex 86797d23c..b79389d85 100644\n--- a/config/arm/arm64_stingray_linux_gcc\n+++ b/config/arm/arm64_stingray_linux_gcc\n@@ -13,5 +13,5 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementor_id = '0x41'\n-implementor_pn = '0xd08'\n+implementer_id = '0x41'\n+part_number = '0xd08'\ndiff --git a/config/arm/arm64_thunderx2_linux_gcc b/config/arm/arm64_thunderx2_linux_gcc\nindex 2b41acc61..dd257745e 100644\n--- a/config/arm/arm64_thunderx2_linux_gcc\n+++ b/config/arm/arm64_thunderx2_linux_gcc\n@@ -13,5 +13,5 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementor_id = '0x43'\n-implementor_pn = '0xaf'\n+implementer_id = '0x43'\n+part_number = '0xaf'\ndiff --git a/config/arm/arm64_thunderx_linux_gcc b/config/arm/arm64_thunderx_linux_gcc\nindex 6572ab615..670764437 100644\n--- a/config/arm/arm64_thunderx_linux_gcc\n+++ b/config/arm/arm64_thunderx_linux_gcc\n@@ -13,4 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementor_id = '0x43'\n+implementer_id = '0x43'\ndiff --git a/config/arm/meson.build b/config/arm/meson.build\nindex c88e34a2b..66b08bfb5 100644\n--- a/config/arm/meson.build\n+++ b/config/arm/meson.build\n@@ -3,12 +3,12 @@\n # Copyright(c) 2017 Cavium, Inc\n # Copyright(c) 2020 PANTHEON.tech s.r.o.\n \n-# for checking defines we need to use the correct compiler flags\n-march_opt = '-march=@0@'.format(machine)\n-\n+# set arm_force_native_march if you want to use machine args below\n+# instead of discovered values; only works when doing an actual native build\n arm_force_native_march = false\n-arm_force_generic_march = (machine == 'default' or machine == 'generic-armv8')\n+native_machine_args = ['-march=native', '-mtune=native']\n \n+# common flags to all aarch64 builds, with lowest priority\n flags_common_default = [\n \t# Accelarate rte_memcpy. Be sure to run unit test (memcpy_perf_autotest)\n \t# to determine the best threshold in code. Refer to notes in source file\n@@ -16,8 +16,9 @@ flags_common_default = [\n \t['RTE_ARCH_ARM64_MEMCPY', false],\n \t#\t['RTE_ARM64_MEMCPY_ALIGNED_THRESHOLD', 2048],\n \t#\t['RTE_ARM64_MEMCPY_UNALIGNED_THRESHOLD', 512],\n-\t# Leave below RTE_ARM64_MEMCPY_xxx options commented out, unless there're\n-\t# strong reasons.\n+\n+\t# Leave below RTE_ARM64_MEMCPY_xxx options commented out,\n+\t# unless there are strong reasons.\n \t#\t['RTE_ARM64_MEMCPY_SKIP_GCC_VER_CHECK', false],\n \t#\t['RTE_ARM64_MEMCPY_ALIGN_MASK', 0xF],\n \t#\t['RTE_ARM64_MEMCPY_STRICT_ALIGN', false],\n@@ -28,184 +29,206 @@ flags_common_default = [\n \n \t['RTE_SCHED_VECTOR', false],\n \t['RTE_ARM_USE_WFE', false],\n+\t['RTE_CACHE_LINE_SIZE', 128],\n+\t['RTE_ARCH_ARM64', true]\n ]\n \n+# implementer specific aarch64 flags, with middle priority\n+# (will overwrite common flags)\n flags_generic = [\n \t['RTE_MACHINE', '\"armv8a\"'],\n \t['RTE_MAX_LCORE', 256],\n \t['RTE_USE_C11_MEM_MODEL', true],\n-\t['RTE_CACHE_LINE_SIZE', 128]]\n+\t['RTE_CACHE_LINE_SIZE', 128]\n+]\n flags_arm = [\n \t['RTE_MACHINE', '\"armv8a\"'],\n \t['RTE_MAX_LCORE', 16],\n \t['RTE_USE_C11_MEM_MODEL', true],\n-\t['RTE_CACHE_LINE_SIZE', 64]]\n+\t['RTE_CACHE_LINE_SIZE', 64]\n+]\n flags_cavium = [\n \t['RTE_CACHE_LINE_SIZE', 128],\n \t['RTE_MAX_NUMA_NODES', 2],\n \t['RTE_MAX_LCORE', 96],\n-\t['RTE_MAX_VFIO_GROUPS', 128]]\n+\t['RTE_MAX_VFIO_GROUPS', 128]\n+]\n flags_dpaa = [\n \t['RTE_MACHINE', '\"dpaa\"'],\n \t['RTE_USE_C11_MEM_MODEL', true],\n \t['RTE_CACHE_LINE_SIZE', 64],\n \t['RTE_MAX_NUMA_NODES', 1],\n \t['RTE_MAX_LCORE', 16],\n-\t['RTE_LIBRTE_DPAA2_USE_PHYS_IOVA', false]]\n+\t['RTE_LIBRTE_DPAA2_USE_PHYS_IOVA', false]\n+]\n flags_emag = [\n \t['RTE_MACHINE', '\"emag\"'],\n-\t['RTE_CACHE_LINE_SIZE', 64],\n \t['RTE_MAX_NUMA_NODES', 1],\n-\t['RTE_MAX_LCORE', 32]]\n+\t['RTE_MAX_LCORE', 32],\n+\t['RTE_CACHE_LINE_SIZE', 64]\n+]\n flags_armada = [\n \t['RTE_MACHINE', '\"armv8a\"'],\n-\t['RTE_CACHE_LINE_SIZE', 64],\n \t['RTE_MAX_NUMA_NODES', 1],\n-\t['RTE_MAX_LCORE', 16]]\n+\t['RTE_MAX_LCORE', 16],\n+\t['RTE_CACHE_LINE_SIZE', 64]\n+]\n \n-flags_default_extra = []\n+# part number specific aarch64 flags, with highest priority\n+# (will overwrite both common and implementer specific flags)\n flags_n1sdp_extra = [\n \t['RTE_MACHINE', '\"n1sdp\"'],\n \t['RTE_MAX_NUMA_NODES', 1],\n \t['RTE_MAX_LCORE', 4],\n \t['RTE_EAL_NUMA_AWARE_HUGEPAGES', false],\n-\t['RTE_LIBRTE_VHOST_NUMA', false]]\n+\t['RTE_LIBRTE_VHOST_NUMA', false]\n+]\n flags_thunderx_extra = [\n \t['RTE_MACHINE', '\"thunderx\"'],\n-\t['RTE_USE_C11_MEM_MODEL', false]]\n+\t['RTE_USE_C11_MEM_MODEL', false]\n+]\n flags_thunderx2_extra = [\n \t['RTE_MACHINE', '\"thunderx2\"'],\n \t['RTE_CACHE_LINE_SIZE', 64],\n \t['RTE_MAX_NUMA_NODES', 2],\n \t['RTE_MAX_LCORE', 256],\n \t['RTE_ARM_FEATURE_ATOMICS', true],\n-\t['RTE_USE_C11_MEM_MODEL', true]]\n+\t['RTE_USE_C11_MEM_MODEL', true]\n+]\n flags_octeontx2_extra = [\n \t['RTE_MACHINE', '\"octeontx2\"'],\n \t['RTE_MAX_NUMA_NODES', 1],\n \t['RTE_MAX_LCORE', 36],\n \t['RTE_ARM_FEATURE_ATOMICS', true],\n \t['RTE_EAL_IGB_UIO', false],\n-\t['RTE_USE_C11_MEM_MODEL', true]]\n-\n-machine_args_default = [\n-\t['default', ['-march=armv8-a+crc', '-moutline-atomics']],\n-\t['native', ['-march=native']],\n-\t['0xd03', ['-mcpu=cortex-a53']],\n-\t['0xd04', ['-mcpu=cortex-a35']],\n-\t['0xd07', ['-mcpu=cortex-a57']],\n-\t['0xd08', ['-mcpu=cortex-a72']],\n-\t['0xd09', ['-mcpu=cortex-a73']],\n-\t['0xd0a', ['-mcpu=cortex-a75']],\n-\t['0xd0b', ['-mcpu=cortex-a76']],\n-\t['0xd0c', ['-march=armv8.2-a+crc+crypto', '-mcpu=neoverse-n1'], flags_n1sdp_extra]]\n-\n-machine_args_cavium = [\n-\t['default', ['-march=armv8-a+crc+crypto','-mcpu=thunderx']],\n-\t['native', ['-march=native']],\n-\t['0xa1', ['-mcpu=thunderxt88'], flags_thunderx_extra],\n-\t['0xa2', ['-mcpu=thunderxt81'], flags_thunderx_extra],\n-\t['0xa3', ['-mcpu=thunderxt83'], flags_thunderx_extra],\n-\t['0xaf', ['-march=armv8.1-a+crc+crypto','-mcpu=thunderx2t99'], flags_thunderx2_extra],\n-\t['0xb2', ['-march=armv8.2-a+crc+crypto+lse','-mcpu=octeontx2'], flags_octeontx2_extra]]\n-\n-machine_args_emag = [\n-\t['default', ['-march=armv8-a+crc+crypto', '-mtune=emag']],\n-\t['native', ['-march=native']]]\n+\t['RTE_USE_C11_MEM_MODEL', true]\n+]\n+# arm config (implementer 0x41) is the default config\n+pn_config_default = {\n+\t'generic': [['-march=armv8-a+crc', '-moutline-atomics']],\n+\t'0xd03': [['-mcpu=cortex-a53']],\n+\t'0xd04': [['-mcpu=cortex-a35']],\n+\t'0xd07': [['-mcpu=cortex-a57']],\n+\t'0xd08': [['-mcpu=cortex-a72']],\n+\t'0xd09': [['-mcpu=cortex-a73']],\n+\t'0xd0a': [['-mcpu=cortex-a75']],\n+\t'0xd0b': [['-mcpu=cortex-a76']],\n+\t'0xd0c': [['-march=armv8.2-a+crc+crypto', '-mcpu=neoverse-n1'], flags_n1sdp_extra]\n+}\n+pn_config_cavium = {\n+\t'generic': [['-march=armv8-a+crc+crypto', '-mcpu=thunderx']],\n+\t'0xa1': [['-mcpu=thunderxt88'], flags_thunderx_extra],\n+\t'0xa2': [['-mcpu=thunderxt81'], flags_thunderx_extra],\n+\t'0xa3': [['-mcpu=thunderxt83'], flags_thunderx_extra],\n+\t'0xaf': [['-march=armv8.1-a+crc+crypto','-mcpu=thunderx2t99'], flags_thunderx2_extra],\n+\t'0xb2': [['-march=armv8.2-a+crc+crypto+lse','-mcpu=octeontx2'], flags_octeontx2_extra],\n+}\n+pn_config_emag = {\n+\t'generic': [['-march=armv8-a+crc+crypto', '-mtune=emag']]\n+}\n \n ## Arm implementer ID (ARM DDI 0487C.a, Section G7.2.106, Page G7-5321)\n-impl_generic = ['Generic armv8', flags_generic, machine_args_default]\n-impl_0x41 = ['Arm', flags_arm, machine_args_default]\n-impl_0x42 = ['Broadcom', flags_generic, machine_args_default]\n-impl_0x43 = ['Cavium', flags_cavium, machine_args_cavium]\n-impl_0x44 = ['DEC', flags_generic, machine_args_default]\n-impl_0x49 = ['Infineon', flags_generic, machine_args_default]\n-impl_0x4d = ['Motorola', flags_generic, machine_args_default]\n-impl_0x4e = ['NVIDIA', flags_generic, machine_args_default]\n-impl_0x50 = ['Ampere Computing', flags_emag, machine_args_emag]\n-impl_0x51 = ['Qualcomm', flags_generic, machine_args_default]\n-impl_0x53 = ['Samsung', flags_generic, machine_args_default]\n-impl_0x56 = ['Marvell ARMADA', flags_armada, machine_args_default]\n-impl_0x69 = ['Intel', flags_generic, machine_args_default]\n-impl_dpaa = ['NXP DPAA', flags_dpaa, machine_args_default]\n+impl_generic = ['Generic armv8', flags_generic, pn_config_default]\n+impl_0x41 = ['Arm', flags_arm, pn_config_default]\n+impl_0x42 = ['Broadcom', flags_generic, pn_config_default]\n+impl_0x43 = ['Cavium', flags_cavium, pn_config_cavium]\n+impl_0x44 = ['DEC', flags_generic, pn_config_default]\n+impl_0x49 = ['Infineon', flags_generic, pn_config_default]\n+impl_0x4d = ['Motorola', flags_generic, pn_config_default]\n+impl_0x4e = ['NVIDIA', flags_generic, pn_config_default]\n+impl_0x50 = ['Ampere Computing', flags_emag, pn_config_emag]\n+impl_0x51 = ['Qualcomm', flags_generic, pn_config_default]\n+impl_0x53 = ['Samsung', flags_generic, pn_config_default]\n+impl_0x56 = ['Marvell ARMADA', flags_armada, pn_config_default]\n+impl_0x69 = ['Intel', flags_generic, pn_config_default]\n+impl_dpaa = ['NXP DPAA', flags_dpaa, pn_config_default]\n \n dpdk_conf.set('RTE_ARCH_ARM', 1)\n dpdk_conf.set('RTE_FORCE_INTRINSICS', 1)\n \n if dpdk_conf.get('RTE_ARCH_32')\n+\t# armv7 build\n \tdpdk_conf.set('RTE_CACHE_LINE_SIZE', 64)\n \tdpdk_conf.set('RTE_ARCH_ARMv7', 1)\n \t# the minimum architecture supported, armv7-a, needs the following,\n \t# mk/machine/armv7a/rte.vars.mk sets it too\n \tmachine_args += '-mfpu=neon'\n else\n-\tdpdk_conf.set('RTE_CACHE_LINE_SIZE', 128)\n-\tdpdk_conf.set('RTE_ARCH_ARM64', 1)\n+\t# aarch64 build\n+\tif not meson.is_cross_build()\n+\t\tif machine == 'default' or machine == 'generic-armv8'\n+\t\t\t# default build\n+\t\t\timpl_config = impl_generic\n+\t\t\tpart_number = 'generic'\n+\t\telse\n+\t\t\t# native build\n+\t\t\t# The script returns ['Implementer', 'Variant', 'Architecture',\n+\t\t\t# 'Primary Part number', 'Revision']\n+\t\t\tdetect_vendor = find_program(join_paths(\n+\t\t\t\t\tmeson.current_source_dir(), 'armv8_machine.py'))\n+\t\t\tcmd = run_command(detect_vendor.path())\n+\t\t\tif cmd.returncode() == 0\n+\t\t\t\tcmd_output = cmd.stdout().to_lower().strip().split(' ')\n+\t\t\tendif\n+\t\t\tif arm_force_native_march == true\n+\t\t\t\tpart_number = 'native'\n+\t\t\telse\n+\t\t\t\tpart_number = cmd_output[3]\n+\t\t\tendif\n+\t\t\t# Set to generic implementer if implementer is not found\n+\t\t\timpl_config = get_variable('impl_' + cmd_output[0], 'impl_generic')\n+\t\tendif\n+\telse\n+\t\t# cross build\n+\t\timpl_id = meson.get_cross_property('implementer_id', 'generic')\n+\t\tpart_number = meson.get_cross_property('part_number', 'generic')\n+\t\timpl_config = get_variable('impl_' + impl_id)\n+\tendif\n \n-\tmachine = []\n-\tcmd_generic = ['generic', '', '', 'default', '']\n-\tcmd_output = cmd_generic # Set generic by default\n-\tmachine_args = [] # Clear previous machine args\n-\tif arm_force_generic_march and not meson.is_cross_build()\n-\t\tmachine = impl_generic\n-\t\timpl_pn = 'default'\n+\tmessage('Arm implementer: ' + impl_config[0])\n+\tmessage('Arm part number: ' + part_number)\n+\n+\timplementer_flags = impl_config[1]\n+\tpart_number_config = impl_config[2]\n+\n+\tif part_number_config.has_key(part_number)\n+\t\t# use the specified part_number machine args if found\n+\t\tpart_number_config = part_number_config[part_number]\n+\telif part_number == 'native'\n+\t\t# use native machine args\n+\t\tpart_number_config = [[native_machine_args]]\n \telif not meson.is_cross_build()\n-\t\t# The script returns ['Implementer', 'Variant', 'Architecture',\n-\t\t# 'Primary Part number', 'Revision']\n-\t\tdetect_vendor = find_program(join_paths(\n-\t\t\t\tmeson.current_source_dir(), 'armv8_machine.py'))\n-\t\tcmd = run_command(detect_vendor.path())\n-\t\tif cmd.returncode() == 0\n-\t\t\tcmd_output = cmd.stdout().to_lower().strip().split(' ')\n-\t\tendif\n-\t\t# Set to generic if variable is not found\n-\t\tmachine = get_variable('impl_' + cmd_output[0], ['generic'])\n-\t\tif machine[0] == 'generic'\n-\t\t\tmachine = impl_generic\n-\t\t\tcmd_output = cmd_generic\n-\t\tendif\n-\t\timpl_pn = cmd_output[3]\n-\t\tif arm_force_native_march == true\n-\t\t\timpl_pn = 'native'\n-\t\tendif\n+\t\t# default to generic machine args if part_number is not found\n+\t\t# and not forcing native machine args\n+\t\t# but don't default in cross-builds; if part_number is specified\n+\t\t# incorrectly in a cross-file, it needs to be fixed there\n+\t\tpart_number_config = part_number_config['generic']\n \telse\n-\t\timpl_id = meson.get_cross_property('implementor_id', 'generic')\n-\t\timpl_pn = meson.get_cross_property('implementor_pn', 'default')\n-\t\tmachine = get_variable('impl_' + impl_id)\n+\t\t# cross build and part number is not in part_number_config\n+\t\terror('Cross build part number 0@0 not found.'.format(part_number))\n \tendif\n \n-\t# Apply Common Defaults. These settings may be overwritten by machine\n-\t# settings later.\n-\tforeach flag: flags_common_default\n-\t\tif flag.length() > 0\n-\t\t\tdpdk_conf.set(flag[0], flag[1])\n+\tdpdk_flags = flags_common_default + implementer_flags\n+\n+\tif part_number_config.length() > 1\n+\t\tdpdk_flags += part_number_config[1]\n+\tendif\n+\n+\tmachine_args = [] # Clear previous machine args\n+\tforeach flag: part_number_config[0]\n+\t\tif cc.has_argument(flag)\n+\t\t\tmachine_args += flag\n \t\tendif\n \tendforeach\n \n-\tmessage('Implementer : ' + machine[0])\n-\tforeach flag: machine[1]\n+\tforeach flag: dpdk_flags\n \t\tif flag.length() > 0\n \t\t\tdpdk_conf.set(flag[0], flag[1])\n \t\tendif\n \tendforeach\n-\n-\tforeach marg: machine[2]\n-\t\tif marg[0] == impl_pn\n-\t\t\tforeach flag: marg[1]\n-\t\t\t\tif cc.has_argument(flag)\n-\t\t\t\t\tmachine_args += flag\n-\t\t\t\tendif\n-\t\t\tendforeach\n-\t\t\t# Apply any extra machine specific flags.\n-\t\t\tforeach flag: marg.get(2, flags_default_extra)\n-\t\t\t\tif flag.length() > 0\n-\t\t\t\t\tdpdk_conf.set(flag[0], flag[1])\n-\t\t\t\tendif\n-\t\t\tendforeach\n-\t\tendif\n-\tendforeach\n endif\n-message(machine_args)\n+\n+message('Using machine args: @0@'.format(machine_args))\n \n if (cc.get_define('__ARM_NEON', args: machine_args) != '' or\n     cc.get_define('__aarch64__', args: machine_args) != '')\n",
    "prefixes": [
        "RFC",
        "v3",
        "2/6"
    ]
}