build: Updated build scripts
diff --git a/wscript b/wscript
index 72a7d3e..11b2d97 100644
--- a/wscript
+++ b/wscript
@@ -1,12 +1,4 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
-#
-# Copyright (c) 2011-2013, Regents of the University of California
-#                          Alexander Afanasyev
-#
-# GNU 3.0 license, See the LICENSE file for more information
-#
-# Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
-#
 
 import os
 from waflib import Logs, Utils, Options, TaskGen, Task
@@ -14,19 +6,6 @@
 
 import wutils
 
-def options(opt):
-    opt = opt.add_option_group ('ndnSIM Options')
-    opt.add_option('--enable-ndn-plugins',
-                   help="""Enable NDN plugins (may require patching).  topology plugin enabled by default""",
-                   dest='enable_ndn_plugins')
-
-    opt.add_option('--disable-ndn-plugins',
-                   help="""Enable NDN plugins (may require patching).  topology plugin enabled by default""",
-                   dest='disable_ndn_plugins')
-
-    opt.add_option('--pyndn-install-path', dest='pyndn_install_path',
-                   help="""Installation path for PyNDN (by default: into standard location under PyNDN folder""")
-
 REQUIRED_BOOST_LIBS = ['graph']
 
 def required_boost_libs(conf):
@@ -35,6 +14,9 @@
 def configure(conf):
     conf.env['ENABLE_NDNSIM']=False;
 
+    conf.check_cfg(package='libndn-cxx', args=['--cflags', '--libs'],
+                   uselib_store='NDN_CXX', mandatory=True)
+
     if not conf.env['LIB_BOOST']:
         conf.report_optional_feature("ndnSIM", "ndnSIM", False,
                                      "Required boost libraries not found")
@@ -71,163 +53,46 @@
             Logs.error ("Please upgrade your distribution or install custom boost libraries (http://ndnsim.net/faq.html#boost-libraries)")
             return
 
-    conf.env['NDN_plugins'] = ['topology', 'ip-faces']
-    if Options.options.enable_ndn_plugins:
-        conf.env['NDN_plugins'] = conf.env['NDN_plugins'] + Options.options.enable_ndn_plugins.split(',')
-
-    if Options.options.disable_ndn_plugins:
-        conf.env['NDN_plugins'] = conf.env['NDN_plugins'] - Options.options.disable_ndn_plugins.split(',')
-
-    if Options.options.pyndn_install_path:
-        conf.env['PyNDN_install_path'] = Options.options.pyndn_install_path
-
     conf.env['ENABLE_NDNSIM']=True;
     conf.env['MODULES_BUILT'].append('ndnSIM')
 
     conf.report_optional_feature("ndnSIM", "ndnSIM", True, "")
 
 def build(bld):
-    deps = ['core', 'network', 'point-to-point']
-    deps.append ('internet') # Until RttEstimator is moved to network module
+    deps = ['core', 'network', 'point-to-point', 'topology-read', 'mobility', 'internet']
     if 'ns3-visualizer' in bld.env['NS3_ENABLED_MODULES']:
-        deps.append ('visualizer')
+        deps.append('visualizer')
 
-    if 'topology' in bld.env['NDN_plugins']:
-        deps.append ('topology-read')
-        deps.append ('mobility')
-
-    if 'mobility' in bld.env['NDN_plugins']:
-        deps.append ('mobility')
+    if bld.env.ENABLE_EXAMPLES:
+        deps += ['point-to-point-layout', 'csma', 'applications']
 
     module = bld.create_ns3_module ('ndnSIM', deps)
     module.module = 'ndnSIM'
     module.features += ' ns3fullmoduleheaders'
-    module.uselib = 'BOOST BOOST_IOSTREAMS'
+    module.uselib = 'NDN_CXX BOOST'
+    module.includes = [".", "./NFD", "./NFD/daemon", "./NFD/core"]
+    module.export_includes = [".", "./NFD", "./NFD/daemon", "./NFD/core"]
 
     headers = bld (features='ns3header')
     headers.module = 'ndnSIM'
+    headers.source = ["ndn-all.hpp"]
 
     if not bld.env['ENABLE_NDNSIM']:
         bld.env['MODULES_NOT_BUILT'].append('ndnSIM')
         return
 
-    module.source = bld.path.ant_glob(['model/**/*.cc',
-                                       'apps/*.cc',
-                                       'utils/**/*.cc',
-                                       'helper/**/*.cc',
-                                       'ndn.cxx/**/*.cc',
-                                       ])
-    module.full_headers = [p.path_from(bld.path) for p in bld.path.ant_glob([
-                           'utils/**/*.h',
-                           'model/**/*.h',
-                           'apps/**/*.h',
-                           'helper/**/*.h',
-                           'ndn.cxx/**/*.h',
-                           ])]
+    module_dirs = ['NFD', 'apps', 'helper', 'model', 'utils']
+    
+    module.source = bld.path.ant_glob(['%s/**/*.cpp' % dir for dir in module_dirs])
 
