Tracks doesn't know how to handle Engine (JACK) sync
[ardour.git] / wscript
diff --git a/wscript b/wscript
index cda1488188979148d9928e7d907f256bb7567a2f..c9c0e41210eaeb41ccf3d8bd1abe0333f67bd9e5 100644 (file)
--- a/wscript
+++ b/wscript
@@ -78,6 +78,12 @@ compiler_flags_dictionaries= {
         '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'],
@@ -105,6 +111,10 @@ compiler_flags_dictionaries= {
         'cxx-strict' : '',
         'strict' : '',
         'c99': '/TP',
+        'attasm': '',
+        'avx': '',
+        'pic': '',
+        'c-anonymous-union': '',
     },
 }
 
@@ -169,8 +179,10 @@ else:
     MICRO = '0'
 
 V = MAJOR + '.' + MINOR + '.' + MICRO
-VERSION = V
-PROGRAM_VERSION = MAJOR
+# Ensure that these are not unicode, which
+# can cause odd problems elsewhere
+VERSION = V.encode ('ascii', 'ignore')
+PROGRAM_VERSION = MAJOR.encode ('ascii', 'ignore')
 
 # Mandatory variables
 top = '.'
@@ -296,8 +308,12 @@ int main() { return 0; }''',
         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:
@@ -417,12 +433,12 @@ int main() { return 0; }''',
             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
@@ -714,6 +730,7 @@ def configure(conf):
     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)
@@ -981,10 +998,16 @@ def configure(conf):
         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)
@@ -1008,7 +1031,6 @@ def configure(conf):
         print("ALSA Backend is only available on Linux")
         sys.exit(1)
 
-
     set_compiler_flags (conf, Options.options)
 
     if sys.platform == 'darwin':