13
0

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.
This commit is contained in:
Tim Mayberry 2013-10-20 09:27:35 +10:00
parent f85c67501c
commit b97ab7d7bc
3 changed files with 10 additions and 2 deletions

View File

@ -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 += [

View File

@ -22,6 +22,7 @@
#include <map>
#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<int,string> mmc_cmd_map;
static void build_mmc_cmd_map ()
{

View File

@ -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')