diff --git a/poky/meta/recipes-devtools/meson/meson.inc b/poky/meta/recipes-devtools/meson/meson.inc
index 6de109d..ae0091c 100644
--- a/poky/meta/recipes-devtools/meson/meson.inc
+++ b/poky/meta/recipes-devtools/meson/meson.inc
@@ -1,5 +1,8 @@
 HOMEPAGE = "http://mesonbuild.com"
 SUMMARY = "A high performance build system"
+DESCRIPTION = "Meson is a build system designed to increase programmer \
+productivity. It does this by providing a fast, simple and easy to use \
+interface for modern software development tools and practices."
 
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57"
@@ -11,14 +14,11 @@
            file://0001-python-module-do-not-manipulate-the-environment-when.patch \
            file://disable-rpath-handling.patch \
            file://cross-prop-default.patch \
-           file://0001-environment.py-detect-windows-also-if-the-system-str.patch \
-           file://0001-mesonbuild-environment.py-do-not-determine-whether-a.patch \
            file://0001-mesonbuild-environment.py-check-environment-for-vari.patch \
            file://0001-modules-python.py-do-not-substitute-python-s-install.patch \
-           file://vala-cross-compile.patch \
            "
-SRC_URI[sha256sum] = "23688f0fc90be623d98e80e1defeea92bbb7103bf9336a5f5b9865d36e892d76"
-SRC_URI[md5sum] = "d46c4a8e3cfd27f90e2c6fe4a69e574b"
+SRC_URI[sha256sum] = "d60f75f0dedcc4fd249dbc7519d6f3ce6df490033d276ef1cf27453ef4938d32"
+SRC_URI[md5sum] = "7ea7772414dda8ae11072244bf7ba991"
 
 SRC_URI_append_class-native = " \
     file://0001-Make-CPU-family-warnings-fatal.patch \
@@ -29,6 +29,6 @@
 
 inherit setuptools3
 
-RDEPENDS_${PN} = "ninja python3-core python3-modules"
+RDEPENDS_${PN} = "ninja python3-modules python3-pkg-resources"
 
 FILES_${PN} += "${datadir}/polkit-1"
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch b/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
index 444fc08..fc55dca 100644
--- a/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
+++ b/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
@@ -1,4 +1,4 @@
-From f70fee13e4dbc757cd8153cd42d92fa9394fb542 Mon Sep 17 00:00:00 2001
+From c07d29b715209cd5d75b142a00a540d45b00c36d Mon Sep 17 00:00:00 2001
 From: Ross Burton <ross.burton@intel.com>
 Date: Tue, 3 Jul 2018 13:59:09 +0100
 Subject: [PATCH] Make CPU family warnings fatal
@@ -12,7 +12,7 @@
  2 files changed, 2 insertions(+), 4 deletions(-)
 
 diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py
-index 03c6346..86b350b 100644
+index a59cd89..17de654 100644
 --- a/mesonbuild/envconfig.py
 +++ b/mesonbuild/envconfig.py
 @@ -186,7 +186,7 @@ class MachineInfo:
@@ -25,10 +25,10 @@
          endian = literal['endian']
          if endian not in ('little', 'big'):
 diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
-index 0cfdf9c..40aa189 100644
+index 3704921..f1988f2 100644
 --- a/mesonbuild/environment.py
 +++ b/mesonbuild/environment.py
