diff --git a/tools/gn/builder.cc b/tools/gn/builder.cc
index bfae69f..540d83d 100644
--- a/tools/gn/builder.cc
+++ b/tools/gn/builder.cc
@@ -397,7 +397,7 @@
   if (action_values.pool().label.is_null())
     return true;
 
-  BuilderRecord* pool_record = GetResolvedRecordOfType(
+  BuilderRecord* pool_record = GetOrCreateRecordOfType(
       action_values.pool().label, action_values.pool().origin,
       BuilderRecord::ITEM_POOL, err);
   if (!pool_record)
diff --git a/tools/gn/docs/reference.md b/tools/gn/docs/reference.md
index de924a7..cdc4ca4 100644
--- a/tools/gn/docs/reference.md
+++ b/tools/gn/docs/reference.md
@@ -97,7 +97,6 @@
     *   [code_signing_sources: [file list] Sources for code signing step.](#code_signing_sources)
     *   [complete_static_lib: [boolean] Links all deps into a static library.](#complete_static_lib)
     *   [configs: [label list] Configs applying to this target or config.](#configs)
-    *   [console: [label] Console pool object.](#console)
     *   [data: [file list] Runtime data file dependencies.](#data)
     *   [data_deps: [label list] Non-linked dependencies.](#data_deps)
     *   [defines: [string list] C preprocessor defines.](#defines)
@@ -1041,7 +1040,7 @@
 #### **Variables**
 
 ```
-  args, console, data, data_deps, depfile, deps, inputs, outputs*,
+  args, data, data_deps, depfile, deps, inputs, outputs*, pool,
   response_file_contents, script*, sources
   * = required
 ```
@@ -1119,7 +1118,7 @@
 #### **Variables**
 
 ```
-  args, console, data, data_deps, depfile, deps, inputs, outputs*,
+  args, data, data_deps, depfile, deps, inputs, outputs*, pool,
   response_file_contents, script*, sources*
   * = required
 ```
@@ -2146,7 +2145,9 @@
              variable_to_ignore_list = [])
 
   Mark the variables in the current or given scope as not needed, which means
-  you will not get an error about unused variables for these.
+  you will not get an error about unused variables for these. The
+  variable_to_ignore_list allows excluding variables from "all matches" if
+  variable_list_or_star is "*".
 ```
 
 #### **Example**
@@ -4327,27 +4328,6 @@
     }
   }
 ```
-### <a name="console"></a>**console**: Console pool objects.
-
-```
-  Console pool is a special pool object that uses the built-in ninja "console"
-  pool. Target using this pool will have access to real stdin and stdout, and
-  output will not be buffered by ninja. This can be useful for long-running
-  actions with progress logs, or actions that require user input.
-
-  Only one console pool target can run at any one time in Ninja. Refer to the
-  Ninja documentation on the console pool for more info.
-```
-
-#### **Example**
-
-```
-  action("my_action") {
-    ...
-    pool = console
-    ...
-  }
-```
 ### <a name="data"></a>**data**: Runtime data file dependencies.
 
 ```
diff --git a/tools/gn/functions_target.cc b/tools/gn/functions_target.cc
index fa97c86..903ab38 100644
--- a/tools/gn/functions_target.cc
+++ b/tools/gn/functions_target.cc
@@ -136,7 +136,7 @@
 R"(
 Variables
 
-  args, console, data, data_deps, depfile, deps, inputs, outputs*,
+  args, data, data_deps, depfile, deps, inputs, outputs*, pool,
   response_file_contents, script*, sources
   * = required
 
@@ -209,7 +209,7 @@
 R"(
 Variables
 
-  args, console, data, data_deps, depfile, deps, inputs, outputs*,
+  args, data, data_deps, depfile, deps, inputs, outputs*, pool,
   response_file_contents, script*, sources*
   * = required
 
diff --git a/tools/gn/ninja_action_target_writer_unittest.cc b/tools/gn/ninja_action_target_writer_unittest.cc
index e24fb0d..3c4c05d 100644
--- a/tools/gn/ninja_action_target_writer_unittest.cc
+++ b/tools/gn/ninja_action_target_writer_unittest.cc
@@ -75,8 +75,8 @@
 }
 
 
-// Tests an action with no sources and console = true
-TEST(NinjaActionTargetWriter, ActionNoSourcesConsole) {
+// Tests an action with no sources and pool
+TEST(NinjaActionTargetWriter, ActionNoSourcesPool) {
   Err err;
   TestWithScope setup;
 
@@ -89,8 +89,11 @@
   target.action_values().outputs() =
       SubstitutionList::MakeForTest("//out/Debug/foo.out");
 
-  Pool pool(setup.settings(), Label(SourceDir("//foo/"), "pool"), {});
-  pool.set_console(true);
+  Pool pool(setup.settings(),
+            Label(SourceDir("//foo/"), "pool", setup.toolchain()->label().dir(),
+                  setup.toolchain()->label().name()),
+            {});
+  pool.set_depth(5);
   target.action_values().set_pool(LabelPtrPair<Pool>(&pool));
 
   target.SetToolchain(setup.toolchain());
@@ -112,7 +115,7 @@
           "../../foo/included.txt\n"
       "\n"
       "build foo.out: __foo_bar___rule | obj/foo/bar.inputdeps.stamp\n"
-      "  pool = console\n"
+      "  pool = foo_pool\n"
       "\n"
       "build obj/foo/bar.stamp: stamp foo.out\n";
   EXPECT_EQ(expected, out.str());
diff --git a/tools/gn/pool.cc b/tools/gn/pool.cc
index b1bb490..75a7504 100644
--- a/tools/gn/pool.cc
+++ b/tools/gn/pool.cc
@@ -25,9 +25,6 @@
 }
 
 std::string Pool::GetNinjaName(bool include_toolchain) const {
-  if (console_)
-    return "console";
-
   std::ostringstream buffer;
   if (include_toolchain) {
     DCHECK(label().toolchain_dir().is_source_absolute());
diff --git a/tools/gn/pool.h b/tools/gn/pool.h
index 08da33c..81a021d 100644
--- a/tools/gn/pool.h
+++ b/tools/gn/pool.h
@@ -29,10 +29,6 @@
   int64_t depth() const { return depth_; }
   void set_depth(int64_t depth) { depth_ = depth; }
 
-  // Console pool option
-  bool is_console() const { return console_; }
-  void set_console(bool value) { console_ = value; }
-
   // The pool name in generated ninja files.
   std::string GetNinjaName(const Label& default_toolchain) const;
 
@@ -40,7 +36,6 @@
   std::string GetNinjaName(bool include_toolchain) const;
 
   int64_t depth_ = 0;
-  bool console_ = false;
 };
 
 #endif  // TOOLS_GN_POOL_H_
