From b97ab7d7bc0af68c1079a192b3c7924cbe61936e Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sun, 20 Oct 2013 09:27:35 +1000 Subject: [PATCH] Statically link libtimecode into libmidi++ instead of libardour This is necessary to get the libmidi++ test to work as libmidi++ has unresolved symbols in libtimecode. This was not a problem when libtimecode was statically linked into libardour if the executable depended on both libtimecode and libardour as the symbols would get resolved. This is not true for the midi++ test case as it doesn't depend on libardour Also as libmidi++ only references symbols from one object file in the libtimecode static archive only that object file gets included/exported from libmidi++. This is fixed by adding a dummy reference to a symbol in the other object file in the libtimecode static archive. --- libs/ardour/wscript | 2 +- libs/midi++2/mmc.cc | 8 ++++++++ libs/midi++2/wscript | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 33351bd8b1..82a4af6388 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -341,7 +341,7 @@ def build(bld): 'OSX','BOOST','CURL','DL'] obj.use = ['libpbd','libmidipp','libevoral','libvamphost', 'libvampplugin','libtaglib','librubberband', - 'libaudiographer', 'ltc', 'timecode' ] + 'libaudiographer', 'ltc', 'timecode_includes' ] obj.vnum = LIBARDOUR_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') obj.defines += [ diff --git a/libs/midi++2/mmc.cc b/libs/midi++2/mmc.cc index b93dc0f260..a3f8f01fe4 100644 --- a/libs/midi++2/mmc.cc +++ b/libs/midi++2/mmc.cc @@ -22,6 +22,7 @@ #include #include "timecode/time.h" +#include "timecode/bbt_time.h" #include "pbd/error.h" @@ -33,6 +34,13 @@ using namespace std; using namespace MIDI; using namespace PBD; +/** + * As libtimecode is linked statically to libmidi++ this + * is necessary to pull in all the symbols from libtimecode + * so they are exported for other users of libtimecode. + */ +double tmp = Timecode::BBT_Time::ticks_per_beat; + static std::map mmc_cmd_map; static void build_mmc_cmd_map () { diff --git a/libs/midi++2/wscript b/libs/midi++2/wscript index b500bcaa4e..c05075a5f1 100644 --- a/libs/midi++2/wscript +++ b/libs/midi++2/wscript @@ -76,7 +76,7 @@ def build(bld): obj.name = 'libmidipp' obj.target = 'midipp' obj.uselib = 'GLIBMM SIGCPP XML JACK OSX' - obj.use = 'libpbd libevoral timecode_includes' + obj.use = 'libpbd libevoral timecode' obj.vnum = LIBMIDIPP_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')