diff --git a/tools/wscript b/tools/wscript
new file mode 100644
index 0000000..40750c2
--- /dev/null
+++ b/tools/wscript
@@ -0,0 +1,42 @@
+# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+"""
+Copyright (c) 2014,  Regents of the University of California
+
+This file is part of NSL (NDN Signature Logger).
+See AUTHORS.md for complete list of NSL authors and contributors.
+
+NSL is free software: you can redistribute it and/or modify it under the terms
+of the GNU General Public License as published by the Free Software Foundation,
+either version 3 of the License, or (at your option) any later version.
+
+NSL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+NSL, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+"""
+
+from waflib import Utils
+
+top = '..'
+
+def configure(conf):
+    conf.find_program('sh')
+
+def build(bld):
+    for app in bld.path.ant_glob('*.cpp'):
+        bld(features=['cxx', 'cxxprogram'],
+            target = '%s' % (str(app.change_ext('','.cpp'))),
+            source = app,
+            use = 'daemon-objects',
+            )
+
+    bld(features = "subst",
+        source = bld.path.ant_glob(['wrapper/*.sh']),
+        target = ['%s' % node.change_ext('', '.sh')
+                  for node in bld.path.ant_glob(['wrapper/*.sh'])],
+        install_path = "${BINDIR}",
+        chmod = Utils.O755,
+       )
