diff --git a/tools/automate-git.py b/tools/automate-git.py
index d878e53..3e8f962 100644
--- a/tools/automate-git.py
+++ b/tools/automate-git.py
@@ -1,4 +1,4 @@
-# Based on ef7e98c6169e48023315ccdc14e0215669c2ca6c
+# Based on 2a64387259cf14412e24c3267c8a1eb3b99a54e3
 
 # Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights
 # reserved. Use of this source code is governed by a BSD-style license that
@@ -772,7 +772,7 @@
     help="Output commands without executing them.")
 parser.add_option('--dry-run-platform', dest='dryrunplatform', default=None,
                   help='Simulate a dry run on the specified platform '+\
-                       '(windows, macosx, linux). Must be used in combination'+\
+                       '(windows, mac, linux). Must be used in combination'+\
                        ' with the --dry-run flag.')
 
 # Update-related options.
@@ -1011,10 +1011,17 @@
     dest='cleanartifacts',
     default=False,
     help='Clean the artifacts output directory.')
-parser.add_option('--distrib-subdir', dest='distribsubdir',
-                  help='CEF distrib dir name, child of '+\
-                       'chromium/src/cef/binary_distrib',
-                  default='')
+parser.add_option(
+    '--distrib-subdir',
+    dest='distribsubdir',
+    default='',
+    help='CEF distrib dir name, child of chromium/src/cef/binary_distrib')
+parser.add_option(
+    '--distrib-subdir-suffix',
+    dest='distribsubdirsuffix',
+    default='',
+    help='CEF distrib dir name suffix, child of chromium/src/cef/binary_distrib'
+)
 
 (options, args) = parser.parse_args()
 
@@ -1063,13 +1070,13 @@
 # Operating system.
 if options.dryrun and options.dryrunplatform is not None:
   platform = options.dryrunplatform
-  if not platform in ['windows', 'macosx', 'linux']:
+  if not platform in ['windows', 'mac', 'linux']:
     print('Invalid dry-run-platform value: %s' % (platform))
     sys.exit()
 elif sys.platform == 'win32':
   platform = 'windows'
 elif sys.platform == 'darwin':
-  platform = 'macosx'
+  platform = 'mac'
 elif sys.platform.startswith('linux'):
   platform = 'linux'
 else:
@@ -1125,22 +1132,17 @@
     print('The ARM build option is only supported on Linux.')
     sys.exit()
 
-if options.arm64build:
-  if platform != 'linux' and platform != 'windows':
-    print('The ARM64 build option is only supported on Linux and Windows.')
-    sys.exit()
-
 deps_file = 'DEPS'
 
-if platform == 'macosx' and not options.x64build:
-  print('32-bit Mac OS X builds are not supported. ' +
-        'Add --x64-build flag to generate a 64-bit build.')
+if platform == 'mac' and not (options.x64build or options.arm64build):
+  print('32-bit MacOS builds are not supported. ' +
+        'Add --x64-build or --arm64-build flag to generate a 64-bit build.')
   sys.exit()
 
 # Platforms that build a cef_sandbox library.
 sandbox_lib_platforms = ['windows']
 if branch_is_3538_or_newer:
-  sandbox_lib_platforms.append('macosx')
+  sandbox_lib_platforms.append('mac')
 
 if not platform in sandbox_lib_platforms and (options.sandboxdistrib or
                                               options.sandboxdistribonly):
@@ -1640,7 +1642,7 @@
 if options.runtests:
   if platform == 'windows':
     test_exe = '%s.exe' % options.testtarget
-  elif platform == 'macosx':
+  elif platform == 'mac':
     test_exe = '%s.app/Contents/MacOS/%s' % (options.testtarget,
                                              options.testtarget)
   elif platform == 'linux':
@@ -1735,6 +1737,8 @@
     # Override the subdirectory name of binary_distrib if the caller requested.
     if options.distribsubdir != '':
       path += ' --distrib-subdir=' + options.distribsubdir
+    if options.distribsubdirsuffix != '':
+      path += ' --distrib-subdir-suffix=' + options.distribsubdirsuffix
 
     # Create the distribution.
     run(path, cef_tools_dir, depot_tools_dir)
