From 985a5d1d1eb0cdc77b3b7e312719d264cf3ab841 Mon Sep 17 00:00:00 2001 From: Paul Brossier Date: Tue, 19 Nov 2013 23:46:35 +0100 Subject: [PATCH] wscript, src/wscpript: use ctx.options.target_platform, always build .a, indent and cleanup --- src/wscript_build | 28 ++++++++------ wscript | 108 +++++++++++++++++++++++++++--------------------------- 2 files changed, 71 insertions(+), 65 deletions(-) diff --git a/src/wscript_build b/src/wscript_build index 6921df9c..363d1546 100644 --- a/src/wscript_build +++ b/src/wscript_build @@ -8,21 +8,25 @@ uselib += ['SNDFILE'] uselib += ['JACK'] uselib += ['LASH'] +ctx(features = 'c', + source = source, + includes = ['.'], + uselib = uselib, + lib = 'm', + target = 'lib_objects') -# build libaubio +# build libaubio.so (cshlib) and/or libaubio.a (cstlib) if ctx.env['DEST_OS'] in ['ios', 'iosimulator']: - build_lib_func = ctx.stlib -else: - build_lib_func = ctx.shlib + build_features = ['cstlib'] +else: #linux, darwin, android, windows, ... + build_features = ['cshlib', 'cstlib'] -build_lib_func( - includes = ['.'], - source = source, - target = 'aubio', - lib = 'm', - uselib = uselib, - install_path = '${PREFIX}/lib', - vnum = ctx.env['LIB_VERSION']) +for feat in build_features: + ctx(features = 'c ' + feat, + use = ['lib_objects'], #source = source, + target = 'aubio', + install_path = '${PREFIX}/lib', + vnum = ctx.env['LIB_VERSION']) # install headers, except _priv.h ones ctx.install_files('${PREFIX}/include/aubio/', diff --git a/wscript b/wscript index 89d6a6c4..43566dc7 100644 --- a/wscript +++ b/wscript @@ -74,27 +74,28 @@ def configure(ctx): ctx.load('gnu_dirs') ctx.env.CFLAGS += ['-g', '-Wall', '-Wextra'] - if Options.options.target_platform: - Options.platform = Options.options.target_platform - ctx.env['DEST_OS'] = Options.platform + target_platform = Options.platform + if ctx.options.target_platform: + target_platform = ctx.options.target_platform + ctx.env['DEST_OS'] = target_platform - if Options.platform == 'win32': + if target_platform == 'win32': ctx.env['shlib_PATTERN'] = 'lib%s.dll' - if Options.platform == 'darwin': + if target_platform == 'darwin': ctx.env.CFLAGS += ['-arch', 'i386', '-arch', 'x86_64'] ctx.env.LINKFLAGS += ['-arch', 'i386', '-arch', 'x86_64'] ctx.env.FRAMEWORK = ['CoreFoundation', 'AudioToolbox', 'Accelerate'] ctx.define('HAVE_ACCELERATE', 1) - if Options.platform in [ 'ios', 'iosimulator' ]: + if target_platform in [ 'ios', 'iosimulator' ]: ctx.define('HAVE_ACCELERATE', 1) ctx.define('TARGET_OS_IPHONE', 1) ctx.env.FRAMEWORK = ['CoreFoundation', 'AudioToolbox', 'Accelerate'] SDKVER="7.0" MINSDKVER="6.1" ctx.env.CFLAGS += ['-std=c99'] - if Options.platform == 'ios': + if target_platform == 'ios': DEVROOT="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer" SDKROOT="%(DEVROOT)s/SDKs/iPhoneOS%(SDKVER)s.sdk" % locals() ctx.env.CFLAGS += [ '-arch', 'arm64' ] @@ -135,34 +136,34 @@ def configure(ctx): ctx.define('HAVE_C99_VARARGS_MACROS', 1) # optionally use complex.h - if (Options.options.enable_complex == True): + if (ctx.options.enable_complex == True): ctx.check(header_name='complex.h') # check dependencies - if (Options.options.enable_sndfile != False): + if (ctx.options.enable_sndfile != False): ctx.check_cfg(package = 'sndfile', atleast_version = '1.0.4', args = '--cflags --libs', mandatory = False) - if (Options.options.enable_samplerate != False): + if (ctx.options.enable_samplerate != False): ctx.check_cfg(package = 'samplerate', atleast_version = '0.0.15', args = '--cflags --libs', mandatory = False) # double precision mode - if (Options.options.enable_double == True): + if (ctx.options.enable_double == True): ctx.define('HAVE_AUBIO_DOUBLE', 1) else: ctx.define('HAVE_AUBIO_DOUBLE', 0) # optional dependancies using pkg-config - if (Options.options.enable_fftw3 != False or Options.options.enable_fftw3f != False): + if (ctx.options.enable_fftw3 != False or ctx.options.enable_fftw3f != False): # one of fftwf or fftw3f - if (Options.options.enable_fftw3f != False): + if (ctx.options.enable_fftw3f != False): ctx.check_cfg(package = 'fftw3f', atleast_version = '3.0.0', args = '--cflags --libs', mandatory = False) - if (Options.options.enable_double == True): + if (ctx.options.enable_double == True): ctx.msg('Warning', 'fftw3f enabled, but aubio compiled in double precision!') else: # fftw3f not enabled, take most sensible one according to enable_double - if (Options.options.enable_double == True): + if (ctx.options.enable_double == True): ctx.check_cfg(package = 'fftw3', atleast_version = '3.0.0', args = '--cflags --libs', mandatory = False) else: @@ -180,11 +181,11 @@ def configure(ctx): else: ctx.msg('Checking for FFT implementation', 'ooura') - if (Options.options.enable_jack != False): + if (ctx.options.enable_jack != False): ctx.check_cfg(package = 'jack', atleast_version = '0.15.0', args = '--cflags --libs', mandatory = False) - if (Options.options.enable_lash != False): + if (ctx.options.enable_lash != False): ctx.check_cfg(package = 'lash-1.0', atleast_version = '0.5.0', args = '--cflags --libs', uselib_store = 'LASH', mandatory = False) @@ -202,45 +203,46 @@ def configure(ctx): ctx.to_log('docbook-to-man was not found (ignoring)') def build(bld): - bld.env['VERSION'] = VERSION - bld.env['LIB_VERSION'] = LIB_VERSION - - # add sub directories - bld.recurse('src') - if bld.env['DEST_OS'] not in ['ios', 'iosimulator']: - bld.recurse('examples') - bld.recurse('tests') - - bld( source = 'aubio.pc.in' ) - - # build manpages from sgml files - if bld.env['DOCBOOKTOMAN']: - from waflib import TaskGen - if 'MANDIR' not in bld.env: - bld.env['MANDIR'] = bld.env['PREFIX'] + '/share/man' - TaskGen.declare_chain( - name = 'docbooktoman', - rule = '${DOCBOOKTOMAN} ${SRC} > ${TGT}', - ext_in = '.sgml', - ext_out = '.1', - reentrant = False, - install_path = '${MANDIR}/man1', - ) - bld( source = bld.path.ant_glob('doc/*.sgml') ) - - """ - bld(rule = 'doxygen ${SRC}', source = 'web.cfg') #, target = 'doc/web/index.html') - """ + bld.env['VERSION'] = VERSION + bld.env['LIB_VERSION'] = LIB_VERSION + + # add sub directories + bld.recurse('src') + if bld.env['DEST_OS'] not in ['ios', 'iosimulator']: + pass + if bld.env['DEST_OS'] not in ['ios', 'iosimulator', 'android']: + bld.recurse('examples') + bld.recurse('tests') + + bld( source = 'aubio.pc.in' ) + + # build manpages from sgml files + if bld.env['DOCBOOKTOMAN']: + from waflib import TaskGen + if 'MANDIR' not in bld.env: + bld.env['MANDIR'] = bld.env['PREFIX'] + '/share/man' + TaskGen.declare_chain( + name = 'docbooktoman', + rule = '${DOCBOOKTOMAN} ${SRC} > ${TGT}', + ext_in = '.sgml', + ext_out = '.1', + reentrant = False, + install_path = '${MANDIR}/man1', + ) + bld( source = bld.path.ant_glob('doc/*.sgml') ) + + """ + bld(rule = 'doxygen ${SRC}', source = 'web.cfg') #, target = 'doc/web/index.html') + """ def shutdown(bld): - from waflib import Options, Logs - if Options.platform in ['ios', 'iosimulator']: - msg ='aubio built for ios, contact the author for a commercial license' - Logs.pprint('RED', msg) - msg =' Paul Brossier ' - Logs.pprint('RED', msg) - + from waflib import Logs + if bld.options.target_platform in ['ios', 'iosimulator']: + msg ='building for %s, contact the author for a commercial license' % bld.options.target_platform + Logs.pprint('RED', msg) + msg =' Paul Brossier ' + Logs.pprint('RED', msg) def dist(ctx): ctx.excl = ' **/.waf-1* **/*~ **/*.pyc **/*.swp **/.lock-w* **/.git*' -- 2.11.0