[apple] Rename the code-signing properties of create_bundle

To support the NLU training step for Swift intents, a more generic
post-processing step will have to be applied to application bundle.

Rename `code_signing_$var` properties of the create_bundle targets
to `post_processing_$var` and update the documentation. Change the
code loading the properties for the target to still look them under
the old name to avoid breaking Chromium when this roll changes.

Bug: none
Change-Id: Ia005180f85fb073075c7005ab8083045cc4d67b1
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/16960
Reviewed-by: Brett Wilson <brettw@google.com>
Reviewed-by: Takuto Ikuta <tikuta@google.com>
Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
diff --git a/docs/reference.md b/docs/reference.md
index 4d912b6..81f58e8 100644
--- a/docs/reference.md
+++ b/docs/reference.md
@@ -108,10 +108,10 @@
     *   [cflags_objc: [string list] Flags passed to the Objective C compiler.](#var_cflags_objc)
     *   [cflags_objcc: [string list] Flags passed to the Objective C++ compiler.](#var_cflags_objcc)
     *   [check_includes: [boolean] Controls whether a target's files are checked.](#var_check_includes)
-    *   [code_signing_args: [string list] Arguments passed to code signing script.](#var_code_signing_args)
-    *   [code_signing_outputs: [file list] Output files for code signing step.](#var_code_signing_outputs)
-    *   [code_signing_script: [file name] Script for code signing.](#var_code_signing_script)
-    *   [code_signing_sources: [file list] Sources for code signing step.](#var_code_signing_sources)
+    *   [code_signing_args: [string list] [deprecated] Args for the post-processing script.](#var_code_signing_args)
+    *   [code_signing_outputs: [file list] [deprecated] Outputs of the post-processing step.](#var_code_signing_outputs)
+    *   [code_signing_script: [file name] [deprecated] Script for the post-processing step.](#var_code_signing_script)
+    *   [code_signing_sources: [file list] [deprecated] Sources for the post-processing step.](#var_code_signing_sources)
     *   [complete_static_lib: [boolean] Links all deps into a static library.](#var_complete_static_lib)
     *   [configs: [label list] Configs applying to this target or config.](#var_configs)
     *   [contents: Contents to write to file.](#var_contents)
@@ -145,6 +145,10 @@
     *   [outputs: [file list] Output files for actions and copy targets.](#var_outputs)
     *   [partial_info_plist: [filename] Path plist from asset catalog compiler.](#var_partial_info_plist)
     *   [pool: [string] Label of the pool used by binary targets and actions.](#var_pool)
+    *   [post_processing_args: [string list] Args for the post-processing script.](#var_post_processing_args)
+    *   [post_processing_outputs: [file list] Outputs of the post-processing step.](#var_post_processing_outputs)
+    *   [post_processing_script: [file name] Script for the post-processing step.](#var_post_processing_script)
+    *   [post_processing_sources: [file list] Sources for the post-processing step.](#var_post_processing_sources)
     *   [precompiled_header: [string] Header file to precompile.](#var_precompiled_header)
     *   [precompiled_header_type: [string] "gcc" or "msvc".](#var_precompiled_header_type)
     *   [precompiled_source: [file name] Source file to precompile.](#var_precompiled_source)
@@ -1748,22 +1752,30 @@
   data_deps, however.
 ```
 
-#### **Code signing**
+#### **Post-processing**
 
 ```
-  Some bundle needs to be code signed as part of the build (on iOS all
-  application needs to be code signed to run on a device). The code signature
-  can be configured via the code_signing_script variable.
+  Some bundle needs to be post-processed as part of the build (e.g. on iOS all
+  application needs to be code signed to run on a device). The post processing
+  step can be configured via the post_processing_script variable.
 
-  If set, code_signing_script is the path of a script that invoked after all
-  files have been moved into the bundle. The script must not change any file in
-  the bundle, but may add new files.
+  If set, `post_processing_script` is the path of a script that invoked after
+  all files have been moved into the bundle. The script must not change any file
+  in the bundle, but may add new files.
 
-  If code_signing_script is defined, then code_signing_outputs must also be
-  defined and non-empty to inform when the script needs to be re-run. The
-  code_signing_args will be passed as is to the script (so path have to be
-  rebased) and additional inputs may be listed with the variable
-  code_signing_sources.
+  If `post_processing_script` is defined, then `post_processing_outputs` must
+  be defined and non-empty to inform when the script needs to be re-run. The
+  `post_processing_args` will be passed as is to the script (so path have to be
+  rebased) and additional inputs may be listed via `post_processing_sources`.
+```
+
+#### **Migration**
+
+```
+  The post-processing step used to be limited to code-signing. The properties
+  used to be named `code_signing_$name` instead of `post_processing_$name`. The
+  old names are still accepted as alias to facilitate migration but a warning
+  will be emitted and the alias eventually be removed.
 ```
 
 #### **Variables**
@@ -1777,9 +1789,10 @@
            visibility
   Bundle vars: bundle_root_dir, bundle_contents_dir, bundle_resources_dir,
                bundle_executable_dir, bundle_deps_filter, product_type,
-               code_signing_args, code_signing_script, code_signing_sources,
-               code_signing_outputs, xcode_extra_attributes,
-               xcode_test_application_name, partial_info_plist
+               post_processing_args, post_processing_script,
+               post_processing_sources, post_processing_outputs,
+               xcode_extra_attributes, xcode_test_application_name,
+               partial_info_plist
 ```
 
 #### **Example**
@@ -1853,19 +1866,19 @@
         deps = [ ":${app_name}_bundle_info_plist" ]
         if (is_ios && code_signing) {
           deps += [ ":${app_name}_generate_executable" ]
-          code_signing_script = "//build/config/ios/codesign.py"
-          code_signing_sources = [
+          post_processing_script = "//build/config/ios/codesign.py"
+          post_processing_sources = [
             invoker.entitlements_path,
             "$target_gen_dir/$app_name",
           ]
-          code_signing_outputs = [
+          post_processing_outputs = [
             "$bundle_root_dir/$app_name",
             "$bundle_root_dir/_CodeSignature/CodeResources",
             "$bundle_root_dir/embedded.mobileprovision",
             "$target_gen_dir/$app_name.xcent",
           ]
-          code_signing_args = [
-            "-i=" + ios_code_signing_identity,
+          post_processing_args = [
+            "-i=" + ios_post_processing_identity,
             "-b=" + rebase_path(
                 "$target_gen_dir/$app_name", root_build_dir),
             "-e=" + rebase_path(
@@ -5370,39 +5383,55 @@
     ...
   }
 ```
-### <a name="var_code_signing_args"></a>**code_signing_args**: [string list] Arguments passed to code signing script.
+### <a name="var_code_signing_args"></a>**code_signing_args**: [string list] [deprecated] Args for the post-processing script.
 
 ```
-  For create_bundle targets, code_signing_args is the list of arguments to pass
-  to the code signing script. Typically you would use source expansion (see "gn
-  help source_expansion") to insert the source file names.
+  For create_bundle targets, post_processing_args is the list of arguments to
+  pass to the post-processing script. Typically you would use source expansion
+  (see "gn help source_expansion") to insert the source file names.
 
-  See also "gn help create_bundle".
+  Deprecated: this is an old name for the "post_processing_args" property of
+  the "create_bundle" target. It is still supported to avoid breaking existing
+  build rules, but a warning will be emitted when it is used.
+
+  See also "gn help create_bundle" and "gn help post_processing_args".
 ```
-### <a name="var_code_signing_outputs"></a>**code_signing_outputs**: [file list] Output files for code signing step.
+### <a name="var_code_signing_outputs"></a>**code_signing_outputs**: [file list] [deprecated] Outputs of the post-processing step.
 
 ```
-  Outputs from the code signing step of a create_bundle target. Must refer to
+  Outputs from the post-processing step of a create_bundle target. Must refer to
   files in the build directory.
 
-  See also "gn help create_bundle".
+  Deprecated: this is an old name for the "post_processing_outputs" property of
+  the "create_bundle" target. It is still supported to avoid breaking existing
+  build rules, but a warning will be emitted when it is used.
+
+  See also "gn help create_bundle" and "gn help post_processing_args".
 ```
-### <a name="var_code_signing_script"></a>**code_signing_script**: [file name] Script for code signing."
+### <a name="var_code_signing_script"></a>**code_signing_script**: [file name] [deprecated] Script for the post-processing step."
 
 ```
   An absolute or buildfile-relative file name of a Python script to run for a
-  create_bundle target to perform code signing step.
+  create_bundle target to perform the post-processing step.
 
-  See also "gn help create_bundle".
+  Deprecated: this is an old name for the "post_processing_script" property of
+  the "create_bundle" target. It is still supported to avoid breaking existing
+  build rules, but a warning will be emitted when it is used.
+
+  See also "gn help create_bundle" and "gn help post_processing_args".
 ```
-### <a name="var_code_signing_sources"></a>**code_signing_sources**: [file list] Sources for code signing step.
+### <a name="var_code_signing_sources"></a>**code_signing_sources**: [file list] [deprecated] Sources for the post-processing step.
 
 ```
-  A list of files used as input for code signing script step of a create_bundle
+  A list of files used as input for the post-processing step of a create_bundle
   target. Non-absolute paths will be resolved relative to the current build
   file.
 
-  See also "gn help create_bundle".
+  Deprecated: this is an old name for the "post_processing_sources" property of
+  the "create_bundle" target. It is still supported to avoid breaking existing
+  build rules, but a warning will be emitted when it is used.
+
+  See also "gn help create_bundle" and "gn help post_processing_args".
 ```
 ### <a name="var_complete_static_lib"></a>**complete_static_lib**: [boolean] Links all deps into a static library.
 
@@ -6346,7 +6375,7 @@
 ```
   Valid for create_bundle target, corresponds to the path for the partial
   Info.plist created by the asset catalog compiler that needs to be merged
-  with the application Info.plist (usually done by the code signing script).
+  with the application Info.plist (usually done by the post-processing script).
 
   The file will be generated regardless of whether the asset compiler has
   been invoked or not. See "gn help create_bundle".
@@ -6371,6 +6400,40 @@
     ...
   }
 ```
+### <a name="var_post_processing_args"></a>**post_processing_args**: [string list] Args for the post-processing script.
+
+```
+  For create_bundle targets, post_processing_args is the list of arguments to
+  pass to the post-processing script. Typically you would use source expansion
+  (see "gn help source_expansion") to insert the source file names.
+
+  See also "gn help create_bundle".
+```
+### <a name="var_post_processing_outputs"></a>**post_processing_outputs**: [file list] Outputs of the post-processing step.
+
+```
+  Outputs from the post-processing step of a create_bundle target. Must refer to
+  files in the build directory.
+
+  See also "gn help create_bundle".
+```
+### <a name="var_post_processing_script"></a>**post_processing_script**: [file name] Script for the post-processing step."
+
+```
+  An absolute or buildfile-relative file name of a Python script to run for a
+  create_bundle target to perform the post-processing step.
+
+  See also "gn help create_bundle".
+```
+### <a name="var_post_processing_sources"></a>**post_processing_sources**: [file list] Sources for the post-processing step.
+
+```
+  A list of files used as input for the post-processing step of a create_bundle
+  target. Non-absolute paths will be resolved relative to the current build
+  file.
+
+  See also "gn help create_bundle".
+```
 ### <a name="var_precompiled_header"></a>**precompiled_header**: [string] Header file to precompile.
 
 ```
diff --git a/misc/emacs/gn-mode.el b/misc/emacs/gn-mode.el
index dc92c9b..f98093e 100644
--- a/misc/emacs/gn-mode.el
+++ b/misc/emacs/gn-mode.el
@@ -84,8 +84,8 @@
   '("all_dependent_configs" "allow_circular_includes_from" "arflags" "args"
     "asmflags" "assert_no_deps" "bundle_deps_filter" "bundle_executable_dir"
     "bundle_resources_dir" "bundle_root_dir" "cflags" "cflags_c" "cflags_cc"
-    "cflags_objc" "cflags_objcc" "check_includes" "code_signing_args"
-    "code_signing_outputs" "code_signing_script" "code_signing_sources"
+    "cflags_objc" "cflags_objcc" "check_includes" "post_processing_args"
+    "post_processing_outputs" "post_processing_script" "post_processing_sources"
     "complete_static_lib" "configs" "data" "data_deps" "defines" "depfile"
     "deps" "framework_dir" "frameworks" "include_dirs" "inputs" "ldflags"
     "lib_dirs" "libs" "output_dir" "output_extension" "output_name"
diff --git a/src/gn/bundle_data.cc b/src/gn/bundle_data.cc
index fdc22fd..86f7abf 100644
--- a/src/gn/bundle_data.cc
+++ b/src/gn/bundle_data.cc
@@ -102,9 +102,9 @@
   }
   sources->insert(sources->end(), assets_catalog_sources_.begin(),
                   assets_catalog_sources_.end());
-  if (!code_signing_script_.is_null()) {
-    sources->insert(sources->end(), code_signing_sources_.begin(),
-                    code_signing_sources_.end());
+  if (!post_processing_script_.is_null()) {
+    sources->insert(sources->end(), post_processing_sources_.begin(),
+                    post_processing_sources_.end());
   }
 }
 
@@ -140,13 +140,13 @@
   if (!partial_info_plist_.is_null())
     outputs_as_source->push_back(partial_info_plist_);
 
-  if (!code_signing_script_.is_null()) {
-    std::vector<SourceFile> code_signing_output_files;
-    SubstitutionWriter::GetListAsSourceFiles(code_signing_outputs_,
-                                             &code_signing_output_files);
+  if (!post_processing_script_.is_null()) {
+    std::vector<SourceFile> post_processing_output_files;
+    SubstitutionWriter::GetListAsSourceFiles(post_processing_outputs_,
+                                             &post_processing_output_files);
     outputs_as_source->insert(outputs_as_source->end(),
-                              code_signing_output_files.begin(),
-                              code_signing_output_files.end());
+                              post_processing_output_files.begin(),
+                              post_processing_output_files.end());
   }
 
   if (!root_dir_.is_null())
diff --git a/src/gn/bundle_data.h b/src/gn/bundle_data.h
index bf0d460..2e03694 100644
--- a/src/gn/bundle_data.h
+++ b/src/gn/bundle_data.h
@@ -142,26 +142,30 @@
   }
   const SourceFile& partial_info_plist() const { return partial_info_plist_; }
 
-  void set_code_signing_script(const SourceFile& script_file) {
-    code_signing_script_ = script_file;
+  void set_post_processing_script(const SourceFile& script_file) {
+    post_processing_script_ = script_file;
   }
-  const SourceFile& code_signing_script() const { return code_signing_script_; }
-
-  std::vector<SourceFile>& code_signing_sources() {
-    return code_signing_sources_;
-  }
-  const std::vector<SourceFile>& code_signing_sources() const {
-    return code_signing_sources_;
+  const SourceFile& post_processing_script() const {
+    return post_processing_script_;
   }
 
-  SubstitutionList& code_signing_outputs() { return code_signing_outputs_; }
-  const SubstitutionList& code_signing_outputs() const {
-    return code_signing_outputs_;
+  std::vector<SourceFile>& post_processing_sources() {
+    return post_processing_sources_;
+  }
+  const std::vector<SourceFile>& post_processing_sources() const {
+    return post_processing_sources_;
   }
 
-  SubstitutionList& code_signing_args() { return code_signing_args_; }
-  const SubstitutionList& code_signing_args() const {
-    return code_signing_args_;
+  SubstitutionList& post_processing_outputs() {
+    return post_processing_outputs_;
+  }
+  const SubstitutionList& post_processing_outputs() const {
+    return post_processing_outputs_;
+  }
+
+  SubstitutionList& post_processing_args() { return post_processing_args_; }
+  const SubstitutionList& post_processing_args() const {
+    return post_processing_args_;
   }
 
   std::vector<LabelPattern>& bundle_deps_filter() {
@@ -233,11 +237,11 @@
   SourceFile partial_info_plist_;
 
   // Holds the values (script name, sources, outputs, script arguments) for the
-  // code signing step if defined.
-  SourceFile code_signing_script_;
-  std::vector<SourceFile> code_signing_sources_;
-  SubstitutionList code_signing_outputs_;
-  SubstitutionList code_signing_args_;
+  // post-processing step if defined.
+  SourceFile post_processing_script_;
+  std::vector<SourceFile> post_processing_sources_;
+  SubstitutionList post_processing_outputs_;
+  SubstitutionList post_processing_args_;
   SubstitutionList xcasset_compiler_flags_;
 
   BundleData(const BundleData&) = delete;
diff --git a/src/gn/create_bundle_target_generator.cc b/src/gn/create_bundle_target_generator.cc
index 5569e75..b12819e 100644
--- a/src/gn/create_bundle_target_generator.cc
+++ b/src/gn/create_bundle_target_generator.cc
@@ -7,6 +7,7 @@
 #include <map>
 
 #include "base/logging.h"
+#include "base/strings/stringprintf.h"
 #include "gn/filesystem_utils.h"
 #include "gn/label_pattern.h"
 #include "gn/parse_tree.h"
@@ -17,6 +18,34 @@
 #include "gn/value_extractors.h"
 #include "gn/variables.h"
 
+namespace {
+
+// Retrieves value from `scope` named `name` or `old_name`. If the value comes
+// from the `old_name` a warning is emitted to inform the name is obsolete.
+const Value* GetValueFromScope(Scope* scope,
+                               std::string_view name,
+                               std::string_view old_name) {
+  const Value* value = scope->GetValue(name, true);
+  if (value)
+    return value;
+
+  value = scope->GetValue(old_name, true);
+  if (value) {
+    // If there is a value found with the old name, print a warning to the
+    // console and use that value. This is to avoid breaking the existing
+    // build rules in the wild.
+    Err err(*value, "Deprecated variable name",
+            base::StringPrintf(
+                "The name \"%s\" is deprecated, use \"%s\" instead.",
+                std::string(old_name).c_str(), std::string(name).c_str()));
+    err.PrintNonfatalToStdout();
+  }
+
+  return value;
+}
+
+}  // namespace
+
 CreateBundleTargetGenerator::CreateBundleTargetGenerator(
     Target* target,
     Scope* scope,
@@ -55,16 +84,16 @@
   if (!FillXcodeTestApplicationName())
     return;
 
-  if (!FillCodeSigningScript())
+  if (!FillPostProcessingScript())
     return;
 
-  if (!FillCodeSigningSources())
+  if (!FillPostProcessingSources())
     return;
 
-  if (!FillCodeSigningOutputs())
+  if (!FillPostProcessingOutputs())
     return;
 
-  if (!FillCodeSigningArgs())
+  if (!FillPostProcessingArgs())
     return;
 
   if (!FillBundleDepsFilter())
@@ -96,12 +125,13 @@
     return false;
   if (str != bundle_root_dir.value() &&
       !IsStringInOutputDir(bundle_root_dir, str)) {
-    *err_ = Err(
-        value->origin(), "Path is not in bundle root dir.",
-        "The given file should be in the bundle root directory or below.\n"
-        "Normally you would do \"$bundle_root_dir/foo\". I interpreted this\n"
-        "as \"" +
-            str + "\".");
+    *err_ =
+        Err(value->origin(), "Path is not in bundle root dir.",
+            base::StringPrintf("The given file should be in the bundle root "
+                               "directory or below.Normally you would do "
+                               "\"$bundle_root_dir/foo\". I interpreted this "
+                               "as \"%s\".",
+                               str.c_str()));
     return false;
   }
   *bundle_dir = SourceDir(std::move(str));
@@ -188,8 +218,9 @@
   return true;
 }
 
-bool CreateBundleTargetGenerator::FillCodeSigningScript() {
-  const Value* value = scope_->GetValue(variables::kCodeSigningScript, true);
+bool CreateBundleTargetGenerator::FillPostProcessingScript() {
+  const Value* value = GetValueFromScope(
+      scope_, variables::kPostProcessingScript, variables::kCodeSigningScript);
   if (!value)
     return true;
 
@@ -201,20 +232,21 @@
   if (err_->has_error())
     return false;
 
-  target_->bundle_data().set_code_signing_script(script_file);
+  target_->bundle_data().set_post_processing_script(script_file);
   return true;
 }
 
-bool CreateBundleTargetGenerator::FillCodeSigningSources() {
-  const Value* value = scope_->GetValue(variables::kCodeSigningSources, true);
+bool CreateBundleTargetGenerator::FillPostProcessingSources() {
+  const Value* value =
+      GetValueFromScope(scope_, variables::kPostProcessingSources,
+                        variables::kCodeSigningSources);
   if (!value)
     return true;
 
-  if (target_->bundle_data().code_signing_script().is_null()) {
-    *err_ = Err(
-        function_call_,
-        "No code signing script."
-        "You must define code_signing_script if you use code_signing_sources.");
+  if (target_->bundle_data().post_processing_script().is_null()) {
+    *err_ = Err(function_call_, "No post-processing script.",
+                "You must define post_processing_script if you use "
+                "post_processing_sources.");
     return false;
   }
 
@@ -224,36 +256,35 @@
                                   err_))
     return false;
 
-  target_->bundle_data().code_signing_sources() = std::move(script_sources);
+  target_->bundle_data().post_processing_sources() = std::move(script_sources);
   return true;
 }
 
-bool CreateBundleTargetGenerator::FillCodeSigningOutputs() {
-  const Value* value = scope_->GetValue(variables::kCodeSigningOutputs, true);
+bool CreateBundleTargetGenerator::FillPostProcessingOutputs() {
+  const Value* value =
+      GetValueFromScope(scope_, variables::kPostProcessingOutputs,
+                        variables::kCodeSigningOutputs);
   if (!value)
     return true;
 
-  if (target_->bundle_data().code_signing_script().is_null()) {
-    *err_ = Err(
-        function_call_,
-        "No code signing script."
-        "You must define code_signing_script if you use code_signing_outputs.");
+  if (target_->bundle_data().post_processing_script().is_null()) {
+    *err_ = Err(function_call_, "No post-processing script.",
+                "You must define post_processing_script if you use "
+                "post_processing_outputs.");
     return false;
   }
 
   if (!value->VerifyTypeIs(Value::LIST, err_))
     return false;
 
-  SubstitutionList& outputs = target_->bundle_data().code_signing_outputs();
+  SubstitutionList& outputs = target_->bundle_data().post_processing_outputs();
   if (!outputs.Parse(*value, err_))
     return false;
 
   if (outputs.list().empty()) {
-    *err_ =
-        Err(function_call_,
-            "Code signing script has no output."
-            "If you have no outputs, the build system can not tell when your\n"
-            "code signing script needs to be run.");
+    *err_ = Err(function_call_, "Post-processing script has no output.",
+                "If you have no outputs, the build system can not tell when "
+                "your post-processing script needs to be run.");
     return false;
   }
 
@@ -268,23 +299,23 @@
   return true;
 }
 
-bool CreateBundleTargetGenerator::FillCodeSigningArgs() {
-  const Value* value = scope_->GetValue(variables::kCodeSigningArgs, true);
+bool CreateBundleTargetGenerator::FillPostProcessingArgs() {
+  const Value* value = GetValueFromScope(scope_, variables::kPostProcessingArgs,
+                                         variables::kCodeSigningArgs);
   if (!value)
     return true;
 
-  if (target_->bundle_data().code_signing_script().is_null()) {
-    *err_ = Err(
-        function_call_,
-        "No code signing script."
-        "You must define code_signing_script if you use code_signing_args.");
+  if (target_->bundle_data().post_processing_script().is_null()) {
+    *err_ = Err(function_call_, "No post-processing script.",
+                "You must define post_processing_script if you use "
+                "post_processing_args.");
     return false;
   }
 
   if (!value->VerifyTypeIs(Value::LIST, err_))
     return false;
 
-  return target_->bundle_data().code_signing_args().Parse(*value, err_);
+  return target_->bundle_data().post_processing_args().Parse(*value, err_);
 }
 
 bool CreateBundleTargetGenerator::FillBundleDepsFilter() {
diff --git a/src/gn/create_bundle_target_generator.h b/src/gn/create_bundle_target_generator.h
index 0e7a535..c713368 100644
--- a/src/gn/create_bundle_target_generator.h
+++ b/src/gn/create_bundle_target_generator.h
@@ -34,10 +34,10 @@
   bool FillPartialInfoPlist();
   bool FillXcodeTestApplicationName();
 
-  bool FillCodeSigningScript();
-  bool FillCodeSigningSources();
-  bool FillCodeSigningOutputs();
-  bool FillCodeSigningArgs();
+  bool FillPostProcessingScript();
+  bool FillPostProcessingSources();
+  bool FillPostProcessingOutputs();
+  bool FillPostProcessingArgs();
   bool FillBundleDepsFilter();
   bool FillXcassetCompilerFlags();
   bool FillTransparent();
diff --git a/src/gn/functions_target.cc b/src/gn/functions_target.cc
index 5a13779..7e262ee 100644
--- a/src/gn/functions_target.cc
+++ b/src/gn/functions_target.cc
@@ -385,21 +385,27 @@
   placed in the bundle. A create_bundle can declare its own explicit data and
   data_deps, however.
 
-Code signing
+Post-processing
 
-  Some bundle needs to be code signed as part of the build (on iOS all
-  application needs to be code signed to run on a device). The code signature
-  can be configured via the code_signing_script variable.
+  Some bundle needs to be post-processed as part of the build (e.g. on iOS all
+  application needs to be code signed to run on a device). The post processing
+  step can be configured via the post_processing_script variable.
 
-  If set, code_signing_script is the path of a script that invoked after all
-  files have been moved into the bundle. The script must not change any file in
-  the bundle, but may add new files.
+  If set, `post_processing_script` is the path of a script that invoked after
+  all files have been moved into the bundle. The script must not change any file
+  in the bundle, but may add new files.
 
-  If code_signing_script is defined, then code_signing_outputs must also be
-  defined and non-empty to inform when the script needs to be re-run. The
-  code_signing_args will be passed as is to the script (so path have to be
-  rebased) and additional inputs may be listed with the variable
-  code_signing_sources.
+  If `post_processing_script` is defined, then `post_processing_outputs` must
+  be defined and non-empty to inform when the script needs to be re-run. The
+  `post_processing_args` will be passed as is to the script (so path have to be
+  rebased) and additional inputs may be listed via `post_processing_sources`.
+
+Migration
+
+  The post-processing step used to be limited to code-signing. The properties
+  used to be named `code_signing_$name` instead of `post_processing_$name`. The
+  old names are still accepted as alias to facilitate migration but a warning
+  will be emitted and the alias eventually be removed.
 
 Variables
 
@@ -407,9 +413,10 @@
 
     R"(  Bundle vars: bundle_root_dir, bundle_contents_dir, bundle_resources_dir,
                bundle_executable_dir, bundle_deps_filter, product_type,
-               code_signing_args, code_signing_script, code_signing_sources,
-               code_signing_outputs, xcode_extra_attributes,
-               xcode_test_application_name, partial_info_plist
+               post_processing_args, post_processing_script,
+               post_processing_sources, post_processing_outputs,
+               xcode_extra_attributes, xcode_test_application_name,
+               partial_info_plist
 
 Example
 
@@ -481,19 +488,19 @@
         deps = [ ":${app_name}_bundle_info_plist" ]
         if (is_ios && code_signing) {
           deps += [ ":${app_name}_generate_executable" ]
-          code_signing_script = "//build/config/ios/codesign.py"
-          code_signing_sources = [
+          post_processing_script = "//build/config/ios/codesign.py"
+          post_processing_sources = [
             invoker.entitlements_path,
             "$target_gen_dir/$app_name",
           ]
-          code_signing_outputs = [
+          post_processing_outputs = [
             "$bundle_root_dir/$app_name",
             "$bundle_root_dir/_CodeSignature/CodeResources",
             "$bundle_root_dir/embedded.mobileprovision",
             "$target_gen_dir/$app_name.xcent",
           ]
-          code_signing_args = [
-            "-i=" + ios_code_signing_identity,
+          post_processing_args = [
+            "-i=" + ios_post_processing_identity,
             "-b=" + rebase_path(
                 "$target_gen_dir/$app_name", root_build_dir),
             "-e=" + rebase_path(
diff --git a/src/gn/ninja_create_bundle_target_writer.cc b/src/gn/ninja_create_bundle_target_writer.cc
index efa950e..a453fce 100644
--- a/src/gn/ninja_create_bundle_target_writer.cc
+++ b/src/gn/ninja_create_bundle_target_writer.cc
@@ -76,18 +76,19 @@
   if (!EnsureAllToolsAvailable(target_))
     return;
 
-  // Stamp users are CopyBundleData, CompileAssetsCatalog, CodeSigning and
+  // Stamp users are CopyBundleData, CompileAssetsCatalog, PostProcessing and
   // StampForTarget.
   size_t num_stamp_uses = 4;
   std::vector<OutputFile> order_only_deps = WriteInputDepsStampAndGetDep(
       std::vector<const Target*>(), num_stamp_uses);
 
-  std::string code_signing_rule_name = WriteCodeSigningRuleDefinition();
+  std::string post_processing_rule_name = WritePostProcessingRuleDefinition();
 
   std::vector<OutputFile> output_files;
   WriteCopyBundleDataSteps(order_only_deps, &output_files);
   WriteCompileAssetsCatalogStep(order_only_deps, &output_files);
-  WriteCodeSigningStep(code_signing_rule_name, order_only_deps, &output_files);
+  WritePostProcessingStep(post_processing_rule_name, order_only_deps,
+                          &output_files);
 
   for (const Target* data_dep : resolved().GetDataDeps(target_))
     order_only_deps.push_back(data_dep->dependency_output_file());
@@ -106,22 +107,22 @@
   out_ << std::endl;
 }
 
-std::string NinjaCreateBundleTargetWriter::WriteCodeSigningRuleDefinition() {
-  if (target_->bundle_data().code_signing_script().is_null())
+std::string NinjaCreateBundleTargetWriter::WritePostProcessingRuleDefinition() {
+  if (target_->bundle_data().post_processing_script().is_null())
     return std::string();
 
   std::string target_label = target_->label().GetUserVisibleName(true);
   std::string custom_rule_name(target_label);
   base::ReplaceChars(custom_rule_name, ":/()", "_", &custom_rule_name);
-  custom_rule_name.append("_code_signing_rule");
+  custom_rule_name.append("_post_processing_rule");
 
   out_ << "rule " << custom_rule_name << std::endl;
   out_ << "  command = ";
   path_output_.WriteFile(out_, settings_->build_settings()->python_path());
   out_ << " ";
-  path_output_.WriteFile(out_, target_->bundle_data().code_signing_script());
+  path_output_.WriteFile(out_, target_->bundle_data().post_processing_script());
 
-  const SubstitutionList& args = target_->bundle_data().code_signing_args();
+  const SubstitutionList& args = target_->bundle_data().post_processing_args();
   EscapeOptions args_escape_options;
   args_escape_options.mode = ESCAPE_NINJA_COMMAND;
 
@@ -130,7 +131,7 @@
     SubstitutionWriter::WriteWithNinjaVariables(arg, args_escape_options, out_);
   }
   out_ << std::endl;
-  out_ << "  description = CODE SIGNING " << target_label << std::endl;
+  out_ << "  description = POST PROCESSING " << target_label << std::endl;
   out_ << "  restat = 1" << std::endl;
   out_ << std::endl;
 
@@ -302,65 +303,67 @@
   return xcassets_input_stamp_file;
 }
 
-void NinjaCreateBundleTargetWriter::WriteCodeSigningStep(
-    const std::string& code_signing_rule_name,
+void NinjaCreateBundleTargetWriter::WritePostProcessingStep(
+    const std::string& post_processing_rule_name,
     const std::vector<OutputFile>& order_only_deps,
     std::vector<OutputFile>* output_files) {
-  if (code_signing_rule_name.empty())
+  if (post_processing_rule_name.empty())
     return;
 
-  OutputFile code_signing_input_stamp_file =
-      WriteCodeSigningInputDepsStamp(order_only_deps, output_files);
-  DCHECK(!code_signing_input_stamp_file.value().empty());
+  OutputFile post_processing_input_stamp_file =
+      WritePostProcessingInputDepsStamp(order_only_deps, output_files);
+  DCHECK(!post_processing_input_stamp_file.value().empty());
 
   out_ << "build";
-  std::vector<OutputFile> code_signing_output_files;
+  std::vector<OutputFile> post_processing_output_files;
   SubstitutionWriter::GetListAsOutputFiles(
-      settings_, target_->bundle_data().code_signing_outputs(),
-      &code_signing_output_files);
-  WriteOutputs(code_signing_output_files);
+      settings_, target_->bundle_data().post_processing_outputs(),
+      &post_processing_output_files);
+  WriteOutputs(post_processing_output_files);
 
-  // Since the code signature step depends on all the files from the bundle,
+  // Since the post-processing step depends on all the files from the bundle,
   // the create_bundle stamp can just depends on the output of the signature
   // script (dependencies are transitive).
-  *output_files = std::move(code_signing_output_files);
+  *output_files = std::move(post_processing_output_files);
 
-  out_ << ": " << code_signing_rule_name;
+  out_ << ": " << post_processing_rule_name;
   out_ << " | ";
-  path_output_.WriteFile(out_, code_signing_input_stamp_file);
+  path_output_.WriteFile(out_, post_processing_input_stamp_file);
   out_ << std::endl;
 }
 
-OutputFile NinjaCreateBundleTargetWriter::WriteCodeSigningInputDepsStamp(
+OutputFile NinjaCreateBundleTargetWriter::WritePostProcessingInputDepsStamp(
     const std::vector<OutputFile>& order_only_deps,
     std::vector<OutputFile>* output_files) {
-  std::vector<SourceFile> code_signing_input_files;
-  code_signing_input_files.push_back(
-      target_->bundle_data().code_signing_script());
-  code_signing_input_files.insert(
-      code_signing_input_files.end(),
-      target_->bundle_data().code_signing_sources().begin(),
-      target_->bundle_data().code_signing_sources().end());
+  std::vector<SourceFile> post_processing_input_files;
+  post_processing_input_files.push_back(
+      target_->bundle_data().post_processing_script());
+  post_processing_input_files.insert(
+      post_processing_input_files.end(),
+      target_->bundle_data().post_processing_sources().begin(),
+      target_->bundle_data().post_processing_sources().end());
   for (const OutputFile& output_file : *output_files) {
-    code_signing_input_files.push_back(
+    post_processing_input_files.push_back(
         output_file.AsSourceFile(settings_->build_settings()));
   }
 
-  DCHECK(!code_signing_input_files.empty());
-  if (code_signing_input_files.size() == 1 && order_only_deps.empty())
-    return OutputFile(settings_->build_settings(), code_signing_input_files[0]);
+  DCHECK(!post_processing_input_files.empty());
+  if (post_processing_input_files.size() == 1 && order_only_deps.empty())
+    return OutputFile(settings_->build_settings(),
+                      post_processing_input_files[0]);
 
-  OutputFile code_signing_input_stamp_file =
+  OutputFile post_processing_input_stamp_file =
       GetBuildDirForTargetAsOutputFile(target_, BuildDirType::OBJ);
-  code_signing_input_stamp_file.value().append(target_->label().name());
-  code_signing_input_stamp_file.value().append(".codesigning.inputdeps.stamp");
+  post_processing_input_stamp_file.value().append(target_->label().name());
+  post_processing_input_stamp_file.value().append(
+      ".postprocessing.inputdeps.stamp");
 
   out_ << "build ";
-  WriteOutput(code_signing_input_stamp_file);
+  WriteOutput(post_processing_input_stamp_file);
   out_ << ": " << GetNinjaRulePrefixForToolchain(settings_)
        << GeneralTool::kGeneralToolStamp;
 
-  for (const SourceFile& source : code_signing_input_files) {
+  for (const SourceFile& source : post_processing_input_files) {
     out_ << " ";
     path_output_.WriteFile(out_, source);
   }
@@ -369,5 +372,5 @@
     path_output_.WriteFiles(out_, order_only_deps);
   }
   out_ << std::endl;
-  return code_signing_input_stamp_file;
+  return post_processing_input_stamp_file;
 }
diff --git a/src/gn/ninja_create_bundle_target_writer.h b/src/gn/ninja_create_bundle_target_writer.h
index 34951fb..609bc6b 100644
--- a/src/gn/ninja_create_bundle_target_writer.h
+++ b/src/gn/ninja_create_bundle_target_writer.h
@@ -18,11 +18,11 @@
   void Run() override;
 
  private:
-  // Writes the Ninja rule for invoking the code signing script.
+  // Writes the Ninja rule for invoking the post-processing script.
   //
-  // Returns the name of the custom rule generated for the code signing step if
-  // defined, otherwise returns an empty string.
-  std::string WriteCodeSigningRuleDefinition();
+  // Returns the name of the custom rule generated for the post-processing step
+  // if defined, otherwise returns an empty string.
+  std::string WritePostProcessingRuleDefinition();
 
   // Writes the steps to copy files into the bundle.
   //
@@ -50,17 +50,17 @@
   OutputFile WriteCompileAssetsCatalogInputDepsStamp(
       const std::vector<const Target*>& dependencies);
 
-  // Writes the code signing step (if a script is defined).
+  // Writes the post-processing step (if a script is defined).
   //
   // The list of newly created files will be added to |output_files|. As the
-  // code signing may depends on the full bundle structure, this step will
+  // post-processing may depends on the full bundle structure, this step will
   // depends on all files generated via other rules.
-  void WriteCodeSigningStep(const std::string& code_signing_rule_name,
-                            const std::vector<OutputFile>& order_only_deps,
-                            std::vector<OutputFile>* output_files);
+  void WritePostProcessingStep(const std::string& post_processing_rule_name,
+                               const std::vector<OutputFile>& order_only_deps,
+                               std::vector<OutputFile>* output_files);
 
-  // Writes the stamp file for the code signing input dependencies.
-  OutputFile WriteCodeSigningInputDepsStamp(
+  // Writes the stamp file for the post-processing input dependencies.
+  OutputFile WritePostProcessingInputDepsStamp(
       const std::vector<OutputFile>& order_only_deps,
       std::vector<OutputFile>* output_files);
 
diff --git a/src/gn/ninja_create_bundle_target_writer_unittest.cc b/src/gn/ninja_create_bundle_target_writer_unittest.cc
index 997c058..4397643 100644
--- a/src/gn/ninja_create_bundle_target_writer_unittest.cc
+++ b/src/gn/ninja_create_bundle_target_writer_unittest.cc
@@ -414,8 +414,8 @@
   EXPECT_EQ(expected, out_str);
 }
 
-// Tests code signing steps.
-TEST(NinjaCreateBundleTargetWriter, CodeSigning) {
+// Tests post-processing step.
+TEST(NinjaCreateBundleTargetWriter, PostProcessing) {
   Err err;
   TestWithScope setup;
 
@@ -445,15 +445,15 @@
             setup.toolchain()->label().name()));
   SetupBundleDataDir(&create_bundle.bundle_data(), "//out/Debug");
   create_bundle.set_output_type(Target::CREATE_BUNDLE);
-  create_bundle.bundle_data().set_code_signing_script(
+  create_bundle.bundle_data().set_post_processing_script(
       SourceFile("//build/codesign.py"));
-  create_bundle.bundle_data().code_signing_sources().push_back(
+  create_bundle.bundle_data().post_processing_sources().push_back(
       SourceFile("//out/Debug/quz"));
-  create_bundle.bundle_data().code_signing_outputs() =
+  create_bundle.bundle_data().post_processing_outputs() =
       SubstitutionList::MakeForTest(
           "//out/Debug/bar.bundle/Contents/quz",
           "//out/Debug/bar.bundle/_CodeSignature/CodeResources");
-  create_bundle.bundle_data().code_signing_args() =
+  create_bundle.bundle_data().post_processing_args() =
       SubstitutionList::MakeForTest("-b=quz", "bar.bundle");
   create_bundle.public_deps().push_back(LabelTargetPair(&executable));
   create_bundle.private_deps().push_back(LabelTargetPair(&bundle_data));
@@ -468,24 +468,24 @@
   const char expected[] =
       "build obj/baz/bar.inputdeps.stamp: stamp ./quz obj/foo/bar.stamp "
       "obj/foo/data.stamp\n"
-      "rule __baz_bar___toolchain_default__code_signing_rule\n"
+      "rule __baz_bar___toolchain_default__post_processing_rule\n"
       "  command =  ../../build/codesign.py -b=quz bar.bundle\n"
-      "  description = CODE SIGNING //baz:bar(//toolchain:default)\n"
+      "  description = POST PROCESSING //baz:bar(//toolchain:default)\n"
       "  restat = 1\n"
       "\n"
       "build bar.bundle/Contents/Resources/input1.txt: copy_bundle_data "
       "../../foo/input1.txt || obj/baz/bar.inputdeps.stamp\n"
       "build bar.bundle/Contents/Resources/input2.txt: copy_bundle_data "
       "../../foo/input2.txt || obj/baz/bar.inputdeps.stamp\n"
-      "build obj/baz/bar.codesigning.inputdeps.stamp: stamp "
+      "build obj/baz/bar.postprocessing.inputdeps.stamp: stamp "
       "../../build/codesign.py "
       "quz "
       "bar.bundle/Contents/Resources/input1.txt "
       "bar.bundle/Contents/Resources/input2.txt || "
       "obj/baz/bar.inputdeps.stamp\n"
       "build bar.bundle/Contents/quz bar.bundle/_CodeSignature/CodeResources: "
-      "__baz_bar___toolchain_default__code_signing_rule "
-      "| obj/baz/bar.codesigning.inputdeps.stamp\n"
+      "__baz_bar___toolchain_default__post_processing_rule "
+      "| obj/baz/bar.postprocessing.inputdeps.stamp\n"
       "build obj/baz/bar.stamp: stamp "
       "bar.bundle/Contents/quz "
       "bar.bundle/_CodeSignature/CodeResources || obj/baz/bar.inputdeps.stamp\n"
diff --git a/src/gn/variables.cc b/src/gn/variables.cc
index 4949929..710a3de 100644
--- a/src/gn/variables.cc
+++ b/src/gn/variables.cc
@@ -857,52 +857,73 @@
 
 const char kCodeSigningArgs[] = "code_signing_args";
 const char kCodeSigningArgs_HelpShort[] =
-    "code_signing_args: [string list] Arguments passed to code signing script.";
+    "code_signing_args: [string list] [deprecated] Args for the "
+    "post-processing script.";
 const char kCodeSigningArgs_Help[] =
-    R"(code_signing_args: [string list] Arguments passed to code signing script.
+    R"(code_signing_args: [string list] [deprecated] Args for the post-processing script.
 
-  For create_bundle targets, code_signing_args is the list of arguments to pass
-  to the code signing script. Typically you would use source expansion (see "gn
-  help source_expansion") to insert the source file names.
+  For create_bundle targets, post_processing_args is the list of arguments to
+  pass to the post-processing script. Typically you would use source expansion
+  (see "gn help source_expansion") to insert the source file names.
 
-  See also "gn help create_bundle".
-)";
+  Deprecated: this is an old name for the "post_processing_args" property of
+  the "create_bundle" target. It is still supported to avoid breaking existing
+  build rules, but a warning will be emitted when it is used.
 
-const char kCodeSigningScript[] = "code_signing_script";
-const char kCodeSigningScript_HelpShort[] =
-    "code_signing_script: [file name] Script for code signing.";
-const char kCodeSigningScript_Help[] =
-    R"(code_signing_script: [file name] Script for code signing."
-
-  An absolute or buildfile-relative file name of a Python script to run for a
-  create_bundle target to perform code signing step.
-
-  See also "gn help create_bundle".
-)";
-
-const char kCodeSigningSources[] = "code_signing_sources";
-const char kCodeSigningSources_HelpShort[] =
-    "code_signing_sources: [file list] Sources for code signing step.";
-const char kCodeSigningSources_Help[] =
-    R"(code_signing_sources: [file list] Sources for code signing step.
-
-  A list of files used as input for code signing script step of a create_bundle
-  target. Non-absolute paths will be resolved relative to the current build
-  file.
-
-  See also "gn help create_bundle".
+  See also "gn help create_bundle" and "gn help post_processing_args".
 )";
 
 const char kCodeSigningOutputs[] = "code_signing_outputs";
 const char kCodeSigningOutputs_HelpShort[] =
-    "code_signing_outputs: [file list] Output files for code signing step.";
+    "code_signing_outputs: [file list] [deprecated] Outputs of the "
+    "post-processing step.";
 const char kCodeSigningOutputs_Help[] =
-    R"(code_signing_outputs: [file list] Output files for code signing step.
+    R"(code_signing_outputs: [file list] [deprecated] Outputs of the post-processing step.
 
-  Outputs from the code signing step of a create_bundle target. Must refer to
+  Outputs from the post-processing step of a create_bundle target. Must refer to
   files in the build directory.
 
-  See also "gn help create_bundle".
+  Deprecated: this is an old name for the "post_processing_outputs" property of
+  the "create_bundle" target. It is still supported to avoid breaking existing
+  build rules, but a warning will be emitted when it is used.
+
+  See also "gn help create_bundle" and "gn help post_processing_args".
+)";
+
+const char kCodeSigningScript[] = "code_signing_script";
+const char kCodeSigningScript_HelpShort[] =
+    "code_signing_script: [file name] [deprecated] Script for the "
+    "post-processing step.";
+const char kCodeSigningScript_Help[] =
+    R"(code_signing_script: [file name] [deprecated] Script for the post-processing step."
+
+  An absolute or buildfile-relative file name of a Python script to run for a
+  create_bundle target to perform the post-processing step.
+
+  Deprecated: this is an old name for the "post_processing_script" property of
+  the "create_bundle" target. It is still supported to avoid breaking existing
+  build rules, but a warning will be emitted when it is used.
+
+  See also "gn help create_bundle" and "gn help post_processing_args".
+)";
+
+const char kCodeSigningSources[] = "code_signing_sources";
+const char kCodeSigningSources_HelpShort[] =
+    "code_signing_sources: [file list] [deprecated] Sources for the "
+    "post-processing "
+    "step.";
+const char kCodeSigningSources_Help[] =
+    R"(code_signing_sources: [file list] [deprecated] Sources for the post-processing step.
+
+  A list of files used as input for the post-processing step of a create_bundle
+  target. Non-absolute paths will be resolved relative to the current build
+  file.
+
+  Deprecated: this is an old name for the "post_processing_sources" property of
+  the "create_bundle" target. It is still supported to avoid breaking existing
+  build rules, but a warning will be emitted when it is used.
+
+  See also "gn help create_bundle" and "gn help post_processing_args".
 )";
 
 const char kCompleteStaticLib[] = "complete_static_lib";
@@ -1639,7 +1660,7 @@
 
   Valid for create_bundle target, corresponds to the path for the partial
   Info.plist created by the asset catalog compiler that needs to be merged
-  with the application Info.plist (usually done by the code signing script).
+  with the application Info.plist (usually done by the post-processing script).
 
   The file will be generated regardless of whether the asset compiler has
   been invoked or not. See "gn help create_bundle".
@@ -1694,6 +1715,57 @@
   }
 )";
 
+const char kPostProcessingArgs[] = "post_processing_args";
+const char kPostProcessingArgs_HelpShort[] =
+    "post_processing_args: [string list] Args for the post-processing script.";
+const char kPostProcessingArgs_Help[] =
+    R"(post_processing_args: [string list] Args for the post-processing script.
+
+  For create_bundle targets, post_processing_args is the list of arguments to
+  pass to the post-processing script. Typically you would use source expansion
+  (see "gn help source_expansion") to insert the source file names.
+
+  See also "gn help create_bundle".
+)";
+
+const char kPostProcessingOutputs[] = "post_processing_outputs";
+const char kPostProcessingOutputs_HelpShort[] =
+    "post_processing_outputs: [file list] Outputs of the post-processing step.";
+const char kPostProcessingOutputs_Help[] =
+    R"(post_processing_outputs: [file list] Outputs of the post-processing step.
+
+  Outputs from the post-processing step of a create_bundle target. Must refer to
+  files in the build directory.
+
+  See also "gn help create_bundle".
+)";
+
+const char kPostProcessingScript[] = "post_processing_script";
+const char kPostProcessingScript_HelpShort[] =
+    "post_processing_script: [file name] Script for the post-processing step.";
+const char kPostProcessingScript_Help[] =
+    R"(post_processing_script: [file name] Script for the post-processing step."
+
+  An absolute or buildfile-relative file name of a Python script to run for a
+  create_bundle target to perform the post-processing step.
+
+  See also "gn help create_bundle".
+)";
+
+const char kPostProcessingSources[] = "post_processing_sources";
+const char kPostProcessingSources_HelpShort[] =
+    "post_processing_sources: [file list] Sources for the post-processing "
+    "step.";
+const char kPostProcessingSources_Help[] =
+    R"(post_processing_sources: [file list] Sources for the post-processing step.
+
+  A list of files used as input for the post-processing step of a create_bundle
+  target. Non-absolute paths will be resolved relative to the current build
+  file.
+
+  See also "gn help create_bundle".
+)";
+
 const char kPrecompiledHeader[] = "precompiled_header";
 const char kPrecompiledHeader_HelpShort[] =
     "precompiled_header: [string] Header file to precompile.";
@@ -2355,9 +2427,9 @@
     INSERT_VARIABLE(CflagsObjCC)
     INSERT_VARIABLE(CheckIncludes)
     INSERT_VARIABLE(CodeSigningArgs)
+    INSERT_VARIABLE(CodeSigningOutputs)
     INSERT_VARIABLE(CodeSigningScript)
     INSERT_VARIABLE(CodeSigningSources)
-    INSERT_VARIABLE(CodeSigningOutputs)
     INSERT_VARIABLE(CompleteStaticLib)
     INSERT_VARIABLE(Configs)
     INSERT_VARIABLE(Data)
@@ -2384,6 +2456,10 @@
     INSERT_VARIABLE(Outputs)
     INSERT_VARIABLE(PartialInfoPlist)
     INSERT_VARIABLE(Pool)
+    INSERT_VARIABLE(PostProcessingArgs)
+    INSERT_VARIABLE(PostProcessingOutputs)
+    INSERT_VARIABLE(PostProcessingScript)
+    INSERT_VARIABLE(PostProcessingSources)
     INSERT_VARIABLE(PrecompiledHeader)
     INSERT_VARIABLE(PrecompiledHeaderType)
     INSERT_VARIABLE(PrecompiledSource)
diff --git a/src/gn/variables.h b/src/gn/variables.h
index 56d7000..b8a0d54 100644
--- a/src/gn/variables.h
+++ b/src/gn/variables.h
@@ -162,6 +162,10 @@
 extern const char kCodeSigningArgs_HelpShort[];
 extern const char kCodeSigningArgs_Help[];
 
+extern const char kCodeSigningOutputs[];
+extern const char kCodeSigningOutputs_HelpShort[];
+extern const char kCodeSigningOutputs_Help[];
+
 extern const char kCodeSigningScript[];
 extern const char kCodeSigningScript_HelpShort[];
 extern const char kCodeSigningScript_Help[];
@@ -170,10 +174,6 @@
 extern const char kCodeSigningSources_HelpShort[];
 extern const char kCodeSigningSources_Help[];
 
-extern const char kCodeSigningOutputs[];
-extern const char kCodeSigningOutputs_HelpShort[];
-extern const char kCodeSigningOutputs_Help[];
-
 extern const char kCompleteStaticLib[];
 extern const char kCompleteStaticLib_HelpShort[];
 extern const char kCompleteStaticLib_Help[];
@@ -274,6 +274,22 @@
 extern const char kPool_HelpShort[];
 extern const char kPool_Help[];
 
+extern const char kPostProcessingArgs[];
+extern const char kPostProcessingArgs_HelpShort[];
+extern const char kPostProcessingArgs_Help[];
+
+extern const char kPostProcessingOutputs[];
+extern const char kPostProcessingOutputs_HelpShort[];
+extern const char kPostProcessingOutputs_Help[];
+
+extern const char kPostProcessingScript[];
+extern const char kPostProcessingScript_HelpShort[];
+extern const char kPostProcessingScript_Help[];
+
+extern const char kPostProcessingSources[];
+extern const char kPostProcessingSources_HelpShort[];
+extern const char kPostProcessingSources_Help[];
+
 extern const char kPrecompiledHeader[];
 extern const char kPrecompiledHeader_HelpShort[];
 extern const char kPrecompiledHeader_Help[];