v3: use new scons convention for pushing environment vars into construction env object
[ardour.git] / SConstruct
index 6e54676390fa619770b178a1c58b564afb99b25b..a26d583dbabf438b26d3ce47125ca87f9a59abf8 100644 (file)
@@ -21,7 +21,7 @@ import SCons.Node.FS
 SConsignFile()
 EnsureSConsVersion(0, 96)
 
-ardour_version = '2.7'
+ardour_version = '2.7.1'
 
 subst_dict = { }
 
@@ -32,7 +32,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),
@@ -59,8 +59,8 @@ opts.AddOptions(
     BoolOption('GPROFILE', 'Compile with support for gprofile (Developers only)', 0),
     BoolOption('FREEDESKTOP', 'Install MIME type, icons and .desktop file as per the freedesktop.org spec (requires xdg-utils and shared-mime-info). "scons uninstall" removes associations in desktop database', 0),
     BoolOption('TRANZPORT', 'Compile with support for Frontier Designs (if libusb is available)', 1),
-    BoolOption('AUBIO', "Use Paul Brossier's aubio library for feature detection (if available)", 1)
-    
+    BoolOption('AUBIO', "Use Paul Brossier's aubio library for feature detection (if available)", 1),
+    BoolOption('AUSTATE', "Build with support for AU settings & presets saving/loading", 0)
 )
 
 #----------------------------------------------------------------------
@@ -394,28 +394,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
 ####################
@@ -423,9 +401,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']
@@ -579,10 +559,7 @@ if env['LV2']:
 else:
        print 'LV2 support is not enabled.  Build with \'scons LV2=1\' to enable.'
 
-if env['WIIMOTE']:
-       wiimote_surface = [ 'libs/surfaces/wiimote' ]
-else:
-       wiimote_surface = [ ]
+if not env['WIIMOTE']:
        print 'WIIMOTE not enabled. Build with \'scons WIIMOTE=1\' to enable support.'
 
 libraries['jack'] = LibraryInfo()
