diff --git a/.waf-tools/dependency-checker.py b/.waf-tools/dependency-checker.py
new file mode 100644
index 0000000..5751c62
--- /dev/null
+++ b/.waf-tools/dependency-checker.py
@@ -0,0 +1,28 @@
+# encoding: utf-8
+
+from waflib import Options, Logs
+from waflib.Configure import conf
+
+def addDependencyOptions(self, opt, name, extraHelp=''):
+    opt.add_option('--with-%s' % name, type='string', default=None,
+                   dest='with_%s' % name,
+                   help='Path to %s, e.g., /usr/local %s' % (name, extraHelp))
+setattr(Options.OptionsContext, "addDependencyOptions", addDependencyOptions)
+
+@conf
+def checkDependency(self, name, **kw):
+    root = kw.get('path', getattr(Options.options, 'with_%s' % name))
+    kw['msg'] = kw.get('msg', 'Checking for %s library' % name)
+    kw['uselib_store'] = kw.get('uselib_store', name.upper())
+    kw['define_name'] = kw.get('define_name', 'HAVE_%s' % kw['uselib_store'])
+    kw['mandatory'] = kw.get('mandatory', True)
+
+    if root:
+        isOk = self.check_cxx(cxxflags="-I%s/include" % root,
+                              linkflags="-L%s/lib" % root,
+                              **kw)
+    else:
+        isOk = self.check_cxx(**kw)
+
+    if isOk:
+        self.env[kw['define_name']] = True
diff --git a/wscript b/wscript
index 9681089..ef4eade 100644
--- a/wscript
+++ b/wscript
@@ -32,11 +32,17 @@
 import os
 
 def options(opt):
-    opt.load('compiler_cxx gnu_dirs')
-    opt.load('boost doxygen coverage unix-socket default-compiler-flags sphinx_build',
+    opt.load(['compiler_cxx', 'gnu_dirs'])
+    opt.load(['boost', 'unix-socket', 'dependency-checker',
+              'default-compiler-flags', 'coverage',
+              'doxygen', 'sphinx_build'],
              tooldir=['.waf-tools'])
 
     nfdopt = opt.add_option_group('NFD Options')
+    opt.addDependencyOptions(nfdopt, 'libpcap',   '(optional)')
+    opt.addDependencyOptions(nfdopt, 'librt',     '(optional)')
+    opt.addDependencyOptions(nfdopt, 'libresolv', '(optional)')
+
     nfdopt.add_option('--with-c++11', action='store_true', default=False, dest='use_cxx11',
                       help='''Enable C++11 mode (experimental, may not work)''')
     nfdopt.add_option('--with-tests', action='store_true', default=False,
@@ -77,14 +83,9 @@
 
     conf.load('unix-socket')
 
-    conf.check_cxx(lib='rt', uselib_store='RT',
-                   define_name='HAVE_RT', mandatory=False)
-
-    if conf.check_cxx(lib='pcap', uselib_store='PCAP',
-                      define_name='HAVE_PCAP', mandatory=False):
-        conf.env['HAVE_PCAP'] = True
-
-    conf.check_cxx(lib='resolv', uselib_store='RESOLV', mandatory=False)
+    conf.checkDependency(name='librt', lib='rt', mandatory=False)
+    conf.checkDependency(name='libpcap', lib='pcap', mandatory=False)
+    conf.checkDependency(name='libresolv', lib='resolv', mandatory=False)
 
     conf.load('coverage')
 
@@ -101,13 +102,13 @@
                                  excl=['daemon/face/ethernet-*.cpp',
                                        'daemon/face/unix-*.cpp',
                                        'daemon/main.cpp']),
-        use='BOOST NDN_CPP RT',
+        use='BOOST NDN_CPP LIBRT',
         includes='. daemon',
         )
 
     if bld.env['HAVE_PCAP']:
         nfd_objects.source += bld.path.ant_glob('daemon/face/ethernet-*.cpp')
-        nfd_objects.use += ' PCAP'
+        nfd_objects.use += ' LIBPCAP'
 
     if bld.env['HAVE_UNIX_SOCKETS']:
         nfd_objects.source += bld.path.ant_glob('daemon/face/unix-*.cpp')
@@ -124,7 +125,7 @@
             target='bin/%s' % (str(app.change_ext(''))),
             source=['tools/%s' % (str(app))],
             includes='. daemon',
-            use='nfd-objects RESOLV',
+            use='nfd-objects LIBRESOLV',
             )
 
     # Unit tests
