#!/usr/bin/env python import os import subprocess import waflib.Logs as Logs, waflib.Options as Options import string VERSION = 'xxx' APPNAME = 'non-things' top = '.' out = 'build' common = [ 'nonlib'] projects = [ 'session-manager' ] def options(opt): # opt.add_option('--use-system-ntk', action='store_true', default=False, # dest='use_system_ntk', # help="Link to system-installed shared NTK instead of bundled version") opt.add_option('--enable-debug', action='store_true', default=False, dest='debug', help='Build for debugging') opt.add_option('--disable-sse', action='store_false', default=True, dest='sse', help='Disable SSE optimization') opt.add_option('--project', action='store', default=False, dest='project', help='Limit build to a single project (' + ', '.join( projects ) + ')') for i in projects: opt.recurse(i) def configure(conf): conf.load('compiler_c') conf.load('compiler_cxx') conf.load('gnu_dirs') conf.load('gccdeps') conf.line_just = 52 conf.env['LIB_PTHREAD'] = ['pthread'] conf.env['LIB_DL'] = ['dl'] conf.env['LIB_M'] = ['m'] if Options.options.sse: if os.system("grep -q '^flags.*\' /proc/cpuinfo"): Options.options.sse = 0 print( "Processor lacks sse, disabling..." ) conf.check_cfg(package='jack', uselib_store='JACK', args="--cflags --libs", atleast_version='0.103.0', mandatory=True) conf.check_cfg(package='liblo', uselib_store='LIBLO',args="--cflags --libs", atleast_version='0.26', mandatory=True) conf.check_cc(msg='Checking for compiler pointer alignment hints', uselib_store='HAS_BUILTIN_ASSUME_ALIGNED', fragment='int main ( char**argv, int argc ) { const char *s = (const char*)__builtin_assume_aligned( 0, 16 ); return 0; }', execute=False, mandatory=False) ### for i in common: conf.recurse(i) optimization_flags = [ "-O3", "-fomit-frame-pointer", "-ffast-math", "-pipe" ] if Options.options.sse: print('Using SSE optimization') optimization_flags.extend( [ "-msse2", "-mfpmath=sse" ] ); conf.define( 'USE_SSE', 1 ) debug_flags = [ '-O0', '-g3' ] if Options.options.debug: print('Building for debugging') conf.env.append_value('CFLAGS', debug_flags ) conf.env.append_value('CXXFLAGS', debug_flags ) else: print('Building for performance') conf.env.append_value('CFLAGS', optimization_flags ) conf.env.append_value('CXXFLAGS', optimization_flags ) #conf.define( 'NDEBUG', 1 ) conf.define( "_GNU_SOURCE", 1) conf.env.append_value('CFLAGS',['-Wall']) # conf.env.append_value('CXXFLAGS',['-Wall','-fno-exceptions', '-fno-rtti']) conf.env.append_value('CXXFLAGS',['-Wall','-fno-rtti']) global_flags = [ '-pthread', '-D_LARGEFILE64_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_GNU_SOURCE' ] conf.env.append_value('CFLAGS', global_flags ) conf.env.append_value('CXXFLAGS', global_flags ) conf.env.PROJECT = conf.options.project if conf.env.PROJECT: pl = [ conf.env.PROJECT ] else: pl = projects; for i in pl: Logs.pprint('YELLOW', 'Configuring %s' % i) conf.recurse(i); def run(ctx): if not Options.options.cmd: Logs.error("missing --cmd option for run command") return cmd = Options.options.cmd Logs.pprint('GREEN', 'Running %s' % cmd) subprocess.call(cmd, shell=True, env=source_tree_env()) def build(bld): for i in common: bld.recurse(i) if bld.env.PROJECT: pl = [ bld.env.PROJECT ] else: pl = projects; for i in pl: bld.recurse(i);