diff --git a/ext/googletest/SConscript b/ext/googletest/SConscript
new file mode 100644
index 0000000..27013f2
--- /dev/null
+++ b/ext/googletest/SConscript
@@ -0,0 +1,49 @@
+# Copyright 2017 Google Inc.
+#
+# 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 the copyright holders 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
+# OWNER 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.
+
+Import('main')
+
+# The root of the build directory.
+build = Dir('.')
+# The root of the original directory.
+base = build.srcdir
+# Include files from the original directory.
+include = base.Dir('include')
+# Use source files from the build directory so build products end up there.
+src = Dir('src')
+
+main.Append(CPPPATH=[include])
+main.Append(LIBPATH=[build])
+
+env = main.Clone(CPPFLAGS='-g -Wall -Wextra -pthread'
+                          ' -Wno-undef -isystem %s' % include)
+env.Append(CPPPATH=[base])
+
+gtest_all = env.Object(src.File('gtest-all.cc'))
+gtest_main = env.StaticLibrary(
+    target='gtest_main', source=[gtest_all, src.File('gtest_main.cc')])
+
+main['GTEST_LIBS'] = ['gtest_main', 'pthread']
+main['GTEST_CPPFLAGS'] = '-pthread -Wno-undef -isystem %s' % include.abspath
