diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 3d8654e..1d04c91 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -648,9 +648,14 @@
         # avoids collisions and also makes the name deterministic over
         # regenerations which avoids a rebuild by Ninja because the cmdline
         # stays the same.
-        data = bytes(str(es.env) + str(es.cmd_args) + str(es.workdir) + str(capture) + str(feed),
-                     encoding='utf-8')
-        digest = hashlib.sha1(data).hexdigest()
+        hasher = hashlib.sha1()
+        if es.env:
+            es.env.hash(hasher)
+        hasher.update(bytes(str(es.cmd_args), encoding='utf-8'))
+        hasher.update(bytes(str(es.workdir), encoding='utf-8'))
+        hasher.update(bytes(str(capture), encoding='utf-8'))
+        hasher.update(bytes(str(feed), encoding='utf-8'))
+        digest = hasher.hexdigest()
         scratch_file = f'meson_exe_{basename}_{digest}.dat'
         exe_data = os.path.join(self.environment.get_scratch_dir(), scratch_file)
         with open(exe_data, 'wb') as f:
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index e2251ea..97acdef 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -468,6 +468,15 @@
         repr_str = "<{0}: {1}>"
         return repr_str.format(self.__class__.__name__, self.envvars)
 
+    def hash(self, hasher: T.Any):
+        myenv = self.get_env({})
+        keys = sorted(myenv.keys())
+        for key in keys:
+            hasher.update(bytes(key, encoding='utf-8'))
+            hasher.update(b',')
+            hasher.update(bytes(myenv[key], encoding='utf-8'))
+            hasher.update(b';')
+
     def has_name(self, name: str) -> bool:
         return name in self.varnames
 
