allow linking unbundled versions of some libraries
authorNils Philippsen <nils@tiptoe.de>
Sat, 26 Oct 2013 14:58:14 +0000 (16:58 +0200)
committerNils Philippsen <nils@tiptoe.de>
Mon, 28 Oct 2013 08:06:09 +0000 (09:06 +0100)
(libltc, rubberband, taglib, vamp-sdk)

23 files changed:
gtk2_ardour/editor_timefx.cc
gtk2_ardour/time_fx_dialog.cc
gtk2_ardour/wscript
libs/ardour/ardour/audioanalyser.h
libs/ardour/ardour/audiofile_tagger.h
libs/ardour/ardour/session.h
libs/ardour/ardour/slave.h
libs/ardour/audioanalyser.cc
libs/ardour/audiofile_tagger.cc
libs/ardour/rb_effect.cc
libs/ardour/wscript
libs/libltc/wscript
libs/rubberband/wscript
libs/taglib/wscript
libs/vamp-plugins/AmplitudeFollower.h
libs/vamp-plugins/Onset.h
libs/vamp-plugins/OnsetDetect.h
libs/vamp-plugins/PercussionOnsetDetector.h
libs/vamp-plugins/SpectralCentroid.h
libs/vamp-plugins/ZeroCrossing.h
libs/vamp-plugins/plugins.cpp
libs/vamp-sdk/wscript
wscript

index 2f0b09ed17a36f4d22b3990c30b6a47f027e1a9c..06823fda19943f7ea15808bf425b39f4d14d2362 100644 (file)
@@ -45,7 +45,7 @@
 #include "ardour/stretch.h"
 
 #ifdef USE_RUBBERBAND
-#include "rubberband/RubberBandStretcher.h"
+#include <rubberband/RubberBandStretcher.h>
 using namespace RubberBand;
 #endif
 
index 15d46f10adc48d6ee35d516da012c708db3d0616..5d8bf57a3b296448052e071b8694c0f5a65f0163 100644 (file)
@@ -37,7 +37,7 @@
 #include "region_selection.h"
 
 #ifdef USE_RUBBERBAND
-#include "rubberband/RubberBandStretcher.h"
+#include <rubberband/RubberBandStretcher.h>
 using namespace RubberBand;
 #endif
 
