prepare GUI notifications for plugin scan
[ardour.git] / gtk2_ardour / wscript
index 4e5c41b8261a7ba8f51cde448e6c1a83f2b6a5a0..24349d928d38d10d3c3fff61daab103bb042a6d3 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
@@ -196,6 +197,7 @@ 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',
         'session_import_dialog.cc',
         'session_metadata_dialog.cc',
         'session_option_editor.cc',
@@ -235,7 +237,6 @@ gtk2_ardour_sources = [
         'add_video_dialog.cc',
         'editor_videotimeline.cc',
         'video_timeline.cc',
         'add_video_dialog.cc',
         'editor_videotimeline.cc',
         'video_timeline.cc',
-        'system_exec.cc',
         'video_monitor.cc',
         'transcode_ffmpeg.cc',
         'transcode_video_dialog.cc',
         'video_monitor.cc',
         'transcode_ffmpeg.cc',
         'transcode_video_dialog.cc',
@@ -255,14 +256,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',
@@ -351,26 +356,27 @@ def build(bld):
 
     VERSION = "%s.%s" % (bld.env['MAJOR'], bld.env['MINOR'])
 
 
     VERSION = "%s.%s" % (bld.env['MAJOR'], bld.env['MINOR'])
 
-    if bld.is_defined('WINDOWS_VST_SUPPORT'):
+    if bld.is_defined('WINDOWS_VST_SUPPORT') and bld.env['build_target'] != 'mingw':
+        # Windows VST support w/wine
         # 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 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/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'
                              'libcanvas'
                              ]
         obj.target = 'ardour-' + bld.env['VERSION'] + '-vst.exe.so'
@@ -388,30 +394,35 @@ 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.
-
-    obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
-
-    obj.uselib       = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG ALSA CURL DL GTKMM LO'
-    obj.use          = [ 'libpbd',
-                         'libmidipp',
-                         'libtaglib',
-                         'libardour',
-                         'libardour_cp',
-                         'libgtkmm2ext',
-                         'libtaglib',
-                         'libcanvas'
-                         ]
-    if sys.platform == 'darwin':
-        obj.uselib += ' AUDIOUNITS OSX GTKOSX'
-        obj.use    += ' libappleutility'
-    obj.defines     = [
+        if bld.is_defined('WINDOWS_VST_SUPPORT'):
+        # Windows VST support mingw
+            obj.source += (
+                '../libs/fst/fst.c',
+                '../libs/fst/fstinfofile.c',
+                '../libs/fst/vsti.c',
+                '../libs/fst/vstwin.c',
+                '../vst/winmain.c',
+                )
+            obj.includes += [ '../libs/fst' ]
+
+    # at this point, "obj" refers to either the normal native executable
+    # OR the shared library built for use with wine on linux.
+
+    obj.use      = [ 'libpbd',
+                     'libardour',
+                     'libardour_cp',
+                     'libtimecode',
+                     'libmidipp',
+                     'libgtkmm2ext',
+                     'libcanvas',
+                     ]
+
+    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']) + '"',
@@ -419,8 +430,21 @@ 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' ]
@@ -613,7 +637,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
@@ -635,7 +659,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' ]
 
@@ -655,11 +679,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')