help = help_disable_str )
def options(ctx):
+ ctx.add_option('--build-type', action = 'store',
+ default = "release",
+ choices = ('debug', 'release'),
+ dest = 'build_type',
+ 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)',
help_disable_str = 'do not compile with fftw3f')
target_platform = ctx.options.target_platform
ctx.env['DEST_OS'] = target_platform
+ if ctx.options.build_type == "debug":
+ ctx.define('DEBUG', 1)
+ else:
+ ctx.define('NDEBUG', 1)
+
if ctx.env.CC_NAME != 'msvc':
+ # enable debug symbols and configure warnings
ctx.env.CFLAGS += ['-g', '-Wall', '-Wextra']
+ if ctx.options.build_type == "debug":
+ # no optimization in debug mode
+ ctx.env.CFLAGS += ['-O0']
else:
- ctx.env.CFLAGS += ['/W4', '/MD']
- ctx.env.CFLAGS += ['/D_CRT_SECURE_NO_WARNINGS']
+ # 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
+ 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)
Logs.pprint('RED', msg)
def dist(ctx):
- ctx.excl = ' **/.waf-1* **/*~ **/*.pyc **/*.swp **/*.swo **/*.swn **/.lock-w* **/.git*'
+ ctx.excl = ' **/.waf* **/*~ **/*.pyc **/*.swp **/*.swo **/*.swn **/.lock-w* **/.git*'
ctx.excl += ' **/build/*'
ctx.excl += ' doc/_build'
ctx.excl += ' python/demos_*'
ctx.excl += ' **/**.zip **/**.tar.bz2'
ctx.excl += ' **.tar.bz2'
ctx.excl += ' **/doc/full/* **/doc/web/*'
+ ctx.excl += ' **/doc/full.cfg'
ctx.excl += ' **/python/*.db'
ctx.excl += ' **/python.old/*'
ctx.excl += ' **/python/*/*.old'