removed redundant creation of a system rc file
[ardour.git] / SConstruct
index f129793dd6299cac1eacf85ac7e4d9a86ecd39c6..4dc0c8274beae7a24ee00391f05130d7c1745420 100644 (file)
@@ -16,7 +16,7 @@ import SCons.Node.FS
 SConsignFile()
 EnsureSConsVersion(0, 96)
 
-ardour_version = '2.0beta10'
+ardour_version = '2.1pre'
 
 subst_dict = { }
 
@@ -29,7 +29,7 @@ opts.AddOptions(
     ('ARCH', 'Set architecture-specific compilation flags by hand (all flags as 1 argument)',''),
     BoolOption('AUDIOUNITS', 'Compile with Apple\'s AudioUnit library. (experimental)', 0),
     BoolOption('COREAUDIO', 'Compile with Apple\'s CoreAudio library', 0),
-    BoolOption('DEBUG', 'Set to build with debugging information and no optimizations', 0),
+    BoolOption('DEBUG', 'Set to build with debugging information and no optimizations', 1),
     PathOption('DESTDIR', 'Set the intermediate install "prefix"', '/'),
     EnumOption('DIST_TARGET', 'Build target for cross compiling packagers', 'auto', allowed_values=('auto', 'i386', 'i686', 'x86_64', 'powerpc', 'tiger', 'panther', 'none' ), ignorecase=2),
     BoolOption('DMALLOC', 'Compile and link using the dmalloc library', 0),
@@ -41,9 +41,12 @@ opts.AddOptions(
     PathOption('PREFIX', 'Set the install "prefix"', '/usr/local'),
     BoolOption('SURFACES', 'Build support for control surfaces', 1),
     BoolOption('SYSLIBS', 'USE AT YOUR OWN RISK: CANCELS ALL SUPPORT FROM ARDOUR AUTHORS: Use existing system versions of various libraries instead of internal ones', 0),
+    BoolOption('UNIVERSAL', 'Compile as universal binary.  Requires that external libraries are already universal.', 0),
     BoolOption('VERSIONED', 'Add revision information to ardour/gtk executable name inside the build directory', 0),
     BoolOption('VST', 'Compile with support for VST', 0),
-    BoolOption('TRANZPORT', 'Compile with support for Frontier Designs (if libusb is available)', 0)
+    BoolOption('GPROFILE', 'Compile with support for gprofile (Developers only)', 0),
+    BoolOption('TRANZPORT', 'Compile with support for Frontier Designs (if libusb is available)', 1),
+    BoolOption('CMT', 'Compile with support for CMT Additions', 1)
 )
 
 #----------------------------------------------------------------------
@@ -311,7 +314,7 @@ env.Append (BUILDERS = {'VersionBuild' : version_bld})
 #
 
 def versioned_builder(target,source,env):
-    w, r = os.popen2( "svn info | awk '/^Revision:/ { print $2}'")
+    w, r = os.popen2( "LANG= svn info | awk '/^Revision:/ { print $2}'")
     
     last_revision = r.readline().strip()
     w.close()
@@ -380,14 +383,22 @@ env.Append (BUILDERS = {'Tarball' : tarball_bld})
 #
 
 if env['VST']:
-    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" and answer != "y":
-        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);
+    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:
-        print "OK, VST support will be enabled"
+        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')
 
 
 #######################
@@ -403,7 +414,7 @@ deps = \
        'samplerate'           : '0.1.0',
        'raptor'               : '1.4.2',
        'lrdf'                 : '0.4.0',
-       'jack'                 : '0.101.1',
+       'jack'                 : '0.105.0',
        'libgnomecanvas-2.0'   : '2.0'
 }
 
@@ -530,7 +541,10 @@ env = conf.Finish()
 #
 
 opt_flags = []
-debug_flags = [ '-g' ]
+if env['GPROFILE'] == 1:
+    debug_flags = [ '-g', '-pg' ]
+else:
+    debug_flags = [ '-g' ]
 
 # guess at the platform, used to define compiler flags
 
