aboutsummaryrefslogtreecommitdiffhomepage
path: root/bin/sync-and-gyp
diff options
context:
space:
mode:
Diffstat (limited to 'bin/sync-and-gyp')
-rwxr-xr-xbin/sync-and-gyp56
1 files changed, 56 insertions, 0 deletions
diff --git a/bin/sync-and-gyp b/bin/sync-and-gyp
new file mode 100755
index 0000000000..a2ba34358c
--- /dev/null
+++ b/bin/sync-and-gyp
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# Copyright 2015 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This script will update Skia's dependenciess as necessary and run
+# gyp if needed.
+
+# Example usage (assumes Posix-standard shell, git installed):
+#
+# git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
+# export PATH="${PWD}/depot_tools:${PATH}"
+# git clone https://skia.googlesource.com/skia
+# cd skia
+# bin/sync-and-gyp && ninja -C out/Debug
+# out/Debug/dm
+#
+# Once changes are made to DEPS or gyp/ or the source, recompile Skia with:
+#
+# ${skiadir}/bin/sync-and-gyp && ninja -C ${skiadir}/out/Debug
+
+cd "$(dirname "$0")/.."
+
+if ! [ -f .gclient ] ; then
+ gclient config --name . --unmanaged 'https://skia.googlesource.com/skia'
+fi
+
+if ! [ -f DEPS ]; then
+ echo DEPS file missing >&2
+ exit 1
+fi
+
+if [ "$(git hash-object DEPS)" != "$(git config sync-deps.last)" ] ; then
+ gclient sync || exit
+ git config sync-deps.last "$(git hash-object DEPS)"
+fi
+
+function catifexists() { if [ -f "$1" ]; then cat "$1"; fi; }
+
+function gyp_hasher() {
+ {
+ echo "$GYP_GENERATORS"
+ echo "$GYP_DEFINES"
+ find gyp -type f -print -exec git hash-object {} \;
+ } | git hash-object --stdin
+}
+
+: ${SKIA_OUT:=out}
+GYP_HASH=$(gyp_hasher)
+HASH_PATH="${SKIA_OUT}/gyp_hash"
+if [ "$GYP_HASH" != "$(catifexists "$HASH_PATH")" ]; then
+ ./gyp_skia || exit
+ echo "$GYP_HASH" > "$HASH_PATH"
+fi