Merge pull request #2429 from ben-clayton/test-gn-presubmit

Fix GN build and presubmits
diff --git a/.gitignore b/.gitignore
index d6e197d..ab25cec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,6 @@
 *.a
 *.so
 *.exe
-*.gclient_entries
 .vscode/
 tags
 TAGS
@@ -12,4 +11,10 @@
 External/googletest
 External/spirv-tools
 out/
-third_party/llvm-build
+
+# GN generated files
+.cipd/
+*.gclient_entries
+third_party/
+buildtools/
+tools/
diff --git a/DEPS b/DEPS
index 9c0e045..2f5fa8e 100644
--- a/DEPS
+++ b/DEPS
@@ -75,3 +75,8 @@
     'condition': 'not build_with_chromium',
   },
 ]
+
+recursedeps = [
+  # buildtools provides clang_format, libc++, and libc++abi
+  'buildtools',
+]
diff --git a/README.md b/README.md
index fa1fe60..7ad4ace 100644
--- a/README.md
+++ b/README.md
@@ -200,6 +200,7 @@
 With the current directory set to your `glslang` checkout, type:
 
 ```bash
+./update_glslang_sources.py
 gclient sync --gclientfile=standalone.gclient
 gn gen out/Default
 ```
diff --git a/kokoro/linux-clang-gn/build-docker.sh b/kokoro/linux-clang-gn/build-docker.sh
index d2ee0e9..1035ab8 100755
--- a/kokoro/linux-clang-gn/build-docker.sh
+++ b/kokoro/linux-clang-gn/build-docker.sh
@@ -36,6 +36,9 @@
 set -e # Fail on any error.
 set -x # Display commands being run.
 
+echo "Fetching external projects..."
+./update_glslang_sources.py
+
 echo "Fetching depot_tools..."
 mkdir -p /tmp/depot_tools
 curl https://storage.googleapis.com/chrome-infra/depot_tools.zip -o /tmp/depot_tools.zip
diff --git a/kokoro/linux-clang-gn/build.sh b/kokoro/linux-clang-gn/build.sh
index 2f459d2..563432a 100755
--- a/kokoro/linux-clang-gn/build.sh
+++ b/kokoro/linux-clang-gn/build.sh
@@ -43,6 +43,7 @@
   --workdir "${ROOT_DIR}" \
   --env ROOT_DIR="${ROOT_DIR}" \
   --env SCRIPT_DIR="${SCRIPT_DIR}" \
-  --env BUILD_SHARED_LIBS="${BUILD_SHARED_LIBS:-0}" \
   --entrypoint "${SCRIPT_DIR}/build-docker.sh" \
   "gcr.io/shaderc-build/radial-build:latest"
+
+sudo chown -R "$(id -u):$(id -g)" "${ROOT_DIR}"
diff --git a/kokoro/linux-clang-gn/continuous.cfg b/kokoro/linux-clang-gn/continuous.cfg
new file mode 100644
index 0000000..1b19146
--- /dev/null
+++ b/kokoro/linux-clang-gn/continuous.cfg
@@ -0,0 +1,35 @@
+# Copyright (C) 2020 Google, Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of Google Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+# Continuous build configuration.
+build_file: "glslang/kokoro/linux-clang-gn/build.sh"
diff --git a/kokoro/linux-clang-gn/presubmit.cfg b/kokoro/linux-clang-gn/presubmit.cfg
new file mode 100644
index 0000000..a72b9a8
--- /dev/null
+++ b/kokoro/linux-clang-gn/presubmit.cfg
@@ -0,0 +1,35 @@
+# Copyright (C) 2020 Google, Inc.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+#    Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#    Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+#    Neither the name of Google Inc. nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+# Presubmit build configuration.
+build_file: "glslang/kokoro/linux-clang-gn/build.sh"