| # -*- 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}' |