diff --git a/build/utils/detect_root.bzl b/build/utils/detect_root.bzl
new file mode 100644
index 0000000..50c9574
--- /dev/null
+++ b/build/utils/detect_root.bzl
@@ -0,0 +1,66 @@
+#  Copyright 2020 The Monogon Project Authors.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+# Copyright Google Inc.
+# This file's contents are licensed under the Apache License, Version 2.0.
+# See third_party/licenses/LICENSE.APACHE20 file in this repository for a copy
+# of the License.
+
+# This file contains code adapted from github.com/bazelbuiled/rules_foreign_cc:
+# Files:
+#  - tools/build_defs/detect_root.bzl
+
+def detect_root(source):
+    """Detects the path to the topmost directory of the 'source' outputs.
+    To be used with external build systems to point to the source code/tools directories.
+"""
+
+    root = ""
+    sources = source.files.to_list()
+    if (root and len(root) > 0) or len(sources) == 0:
+        return root
+
+    root = ""
+    level = -1
+    num_at_level = 0
+
+    # find topmost directory
+    for file in sources:
+        file_level = _get_level(file.path)
+        if level == -1 or level > file_level:
+            root = file.path
+            level = file_level
+            num_at_level = 1
+        elif level == file_level:
+            num_at_level += 1
+
+    if num_at_level == 1:
+        return root
+
+    (before, sep, after) = root.rpartition("/")
+    if before and sep and after:
+        return before
+    return root
+
+def _get_level(path):
+    normalized = path
+    for i in range(len(path)):
+        new_normalized = normalized.replace("//", "/")
+        if len(new_normalized) == len(normalized):
+            break
+        normalized = new_normalized
+
+    return normalized.count("/")
