import sys
import platform as PLATFORM
from waflib.Tools import winres
-
+from waflib.Build import Context
from waflib.Build import BuildContext
+
class i18n(BuildContext):
cmd = 'i18n'
fun = 'i18n'
cmd = 'i18n_mo'
fun = 'i18n_mo'
+def is_tracks_build(self, *k, **kw):
+ return self.env['PROGRAM_NAME'] == 'Tracks Live'
+
+Context.Context.is_tracks_build = is_tracks_build
compiler_flags_dictionaries= {
'gcc' : {
'c99': '-std=c99',
# Flag to enable AT&T assembler syntax
'attasm': '-masm=att',
+ # Flags to make AVX instructions/intrinsics available
+ 'avx': '-mavx',
+ # Flags to generate position independent code, when needed to build a shared object
+ 'pic': '-fPIC',
+ # Flags required to compile C code with anonymous unions (only part of C11)
+ 'c-anonymous-union': '-fms-extensions',
},
'msvc' : {
'debuggable' : ['/DDEBUG', '/Od', '/Zi', '/MDd', '/Gd', '/EHsc'],
'cxx-strict' : '',
'strict' : '',
'c99': '/TP',
+ 'attasm': '',
+ 'avx': '',
+ 'pic': '',
+ 'c-anonymous-union': '',
},
}
MICRO = '0'
V = MAJOR + '.' + MINOR + '.' + MICRO
-VERSION = V
-PROGRAM_VERSION = MAJOR
+# Ensure that these are not unicode, which
+# can cause odd problems elsewhere. Note that
+# in python3, encode and decode do not return
+# strings, so we have to force the type.
+VERSION = str (V.encode ('ascii', 'ignore'))
+PROGRAM_VERSION = str (MAJOR.encode ('ascii', 'ignore'))
# Mandatory variables
top = '.'
else:
compiler_name = 'gcc'
- flags_dict = compiler_flags_dictionaries[compiler_name]
-
+ flags_dict = compiler_flags_dictionaries[compiler_name]
+ # Save the compiler flags because we need them at build time
+ # when we need to add compiler specific flags in certain
+ # libraries
+ conf.env['compiler_flags_dict'] = flags_dict;
+
autowaf.set_basic_compiler_flags (conf,flags_dict)
if conf.options.asan:
if (re.search ("(x86_64|AMD64)", cpu) != None):
# on Windows sse is supported by 64 bit platforms only
build_host_supports_sse = True
-
+
# mingw GCC compiler to uses at&t (Unix specific) assembler dialect by default
# compiler_flags.append (["--mmnemonic=att", "msyntax=att")
compiler_flags.extend ([ flags_dict['sse'], flags_dict['fpmath-sse'], flags_dict['xmmintrinsics'], flags_dict['attasm'] ])
-
+
# end of processor-specific section
# optimization section
compiler_flags.append("-DBUILD_VECLIB_OPTIMIZATIONS");
conf.env.append_value('LINKFLAGS_OSX', ['-framework', 'Accelerate'])
elif conf.env['build_target'] == 'i686' or conf.env['build_target'] == 'x86_64':
- compiler_flags.append ("-DBUILD_SSE_OPTIMIZATIONS")
+ compiler_flags.append ("-DBUILD_SSE_OPTIMIZATIONS")
elif conf.env['build_target'] == 'mingw':
- # usability of the 64 bit windows assembler depends on the compiler target,
- # not the build host, which in turn can only be inferred from the name
- # of the compiler.
- if re.search ('/^x86_64/', str(conf.env['CC'])):
- compiler_flags.append ("-DBUILD_SSE_OPTIMIZATIONS")
+ # usability of the 64 bit windows assembler depends on the compiler target,
+ # not the build host, which in turn can only be inferred from the name
+ # of the compiler.
+ if re.search ('/^x86_64/', str(conf.env['CC'])):
+ compiler_flags.append ("-DBUILD_SSE_OPTIMIZATIONS")
if not build_host_supports_sse:
print("\nWarning: you are building Ardour with SSE support even though your system does not support these instructions. (This may not be an error, especially if you are a package maintainer)")
compiler_flags.append ('-DPROGRAM_NAME="' + Options.options.program_name + '"')
compiler_flags.append ('-DPROGRAM_VERSION="' + PROGRAM_VERSION + '"')
+ conf.env['PROGRAM_NAME'] = Options.options.program_name
+
if opt.debug:
conf.env.append_value('CFLAGS', debug_flags)
conf.env.append_value('CXXFLAGS', debug_flags)
conf.env.append_value('CXXFLAGS', cxx_flags)
conf.env.append_value('LINKFLAGS', linker_flags)
+def is_tracks_build (conf):
+ return conf.env['PROGRAM_NAME'] == 'Tracks Live'
+
#----------------------------------------------------------------
# Waf stages
autowaf.set_options(opt, debug_by_default=True)
opt.add_option('--program-name', type='string', action='store', default='Ardour', dest='program_name',
help='The user-visible name of the program being built')
- opt.add_option ('--trx', action='store_true', default=False, dest='trx_build',
- help='Whether to build for TRX')
opt.add_option('--arch', type='string', action='store', dest='arch',
help='Architecture-specific compiler FLAGS')
opt.add_option('--with-backends', type='string', action='store', default='jack', dest='with_backends',
conf.env['VERSION'] = VERSION
conf.env['MAJOR'] = MAJOR
conf.env['MINOR'] = MINOR
+ conf.env['MICRO'] = MICRO
conf.line_just = 52
autowaf.set_recursive()
autowaf.configure(conf)
conf.env.append_value ('CXXFLAGS', '-DSILENCE_AFTER')
conf.define ('FREEBIE', 1)
- if Options.options.trx_build:
- conf.define ('TRX_BUILD', 1)
-
if Options.options.lv2dir:
conf.env['LV2DIR'] = Options.options.lv2dir
else:
lib='regex', uselib_store="REGEX", define_name='HAVE_REGEX_H')
# TODO put this only where it is needed
conf.env.append_value('LIB', 'regex')
-
+ # TODO this should only be necessary for a debug build
+ conf.env.append_value('LIB', 'dbghelp')
+
# work around GdkDrawable BitBlt performance issue on windows
# see http://gareus.org/wiki/ardour_windows_gdk_and_cairo
conf.env.append_value('CFLAGS', '-DUSE_CAIRO_IMAGE_SURFACE')
autowaf.check_pkg(conf, 'cppunit', uselib_store='CPPUNIT', atleast_version='1.12.0', mandatory=True)
backends = opts.with_backends.split(',')
+
if not backends:
print("Must configure and build at least one backend")
sys.exit(1)
+ if conf.is_tracks_build():
+ # For Tracks, override backends on OS X or Windows
+ if sys.platform == 'darwin' or sys.platform == 'mingw' or sys.platform == 'msvc':
+ backends = [ 'wavesaudio' ]
+
conf.env['BACKENDS'] = backends
conf.env['BUILD_JACKBACKEND'] = any('jack' in b for b in backends)
conf.env['BUILD_ALSABACKEND'] = any('alsa' in b for b in backends)
print("ALSA Backend is only available on Linux")
sys.exit(1)
-
set_compiler_flags (conf, Options.options)
if sys.platform == 'darwin':
# set up target directories
lwrcase_dirname = 'ardour' + bld.env['MAJOR']
- if bld.is_defined ('TRX_BUILD'):
+ if bld.is_tracks_build():
+ bld.env.append_value ('CXXFLAGS', '-DUSE_TRACKS_CODE_FEATURES')
+ bld.env.append_value ('CFLAGS', '-DUSE_TRACKS_CODE_FEATURES')
lwrcase_dirname = 'trx'
-
+
# configuration files go here
bld.env['CONFDIR'] = os.path.join(bld.env['SYSCONFDIR'], lwrcase_dirname)
# data files loaded at run time go here