@@ -596,7 +610,7 @@ elif ((re.search ("i[0-9]86", config[config_cpu]) != None) or (re.search ("x86_6
         if env['DIST_TARGET'] != 'i386':
             
             flag_line = os.popen ("cat /proc/cpuinfo | grep '^flags'").read()[:-1]
-            x86_flags = flag_line.split (": ")[1:][0].split (' ')
+            x86_flags = flag_line.split (": ")[1:][0].split ()
             
             if "mmx" in x86_flags:
                 opt_flags.append ("-mmmx")
@@ -611,8 +625,8 @@ elif ((re.search ("i[0-9]86", config[config_cpu]) != None) or (re.search ("x86_6
                 opt_flags.append ("-march=i686")
     
     if ((env['DIST_TARGET'] == 'i686') or (env['DIST_TARGET'] == 'x86_64')) and build_host_supports_sse:
-        opt_flags.extend (["-msse", "-mfpmath=sse"])
-        debug_flags.extend (["-msse", "-mfpmath=sse"])
+        opt_flags.extend (["-msse", "-mfpmath=sse", "-DUSE_XMMINTRIN"])
+        debug_flags.extend (["-msse", "-mfpmath=sse", "-DUSE_XMMINTRIN"])
 # end of processor-specific section
 
 # optimization section
@@ -659,13 +673,20 @@ opt_flags[:0] = [
     "-O3",
     "-fomit-frame-pointer",
     "-ffast-math",
-    "-fstrength-reduce"
+    "-fstrength-reduce",
+    "-pipe"
     ]
 
 if env['DEBUG'] == 1:
     env.Append(CCFLAGS=" ".join (debug_flags))
+    env.Append(LINKFLAGS=" ".join (debug_flags))
 else:
     env.Append(CCFLAGS=" ".join (opt_flags))
+    env.Append(LINKFLAGS=" ".join (opt_flags))
+
+if env['UNIVERSAL'] == 1:
+    env.Append(CCFLAGS="-arch i386 -arch ppc")
+    env.Append(LINKFLAGS="-arch i386 -arch ppc")
 
 #
 # warnings flags
@@ -675,8 +696,9 @@ env.Append(CCFLAGS="-Wall")
 env.Append(CXXFLAGS="-Woverloaded-virtual")
 
 if env['EXTRA_WARN']:
-    env.Append(CCFLAGS="-Wextra -pedantic")
+    env.Append(CCFLAGS="-Wextra -pedantic -ansi")
     env.Append(CXXFLAGS="-ansi")
+#    env.Append(CFLAGS="-iso")
 
 if env['LIBLO']:
     env.Append(CCFLAGS="-DHAVE_LIBLO")
@@ -714,10 +736,19 @@ libraries['flac'] = LibraryInfo ()
 prep_libcheck(env, libraries['flac'])
 libraries['flac'].Append(CCFLAGS="-I/usr/local/include", LINKFLAGS="-L/usr/local/lib")
 
+#
+# june 1st 2007: look for a function that is in FLAC 1.1.2 and not in later versions
+#                since the version of libsndfile we have internally does not support
+#                the new API that libFLAC has adopted
+#
+
 conf = Configure (libraries['flac'])
-conf.CheckLib ('FLAC', 'FLAC__stream_decoder_new', language='CXX')
+if conf.CheckLib ('FLAC', 'FLAC__seekable_stream_decoder_init', language='CXX'):
+    conf.env.Append(CCFLAGS='-DHAVE_FLAC')
+    use_flac = True
+else:
+    use_flac = False
 libraries['flac'] = conf.Finish ()
-
 # or if that fails...
 #libraries['flac']    = LibraryInfo (LIBS='FLAC')
 
@@ -819,6 +850,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['cairomm'] = LibraryInfo()
+    libraries['cairomm'].ParseConfig('pkg-config --cflags --libs cairomm-1.0')
     libraries['gdkmm2'] = LibraryInfo()
     libraries['gdkmm2'].ParseConfig ('pkg-config --cflags --libs gdkmm-2.4')
     libraries['gtkmm2'] = LibraryInfo()
@@ -836,7 +869,7 @@ if env['SYSLIBS']:
     
     libraries['sndfile-ardour'] = LibraryInfo(LIBS='libsndfile-ardour',
                                     LIBPATH='#libs/libsndfile',
-                                    CPPPATH=['#libs/libsndfile', '#libs/libsndfile/src'])
+                                    CPPPATH=['#libs/libsndfile/src'])
 
 #    libraries['libglademm'] = LibraryInfo()
 #    libraries['libglademm'].ParseConfig ('pkg-config --cflags --libs libglademm-2.4')
@@ -845,7 +878,7 @@ if env['SYSLIBS']:
     libraries['soundtouch'] = LibraryInfo()
     libraries['soundtouch'].ParseConfig ('pkg-config --cflags --libs libSoundTouch')
     # Comment the previous line and uncomment this for Debian:
-       #libraries['soundtouch'].ParseConfig ('pkg-config --cflags --libs libSoundTouch')
+    #libraries['soundtouch'].ParseConfig ('pkg-config --cflags --libs libSoundTouch')
 
     libraries['appleutility'] = LibraryInfo(LIBS='libappleutility',
                                             LIBPATH='#libs/appleutility',
@@ -956,11 +989,14 @@ else:
 #   its included in the tarball
 #
 
-surface_subdirs = [ 'libs/surfaces/control_protocol', 'libs/surfaces/generic_midi', 'libs/surfaces/tranzport' ]
+surface_subdirs = [ 'libs/surfaces/control_protocol', 'libs/surfaces/generic_midi', 'libs/surfaces/tranzport', 'libs/surfaces/mackie' ]
 
 if env['SURFACES']:
     if have_libusb:
-        env['TRANZPORT'] = 'yes'
+        env['TRANZPORT'] = 1
+    else:
+        env['TRANZPORT'] = 0
+        print 'Disabled building Tranzport code because libusb could not be found'
     if os.access ('libs/surfaces/sony9pin', os.F_OK):
         surface_subdirs += [ 'libs/surfaces/sony9pin' ]
 
@@ -1051,7 +1087,7 @@ env = conf.Finish()
 if env['NLS'] == 1:
     env.Append(CCFLAGS="-DENABLE_NLS")
 
-Export('env install_prefix final_prefix config_prefix final_config_prefix libraries i18n ardour_version subst_dict')
+Export('env install_prefix final_prefix config_prefix final_config_prefix libraries i18n ardour_version subst_dict use_flac')
 
 #
 # the configuration file may be system dependent
@@ -1063,8 +1099,8 @@ if conf.CheckCHeader('/System/Library/Frameworks/CoreAudio.framework/Versions/A/
     subst_dict['%JACK_INPUT%'] = "coreaudio:Built-in Audio:in"
     subst_dict['%JACK_OUTPUT%'] = "coreaudio:Built-in Audio:out"
 else:
-    subst_dict['%JACK_INPUT%'] = "alsa_pcm:playback_"
-    subst_dict['%JACK_OUTPUT%'] = "alsa_pcm:capture_"
+    subst_dict['%JACK_INPUT%'] = "system:playback_"
+    subst_dict['%JACK_OUTPUT%'] = "system:capture_"
 
 # posix_memalign available
 if not conf.CheckFunc('posix_memalign'):
@@ -1074,15 +1110,26 @@ if not conf.CheckFunc('posix_memalign'):
 
 env = conf.Finish()
 
-rcbuild = env.SubstInFile ('ardour.rc','ardour.rc.in', SUBST_DICT = subst_dict)
+# generate the per-user and system rc files from the same source
+
+sysrcbuild = env.SubstInFile ('ardour_system.rc','ardour.rc.in', SUBST_DICT = subst_dict)
+
+# add to the substitution dictionary
+
+subst_dict['%VERSION%'] = ardour_version[0:3]
+subst_dict['%EXTRA_VERSION%'] = ardour_version[3:]
+subst_dict['%REVISION_STRING%'] = ''
+if os.path.exists('.svn'):
+    subst_dict['%REVISION_STRING%'] = '.' + fetch_svn_revision ('.') + 'svn'
+
+# specbuild = env.SubstInFile ('ardour.spec','ardour.spec.in', SUBST_DICT = subst_dict)
 
 the_revision = env.Command ('frobnicatory_decoy', [], create_stored_revision)
 
 env.Alias('revision', the_revision)
 env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour_system.rc'))
-env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour.rc'))
 
-Default (rcbuild)
+Default (sysrcbuild)
 
 # source tarball
 
@@ -1092,7 +1139,6 @@ env.Distribute (env['DISTTREE'],
                [ 'SConstruct', 'svn_revision.h',
                   'COPYING', 'PACKAGER_README', 'README',
                   'ardour.rc.in',
-                  'ardour_system.rc',
                   'tools/config.guess',
                   'icons/icon/ardour_icon_mac_mask.png',
                   'icons/icon/ardour_icon_mac.png',