-    headers.source = [
-        "helper/ndn-stack-helper.h",
-        "helper/ndn-app-helper.h",
-        "helper/ndn-header-helper.h",
-        "helper/ndn-face-container.h",
-        "helper/ndn-global-routing-helper.h",
-        "helper/ndn-link-control-helper.h",
-
-        "apps/ndn-app.h",
-
-        "model/ndn-common.h",
-        "model/ndn-l3-protocol.h",
-        "model/ndn-face.h",
-        "model/ndn-app-face.h",
-        "model/ndn-net-device-face.h",
-        "model/ndn-interest.h",
-        "model/ndn-data.h",
-        "model/ndn-name-components.h",
-        "model/ndn-name.h",
-
-        "ndn.cxx/blob.h",
-        "ndn.cxx/name-component.h",
-        "ndn.cxx/name.h",
-        "ndn.cxx/exclude.h",
-        "ndn.cxx/ndn-api-face.h",
-
-        "model/cs/ndn-content-store.h",
-
-        "model/fib/ndn-fib.h",
-        "model/fib/ndn-fib-entry.h",
-
-        "model/pit/ndn-pit.h",
-        "model/pit/ndn-pit-entry.h",
-        "model/pit/ndn-pit-entry-incoming-face.h",
-        "model/pit/ndn-pit-entry-outgoing-face.h",
-
-        "model/fw/ndn-forwarding-strategy.h",
-        "model/fw/ndn-fw-tag.h",
-
-        "model/wire/ndn-wire.h",
-
-        "utils/ndn-limits.h",
-        "utils/ndn-rtt-estimator.h",
-
-        # "utils/tracers/ipv4-app-tracer.h",
-        # "utils/tracers/ipv4-l3-tracer.h",
-        # "utils/tracers/ipv4-rate-l3-tracer.h",
-        # "utils/tracers/ipv4-seqs-app-tracer.h",
-
-        "utils/tracers/l2-rate-tracer.h",
-        "utils/tracers/l2-tracer.h",
-        "utils/tracers/ndn-app-delay-tracer.h",
-        "utils/tracers/ndn-cs-tracer.h",
-        "utils/tracers/ndn-l3-aggregate-tracer.h",
-        "utils/tracers/ndn-l3-tracer.h",
-        "utils/tracers/ndn-l3-rate-tracer.h",
-
-        "apps/callback-based-app.h",
-        ]
-
-    if 'topology' in bld.env['NDN_plugins']:
-        headers.source.extend ([
-            "plugins/topology/rocketfuel-weights-reader.h",
-            "plugins/topology/annotated-topology-reader.h",
-            ])
-        module.source.extend (bld.path.ant_glob(['plugins/topology/*.cc']))
-        module.full_headers.extend ([p.path_from(bld.path) for p in bld.path.ant_glob(['plugins/topology/**/*.h'])])
-
-    if 'mobility' in bld.env['NDN_plugins']:
-        headers.source.extend ([
-            "plugins/mobility/spring-mobility-model.h",
-            "plugins/mobility/spring-mobility-helper.h",
-            ])
-        module.source.extend (bld.path.ant_glob(['plugins/mobility/*.cc']))
-        module.full_headers.extend ([p.path_from(bld.path) for p in bld.path.ant_glob(['plugins/mobility/**/*.h'])])
-
-    if 'ip-faces' in bld.env['NDN_plugins']:
-        headers.source.extend ([
-            "plugins/ip-faces/ndn-ip-faces-helper.h",
-            ])
-        module.source.extend (bld.path.ant_glob(['plugins/ip-faces/*.cc']))
-        module.full_headers.extend ([p.path_from(bld.path) for p in bld.path.ant_glob(['plugins/ip-faces/**/*.h'])])
-
-    # bld.install_files('${INCLUDEDIR}/%s%s/ns3/ndnSIM' % (wutils.APPNAME, wutils.VERSION), ndnSIM_headers, relative_trick=True)
-    # bld.install_files('$PREFIX/include', ndnSIM_headers)
-
-    tests = bld.create_ns3_module_test_library('ndnSIM')
-    tests.source = bld.path.ant_glob('test/*.cc')
+    module.full_headers = [p.path_from(bld.path) for p in bld.path.ant_glob(
+        ['%s/**/*.hpp' % dir for dir in module_dirs])]
 
     if bld.env.ENABLE_EXAMPLES:
         bld.recurse ('examples')
 
-    bld.recurse ('tools')
-
     bld.ns3_python_bindings()
 
-    if bld.env['ENABLE_PYTHON_BINDINGS']:
-        if bld.env['PyNDN_install_path']:
-            bld (features = "py",
-                 source = bld.path.ant_glob (["PyNDN/**/*.py"]),
-                 install_from = "PyNDN",
-                 install_path = bld.env['PyNDN_install_path'])
-
 @TaskGen.feature('ns3fullmoduleheaders')
 @TaskGen.after_method('process_rule')
 def apply_ns3fullmoduleheaders(self):