Stop ardour exiting in the case where you have a loaded session, then select New...
[ardour.git] / SConstruct
index 8174a9171ae7c485ac0fd6085a7bbbbe44e315c7..12bc5af4b52f77a8f5f49967be492100035b60ce 100644 (file)
@@ -18,6 +18,9 @@ import commands
 from sets import Set
 import SCons.Node.FS
 
+print "\n----------------------------------------\nPlease build Ardour 3.X using waf:\n\n./waf configure\n./waf"
+exit (0)
+
 SConsignFile()
 EnsureSConsVersion(0, 96)
 
@@ -32,7 +35,7 @@ subst_dict = { }
 opts = Options('scache.conf')
 opts.AddOptions(
     ('ARCH', 'Set architecture-specific compilation flags by hand (all flags as 1 argument)',''),
-    ('WINDOWS_KEY', 'Set X Modifier (Mod1,Mod2,Mod3,Mod4,Mod5) for "Windows" key', 'Mod4'),
+    ('WINDOWS_KEY', 'Set X Modifier (Mod1,Mod2,Mod3,Mod4,Mod5) for "Windows" key', 'Mod4><Super'),
     BoolOption('AUDIOUNITS', 'Compile with Apple\'s AudioUnit library. (experimental)', 0),
     BoolOption('COREAUDIO', 'Compile with Apple\'s CoreAudio library', 0),
     BoolOption('GTKOSX', 'Compile for use with GTK-OSX, not GTK-X11', 0),
@@ -45,7 +48,6 @@ opts.AddOptions(
     BoolOption('EXTRA_WARN', 'Compile with -Wextra, -ansi, and -pedantic.  Might break compilation.  For pedants', 0),
     BoolOption('FREESOUND', 'Include Freesound database lookup', 0),
     BoolOption('FPU_OPTIMIZATION', 'Build runtime checked assembler code', 1),
-    BoolOption('LIBLO', 'Compile with support for liblo library', 1),
     BoolOption('NLS', 'Set to turn on i18n support', 1),
     PathOption('PREFIX', 'Set the install "prefix"', '/usr/local'),
     BoolOption('SURFACES', 'Build support for control surfaces', 1),
@@ -418,28 +420,6 @@ tarball_bld = Builder (action = tarballer,
 env.Append (BUILDERS = {'Distribute' : dist_bld})
 env.Append (BUILDERS = {'Tarball' : tarball_bld})
 
-#
-# Make sure they know what they are doing
-#
-
-if env['VST']:
-    if os.path.isfile('.personal_use_only'):
-        print "Enabling VST support. Note that distributing a VST-enabled ardour\nis a violation of several different licences.\nBuild with VST=false if you intend to distribute ardour to others."
-    else:
-        sys.stdout.write ("Are you building Ardour for personal use (rather than distribution to others)? [no]: ")
-        answer = sys.stdin.readline ()
-        answer = answer.rstrip().strip()
-        if answer == "yes" or answer == "y":
-            fh = open('.personal_use_only', 'w')
-            fh.close()
-            print "OK, VST support will be enabled"
-        else:
-            print 'You cannot build Ardour with VST support for distribution to others.\nIt is a violation of several different licenses. Build with VST=false.'
-            sys.exit (-1);
-else:
-    if os.path.isfile('.personal_use_only'):
-        os.remove('.personal_use_only')
-
 ####################
 # push environment
 ####################
@@ -447,9 +427,11 @@ else:
 def pushEnvironment(context):
     if os.environ.has_key('PATH'):
        context.Append(PATH = os.environ['PATH'])
+       context['ENV']['PATH'] = os.environ['PATH']
        
     if os.environ.has_key('PKG_CONFIG_PATH'):
        context.Append(PKG_CONFIG_PATH = os.environ['PKG_CONFIG_PATH'])
+       context['ENV']['PKG_CONFIG_PATH'] = os.environ['PKG_CONFIG_PATH']
            
     if os.environ.has_key('CC'):
        context['CC'] = os.environ['CC']
@@ -595,12 +577,12 @@ else:
 if env['LV2']:
        conf = env.Configure(custom_tests = { 'CheckPKGVersion' : CheckPKGVersion})
        
-       if conf.CheckPKGVersion('slv2', '0.6.2'):
+       if conf.CheckPKGVersion('slv2', '0.6.4'):
                libraries['slv2'] = LibraryInfo()
                libraries['slv2'].ParseConfig('pkg-config --cflags --libs slv2')
-                env.Append (CCFLAGS="-DHAVE_LV2")
+                env.Append (CCFLAGS="-DHAVE_SLV2")
        else:
-               print 'LV2 support is not enabled (SLV2 not found or older than 0.6.0)'
+               print 'LV2 support is not enabled (SLV2 not found or older than 0.6.4 (svn))'
                env['LV2'] = 0
        conf.Finish()
 else:
@@ -627,6 +609,10 @@ libraries['glib2'].ParseConfig ('pkg-config --cflags --libs gobject-2.0')
 libraries['glib2'].ParseConfig ('pkg-config --cflags --libs gmodule-2.0')
 libraries['glib2'].ParseConfig ('pkg-config --cflags --libs gthread-2.0')
 
+libraries['gio'] = LibraryInfo()
+libraries['gio'].ParseConfig('pkg-config --cflags --libs gio-2.0')
+libraries['gio'].ParseConfig('pkg-config --cflags --libs gio-unix-2.0')
+
 libraries['freetype2'] = LibraryInfo()
 libraries['freetype2'].ParseConfig ('pkg-config --cflags --libs freetype2')
 
@@ -651,10 +637,11 @@ libraries['ardour_cp'] = LibraryInfo (LIBS='ardour_cp', LIBPATH='#libs/surfaces/
 
 # The Ardour backend/engine
 
-libraries['ardour'] = LibraryInfo (LIBS='ardour', LIBPATH='#libs/ardour', CPPPATH='#libs/ardour')
-libraries['midi++2'] = LibraryInfo (LIBS='midi++', LIBPATH='#libs/midi++2', CPPPATH='#libs/midi++2')
-libraries['evoral'] = LibraryInfo (LIBS='evoral', LIBPATH='#libs/evoral', CPPPATH='#libs/evoral')
-libraries['pbd']    = LibraryInfo (LIBS='pbd', LIBPATH='#libs/pbd', CPPPATH='#libs/pbd')
+libraries['ardour']    = LibraryInfo (LIBS='ardour', LIBPATH='#libs/ardour', CPPPATH='#libs/ardour')
+libraries['midi++2']   = LibraryInfo (LIBS='midi++', LIBPATH='#libs/midi++2', CPPPATH='#libs/midi++2')
+libraries['smf']       = LibraryInfo (LIBS='smf', LIBPATH='#libs/evoral/src/libsmf', CPPPATH='#libs/evoral/src/libsmf/')
+libraries['evoral']    = LibraryInfo (LIBS='evoral', LIBPATH='#libs/evoral', CPPPATH='#libs/evoral')
+libraries['pbd']       = LibraryInfo (LIBS='pbd', LIBPATH='#libs/pbd', CPPPATH='#libs/pbd')
 libraries['gtkmm2ext'] = LibraryInfo (LIBS='gtkmm2ext', LIBPATH='#libs/gtkmm2ext', CPPPATH='#libs/gtkmm2ext')
 
 
@@ -678,9 +665,9 @@ env = conf.Finish()
 
 opt_flags = []
 if env['GPROFILE'] == 1:
-    debug_flags = [ '-g', '-pg' ]
+    debug_flags = [ '-O0', '-g', '-pg' ]
 else:
-    debug_flags = [ '-g' ]
+    debug_flags = [ '-O0', '-g' ]
 
 # guess at the platform, used to define compiler flags
 
@@ -796,6 +783,17 @@ if env['DIST_TARGET'] == 'x86_64':
 else:
     env['LIBDIR']='lib'
 
+#
+# no VST on x86_64
+#
+
+if env['DIST_TARGET'] == 'x86_64' and env['VST']:
+    print "\n\n=================================================="
+    print "You cannot use VST plugins with a 64 bit host. Please run scons with VST=0"
+    print "\nIt is theoretically possible to build a 32 bit host on a 64 bit system."
+    print "However, this is tricky and not recommended for beginners."
+    sys.exit (-1)
+
 #
 # a single way to test if we're on OS X
 #
@@ -867,10 +865,6 @@ if env['EXTRA_WARN']:
     env.Append(CXXFLAGS="-ansi")
 #    env.Append(CFLAGS="-iso")
 
-if env['LIBLO']:
-    env.Append(CCFLAGS="-DHAVE_LIBLO")
-
-
 #
 # fix scons nitpickiness on APPLE
 #
@@ -998,16 +992,17 @@ libraries['boost'] = conf.Finish ()
 #
 # Check for liblo
 
-if env['LIBLO']:
-    libraries['lo'] = LibraryInfo ()
-    prep_libcheck(env, libraries['lo'])
+libraries['lo'] = LibraryInfo ()
+prep_libcheck(env, libraries['lo'])
 
-    conf = Configure (libraries['lo'])
-    if conf.CheckLib ('lo', 'lo_server_new') == False:
-        print "liblo does not appear to be installed."
-        sys.exit (1)
-    
-    libraries['lo'] = conf.Finish ()
+conf = Configure (libraries['lo'])
+if conf.CheckLib ('lo', 'lo_server_new') == False:
+    print "liblo does not appear to be installed."
+    env['HAVE_LIBLO'] = False
+else:
+    env['HAVE_LIBLO'] = True
+
+libraries['lo'] = conf.Finish ()
 
 #
 # Check for dmalloc
@@ -1057,16 +1052,18 @@ conf = Configure(env)
 libraries['asound'] = LibraryInfo ()
 
 if conf.CheckCHeader('alsa/asoundlib.h'):
-    libraries['asound'] = LibraryInfo (LIBS='asound')
+    libraries['asound'].ParseConfig('pkg-config --cflags --libs alsa')
 
 if conf.CheckCHeader('jack/midiport.h'):
     libraries['sysmidi'] = LibraryInfo (LIBS='jack')
     env['SYSMIDI'] = 'JACK MIDI'
     subst_dict['%MIDITAG%'] = "control"
     subst_dict['%MIDITYPE%'] = "jack"
+    env.Append(CCFLAGS=" -DWITH_JACK_MIDI")
     print "Using JACK MIDI"
 elif conf.CheckCHeader('alsa/asoundlib.h'):
-    libraries['sysmidi'] = LibraryInfo (LIBS='asound')
+    libraries['sysmidi'] = LibraryInfo ()
+    libraries['sysmidi'].ParseConfig('pkg-config --cflags --libs alsa')
     env['SYSMIDI'] = 'ALSA Sequencer'
     subst_dict['%MIDITAG%'] = "seq"
     subst_dict['%MIDITYPE%'] = "alsa/sequencer"
@@ -1118,6 +1115,8 @@ if env['SYSLIBS']:
     libraries['sigc2'].ParseConfig('pkg-config --cflags --libs sigc++-2.0')
     libraries['glibmm2'] = LibraryInfo()
     libraries['glibmm2'].ParseConfig('pkg-config --cflags --libs glibmm-2.4')
+    libraries['giomm'] = LibraryInfo()
+    libraries['giomm'].ParseConfig('pkg-config --cflags --libs giomm-2.4')
     libraries['cairo'] = LibraryInfo()
     libraries['cairo'].ParseConfig('pkg-config --cflags --libs cairo')
     libraries['cairomm'] = LibraryInfo()
@@ -1159,6 +1158,7 @@ if env['SYSLIBS']:
     subdirs = [
         'libs/pbd',
         'libs/midi++2',
+        'libs/evoral/src/libsmf',
         'libs/evoral',
         'libs/ardour',
         'libs/vamp-sdk',
@@ -1194,6 +1194,9 @@ else:
     libraries['glibmm2'] = LibraryInfo(LIBS='glibmm2',
                                     LIBPATH='#libs/glibmm2',
                                     CPPPATH='#libs/glibmm2/glib')
+    libraries['giomm'] = LibraryInfo(LIBS='giomm',
+                                    LIBPATH='#libs/glibmm2',
+                                    CPPPATH='#libs/glibmm2/gio')
     libraries['pangomm'] = LibraryInfo(LIBS='pangomm',
                                     LIBPATH='#libs/gtkmm2/pango',
                                     CPPPATH='#libs/gtkmm2/pango')
@@ -1221,7 +1224,7 @@ else:
                                           CPPPATH=['#libs', '#libs/soundtouch'])
     libraries['taglib'] = LibraryInfo(LIBS='libtaglib',
                                       LIBPATH='#libs/taglib',
-                                      CPPPATH=['#libs/taglib/headers','#libs/taglib/headers/taglib'])
+                                      CPPPATH=['#libs/taglib', '#libs/taglib/taglib'])
 #    libraries['libglademm'] = LibraryInfo(LIBS='libglademm',
 #                                          LIBPATH='#libs/libglademm',
 #                                          CPPPATH='#libs/libglademm')
@@ -1239,6 +1242,7 @@ else:
         'libs/taglib',
         'libs/pbd',
         'libs/midi++2',
+        'libs/evoral/src/libsmf',
         'libs/evoral',
         'libs/ardour',
         'libs/vamp-sdk',
@@ -1269,7 +1273,7 @@ else:
 
 #
 # * always build the LGPL control protocol lib, since we link against it from libardour
-# * ditto for generic MIDI
+# * ditto for generic MIDI and OSC
 # * tranzport & wiimote check whether they should build internally, but we need them here
 #   so that they are included in the tarball
 #
@@ -1279,7 +1283,8 @@ surface_subdirs = [ 'libs/surfaces/control_protocol',
                     'libs/surfaces/tranzport',
                     'libs/surfaces/mackie',
                     'libs/surfaces/powermate',
-                   'libs/surfaces/wiimote'
+                   'libs/surfaces/wiimote',
+                   'libs/surfaces/osc'
                     ]
 
 if env['SURFACES']:
@@ -1483,12 +1488,12 @@ create_stored_revision()
 # the subdirs
 #
 
-for subdir in coredirs:
-    SConscript (subdir + '/SConscript')
+#for subdir in coredirs:
+#    SConscript (subdir + '/SConscript')
 
-for sublistdir in [ subdirs, timefx_subdirs, gtk_subdirs, surface_subdirs ]:
-    for subdir in sublistdir:
-        SConscript (subdir + '/SConscript')
+#for sublistdir in [ subdirs, timefx_subdirs, gtk_subdirs, surface_subdirs ]:
+#    for subdir in sublistdir:
+#        SConscript (subdir + '/SConscript')
 
 # cleanup
 env.Clean ('scrub', [ 'scache.conf', '.sconf_temp', '.sconsign.dblite', 'config.log'])