merge with master
[ardour.git] / gtk2_ardour / wscript
index bb4e2035ec6ad10a9c7bc54fd38cc57cb1738895..d385da5a200ab9dab9abb1817ae7ec9e37922e42 100644 (file)
@@ -3,6 +3,7 @@ from waflib.extras import autowaf as autowaf
 from waflib import Options, TaskGen
 import waflib.Logs as Logs, waflib.Utils as Utils
 import os
 from waflib import Options, TaskGen
 import waflib.Logs as Logs, waflib.Utils as Utils
 import os
+import shutil
 import sys
 import re
 import time
 import sys
 import re
 import time
@@ -46,22 +47,12 @@ gtk2_ardour_sources = [
         'big_clock_window.cc',
         'bundle_manager.cc',
         'button_joiner.cc',
         'big_clock_window.cc',
         'bundle_manager.cc',
         'button_joiner.cc',
-        'canvas-flag.cc',
-        'canvas-hit.cc',
-        'canvas-note-event.cc',
-        'canvas-note.cc',
-        'canvas_patch_change.cc',
-        'canvas-simpleline.c',
-        'canvas-simplerect.c',
-        'canvas-sysex.cc',
-        'canvas-waveview.c',
         'clock_group.cc',
         'configinfo.cc',
         'control_point.cc',
         'control_point_dialog.cc',
         'curvetest.cc',
         'debug.cc',
         'clock_group.cc',
         'configinfo.cc',
         'control_point.cc',
         'control_point_dialog.cc',
         'curvetest.cc',
         'debug.cc',
-        'diamond.cc',
         'edit_note_dialog.cc',
         'editing.cc',
         'editor.cc',
         'edit_note_dialog.cc',
         'editing.cc',
         'editor.cc',
@@ -103,6 +94,7 @@ gtk2_ardour_sources = [
         'fft.cc',
         'fft_graph.cc',
         'fft_result.cc',
         'fft.cc',
         'fft_graph.cc',
         'fft_result.cc',
+        'sfdb_freesound_mootcher.cc',
         'gain_meter.cc',
         'generic_pluginui.cc',
         'ghostregion.cc',
         'gain_meter.cc',
         'generic_pluginui.cc',
         'ghostregion.cc',
@@ -115,12 +107,12 @@ gtk2_ardour_sources = [
         'insert_time_dialog.cc',
         'interthread_progress_window.cc',
         'io_selector.cc',
         'insert_time_dialog.cc',
         'interthread_progress_window.cc',
         'io_selector.cc',
+        'hit.cc',
         'keyboard.cc',
         'keyeditor.cc',
         'latency_gui.cc',
         'led.cc',
         'level_meter.cc',
         'keyboard.cc',
         'keyeditor.cc',
         'latency_gui.cc',
         'led.cc',
         'level_meter.cc',
-        'lineset.cc',
         'location_ui.cc',
         'main.cc',
         'main_clock.cc',
         'location_ui.cc',
         'main.cc',
         'main_clock.cc',
@@ -155,6 +147,8 @@ gtk2_ardour_sources = [
         'nag.cc',
         'new_plugin_preset_dialog.cc',
         'normalize_dialog.cc',
         'nag.cc',
         'new_plugin_preset_dialog.cc',
         'normalize_dialog.cc',
+        'note.cc',
+        'note_base.cc',
         'note_player.cc',
         'nsm.cc',
         'nsmclient.cc',
         'note_player.cc',
         'nsm.cc',
         'nsmclient.cc',
@@ -164,6 +158,7 @@ gtk2_ardour_sources = [
         'panner_editor.cc',
         'panner_interface.cc',
         'panner_ui.cc',
         'panner_editor.cc',
         'panner_interface.cc',
         'panner_ui.cc',
+        'patch_change.cc',
         'piano_roll_header.cc',
         'pingback.cc',
         'playlist_selector.cc',
         'piano_roll_header.cc',
         'pingback.cc',
         'playlist_selector.cc',
@@ -202,13 +197,12 @@ gtk2_ardour_sources = [
         'search_path_option.cc',
         'selection.cc',
         'send_ui.cc',
         'search_path_option.cc',
         'selection.cc',
         'send_ui.cc',
+        'session_dialog.cc',
         'session_import_dialog.cc',
         'session_metadata_dialog.cc',
         'session_option_editor.cc',
         'sfdb_ui.cc',
         'shuttle_control.cc',
         'session_import_dialog.cc',
         'session_metadata_dialog.cc',
         'session_option_editor.cc',
         'sfdb_ui.cc',
         'shuttle_control.cc',
-        'simpleline.cc',
-        'simplerect.cc',
         'splash.cc',
         'speaker_dialog.cc',
         'startup.cc',
         'splash.cc',
         'speaker_dialog.cc',
         'startup.cc',
@@ -218,6 +212,7 @@ gtk2_ardour_sources = [
         'stereo_panner_editor.cc',
         'streamview.cc',
         'strip_silence_dialog.cc',
         'stereo_panner_editor.cc',
         'streamview.cc',
         'strip_silence_dialog.cc',
+        'sys_ex.cc',
         'tape_region_view.cc',
         'tempo_dialog.cc',
         'tempo_lines.cc',
         'tape_region_view.cc',
         'tempo_dialog.cc',
         'tempo_lines.cc',
@@ -236,7 +231,6 @@ gtk2_ardour_sources = [
         'version.cc',
         'visibility_group.cc',
         'volume_controller.cc',
         'version.cc',
         'visibility_group.cc',
         'volume_controller.cc',
-        'waveview.cc',
         'window_manager.cc',
 # video-timeline related sources:
         'video_image_frame.cc',
         'window_manager.cc',
 # video-timeline related sources:
         'video_image_frame.cc',
@@ -263,14 +257,18 @@ def configure(conf):
     autowaf.build_version_files(
         path_prefix + 'version.h',
         path_prefix + 'version.cc',
     autowaf.build_version_files(
         path_prefix + 'version.h',
         path_prefix + 'version.cc',
-        'gtk2_ardour', conf.env['MAJOR'], conf.env['MINOR'], 0)
+        'gtk2_ardour', conf.env['MAJOR'], conf.env['MINOR'], 0,
+        '', '')
     autowaf.configure(conf)
 
     autowaf.configure(conf)
 
-    if re.search ("linux", sys.platform) != None:
-        autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
+    if Options.options.dist_target == 'auto':
+        if re.search ("linux", sys.platform) != None:
+            autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
 
     # TODO: Insert a sanity check for on OS X to ensure CoreAudio is present
 
 
     # TODO: Insert a sanity check for on OS X to ensure CoreAudio is present
 
+    autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F',
+                      mandatory=True)
     autowaf.check_pkg(conf, 'flac', uselib_store='FLAC',
                       atleast_version='1.2.1')
     autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD',
     autowaf.check_pkg(conf, 'flac', uselib_store='FLAC',
                       atleast_version='1.2.1')
     autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD',
@@ -279,10 +277,6 @@ def configure(conf):
                       atleast_version='2.18')
     autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM',
                       atleast_version='2.18')
                       atleast_version='2.18')
     autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM',
                       atleast_version='2.18')
-    autowaf.check_pkg(conf, 'libgnomecanvas-2.0',
-                      uselib_store='GNOMECANVAS', atleast_version='2.30')
-    autowaf.check_pkg(conf, 'libgnomecanvasmm-2.6',
-                      uselib_store='GNOMECANVASMM', atleast_version='2.16')
     autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2')
     autowaf.check_pkg(conf, 'x11', uselib_store='X11', atleast_version='1.1', mandatory=False)
     autowaf.check_pkg(conf, 'fontconfig', uselib_store='FONTCONFIG')
     autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2')
     autowaf.check_pkg(conf, 'x11', uselib_store='X11', atleast_version='1.1', mandatory=False)
     autowaf.check_pkg(conf, 'fontconfig', uselib_store='FONTCONFIG')
@@ -366,23 +360,27 @@ def build(bld):
     if bld.is_defined('WINDOWS_VST_SUPPORT'):
         # If we require VST support we build a stub main() and the FST library
         # here using winegcc, and link it to the GTK front-end library
     if bld.is_defined('WINDOWS_VST_SUPPORT'):
         # If we require VST support we build a stub main() and the FST library
         # here using winegcc, and link it to the GTK front-end library
-        obj = bld(features = 'cxx c cxxprogram wine')
-        obj.source = '''
-                ../libs/fst/fst.c
-                ../libs/fst/fstinfofile.c
-                ../libs/fst/vsti.c
-                ../libs/fst/vstwin.c
-                ../vst/winmain.c
-        '''
-        obj.uselib = 'ALSA'
+        obj = bld (features = 'cxx c cxxprogram wine')
+        obj.source = (
+            '../libs/fst/fst.c',
+            '../libs/fst/fstinfofile.c',
+            '../libs/fst/vsti.c',
+            '../libs/fst/vstwin.c',
+            '../vst/winmain.c',
+            )
+        #
+        # XXX do we really need to explicitly link to all of these for the wine executable?
+        #
         obj.use          = [ 'libpbd',
                              'libmidipp',
         obj.use          = [ 'libpbd',
                              'libmidipp',
-                             'libtaglib',
                              'libardour',
                              'libardour_cp',
                              'libardour',
                              'libardour_cp',
+                             'libtimecode',
+                             'libmidipp',
                              'libgtk2_ardour',
                              'libgtkmm2ext',
                              'libgtk2_ardour',
                              'libgtkmm2ext',
-                             'libtaglib']
+                             'libcanvas'
+                             ]
         obj.target = 'ardour-' + bld.env['VERSION'] + '-vst.exe.so'
         obj.includes  = [ '../libs/fst', '.' ]
         obj.linkflags = ['-mwindows', '-Wl,--export-dynamic']
         obj.target = 'ardour-' + bld.env['VERSION'] + '-vst.exe.so'
         obj.includes  = [ '../libs/fst', '.' ]
         obj.linkflags = ['-mwindows', '-Wl,--export-dynamic']
@@ -398,29 +396,24 @@ def build(bld):
         obj.target    = 'gtk2_ardour'
     else:
         # just the normal executable version of the GTK GUI
         obj.target    = 'gtk2_ardour'
     else:
         # just the normal executable version of the GTK GUI
-        obj = bld(features = 'cxx c cxxprogram')
+        obj = bld (features = 'cxx c cxxprogram')
         obj.source    = gtk2_ardour_sources
         obj.target = 'ardour-' + bld.env['VERSION']
         obj.includes = ['.']
 
         obj.source    = gtk2_ardour_sources
         obj.target = 'ardour-' + bld.env['VERSION']
         obj.includes = ['.']
 
-    # continue with setup of obj, which could be a shared library
-    # or an executable.
+    # at this point, "obj" refers to either the normal native executable
+    # OR the shared library built for use with wine on linux.
 
 
-    obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
+    obj.use      = [ 'libpbd',
+                     'libardour',
+                     'libardour_cp',
+                     'libtimecode',
+                     'libmidipp',
+                     'libgtkmm2ext',
+                     'libcanvas',
+                     ]
 
 
-    obj.uselib       = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG ALSA CURL DL'
-    obj.uselib       += ' GTKMM GNOMECANVASMM GNOMECANVAS '
-    obj.uselib       += ' AUDIOUNITS OSX GTKOSX LO '
-    obj.use          = [ 'libpbd',
-                         'libmidipp',
-                         'libtaglib',
-                         'ardour',
-                         'libardour_cp',
-                         'libgtkmm2ext',
-                         'libtaglib' ]
-    if sys.platform == 'darwin':
-        obj.use += ' libappleutility'
-    obj.defines     = [
+    obj.defines = [
         'PACKAGE="' + I18N_PACKAGE + '"',
         'VERSIONSTRING="' + bld.env['VERSION'] + '"',
         'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
         'PACKAGE="' + I18N_PACKAGE + '"',
         'VERSIONSTRING="' + bld.env['VERSION'] + '"',
         'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
@@ -428,16 +421,25 @@ def build(bld):
         'LOCALEDIR="' + os.path.join(os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
         'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"'
         ]
         'LOCALEDIR="' + os.path.join(os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
         'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"'
         ]
+    obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
+    obj.uselib       = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL'
+    obj.uselib       += ' GTKMM CANVAS FFTW3F'
+    obj.uselib       += ' AUDIOUNITS OSX GTKOSX LO '
+    obj.uselib       += ' TAGLIB '
+
+    if sys.platform == 'darwin':
+        obj.uselib += ' AUDIOUNITS OSX GTKOSX'
+        obj.use    += ' libappleutility'
     obj.includes += ['../libs']
 
     obj.includes += ['../libs']
 
+    if bld.env['build_target'] == 'mingw':
+       if bld.env['DEBUG'] == False:
+            obj.linkflags = ['-mwindows']
+
     if bld.is_defined('HAVE_SUIL'):
         obj.source += [ 'lv2_plugin_ui.cc' ]
         obj.use += [ 'SUIL' ]
 
     if bld.is_defined('HAVE_SUIL'):
         obj.source += [ 'lv2_plugin_ui.cc' ]
         obj.use += [ 'SUIL' ]
 
-    if bld.is_defined('FREESOUND'):
-        obj.source +=  [ 'sfdb_freesound_mootcher.cc' ]
-        obj.defines += [ 'FREESOUND' ]
-
     if bld.is_defined('NEED_INTL'):
         obj.linkflags = ' -lintl'
 
     if bld.is_defined('NEED_INTL'):
         obj.linkflags = ' -lintl'
 
@@ -519,6 +521,7 @@ def build(bld):
                 'SMALLER' : '9',
                 'SMALL' : '10',
                 'NORMAL' : '11',
                 'SMALLER' : '9',
                 'SMALL' : '10',
                 'NORMAL' : '11',
+                'BIG' : '13',
                 'BIGGER' : '17',
                 'LARGE' : '18',
                 'LARGER' : '28',
                 'BIGGER' : '17',
                 'LARGE' : '18',
                 'LARGER' : '28',
@@ -544,6 +547,7 @@ def build(bld):
                 'SMALLER' : '8',
                 'SMALL' : '9',
                 'NORMAL' : '10',
                 'SMALLER' : '8',
                 'SMALL' : '9',
                 'NORMAL' : '10',
+                'BIG' : '14',
                 'BIGGER' : '17',
                 'LARGE' : '18',
                 'LARGER' : '24',
                 'BIGGER' : '17',
                 'LARGE' : '18',
                 'LARGER' : '24',
@@ -624,7 +628,7 @@ def build(bld):
     obj.install_path = None
     set_subst_dict(obj, light_rc_subst_dict)
 
     obj.install_path = None
     set_subst_dict(obj, light_rc_subst_dict)
 
-    obj              = bld(rule = 'cp ${SRC} ${TGT}')
+    obj              = bld(rule = autowaf.copyfile) 
     obj.source       = [ 'ardour3_widget_list.rc' ]
     obj.target       = 'ardour3_widgets.rc'
     obj.install_path = None
     obj.source       = [ 'ardour3_widget_list.rc' ]
     obj.target       = 'ardour3_widgets.rc'
     obj.install_path = None
@@ -646,7 +650,7 @@ def build(bld):
     # Menus
     menus_argv = []
     if bld.is_defined('GTKOSX'):
     # Menus
     menus_argv = []
     if bld.is_defined('GTKOSX'):
-        menus_argv = [ '-E', '-P', '-DGTKOSX', '-DNOVIDEOTIMELINE' ]
+        menus_argv = [ '-E', '-P', '-DGTKOSX' ]
     else:
         menus_argv = [ '-E', '-P' ]
 
     else:
         menus_argv = [ '-E', '-P' ]
 
@@ -666,11 +670,15 @@ def build(bld):
     # 'SAE-de-keypad', 'SAE-de-nokeypad', 'SAE-us-keypad',
     # 'SAE-us-nokeypad', 'ergonomic-us'
 
     # 'SAE-de-keypad', 'SAE-de-nokeypad', 'SAE-us-keypad',
     # 'SAE-us-nokeypad', 'ergonomic-us'
 
+    #
+    # explicitly state the use of perl here so that it works on windows too
+    # 
+    a_rule = 'perl ../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap <${SRC} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] )
     for b in [ 'mnemonic-us' ] :
         obj = bld(
             target = b + '.bindings',
             source = b + '.bindings.in',
     for b in [ 'mnemonic-us' ] :
         obj = bld(
             target = b + '.bindings',
             source = b + '.bindings.in',
-            rule = '../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap <${SRC} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] )
+            rule = a_rule
             )
         obj.install_path = os.path.join(bld.env['SYSCONFDIR'], 'ardour3')
 
             )
         obj.install_path = os.path.join(bld.env['SYSCONFDIR'], 'ardour3')