APPNAME = 'aubio'
-# source VERSION
-for l in open('VERSION').readlines(): exec (l.strip())
+from this_version import *
-VERSION = '.'.join ([str(x) for x in [
- AUBIO_MAJOR_VERSION,
- AUBIO_MINOR_VERSION,
- AUBIO_PATCH_VERSION
- ]]) + AUBIO_VERSION_STATUS
-
-LIB_VERSION = '.'.join ([str(x) for x in [
- LIBAUBIO_LT_CUR,
- LIBAUBIO_LT_REV,
- LIBAUBIO_LT_AGE]])
+VERSION = get_aubio_version()
+LIB_VERSION = get_libaubio_version()
top = '.'
out = 'build'
default = "release",
choices = ('debug', 'release'),
dest = 'build_type',
- help = 'whether to compile with (--build_type=release) or without (--build_type=debug) '\
+ help = 'whether to compile with (--build-type=release) or without (--build-type=debug) '\
' compiler opimizations [default: release]')
add_option_enable_disable(ctx, 'fftw3f', default = False,
help_str = 'compile with fftw3f instead of ooura (recommended)',
target_platform = ctx.options.target_platform
ctx.env['DEST_OS'] = target_platform
+ version_dict = get_version_info();
+ ctx.define('AUBIO_VERSION',VERSION)
+ ctx.define('AUBIO_MAJOR_VERSION', version_dict['AUBIO_MAJOR_VERSION'])
+ ctx.define('AUBIO_MINOR_VERSION', version_dict['AUBIO_MINOR_VERSION'])
+ ctx.define('AUBIO_PATCH_VERSION', version_dict['AUBIO_PATCH_VERSION'])
+ ctx.define('AUBIO_VERSION_STATUS', version_dict['AUBIO_VERSION_STATUS'])
+
if ctx.options.build_type == "debug":
ctx.define('DEBUG', 1)
else:
ctx.define('NDEBUG', 1)
-
+
if ctx.env.CC_NAME != 'msvc':
+ if ctx.options.build_type == "debug":
+ # no optimization in debug mode
+ ctx.env.prepend_value('CFLAGS', ['-O0'])
+ else:
+ # default to -O2 in release mode
+ ctx.env.prepend_value('CFLAGS', ['-O2'])
# enable debug symbols and configure warnings
- ctx.env.CFLAGS += ['-g', '-Wall', '-Wextra']
- if ctx.options.build_type == "release":
- # set optimization level
- ctx.env.CFLAGS += ['-O2']
+ ctx.env.prepend_value('CFLAGS', ['-g', '-Wall', '-Wextra'])
else:
# enable debug symbols
ctx.env.CFLAGS += ['/Z7', '/FS']
ctx.env.LINKFLAGS += ['/DEBUG', '/INCREMENTAL:NO']
# configure warnings
ctx.env.CFLAGS += ['/W4', '/D_CRT_SECURE_NO_WARNINGS']
- # set optimization level and runtime libs
+ # set optimization level and runtime libs
if (ctx.options.build_type == "release"):
ctx.env.CFLAGS += ['/Ox']
ctx.env.CFLAGS += ['/MD']
else:
assert(ctx.options.build_type == "debug")
ctx.env.CFLAGS += ['/MDd']
-
+
ctx.check_cc(lib='m', uselib_store='M', mandatory=False)
if target_platform not in ['win32', 'win64']:
ctx.check_cfg(package = 'libavutil', atleast_version = '52.3.0',
args = '--cflags --libs', uselib_store = 'AVUTIL',
mandatory = ctx.options.enable_avcodec)
- ctx.check_cfg(package = 'libavresample', atleast_version = '1.0.1',
- args = '--cflags --libs', uselib_store = 'AVRESAMPLE',
- mandatory = ctx.options.enable_avcodec)
- if all ( 'HAVE_' + i in ctx.env
- for i in ['AVCODEC', 'AVFORMAT', 'AVUTIL', 'AVRESAMPLE'] ):
- ctx.define('HAVE_LIBAV', 1)
- ctx.msg('Checking for all libav libraries', 'yes')
+ ctx.check_cfg(package = 'libswresample', atleast_version = '2.3.0',
+ args = '--cflags --libs', uselib_store = 'SWRESAMPLE',
+ mandatory = False)
+ if 'HAVE_SWRESAMPLE' not in ctx.env:
+ ctx.check_cfg(package = 'libavresample', atleast_version = '1.0.1',
+ args = '--cflags --libs', uselib_store = 'AVRESAMPLE',
+ mandatory = False)
+
+ msg_check = 'Checking for all libav libraries'
+ if 'HAVE_AVCODEC' not in ctx.env:
+ ctx.msg(msg_check, 'not found (missing avcodec)', color = 'YELLOW')
+ elif 'HAVE_AVFORMAT' not in ctx.env:
+ ctx.msg(msg_check, 'not found (missing avformat)', color = 'YELLOW')
+ elif 'HAVE_AVUTIL' not in ctx.env:
+ ctx.msg(msg_check, 'not found (missing avutil)', color = 'YELLOW')
+ elif 'HAVE_SWRESAMPLE' not in ctx.env and 'HAVE_AVRESAMPLE' not in ctx.env:
+ resample_missing = 'not found (avresample or swresample required)'
+ ctx.msg(msg_check, resample_missing, color = 'YELLOW')
else:
- ctx.msg('Checking for all libav libraries', 'not found', color = 'YELLOW')
+ ctx.msg(msg_check, 'yes')
+ if 'HAVE_SWRESAMPLE' in ctx.env:
+ ctx.define('HAVE_SWRESAMPLE', 1)
+ elif 'HAVE_AVRESAMPLE' in ctx.env:
+ ctx.define('HAVE_AVRESAMPLE', 1)
+ ctx.define('HAVE_LIBAV', 1)
if (ctx.options.enable_wavread != False):
ctx.define('HAVE_WAVREAD', 1)
from waflib import TaskGen
if 'MANDIR' not in bld.env:
bld.env['MANDIR'] = bld.env['DATAROOTDIR'] + '/man'
+ bld.env.VERSION = str(VERSION)
rule_str = '${TXT2MAN} -t `basename ${TGT} | cut -f 1 -d . | tr a-z A-Z`'
rule_str += ' -r ${PACKAGE}\\ ${VERSION} -P ${PACKAGE}'
rule_str += ' -v ${PACKAGE}\\ User\\\'s\\ manual'
if bld.env['DOXYGEN']:
bld( name = 'doxygen', rule = 'doxygen ${SRC} > /dev/null',
source = 'doc/web.cfg',
+ target = '../doc/web/html/index.html',
cwd = 'doc')
bld.install_files( '${DATAROOTDIR}' + '/doc/libaubio-doc',
bld.path.ant_glob('doc/web/html/**'),
# build documentation from source files using sphinx-build
# note: build in ../doc/_build/html, otherwise waf wont install unsigned files
if bld.env['SPHINX']:
+ bld.env.VERSION = str(VERSION)
bld( name = 'sphinx',
- rule = '${SPHINX} -b html -a -q `dirname ${SRC}` `dirname ${TGT}`',
+ rule = '${SPHINX} -b html -D release=${VERSION} -D version=${VERSION} -a -q `dirname ${SRC}` `dirname ${TGT}`',
source = 'doc/conf.py',
target = '../doc/_build/html/index.html')
bld.install_files( '${DATAROOTDIR}' + '/doc/libaubio-doc/sphinx',