Fix region name fit into the visible region in special cases like newly
[ardour.git] / SConstruct
index 9ab5434314bb1dfedd0eb96ba92663f38518e9de..6f4f1bdde14ecdc9e884f34929b63d4ccd33ea68 100644 (file)
@@ -9,13 +9,14 @@ import errno
 import time
 import platform
 import string
+import commands
 from sets import Set
 import SCons.Node.FS
 
 SConsignFile()
 EnsureSConsVersion(0, 96)
 
-version = '2.0beta5'
+version = '2.0beta7.1'
 
 subst_dict = { }
 
@@ -40,7 +41,7 @@ opts.AddOptions(
     PathOption('PREFIX', 'Set the install "prefix"', '/usr/local'),
     BoolOption('SURFACES', 'Build support for control surfaces', 0),
     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('VERSIONED', 'Add version information to ardour/gtk executable name inside the build directory', 0),
+    BoolOption('VERSIONED', 'Add revision information to ardour/gtk executable name inside the build directory', 0),
     BoolOption('VST', 'Compile with support for VST', 0)
 )
 
@@ -236,35 +237,44 @@ def i18n (buildenv, sources, installenv):
 # note: requires that DOMAIN, MAJOR, MINOR, MICRO are set in the construction environment
 # note: assumes one source files, the header that declares the version variables
 #
+
 def version_builder (target, source, env):
-   text  = "int " + env['DOMAIN'] + "_major_version = " + str (env['MAJOR']) + ";\n"
-   text += "int " + env['DOMAIN'] + "_minor_version = " + str (env['MINOR']) + ";\n"
-   text += "int " + env['DOMAIN'] + "_micro_version = " + str (env['MICRO']) + ";\n"
-   
-   try:
-      o = file (target[0].get_path(), 'w')
-      o.write (text)
-      o.close ()
-   except IOError:
-      print "Could not open", target[0].get_path(), " for writing\n"
-      sys.exit (-1)
-   
-   text  = "#ifndef __" + env['DOMAIN'] + "_version_h__\n"
-   text += "#define __" + env['DOMAIN'] + "_version_h__\n"
-   text += "extern int " + env['DOMAIN'] + "_major_version;\n"
-   text += "extern int " + env['DOMAIN'] + "_minor_version;\n"
-   text += "extern int " + env['DOMAIN'] + "_micro_version;\n"
-   text += "#endif /* __" + env['DOMAIN'] + "_version_h__ */\n"
-   
-   try:
-      o = file (target[1].get_path(), 'w')
-      o.write (text)
-      o.close ();
-   except IOError:
-      print "Could not open", target[1].get_path(), " for writing\n"
-      sys.exit (-1)
-   
-   return None
+    cmd = "svn info "
+    cmd += source[0].get_path()
+    cmd += " | awk '/^Revision:/ { print $2}'"
+    
+    rev = commands.getoutput (cmd)
+        
+    text  = "const char* " + env['DOMAIN'] + "_revision = \"" + rev + "\";\n"
+    text += "int " + env['DOMAIN'] + "_major_version = " + str (env['MAJOR']) + ";\n"
+    text += "int " + env['DOMAIN'] + "_minor_version = " + str (env['MINOR']) + ";\n"
+    text += "int " + env['DOMAIN'] + "_micro_version = " + str (env['MICRO']) + ";\n"
+    
+    try:
+        o = file (target[0].get_path(), 'w')
+        o.write (text)
+        o.close ()
+    except IOError:
+        print "Could not open", target[0].get_path(), " for writing\n"
+        sys.exit (-1)
+
+    text  = "#ifndef __" + env['DOMAIN'] + "_version_h__\n"
+    text += "#define __" + env['DOMAIN'] + "_version_h__\n"
+    text += "extern const char* " + env['DOMAIN'] + "_revision;\n"
+    text += "extern int " + env['DOMAIN'] + "_major_version;\n"
+    text += "extern int " + env['DOMAIN'] + "_minor_version;\n"
+    text += "extern int " + env['DOMAIN'] + "_micro_version;\n"
+    text += "#endif /* __" + env['DOMAIN'] + "_version_h__ */\n"
+    
+    try:
+        o = file (target[1].get_path(), 'w')
+        o.write (text)
+        o.close ();
+    except IOError:
+        print "Could not open", target[1].get_path(), " for writing\n"
+        sys.exit (-1)
+        
+    return None
 
 version_bld = Builder (action = version_builder)
 env.Append (BUILDERS = {'VersionBuild' : version_bld})
