Add support for generating a compile_commands.json file for clang-tidy

Change-Id: I3db1a69030f6ba6617ccaf3a1ebc319111145fe1
diff --git a/tools/actions/BUILD b/tools/actions/BUILD
new file mode 100644
index 0000000..2362307
--- /dev/null
+++ b/tools/actions/BUILD
@@ -0,0 +1,30 @@
+py_binary(
+  name = 'generate_compile_command',
+  srcs = [
+    'generate_compile_command.py',
+  ],
+  deps = [
+    '//third_party/bazel:extra_actions_proto_py',
+  ],
+)
+
+action_listener(
+  name = 'generate_compile_commands_listener',
+  visibility = ['//visibility:public'],
+  mnemonics = [
+    'CppCompile',
+  ],
+  extra_actions = [':generate_compile_commands_action'],
+)
+
+extra_action(
+  name = 'generate_compile_commands_action',
+  tools = [
+    ':generate_compile_command',
+  ],
+  out_templates = [
+    '$(ACTION_ID)_compile_command',
+  ],
+  cmd = '$(location :generate_compile_command) $(EXTRA_ACTION_FILE)' +
+        ' $(output $(ACTION_ID)_compile_command)',
+)