src: Initial reorganization for NFD Control Center

Change-Id: Ic8bc4b9168df83bd706f780187a5993292565f95
diff --git a/osx/wscript b/osx/wscript
new file mode 100644
index 0000000..9a6c4bf
--- /dev/null
+++ b/osx/wscript
@@ -0,0 +1,76 @@
+# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+from waflib import Logs, Utils, Task, TaskGen
+
+top = '..'
+
+def configure(conf):
+
+    conf.find_program('ibtool', var='IBTOOL', mandatory=False)
+
+    conf.check_cxx(framework_name='Foundation', uselib_store='FOUNDATION',
+                   compile_filename='test.mm')
+    conf.check_cxx(framework_name='AppKit',     uselib_store='APPKIT',
+                   compile_filename='test.mm')
+    conf.check_cxx(framework_name='Cocoa',      uselib_store='COCOA',
+                   compile_filename='test.mm')
+
+    conf.env.ARCH_OSX = 'x86_64'
+    conf.env.CXXFLAGS_OSX += ['-fobjc-arc', '-mmacosx-version-min=10.7']
+    conf.env.LINKFLAGS_OSX += ['-mmacosx-version-min=10.7']
+    conf.env.MACOSX_DEPLOYMENT_TARGET = '10.7'
+
+    conf.load('sparkle')
+
+def build(bld):
+    bld(
+        target = "../NFD Control Center",
+        features=['cxxprogram', 'cxx'],
+        includes = ".. .",
+        source = bld.path.ant_glob(['**/*.mm', 'MainMenu.xib']),
+
+        mac_app = True,
+        use = "OSX COCOA FOUNDATION APPKIT SPARKLE",
+
+        mac_plist = 'Info.plist',
+        mac_resources = [i.path_from(bld.path) for i in bld.path.ant_glob('Resources/**/*')],
+        mac_frameworks = "Frameworks/Sparkle.framework",
+        )
+
+from waflib import TaskGen
+@TaskGen.extension('.mm')
+def m_hook(self, node):
+    """Alias .mm files to be compiled the same as .cc files, gcc/clang will do the right thing."""
+    return self.create_compiled_task('cxx', node)
+
+@TaskGen.extension('.m')
+def m_hook(self, node):
+    """Alias .m files to be compiled the same as .c files, gcc/clang will do the right thing."""
+    return self.create_compiled_task('c', node)
+
+
+def bundle_name_for_output(name):
+    return "%s.app" % name
+    # k = name.rfind('.')
+    # if k >= 0:
+    #     name = name[:k] + '.app'
+    # else:
+    #     name = name + '.app'
+    # return name
+
+@TaskGen.extension('.xib')
+def xib(self,node):
+    out = node.change_ext('.nib')
+
+    name = self.path.get_bld().find_or_declare(bundle_name_for_output(self.target))
+    resources = name.find_or_declare(['Contents', 'Resources'])
+    resources.mkdir()
+    real_out = resources.make_node(out.name)
+
+    self.create_task('xib', node, real_out)
+    inst_to = getattr(self, 'install_path', '/Applications') + '/%s/Contents/Resources' % name
+    self.bld.install_as(inst_to + '/%s' % real_out.name, real_out)
+
+class xib(Task.Task):
+    color='PINK'
+    run_str = '${IBTOOL} --errors --warnings --notices --output-format human-readable-text --compile ${TGT} ${SRC}'