@@ -709,7 +686,12 @@ elif ((re.search ("i[0-9]86", config[config_cpu]) != None) or (re.search ("x86_6
     
     build_host_supports_sse = 0
     
-    if (re.search ("i[0-9]86", config[config_cpu]) != None):
+    #
+    # ARCH_X86 means anything in the x86 family from i386 to x86_64
+    # USE_X86_64_ASM is used to distingush 32 and 64 bit assembler
+    #
+
+    if (re.search ("(i[0-9]86|x86_64)", config[config_cpu]) != None):
         debug_flags.append ("-DARCH_X86")
         opt_flags.append ("-DARCH_X86")
     
@@ -735,6 +717,14 @@ elif ((re.search ("i[0-9]86", config[config_cpu]) != None) or (re.search ("x86_6
     if ((env['DIST_TARGET'] == 'i686') or (env['DIST_TARGET'] == 'x86_64')) and build_host_supports_sse:
         opt_flags.extend (["-msse", "-mfpmath=sse", "-DUSE_XMMINTRIN"])
         debug_flags.extend (["-msse", "-mfpmath=sse", "-DUSE_XMMINTRIN"])
+
+    if (env['VST']):
+        #
+        # everything must be 32 bit for VST (we're not replicating Cakewalk's hack, yet ...)
+        # 
+        opt_flags.extend(["-m32"])
+        debug_flags.extend(["-m32"])
+
 # end of processor-specific section
 
 # optimization section
@@ -746,7 +736,7 @@ if env['FPU_OPTIMIZATION']:
     elif env['DIST_TARGET'] == 'i686' or env['DIST_TARGET'] == 'x86_64':
         opt_flags.append ("-DBUILD_SSE_OPTIMIZATIONS")
         debug_flags.append ("-DBUILD_SSE_OPTIMIZATIONS")
-        if env['DIST_TARGET'] == 'x86_64':
+        if env['DIST_TARGET'] == 'x86_64' and not env['VST']:
             opt_flags.append ("-DUSE_X86_64_ASM")
             debug_flags.append ("-DUSE_X86_64_ASM")
         if build_host_supports_sse != 1:
@@ -843,16 +833,13 @@ if env['LIBLO']:
 def prep_libcheck(topenv, libinfo):
     if topenv['IS_OSX']:
        #
-       # rationale: GTK-Quartz uses jhbuild and installs to /opt/gtk by default.
-       #            All libraries needed should be built against this location
-       # However.. now jhbuild installs to ~/gtk/inst by default.. changed to accomodate this
+       # rationale: GTK-Quartz uses jhbuild and installs to ~/gtk/inst by default.
+       # All libraries needed should be built against this location
        if topenv['GTKOSX']:
-               GTKROOT = os.path.expanduser ('~/gtk/inst')
-               libinfo.Append(CPPPATH= GTKROOT + "/include", LIBPATH= GTKROOT + "/lib")
-               libinfo.Append(CXXFLAGS="-I" + GTKROOT + "/include", LINKFLAGS="-L" + GTKROOT + "/lib")
-       #libinfo.Append(CPPPATH="/opt/local/include", LIBPATH="/opt/local/lib")
-       #libinfo.Append(CXXFLAGS="-I/opt/local/include", LINKFLAGS="-L/opt/local/lib")
-
+            GTKROOT = os.path.expanduser ('~/gtk/inst')
+            libinfo.Append(CPPPATH= GTKROOT + "/include", LIBPATH= GTKROOT + "/lib")
+            libinfo.Append(CXXFLAGS="-I" + GTKROOT + "/include", LINKFLAGS="-L" + GTKROOT + "/lib")
+           
 prep_libcheck(env, env)
 
 
@@ -1041,6 +1028,11 @@ else:
 
 env = conf.Finish()
 
+if env['GTKOSX']:
+    clearlooks_version = 'libs/clearlooks-newer'
+else:
+    clearlooks_version = 'libs/clearlooks-older'
+
 if env['SYSLIBS']:
 
     syslibdeps = \
@@ -1126,7 +1118,7 @@ if env['SYSLIBS']:
 #        'libs/flowcanvas',
         'libs/gtkmm2ext',
         'gtk2_ardour',
-        'libs/clearlooks'
+        clearlooks_version
         ]
 
 else:
@@ -1201,23 +1193,23 @@ else:
         'libs/libgnomecanvasmm',
         'libs/gtkmm2ext',
         'gtk2_ardour',
-        'libs/clearlooks'
+        clearlooks_version
         ]
 
 #
 # * always build the LGPL control protocol lib, since we link against it from libardour
 # * ditto for generic MIDI
-# * tranzport checks whether it should build internally, but we need here so that
-#   its included in the tarball
+# * tranzport & wiimote check whether they should build internally, but we need them here
+#   so that they are included in the tarball
 #
 
 surface_subdirs = [ 'libs/surfaces/control_protocol',
                     'libs/surfaces/generic_midi',
                     'libs/surfaces/tranzport',
                     'libs/surfaces/mackie',
-                    'libs/surfaces/powermate'
+                    'libs/surfaces/powermate',
+                   'libs/surfaces/wiimote'
                     ]
-surface_subdirs += wiimote_surface
 
 if env['SURFACES']:
     if have_libusb:
@@ -1394,12 +1386,10 @@ env.Distribute (env['DISTTREE'],
                   'icons/icon/ardour_icon_tango_48px_blue.png',
                   'icons/icon/ardour_icon_tango_48px_red.png'
                   ] +
-                glob.glob ('DOCUMENTATION/AUTHORS*') +
-                glob.glob ('DOCUMENTATION/CONTRIBUTORS*') +
-                glob.glob ('DOCUMENTATION/TRANSLATORS*') +
-                glob.glob ('DOCUMENTATION/BUILD*') +
-                glob.glob ('DOCUMENTATION/FAQ*') +
-                glob.glob ('DOCUMENTATION/README*')
+                glob.glob ('ardour.1*') +
+                glob.glob ('libs/clearlooks-newer/*.c') +
+                glob.glob ('libs/clearlooks-newer/*.h') +
+                glob.glob ('libs/clearlooks-newer/SConscript')
                 )
 
 srcdist = env.Tarball(env['TARBALL'], [ env['DISTTREE'], the_revision ])