diff --git a/config/arm/meson.build b/config/arm/meson.build
index 6442ec9596..5a9411af75 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -503,7 +503,7 @@ if dpdk_conf.get('RTE_ARCH_32')
     dpdk_conf.set('RTE_CACHE_LINE_SIZE', 64)
     if meson.is_cross_build()
         update_flags = true
-        soc = meson.get_cross_property('platform', '')
+        soc = meson.get_external_property('platform', '')
         if soc == ''
             error('Arm SoC must be specified in the cross file.')
         endif
@@ -558,7 +558,7 @@ else
         endif
     else
         # cross build
-        soc = meson.get_cross_property('platform', '')
+        soc = meson.get_external_property('platform', '')
         if soc == ''
             error('Arm SoC must be specified in the cross file.')
         endif
diff --git a/config/meson.build b/config/meson.build
index 6d9ffd4f4b..80564eec52 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -176,7 +176,7 @@ endif
 # check for libraries used in multiple places in DPDK
 has_libnuma = 0
 find_libnuma = true
-if meson.is_cross_build() and not meson.get_cross_property('numa', true)
+if meson.is_cross_build() and not meson.get_external_property('numa', true)
     # don't look for libnuma if explicitly disabled in cross build
     find_libnuma = false
 endif
@@ -324,12 +324,12 @@ dpdk_conf.set('RTE_COMPILE_TIME_CPUFLAGS', ','.join(compile_time_cpuflags))
 # apply cross-specific options
 if meson.is_cross_build()
     # configure RTE_MAX_LCORE and RTE_MAX_NUMA_NODES from cross file
-    cross_max_lcores = meson.get_cross_property('max_lcores', 0)
+    cross_max_lcores = meson.get_external_property('max_lcores', 0)
     if cross_max_lcores != 0
         message('Setting RTE_MAX_LCORE from cross file')
         dpdk_conf.set('RTE_MAX_LCORE', cross_max_lcores)
     endif
-    cross_max_numa_nodes = meson.get_cross_property('max_numa_nodes', 0)
+    cross_max_numa_nodes = meson.get_external_property('max_numa_nodes', 0)
     if cross_max_numa_nodes != 0
         message('Setting RTE_MAX_NUMA_NODES from cross file')
         dpdk_conf.set('RTE_MAX_NUMA_NODES', cross_max_numa_nodes)
diff --git a/config/riscv/meson.build b/config/riscv/meson.build
index 07d7d9da23..7562c6cb99 100644
--- a/config/riscv/meson.build
+++ b/config/riscv/meson.build
@@ -84,8 +84,8 @@ if not meson.is_cross_build()
     endif
 else
     # cross build
-    vendor_id = meson.get_cross_property('vendor_id')
-    arch_id = meson.get_cross_property('arch_id')
+    vendor_id = meson.get_external_property('vendor_id')
+    arch_id = meson.get_external_property('arch_id')
 endif
 
 if not vendors.has_key(vendor_id)
diff --git a/doc/guides/linux_gsg/sys_reqs.rst b/doc/guides/linux_gsg/sys_reqs.rst
index a7e8261e22..e4f9b41251 100644
--- a/doc/guides/linux_gsg/sys_reqs.rst
+++ b/doc/guides/linux_gsg/sys_reqs.rst
@@ -43,7 +43,7 @@ Compilation of the DPDK
 
 *   Python 3.6 or later.
 
-*   Meson (version 0.53.2+) and ninja
+*   Meson (version 0.54+) and ninja
 
     * ``meson`` & ``ninja-build`` packages in most Linux distributions
     * If the packaged version is below the minimum version, the latest versions
diff --git a/drivers/meson.build b/drivers/meson.build
index c6d619200f..c17c92cca8 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -25,8 +25,8 @@ subdirs = [
 ]
 
 if meson.is_cross_build()
-    disable_drivers += ',' + meson.get_cross_property('disable_drivers', '')
-    enable_drivers += ',' + meson.get_cross_property('enable_drivers', '')
+    disable_drivers += ',' + meson.get_external_property('disable_drivers', '')
+    enable_drivers += ',' + meson.get_external_property('enable_drivers', '')
 endif
 
 # add cmdline disabled drivers and meson disabled drivers together
diff --git a/kernel/linux/meson.build b/kernel/linux/meson.build
index 16a0948994..66cbcd1dbf 100644
--- a/kernel/linux/meson.build
+++ b/kernel/linux/meson.build
@@ -67,7 +67,7 @@ elif cross_compiler.endswith('clang')
     found_target = false
     # search for '-target' and use the arg that follows
     # (i.e. the value of '-target') as cross_prefix
-    foreach cross_c_arg : meson.get_cross_property('c_args')
+    foreach cross_c_arg : meson.get_external_property('c_args')
         if found_target and cross_prefix == ''
             cross_prefix = cross_c_arg
         endif
@@ -79,7 +79,7 @@ elif cross_compiler.endswith('clang')
         error('Did not find -target and its value in c_args in input cross-file.')
     endif
     linker = 'lld'
-    foreach cross_c_link_arg : meson.get_cross_property('c_link_args')
+    foreach cross_c_link_arg : meson.get_external_property('c_link_args')
         if cross_c_link_arg.startswith('-fuse-ld')
             linker = cross_c_link_arg.split('=')[1]
         endif