index ddafbb9e3a4fdd0502c388973ab784e1512f8c8f..3ca90744c7c5fb7aa190e515d5dae1a3d0fafa7b 100644 (file)
@@ -417,11 +417,13 @@ def build(bld):
     obj.uselib       += ' AUDIOUNITS OSX GTKOSX LO '
     obj.use          = [ 'libpbd',
                          'libmidipp',
-                         'libtaglib',
                          'ardour',
                          'libardour_cp',
-                         'libgtkmm2ext',
-                         'libtaglib' ]
+                         'libgtkmm2ext']
+    if bld.is_defined('USE_EXTERNAL_LIBS'):
+        obj.uselib += ' TAGLIB'
+    else:
+        obj.use.append('libtaglib')
     if sys.platform == 'darwin':
         obj.use += ' libappleutility'
     obj.defines     = [
index 035390e99f9014cd842caa0cd756105834eaa0e1..f525cbd99f7fa46c4cbca9d6c53d2f152a06ed6c 100644 (file)
@@ -25,7 +25,7 @@
 #include <ostream>
 #include <fstream>
 #include <boost/utility.hpp>
-#include "vamp-sdk/Plugin.h"
+#include <vamp-sdk/Plugin.h>
 #include "ardour/types.h"
 
 namespace ARDOUR {
index 0519e2233c70f5f1dba69b4387d61a2308907410..656626a5f36feaa6657d79942763174a4c1279be 100644 (file)
@@ -23,9 +23,9 @@
 
 #include <string>
 
-#include "taglib/tag.h"
-#include "taglib/taglib.h"
-#include "taglib/xiphcomment.h"
+#include <taglib/tag.h>
+#include <taglib/taglib.h>
+#include <taglib/xiphcomment.h>
 
 namespace ARDOUR
 {
index 75a5dce8ef101d2c62b12ea2f3f952c98848e767..02e883ed11d7c3f4e53cd561d5b27c600c06dd06 100644 (file)
@@ -36,6 +36,8 @@
 
 #include <glibmm/threads.h>
 
+#include <ltc.h>
+
 #include "pbd/error.h"
 #include "pbd/event_loop.h"
 #include "pbd/rcu.h"
@@ -48,7 +50,6 @@
 #include "midi++/types.h"
 
 #include "timecode/time.h"
-#include "ltc/ltc.h"
 
 #include "ardour/ardour.h"
 #include "ardour/chan_count.h"
index a0b7b878e49f405f312a34771d0c0cd7dbdc2381..ca3f618af1de1ed5363d6f971a12b73cc86a91f5 100644 (file)
 #include <glibmm/threads.h>
 
 #include <jack/jack.h>
+#include <ltc.h>
 
 #include "pbd/signals.h"
 
 #include "timecode/time.h"
-#include "ltc/ltc.h"
 
 #include "ardour/types.h"
 #include "midi++/parser.h"
index cf8329ae9c788cb34f8bf8a5d5f99264a8caeed8..fd30744a7484872ab45db79079369f1d06f05642 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <cstring>
 
-#include "vamp-hostsdk/PluginLoader.h"
+#include <vamp-hostsdk/PluginLoader.h>
 
 #include <glibmm/miscutils.h>
 #include <glibmm/fileutils.h>
index 57650860eeb8b28b8781e32af991564bf62ee3c6..61a05d49ced7d57aa5e3e32e59215e389f483063 100644 (file)
 
 #include "pbd/convert.h"
 
-#include "taglib/fileref.h"
-#include "taglib/flacfile.h"
-#include "taglib/oggfile.h"
-#include "taglib/tag.h"
-#include "taglib/taglib.h"
-#include "taglib/xiphcomment.h"
+#include <taglib/fileref.h>
+#include <taglib/flacfile.h>
+#include <taglib/oggfile.h>
+#include <taglib/tag.h>
+#include <taglib/taglib.h>
+#include <taglib/xiphcomment.h>
 
 /* Convert string to TagLib::String */
 #define TL_STR(string) TagLib::String ((string).c_str(), TagLib::String::UTF8)
index a5d47d2668ab4376afda70ba645cb9c847300df0..804b79f87df9e8a555adcbe56bb0a844279e5f8e 100644 (file)
@@ -20,8 +20,9 @@
 #include <algorithm>
 #include <cmath>
 
+#include <rubberband/RubberBandStretcher.h>
+
 #include "pbd/error.h"
-#include "rubberband/RubberBandStretcher.h"
 
 #include "ardour/audioregion.h"
 #include "ardour/audiosource.h"
index 4d569837bba77d5dc604f6e8c07f01328a34ad70..7975599d89f37900128a5916ef24fe886fa5bb56 100644 (file)
@@ -333,9 +333,14 @@ def build(bld):
     obj.uselib       = ['GLIBMM','GTHREAD','AUBIO','SIGCPP','XML','UUID',
                         'SNDFILE','SAMPLERATE','LRDF','AUDIOUNITS',
                         'OSX','BOOST','CURL','DL']
-    obj.use          = ['libpbd','libmidipp','libevoral','libvamphost',
-                        'libvampplugin','libtaglib','librubberband',
+    obj.use          = ['libpbd','libmidipp','libevoral','libvampplugin',
                         'libaudiographer','libltc','libtimecode']
+    if bld.is_defined('USE_EXTERNAL_LIBS'):
+        obj.uselib.extend(['RUBBERBAND', 'TAGLIB', 'LIBLTC', 'VAMPSDK',
+                           'VAMPHOSTSDK'])
+    else:
+        obj.use.extend(['libltc', 'librubberband', 'libtaglib', 'libvamphost'])
+
     obj.vnum         = LIBARDOUR_LIB_VERSION
     obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
     obj.defines      = [
@@ -400,9 +405,13 @@ def build(bld):
                                    'test/test_common.cc', 'test/dummy_lxvst.cc', 'test/audio_region_test.cc', 'test/test_util.cc']
         testcommon.uselib       = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD',
                                    'SAMPLERATE','XML','LRDF','COREAUDIO']
-        testcommon.use          = ['libpbd','libmidipp','libevoral','libvamphost',
-                                   'libvampplugin','libtaglib','librubberband',
-                                   'libaudiographer','libltc','ardour']
+        testcommon.use          = ['libpbd','libmidipp','libevoral',
+                                   'libvampplugin','libaudiographer','ardour']
+        if bld.is_defined('USE_EXTERNAL_LIBS'):
+            testcommon.uselib.extend(['RUBBERBAND', 'TAGLIB', 'LIBLTC', 'VAMPSDK',
+                                      'VAMPHOSTSDK'])
+        else:
+            testcommon.use.extend(['libltc', 'librubberband', 'libtaglib', 'libvamphost'])
         testcommon.defines      = [
             'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
             'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
@@ -538,9 +547,15 @@ def create_ardour_test_program(bld, includes, name, target, sources):
     testobj.source       = sources
     testobj.uselib       = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD',
                             'SAMPLERATE','XML','LRDF','COREAUDIO']
-    testobj.use          = ['libpbd','libmidipp','libevoral','libvamphost',
-                            'libvampplugin','libtaglib','librubberband',
-                            'libaudiographer','libltc','ardour','testcommon']
+    testobj.use          = ['libpbd','libmidipp','libevoral','libvampplugin',
+                            'libaudiographer','ardour','testcommon']
+    if bld.is_defined('USE_EXTERNAL_LIBS'):
+        testcommon.uselib.extend(['RUBBERBAND', 'TAGLIB', 'LIBLTC', 'VAMPSDK',
+                                  'VAMPHOSTSDK'])
+    else:
+        testcommon.use.extend(['libltc', 'librubberband', 'libtaglib',
+                               'libvamphost'])
+
     testobj.name         = name
     testobj.target       = target
     # not sure about install path
index 9be750ee5558c39f467a28eef8491ad6c96b63f2..88f1c2f570278e5ee0e623e72a611a1619961495 100644 (file)
@@ -29,10 +29,15 @@ def options(opt):
     autowaf.set_options(opt)
 
 def configure(conf):
-    conf.load('compiler_c')
-    autowaf.configure(conf)
+    if conf.is_defined('USE_EXTERNAL_LIBS'):
+        autowaf.check_pkg(conf, 'ltc', uselib_store='LIBLTC', atleast_version=LIBLTC_LIB_VERSION, mandatory=True)
+    else:
+        conf.load('compiler_c')
+        autowaf.configure(conf)
 
 def build(bld):
+    if bld.is_defined('USE_EXTERNAL_LIBS'):
+        return
     obj = bld(features = 'c cshlib')
     obj.source = '''
               ltc.c
@@ -41,7 +46,7 @@ def build(bld):
               decoder.c
     '''
 
-    obj.export_includes = ['.']
+    obj.export_includes = ['./ltc']
     obj.includes     = ['.']
     obj.name         = 'libltc'
     obj.target       = 'ltc'
index 7e9ca0250c3eb69bd08bd2709345187243829c2c..e21492ebf4b45d90c9a36515a1f52f917c7bca84 100644 (file)
@@ -24,10 +24,16 @@ def options(opt):
     autowaf.set_options(opt)
 
 def configure(conf):
-    conf.load('compiler_cxx')
-    autowaf.configure(conf)
+    if conf.is_defined('USE_EXTERNAL_LIBS'):
+        autowaf.check_pkg(conf, 'rubberband', uselib_store='RUBBERBAND', atleast_version='1.0', mandatory=True)
+    else:
+        conf.load('compiler_cxx')
+        autowaf.configure(conf)
 
 def build(bld):
+    if bld.is_defined('USE_EXTERNAL_LIBS'):
+        return
+
     # Library
     obj = bld(features = 'cxx cxxshlib')
     prefix = 'libs/rubberband/'
index a6994d63911f76d46dacb532453573bf1e868579..8e2805c7093b91d42c91d44caec8007db07e4701 100644 (file)
@@ -24,10 +24,16 @@ def options(opt):
     autowaf.set_options(opt)
 
 def configure(conf):
-    conf.load('compiler_cxx')
-    autowaf.configure(conf)
+    if conf.is_defined('USE_EXTERNAL_LIBS'):
+        autowaf.check_pkg(conf, 'taglib', uselib_store='TAGLIB', atleast_version="1.4", mandatory=True)
+    else:
+        conf.load('compiler_cxx')
+        autowaf.configure(conf)
 
 def build(bld):
+    if bld.is_defined('USE_EXTERNAL_LIBS'):
+        return
+
     # Library
     obj = bld(features = 'cxx cxxshlib')
     sources = bld.path.ant_glob('taglib/*.cpp')
index 6c3426e3249200caa13247f7c32ce3588ed3e243..3aa91f51f7c7adf42d0a0b52484640d840a67ee6 100644 (file)
@@ -37,7 +37,7 @@
 #ifndef _AMPLITUDE_FOLLOWER_PLUGIN_H_
 #define _AMPLITUDE_FOLLOWER_PLUGIN_H_
 
-#include "vamp-sdk/Plugin.h"
+#include <vamp-sdk/Plugin.h>
 
 /**
  * Example plugin implementing the SuperCollider amplitude follower
index c858151b213753d0258d263cabc28933132d6095..314e107308ccdc4723e3ccebfbfe1014c2e4be84 100644 (file)
@@ -17,7 +17,7 @@
 #ifndef _ONSET_PLUGIN_H_
 #define _ONSET_PLUGIN_H_
 
-#include "vamp-sdk/Plugin.h"
+#include <vamp-sdk/Plugin.h>
 #include <aubio/aubio.h>
 
 class Onset : public Vamp::Plugin
index 3ef50afbb3b87d354c840fb0e89f2314e1332ea3..d244f66c2d06221902c3612f9ddd24f13c9e817f 100644 (file)
@@ -15,7 +15,7 @@
 #ifndef _ONSET_DETECT_PLUGIN_H_
 #define _ONSET_DETECT_PLUGIN_H_
 
-#include "vamp-sdk/Plugin.h"
+#include <vamp-sdk/Plugin.h>
 
 class OnsetDetectorData;
 
index d54c0cfa1323a82141d0c797971825df80180da6..3cb094ebba0f7bea05192e23d6639a556031a9d3 100644 (file)
@@ -37,7 +37,7 @@
 #ifndef _PERCUSSION_ONSET_DETECTOR_PLUGIN_H_
 #define _PERCUSSION_ONSET_DETECTOR_PLUGIN_H_
 
-#include "vamp-sdk/Plugin.h"
+#include <vamp-sdk/Plugin.h>
 
 /**
  * Example plugin that detects percussive events.
index 02cc8d981df77595d9c5c8d1442f0d07fed3abca..8046338a4d2d4c0b217db2bda9a12b1deadd1db2 100644 (file)
@@ -37,7 +37,7 @@
 #ifndef _SPECTRAL_CENTROID_PLUGIN_H_
 #define _SPECTRAL_CENTROID_PLUGIN_H_
 
-#include "vamp-sdk/Plugin.h"
+#include <vamp-sdk/Plugin.h>
 
 /**
  * Example plugin that calculates the centre of gravity of the
index ede2a74492de474e08e6621c8cb55bd783ab49cb..e6f81608db73e4ed2455b44d3b9a5177a84ef2de 100644 (file)
@@ -37,7 +37,7 @@
 #ifndef _ZERO_CROSSING_PLUGIN_H_
 #define _ZERO_CROSSING_PLUGIN_H_
 
-#include "vamp-sdk/Plugin.h"
+#include <vamp-sdk/Plugin.h>
 
 /**
  * Example plugin that calculates the positions and density of
index 4a2523bc1dc87942c688f946698e16bf15e6848f..6a040778825323b5472414e8f7255bb6172d09bf 100644 (file)
@@ -38,8 +38,8 @@
 #include "libvampplugins-config.h"
 #endif
 
-#include "vamp/vamp.h"
-#include "vamp-sdk/PluginAdapter.h"
+#include <vamp/vamp.h>
+#include <vamp-sdk/PluginAdapter.h>
 
 #include "ZeroCrossing.h"
 #include "SpectralCentroid.h"
index aa4dfdc1daadc4b0bf384ca4ea666ec89c264ebf..e919640c40c615708d7a6b779cc18204b2e7533d 100644 (file)
@@ -23,13 +23,19 @@ def options(opt):
     autowaf.set_options(opt)
 
 def configure(conf):
-    conf.load('compiler_cxx')
-    autowaf.configure(conf)
-    autowaf.check_pkg(conf, 'fftw3', uselib_store='FFTW3', mandatory=True)
-    autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F', mandatory=True)
-    conf.env.append_value('CXXFLAGS', '-DHAVE_FFTW3')
+    if conf.is_defined('USE_EXTERNAL_LIBS'):
+        autowaf.check_pkg(conf, 'vamp-sdk', uselib_store='VAMPSDK', mandatory=True)
+        autowaf.check_pkg(conf, 'vamp-hostsdk', uselib_store='VAMPHOSTSDK', mandatory=True)
+    else:
+        conf.load('compiler_cxx')
+        autowaf.configure(conf)
+        autowaf.check_pkg(conf, 'fftw3', uselib_store='FFTW3', mandatory=True)
+        autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F', mandatory=True)
+        conf.env.append_value('CXXFLAGS', '-DHAVE_FFTW3')
 
 def build(bld):
+    if bld.is_defined('USE_EXTERNAL_LIBS'):
+        return
     # Host Library
     obj = bld(features = 'cxx cxxshlib')
     obj.source = '''
diff --git a/wscript b/wscript
index 3d016326d5901266d80d06817483f08dd318d675..04d6373740081d894d6a62252423fc501390b287 100644 (file)
--- a/wscript
+++ b/wscript
@@ -428,6 +428,8 @@ def options(opt):
                    help='Build internal libs as shared libraries')
     opt.add_option('--internal-static-libs', action='store_false', dest='internal_shared_libs',
                    help='Build internal libs as static libraries')
+    opt.add_option('--use-external-libs', action='store_true', default=False, dest='use_external_libs',
+                   help='Use external/system versions of some bundled libraries')
     opt.add_option('--lv2', action='store_true', default=True, dest='lv2',
                     help='Compile with support for LV2 (if Lilv+Suil is available)')
     opt.add_option('--no-lv2', action='store_false', dest='lv2',
@@ -600,6 +602,9 @@ def configure(conf):
     if Options.options.internal_shared_libs: 
         conf.define('INTERNAL_SHARED_LIBS', 1)
 
+    if Options.options.use_external_libs:
+        conf.define('USE_EXTERNAL_LIBS', 1)
+
     if Options.options.boost_include != '':
         conf.env.append_value('CXXFLAGS', '-I' + Options.options.boost_include)
 
@@ -700,6 +705,7 @@ const char* const ardour_config_info = "\\n\\
     write_config_text('Install prefix',        conf.env['PREFIX'])
     write_config_text('Strict compiler flags', conf.env['STRICT'])
     write_config_text('Internal Shared Libraries', conf.is_defined('INTERNAL_SHARED_LIBS'))
+    write_config_text('Use External Libraries', conf.is_defined('USE_EXTERNAL_LIBS'))
 
     write_config_text('Architecture flags',    opts.arch)
     write_config_text('Aubio',                 conf.is_defined('HAVE_AUBIO'))
@@ -745,14 +751,17 @@ def build(bld):
     # add directories that contain only headers, to workaround an issue with waf
 
     bld.path.find_dir ('libs/evoral/evoral')
-    bld.path.find_dir ('libs/vamp-sdk/vamp-sdk')
+    if not bld.is_defined('USE_EXTERNAL_LIBS'):
+        bld.path.find_dir ('libs/vamp-sdk/vamp-sdk')
     bld.path.find_dir ('libs/surfaces/control_protocol/control_protocol')
     bld.path.find_dir ('libs/timecode/timecode')
-    bld.path.find_dir ('libs/libltc/ltc')
-    bld.path.find_dir ('libs/rubberband/rubberband')
+    if not bld.is_defined('USE_EXTERNAL_LIBS'):
+        bld.path.find_dir ('libs/libltc/ltc')
+        bld.path.find_dir ('libs/rubberband/rubberband')
     bld.path.find_dir ('libs/gtkmm2ext/gtkmm2ext')
     bld.path.find_dir ('libs/ardour/ardour')
-    bld.path.find_dir ('libs/taglib/taglib')
+    if not bld.is_defined('USE_EXTERNAL_LIBS'):
+        bld.path.find_dir ('libs/taglib/taglib')
     bld.path.find_dir ('libs/pbd/pbd')
 
     autowaf.set_recursive()