@@ -278,32 +288,18 @@ env.Append (BUILDERS = {'VersionBuild' : version_bld})
 #
 
 def versioned_builder(target,source,env):
-    # build ID is composed of a representation of the date of the last CVS transaction
-    # for this (SConscript) file
-    
-    try:
-        o = file (source[0].get_dir().get_path() +  '/CVS/Entries', "r")
-    except IOError:
-        print "Could not CVS/Entries for reading"
-        return -1
+    w, r = os.popen2( "svn info | awk '/^Revision:/ { print $2}'")
     
-    last_date = ""
-    lines = o.readlines()
-    for line in lines:
-        if line[0:12] == '/SConscript/':
-            parts = line.split ("/")
-            last_date = parts[3]
-            break
-    o.close ()
-    
-    if last_date == "":
-        print "No SConscript CVS update info found - versioned executable cannot be built"
+    last_revision = r.readline().strip()
+    w.close()
+    r.close()
+    if last_revision == "":
+        print "No SVN info found - versioned executable cannot be built"
         return -1
     
-    tag = time.strftime ('%Y%M%d%H%m', time.strptime (last_date))
-    print "The current build ID is " + tag
+    print "The current build ID is " + last_revision
     
-    tagged_executable = source[0].get_path() + '-' + tag
+    tagged_executable = source[0].get_path() + '-' + last_revision
     
     if os.path.exists (tagged_executable):
         print "Replacing existing executable with the same build tag."
@@ -462,7 +458,7 @@ libraries['flac'] = conf.Finish ()
 
 libraries['boost'] = LibraryInfo ()
 conf = Configure (libraries['boost'])
-if conf.CheckHeader ('boost/shared_ptr.hpp', language='CXX') == 0:
+if conf.CheckHeader ('boost/shared_ptr.hpp', language='CXX') == False:
         print "Boost header files do not appear to be installed."
         sys.exit (1)
     
@@ -516,7 +512,7 @@ elif conf.CheckCHeader('/System/Library/Frameworks/CoreMIDI.framework/Headers/Co
     subst_dict['%MIDITAG%'] = "ardour"
     subst_dict['%MIDITYPE%'] = "coremidi"
 else:
-    print "It appears you don't have the required MIDI libraries installed."
+    print "It appears you don't have the required MIDI libraries installed. For Linux this means you are missing the development package for ALSA libraries."
     sys.exit (1)
 
 env = conf.Finish()
@@ -542,7 +538,7 @@ if env['SYSLIBS']:
 # cannot use system one for the time being
 #
     
-    libraries['sndfile'] = LibraryInfo(LIBS='libsndfile',
+    libraries['sndfile-ardour'] = LibraryInfo(LIBS='libsndfile-ardour',
                                     LIBPATH='#libs/libsndfile',
                                     CPPPATH=['#libs/libsndfile', '#libs/libsndfile/src'])
 
@@ -609,7 +605,7 @@ else:
     libraries['soundtouch'] = LibraryInfo(LIBS='soundtouch',
                                           LIBPATH='#libs/soundtouch',
                                           CPPPATH=['#libs', '#libs/soundtouch'])
-    libraries['sndfile'] = LibraryInfo(LIBS='libsndfile',
+    libraries['sndfile-ardour'] = LibraryInfo(LIBS='libsndfile-ardour',
                                     LIBPATH='#libs/libsndfile',
                                     CPPPATH=['#libs/libsndfile', '#libs/libsndfile/src'])
 #    libraries['libglademm'] = LibraryInfo(LIBS='libglademm',
@@ -707,10 +703,10 @@ config_prefix = '$DESTDIR' + final_config_prefix
 
 conf = Configure (env)
 
-have_cxx = conf.TryAction (Action (env['CXX'] + ' --version'))
+have_cxx = conf.TryAction (Action (str(env['CXX']) + ' --version'))
 if have_cxx[0] != 1:
     print "This system has no functional C++ compiler. You cannot build Ardour from source without one."
-    exit (1)
+    sys.exit (1)
 else:
     print "Congratulations, you have a functioning C++ compiler."