-@@ -262,9 +262,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str:
+@@ -251,9 +251,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str:
          trial = 'parisc'
  
      if trial not in known_cpu_families:
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-environment.py-detect-windows-also-if-the-system-str.patch b/poky/meta/recipes-devtools/meson/meson/0001-environment.py-detect-windows-also-if-the-system-str.patch
deleted file mode 100644
index 37b5356..0000000
--- a/poky/meta/recipes-devtools/meson/meson/0001-environment.py-detect-windows-also-if-the-system-str.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From b52e47c9d61dc4c930cfc7236fbeb70338c3b953 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 25 Mar 2019 17:17:06 +0100
-Subject: [PATCH] environment.py: detect windows also if the system string
- contains 'mingw'
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- mesonbuild/envconfig.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py
-index 03c6346..a59cd89 100644
---- a/mesonbuild/envconfig.py
-+++ b/mesonbuild/envconfig.py
-@@ -198,7 +198,7 @@ class MachineInfo:
-         """
-         Machine is windows?
-         """
--        return self.system in {'windows', 'mingw'}
-+        return self.system == 'windows' or 'mingw' in self.system
- 
-     def is_cygwin(self) -> bool:
-         """
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch b/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
index 7c3238b..471f150 100644
--- a/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
+++ b/poky/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
@@ -1,4 +1,4 @@
-From 1afbf5ccff56e582229c8f673f50aedf2b24117e Mon Sep 17 00:00:00 2001
+From d3ef01a4208a801acad380a4aaceb6a21f8fa603 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Fri, 4 Aug 2017 16:16:41 +0300
 Subject: [PATCH] gtkdoc: fix issues that arise when cross-compiling
@@ -20,11 +20,11 @@
  1 file changed, 4 insertions(+)
 
 diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
-index bf49770..7c5a363 100644
+index bcf77b9..6a4b472 100644
 --- a/mesonbuild/modules/gnome.py
 +++ b/mesonbuild/modules/gnome.py
-@@ -972,6 +972,10 @@ This will become a hard error in the future.''')
-                 '--mode=' + mode]
+@@ -974,6 +974,10 @@ This will become a hard error in the future.''')
+             args.append('--{}={}'.format(program_name, path))
          if namespace:
              args.append('--namespace=' + namespace)
 +        gtkdoc_exe_wrapper = state.environment.properties.host.get('gtkdoc_exe_wrapper', None)
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-mesonbuild-environment.py-do-not-determine-whether-a.patch b/poky/meta/recipes-devtools/meson/meson/0001-mesonbuild-environment.py-do-not-determine-whether-a.patch
deleted file mode 100644
index 8cb1187..0000000
--- a/poky/meta/recipes-devtools/meson/meson/0001-mesonbuild-environment.py-do-not-determine-whether-a.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From ec9c4a22424a5d55fcf213a55d03f096ec24bcae Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 25 Mar 2019 18:18:33 +0100
-Subject: [PATCH] mesonbuild/environment.py: do not determine whether a build
- is cross by comparing architectures
-
-This can, and does, go wrong when our host architecture is same as the target one(e.g. x86_64).
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- mesonbuild/environment.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
-index 84a7596..9a029f4 100644
---- a/mesonbuild/environment.py
-+++ b/mesonbuild/environment.py
-@@ -520,7 +520,7 @@ class Environment:
-         self.first_invocation = True
- 
-     def is_cross_build(self) -> bool:
--        return not self.machines.matches_build_machine(MachineChoice.HOST)
-+        return self.need_exe_wrapper()
- 
-     def dump_coredata(self):
-         return coredata.save(self.coredata, self.get_build_dir())
diff --git a/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch b/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch
index 8ad86a4..b8837d7 100644
--- a/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch
+++ b/poky/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch
@@ -1,4 +1,4 @@
-From 3009a1c2f1b736b836a057d84dc11f379cba99cf Mon Sep 17 00:00:00 2001
+From 263fc0e26e1fd92e25fa3ef93f4a549dcebc5887 Mon Sep 17 00:00:00 2001
 From: Peter Kjellerstedt <pkj@axis.com>
 Date: Thu, 26 Jul 2018 16:32:49 +0200
 Subject: [PATCH] Support building allarch recipes again
@@ -13,7 +13,7 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py
-index 86b350b..aa426ca 100644
+index 17de654..2d2deef 100644
 --- a/mesonbuild/envconfig.py
 +++ b/mesonbuild/envconfig.py
 @@ -36,6 +36,7 @@ _T = typing.TypeVar('_T')
diff --git a/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch b/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
index 57de598..76cc493 100644
--- a/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
+++ b/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
@@ -1,4 +1,4 @@
-From ac38495de38a1ea42e2bc09a2f23c2e945fbc22d Mon Sep 17 00:00:00 2001
+From 4a1d676522d6b56cbe9a45c3b040afaa27d37f78 Mon Sep 17 00:00:00 2001
 From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
 Date: Wed, 15 Nov 2017 15:05:01 +0100
 Subject: [PATCH] native_bindir
@@ -22,10 +22,10 @@
  2 files changed, 14 insertions(+), 11 deletions(-)
 
 diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
-index 21da8e2..7d1ef85 100644
+index 3c55a56..eb52fd1 100644
 --- a/mesonbuild/dependencies/base.py
 +++ b/mesonbuild/dependencies/base.py
-@@ -155,7 +155,7 @@ class Dependency:
+@@ -185,7 +185,7 @@ class Dependency:
      def get_exe_args(self, compiler):
          return []
  
@@ -34,7 +34,7 @@
          raise DependencyException('{!r} is not a pkgconfig dependency'.format(self.name))
  
      def get_configtool_variable(self, variable_name):
-@@ -214,7 +214,7 @@ class InternalDependency(Dependency):
+@@ -248,7 +248,7 @@ class InternalDependency(Dependency):
          self.sources = sources
          self.ext_deps = ext_deps
  
@@ -43,7 +43,7 @@
          raise DependencyException('Method "get_pkgconfig_variable()" is '
                                    'invalid for an internal dependency')
  
-@@ -639,15 +639,18 @@ class PkgConfigDependency(ExternalDependency):
+@@ -670,15 +670,18 @@ class PkgConfigDependency(ExternalDependency):
          return s.format(self.__class__.__name__, self.name, self.is_found,
                          self.version_reqs)
  
@@ -65,7 +65,7 @@
          # Always copy the environment since we're going to modify it
          # with pkg-config variables
          if env is None:
-@@ -663,7 +666,7 @@ class PkgConfigDependency(ExternalDependency):
+@@ -698,7 +701,7 @@ class PkgConfigDependency(ExternalDependency):
          targs = tuple(args)
          cache = PkgConfigDependency.pkgbin_cache
          if (self.pkgbin, targs, fenv) not in cache:
@@ -74,16 +74,16 @@
          return cache[(self.pkgbin, targs, fenv)]
  
      def _convert_mingw_paths(self, args):
-@@ -845,7 +848,7 @@ class PkgConfigDependency(ExternalDependency):
-                                       (self.name, out_raw))
-         self.link_args, self.raw_link_args = self._search_libs(out, out_raw)
+@@ -926,7 +929,7 @@ class PkgConfigDependency(ExternalDependency):
+             mlog.warning('Could not determine complete list of dependencies for %s' % self.name)
+         self.link_args, self.raw_link_args = self._search_libs(out, out_raw, out_all)
  
 -    def get_pkgconfig_variable(self, variable_name, kwargs):
 +    def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
          options = ['--variable=' + variable_name, self.name]
  
          if 'define_variable' in kwargs:
-@@ -858,7 +861,7 @@ class PkgConfigDependency(ExternalDependency):
+@@ -939,7 +942,7 @@ class PkgConfigDependency(ExternalDependency):
  
              options = ['--define-variable=' + '='.join(definition)] + options
  
diff --git a/poky/meta/recipes-devtools/meson/meson/vala-cross-compile.patch b/poky/meta/recipes-devtools/meson/meson/vala-cross-compile.patch
deleted file mode 100644
index 816f810..0000000
--- a/poky/meta/recipes-devtools/meson/meson/vala-cross-compile.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 77c3e6a4aaed07e626f4bf4deb7eb66e0f03a33d Mon Sep 17 00:00:00 2001
-From: James Westman <flyingpimonster@flyingpimonster.net>
-Date: Mon, 24 Jun 2019 12:04:12 -0500
-Subject: [PATCH] Fix two errors when cross-compiling with Vala
-
-- AttributeError: 'ValaCompiler' object has no attribute 'get_program_dirs'
-
-  Fixed by adding a `get_program_dirs()` function to the base Compiler
-  class, to match `get_library_dirs()`
-
-- KeyError: 'vala_COMPILER'
-
-  Fixed by creating the Vala compile rules for all machines, not just
-  the build machine.
-
-Upstream-Status: Backport [https://github.com/mesonbuild/meson/commit/77c3e6a4aaed07e626f4bf4deb7eb66e0f03a33d]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- mesonbuild/backend/ninjabackend.py | 3 +--
- mesonbuild/compilers/compilers.py  | 3 +++
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
-index a454e6ab5f..b830e377e4 100644
---- a/mesonbuild/backend/ninjabackend.py
-+++ b/mesonbuild/backend/ninjabackend.py
-@@ -1653,8 +1653,7 @@ def generate_compile_rule_for(self, langname, compiler):
-                 self.generate_cs_compile_rule(compiler)
-             return
-         if langname == 'vala':
--            if self.environment.machines.matches_build_machine(compiler.for_machine):
--                self.generate_vala_compile_rules(compiler)
-+            self.generate_vala_compile_rules(compiler)
-             return
-         if langname == 'rust':
-             self.generate_rust_compile_rules(compiler)
-diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
-index 5855de71c8..86c1e33407 100644
---- a/mesonbuild/compilers/compilers.py
-+++ b/mesonbuild/compilers/compilers.py
-@@ -1117,6 +1117,9 @@ def find_library(self, *args, **kwargs):
-     def get_library_dirs(self, *args, **kwargs):
-         return ()
- 
-+    def get_program_dirs(self, *args, **kwargs):
-+        return ()
-+
-     def has_multi_arguments(self, args, env) -> Tuple[bool, bool]:
-         raise EnvironmentException(
-             'Language {} does not support has_multi_arguments.'.format(
diff --git a/poky/meta/recipes-devtools/meson/meson_0.51.2.bb b/poky/meta/recipes-devtools/meson/meson_0.52.0.bb
similarity index 97%
rename from poky/meta/recipes-devtools/meson/meson_0.51.2.bb
rename to poky/meta/recipes-devtools/meson/meson_0.52.0.bb
index de9b905..897fa14 100644
--- a/poky/meta/recipes-devtools/meson/meson_0.51.2.bb
+++ b/poky/meta/recipes-devtools/meson/meson_0.52.0.bb
@@ -1,4 +1,3 @@
 include meson.inc
 
 BBCLASSEXTEND = "native"
-
diff --git a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.51.2.bb b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.52.0.bb
similarity index 100%
rename from poky/meta/recipes-devtools/meson/nativesdk-meson_0.51.2.bb
rename to poky/meta/recipes-devtools/meson/nativesdk-meson_0.52.0.bb
