NOOP, remove trailing whitespace, replace tabs in python scripts
[ardour.git] / libs / ardour / wscript
index 04b99785e569b6253a502d5d8a7cc8333c09aafc..ee84e39b790ee0ded5aa9e363e8d58215f5ff21a 100644 (file)
@@ -22,6 +22,7 @@ libardour_sources = [
         'amp.cc',
         'analyser.cc',
         'async_midi_port.cc',
+        'audio_backend.cc',
         'audio_buffer.cc',
         'audio_diskstream.cc',
         'audio_library.cc',
@@ -64,6 +65,7 @@ libardour_sources = [
         'delivery.cc',
         'directory_names.cc',
         'diskstream.cc',
+        'ebur128_analysis.cc',
         'element_import_handler.cc',
         'element_importer.cc',
         'engine_slave.cc',
@@ -105,6 +107,7 @@ libardour_sources = [
         'legatize.cc',
         'location.cc',
         'location_importer.cc',
+        'ltc_file_reader.cc',
         'ltc_slave.cc',
         'meter.cc',
         'midi_automation_list_binder.cc',
@@ -214,6 +217,7 @@ libardour_sources = [
         'track.cc',
         'transient_detector.cc',
         'transform.cc',
+        'transpose.cc',
         'unknown_processor.cc',
         'user_bundle.cc',
         'utils.cc',
@@ -331,10 +335,11 @@ def build(bld):
     # micro increment <=> no interface changes
     LIBARDOUR_LIB_VERSION = "3.0.0"
 
-    sources = libardour_sources
+    # operate on copy to avoid adding sources twice
+    sources = list(libardour_sources)
     if bld.is_tracks_build():
         sources += [ 'engine_state_controller.cc' ]
-    
+
     # Library
     if bld.is_defined ('INTERNAL_SHARED_LIBS'):
         obj              = bld.shlib(features = 'c cxx cshlib cxxshlib', source=sources)
@@ -342,8 +347,8 @@ def build(bld):
         obj.defines      = [ 'LIBARDOUR_DLL_EXPORTS=1' ]
     else:
         obj              = bld.stlib(features = 'c cxx cstlib cxxstlib', source=sources)
-        obj.cxxflags     = [ '-fPIC' ]
-        obj.cflags       = [ '-fPIC' ]
+        obj.cxxflags     = [  bld.env['compiler_flags_dict']['pic'] ]
+        obj.cflags       = [ bld.env['compiler_flags_dict']['pic'] ]
         obj.defines      = []
 
     obj.export_includes = ['.']
@@ -407,22 +412,39 @@ def build(bld):
     if bld.is_defined('AUDIOUNIT_SUPPORT'):
         obj.source += [ 'audio_unit.cc' ]
 
+    avx_sources = []
+
     if Options.options.fpu_optimization:
         if (bld.env['build_target'] == 'i386' or bld.env['build_target'] == 'i686'):
-            obj.source += [ 'sse_functions_xmm.cc', 'sse_functions.s' ]
+            obj.source += [ 'sse_functions_xmm.cc', 'sse_functions.s', ]
+            avx_sources = [ 'sse_functions_avx_linux.cc' ]
         elif bld.env['build_target'] == 'x86_64':
-            obj.source += [ 'sse_functions_xmm.cc', 'sse_functions_64bit.s' ]
+            obj.source += [ 'sse_functions_xmm.cc', 'sse_functions_64bit.s', ]
+            avx_sources = [ 'sse_functions_avx_linux.cc' ]
         elif bld.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(bld.env['CC'])):
-                       obj.source += [ 'sse_functions_xmm.cc',
-                                       'sse_functions_avx.cc',
-                                       'sse_functions_64bit_win.s',
-                                       'sse_avx_functions_64bit_win.s',
-                                     ]
-        
+                # 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-w64', str(bld.env['CC'])):
+                        obj.source += [ 'sse_functions_xmm.cc' ]
+                        obj.source += [ 'sse_functions_64bit_win.s',  'sse_avx_functions_64bit_win.s' ]
+                        avx_sources = [ 'sse_functions_avx.cc' ]
+
+        if avx_sources:
+            # as long as we want to use AVX intrinsics in this file,
+            # compile it with -mavx flag - append avx flag to the existing
+            avx_cxxflags = list(bld.env['CXXFLAGS'])
+            avx_cxxflags.append (bld.env['compiler_flags_dict']['avx'])
+            avx_cxxflags.append (bld.env['compiler_flags_dict']['pic'])
+            bld(features = 'cxx',
+                source   = avx_sources,
+                cxxflags = avx_cxxflags,
+                includes = [ '.' ],
+                use = [ 'libtimecode', 'libpbd', 'libevoral', ],
+                target   = 'sse_avx_functions')
+
+            obj.use += ['sse_avx_functions' ]
+
     # i18n
     if bld.is_defined('ENABLE_NLS'):
         mo_files = bld.path.ant_glob('po/*.mo')
@@ -454,14 +476,6 @@ def build(bld):
             ]
         testcommon.name         = 'testcommon'
 
-        if bld.env['FPU_OPTIMIZATION']:
-            testcommon.source += [ 'sse_functions_xmm.cc' ]
-            if (bld.env['build_target'] == 'i386'
-                or bld.env['build_target'] == 'i686'):
-                testcommon.source += [ 'sse_functions.s' ]
-            elif bld.env['build_target'] == 'x86_64':
-                testcommon.source += [ 'sse_functions_64bit.s' ]
-
         if bld.env['SINGLE_TESTS']:
             create_ardour_test_program(bld, obj.includes, 'audio_engine_test', 'test_audio_engine', ['test/audio_engine_test.cc'])
             create_ardour_test_program(bld, obj.includes, 'automation_list_property_test', 'test_automation_list_property', ['test/automation_list_property_test.cc'])
@@ -479,12 +493,15 @@ def build(bld):
             create_ardour_test_program(bld, obj.includes, 'region_naming', 'test_region_naming', ['test/region_naming_test.cc'])
             create_ardour_test_program(bld, obj.includes, 'control_surface', 'test_control_surfaces', ['test/control_surfaces_test.cc'])
             create_ardour_test_program(bld, obj.includes, 'mtdm_test', 'test_mtdm', ['test/mtdm_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'sha1_test', 'test_sha1', ['test/sha1_test.cc'])
             create_ardour_test_program(bld, obj.includes, 'session_test', 'test_session', ['test/session_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'dsp_load_calculator_test', 'test_dsp_load_calculator', ['test/dsp_load_calculator_test.cc'])
 
         test_sources  = '''
             test/audio_engine_test.cc
             test/automation_list_property_test.cc
             test/bbt_test.cc
+            test/dsp_load_calculator_test.cc
             test/tempo_test.cc
             test/interpolation_test.cc
             test/midi_clock_slave_test.cc
@@ -498,6 +515,7 @@ def build(bld):
             test/region_naming_test.cc
             test/control_surfaces_test.cc
             test/mtdm_test.cc
+            test/sha1_test.cc
             test/session_test.cc
         '''.split()
 
@@ -531,13 +549,6 @@ def build(bld):
             'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
             'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
             ]
-        if bld.env['FPU_OPTIMIZATION']:
-            session_load_tester.source += [ 'sse_functions_xmm.cc' ]
-            if (bld.env['build_target'] == 'i386'
-                or bld.env['build_target'] == 'i686'):
-                session_load_tester.source += [ 'sse_functions.s' ]
-            elif bld.env['build_target'] == 'x86_64':
-                session_load_tester.source += [ 'sse_functions_64bit.s' ]
 
         # Profiling
         for p in ['runpc', 'lots_of_regions', 'load_session']:
@@ -563,13 +574,6 @@ def build(bld):
                 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
                 'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
                 ]
-            if bld.env['FPU_OPTIMIZATION']:
-                profilingobj.source += [ 'sse_functions_xmm.cc' ]
-                if (bld.env['build_target'] == 'i386'
-                    or bld.env['build_target'] == 'i686'):
-                    profilingobj.source += [ 'sse_functions.s' ]
-                elif bld.env['build_target'] == 'x86_64':
-                    profilingobj.source += [ 'sse_functions_64bit.s' ]
 
 def create_ardour_test_program(bld, includes, name, target, sources):
     testobj              = bld(features = 'cxx cxxprogram')