diff --git a/tools/check-licenses/cmd/main.go b/tools/check-licenses/cmd/main.go
index bd366ae..a9dd1ff 100644
--- a/tools/check-licenses/cmd/main.go
+++ b/tools/check-licenses/cmd/main.go
@@ -38,6 +38,7 @@
 
 	logLevel          = flag.Int("log_level", 0, "Log level")
 	baseDir           = flag.String("base_dir", "", "Root location to begin directory traversal.")
+	outDir            = flag.String("out_dir", "", "Directory to write outputs to.")
 	outputLicenseFile = flag.Bool("output_license_file", true, "If true, outputs a license file with all the licenses for the project.")
 	target            = flag.String("target", "", "Analyze the dependency tree of a specific GN build target.")
 )
@@ -168,6 +169,13 @@
 		config.BaseDir = *baseDir
 	}
 
+	if *outDir != "" {
+		if info, err := os.Stat(*outDir); os.IsNotExist(err) && info.IsDir() {
+			return fmt.Errorf("out directory path %q does not exist!", *baseDir)
+		}
+		config.OutDir = *outDir
+	}
+
 	if *target != "" {
 		log.Printf("WARNING: Flag \"target\" was set to \"%v\", but that flag is currently unsupported. check-licenses will parse the full directory tree.\n", *target)
 		//TODO: enable target-based dependency traversal
diff --git a/tools/check-licenses/config.go b/tools/check-licenses/config.go
index df748e6..0f01f28 100644
--- a/tools/check-licenses/config.go
+++ b/tools/check-licenses/config.go
@@ -49,6 +49,7 @@
 	LogLevel    string `json:"logLevel"`
 	MaxReadSize int    `json:"maxReadSize"`
 	BaseDir     string `json:"baseDir"`
+	OutDir      string `json:"outDir"`
 	Target      string `json:"target"`
 }
 
@@ -80,6 +81,9 @@
 	if c.BaseDir == "" {
 		c.BaseDir = "."
 	}
+	if c.OutDir == "" {
+		c.OutDir = "."
+	}
 
 	// Ensure we aren't skipping any directories in the CustomProjectLicenses map.
 	for _, k := range c.CustomProjectLicenses {
@@ -120,6 +124,9 @@
 	if c.BaseDir == "" {
 		c.BaseDir = other.BaseDir
 	}
+	if c.OutDir == "" {
+		c.OutDir = other.OutDir
+	}
 	if c.Target == "" {
 		c.Target = other.Target
 	}
@@ -150,6 +157,9 @@
 	if c.BaseDir == "" {
 		c.BaseDir = other.BaseDir
 	}
+	if c.OutDir == "" {
+		c.OutDir = other.OutDir
+	}
 	if c.Target == "" {
 		c.Target = other.Target
 	}
diff --git a/tools/check-licenses/license_data.gni b/tools/check-licenses/license_data.gni
new file mode 100644
index 0000000..9bfbedc
--- /dev/null
+++ b/tools/check-licenses/license_data.gni
@@ -0,0 +1,86 @@
+# Copyright 2021 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Invokes the check-licenses tool.
+#
+# Parameters
+#
+#   configs (optional)
+#     [list] Paths to config files.
+#     Default: "//tools/check-licenses/config/config.json"
+#
+#   skip_dirs (optional)
+#     [list] Directories to skip checking.
+#
+#   notice_txt (optional)
+#     [list] Paths to NOTICE.txt files to parse.
+#
+#   license_allow_list (optional)
+#     [list] Map of license pattern file (.lic) to list of directories
+#     where the license can be used.
+#
+#   testonly, visibility
+template("license_data") {
+  action(target_name) {
+    forward_variables_from(invoker,
+                           [
+                             "configs",
+                             "license_allow_list",
+                             "notice_txt",
+                             "outputs",
+                             "skip_dirs",
+                             "testonly",
+                             "visibility",
+                           ])
+
+    # check-licenses assumes that it runs from //,
+    # but actions run from root_build_dir.
+    # This shell script sets the CWD and then calls check-licenses.
+    script = "//tools/check-licenses/license_data.sh"
+
+    license_tool = "//tools/check-licenses($host_toolchain)"
+    deps = [ license_tool ]
+
+    if (!defined(configs)) {
+      configs = [ "//tools/check-licenses/config/config.json" ]
+    }
+    sources = configs
+
+    outputs = [
+      "$target_out_dir/NOTICE.html.gz",
+      "$target_out_dir/NOTICE.txt.gz",
+    ]
+
+    args = [
+      ### Args for license_data.sh
+      rebase_path("//", root_build_dir),
+      rebase_path(
+          get_label_info(license_tool, "root_out_dir") + "/check-licenses",
+          "//"),
+
+      ### Args for check-licenses
+      # TODO: Remove once all files are attributed in the file generated by
+      # check-licenses.
+      "--exit_on_unlicensed_files=false",
+      "--config_file",
+      string_join(",", rebase_path(configs, "//")),
+      "--out_dir",
+      rebase_path(target_out_dir, "//"),
+    ]
+
+    if (defined(skip_dirs)) {
+      args += [ "--skip_dirs" ] + string_join(",", rebase_path(skip_dirs, "//"))
+    }
+
+    if (defined(notice_txt)) {
+      args +=
+          [ "--notice_txt" ] + string_join(",", rebase_path(notice_txt, "//"))
+    }
+
+    if (defined(license_allow_list)) {
+      args += [ "--license_allow_list" ] + "{ " +
+              string_join(", ", rebase_path(notice_txt, "//")) + " }"
+    }
+  }
+}
diff --git a/tools/check-licenses/license_data.sh b/tools/check-licenses/license_data.sh
new file mode 100755
index 0000000..88d7ae2
--- /dev/null
+++ b/tools/check-licenses/license_data.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Copyright 2021 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+readonly dir="$1"
+shift 1
+readonly tool="$1"
+shift 1
+
+cd "${dir}"
+"${tool}" $*
diff --git a/tools/check-licenses/testdata/config/merge/want.json b/tools/check-licenses/testdata/config/merge/want.json
index 6ba5f5b..aa82f2c 100644
--- a/tools/check-licenses/testdata/config/merge/want.json
+++ b/tools/check-licenses/testdata/config/merge/want.json
@@ -16,6 +16,7 @@
   "licensePatternDir": "tools/check-licenses/golden/patterns",
   "licenseAllowList": {},
   "baseDir": ".",
+  "outDir": ".",
   "target": "all",
   "logLevel": "verbose"
 }
diff --git a/tools/check-licenses/traverse.go b/tools/check-licenses/traverse.go
index 3b36496f..a21d84c 100644
--- a/tools/check-licenses/traverse.go
+++ b/tools/check-licenses/traverse.go
@@ -11,6 +11,7 @@
 	"io/ioutil"
 	"log"
 	"os"
+	"path/filepath"
 	"runtime/trace"
 	"sort"
 	"strings"
@@ -120,7 +121,7 @@
 	if config.OutputLicenseFile {
 		for _, extension := range config.OutputFileExtensions {
 			path := config.OutputFilePrefix + "." + extension
-			if err := saveToOutputFile(path, licenses, config); err != nil {
+			if err := saveToOutputFile(filepath.Join(config.OutDir, path), licenses, config); err != nil {
 				return err
 			}
 		}
