autowaf.build_version_files(
path_prefix + 'version.h',
path_prefix + 'version.cc',
- 'gtk2_ardour', conf.env['MAJOR'], conf.env['MINOR'], 0)
+ 'gtk2_ardour', conf.env['MAJOR'], conf.env['MINOR'], 0,
+ '', '')
autowaf.configure(conf)
- if re.search ("linux", sys.platform) != None:
- autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
+ if Options.options.dist_target == 'auto':
+ if re.search ("linux", sys.platform) != None:
+ autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
# TODO: Insert a sanity check for on OS X to ensure CoreAudio is present
obj.use = [ 'libpbd',
'libmidipp',
'libtaglib',
- 'ardour',
+ 'libardour',
'libardour_cp',
'libgtkmm2ext',
- 'libtaglib' ]
+ 'libtaglib',
+ 'libcanvas'
+ ]
+ if bld.env['build_target'] == 'mingw':
+ if bld.env['DEBUG'] == False:
+ obj.linkflags = ['-mwindows']
if sys.platform == 'darwin':
- obj.use += ' libappleutility'
+ obj.uselib += ' AUDIOUNITS OSX GTKOSX'
+ obj.use += ' libappleutility'
- obj.defines = [
+ obj.defines += [
'PACKAGE="' + I18N_PACKAGE + '"',
'VERSIONSTRING="' + bld.env['VERSION'] + '"',
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
#include <string>
#include "taglib/tag.h"
-#include "taglib/taglib.h"
-#include "taglib/xiphcomment.h"
+#include "taglib/toolkit/taglib.h"
+#include "taglib/ogg/xiphcomment.h"
+ #include "ardour/libardour_visibility.h"
+
namespace ARDOUR
{
namespace ARDOUR {
class Session;
-class Region;
class AudioRegion;
class Source;
-
class AudioPlaylist;
- class AudioPlaylist : public ARDOUR::Playlist
+ class LIBARDOUR_API AudioPlaylist : public ARDOUR::Playlist
{
public:
AudioPlaylist (Session&, const XMLNode&, bool hidden = false);
#ifndef __ardour_butler_h__
#define __ardour_butler_h__
+#include <pthread.h>
+
#include <glibmm/threads.h>
+#ifdef PLATFORM_WINDOWS
+#include "pbd/glib_semaphore.h"
+#endif
+
#include "pbd/ringbuffer.h"
#include "pbd/pool.h"
+ #include "ardour/libardour_visibility.h"
#include "ardour/types.h"
#include "ardour/session_handle.h"
class AudioEngine;
class Session;
- class LadspaPlugin : public ARDOUR::Plugin
+ class LIBARDOUR_API LadspaPlugin : public ARDOUR::Plugin
{
public:
- LadspaPlugin (void *module, ARDOUR::AudioEngine&, ARDOUR::Session&, uint32_t index, framecnt_t sample_rate);
+ LadspaPlugin (std::string module_path, ARDOUR::AudioEngine&, ARDOUR::Session&, uint32_t index, framecnt_t sample_rate);
LadspaPlugin (const LadspaPlugin &);
~LadspaPlugin ();
namespace ARDOUR {
- struct PannerInfo {
+ struct LIBARDOUR_API PannerInfo {
PanPluginDescriptor descriptor;
- void* module;
+ Glib::Module* module;
- PannerInfo (PanPluginDescriptor& d, void* handle)
+ PannerInfo (PanPluginDescriptor& d, Glib::Module* m)
: descriptor (d)
- , module (handle)
+ , module (m)
{}
~PannerInfo () {
autowaf.build_version_files(
path_prefix + 'ardour/version.h',
path_prefix + 'version.cc',
- 'libardour3', conf.env['MAJOR'], conf.env['MINOR'], 0)
+ 'libardour3', conf.env['MAJOR'], conf.env['MINOR'], 0,
+ 'LIBARDOUR_API', 'ardour/libardour_visibility.h')
autowaf.configure(conf)
- autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO',
- atleast_version='0.3.2')
+ if Options.options.dist_target == 'auto':
+ if re.search ("linux", sys.platform) != None:
+ autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML')
- autowaf.check_pkg(conf, 'lrdf', uselib_store='LRDF',
- atleast_version='0.4.0')
+ if Options.options.dist_target != 'mingw':
+ autowaf.check_pkg(conf, 'lrdf', uselib_store='LRDF',
+ atleast_version='0.4.0')
+ autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO',
+ atleast_version='0.3.2')
autowaf.check_pkg(conf, 'samplerate', uselib_store='SAMPLERATE',
atleast_version='0.1.0')
autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP',
#ifdef __GNUC__
#include <cxxabi.h>
+#include <cstdlib>
#endif
+ #include "audiographer/visibility.h"
+
namespace AudioGrapher
{
#ifndef __gtkmm2ext_auto_spin_h__
#define __gtkmm2ext_auto_spin_h__
+#ifdef interface
+#undef interface
+#endif
+
#include <gtkmm.h>
+ #include "gtkmm2ext/visibility.h"
+
namespace Gtkmm2ext {
- class AutoSpin
+ class LIBGTKMM2EXT_API AutoSpin
{
public:
#ifndef __ardour_gtk_doi_h__
#define __ardour_gtk_doi_h__
+#ifdef interface
+#undef interface
+#endif
+
#include <gtkmm.h>
+ #include "gtkmm2ext/visibility.h"
+
/* XXX g++ 2.95 can't compile this as pair of member function templates */
- template<typename T> gint idle_delete (T *obj) { delete obj; return FALSE; }
- template<typename T> void delete_when_idle (T *obj) {
+ template<typename T> LIBGTKMM2EXT_API gint idle_delete (T *obj) { delete obj; return FALSE; }
+ template<typename T> LIBGTKMM2EXT_API void delete_when_idle (T *obj) {
Glib::signal_idle().connect (sigc::bind (sigc::ptr_fun (idle_delete<T>), obj));
}
- template<typename T> gint delete_on_unmap (GdkEventAny *ignored, T *obj) {
+ template<typename T> LIBGTKMM2EXT_API gint delete_on_unmap (GdkEventAny *ignored, T *obj) {
Glib::signal_idle().connect (sigc::bind (sigc::ptr_fun (idle_delete<T>), obj));
return FALSE;
}
#include <gtkmm/treeview.h>
#include <gdkmm/window.h> /* for WMDecoration */
#include <gdkmm/pixbuf.h>
-#include <pangomm/fontdescription.h>
+ #include "gtkmm2ext/visibility.h"
+
namespace Cairo {
class Context;
}
/* C API for rounded rectangles */
- void rounded_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
- void rounded_top_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
- void rounded_top_left_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
- void rounded_top_right_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
- void rounded_top_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
- void rounded_bottom_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
- void rounded_right_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+ LIBGTKMM2EXT_API void rounded_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+ LIBGTKMM2EXT_API void rounded_top_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+ LIBGTKMM2EXT_API void rounded_top_left_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+ LIBGTKMM2EXT_API void rounded_top_right_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+ LIBGTKMM2EXT_API void rounded_top_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+ LIBGTKMM2EXT_API void rounded_bottom_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+ LIBGTKMM2EXT_API void rounded_right_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
- Gtk::Label* left_aligned_label (std::string const &);
+ LIBGTKMM2EXT_API Gtk::Label* left_aligned_label (std::string const &);
- void set_no_tooltip_whatsoever (Gtk::Widget &);
- void enable_tooltips ();
- void disable_tooltips ();
+ LIBGTKMM2EXT_API void set_no_tooltip_whatsoever (Gtk::Widget &);
+ LIBGTKMM2EXT_API void enable_tooltips ();
+ LIBGTKMM2EXT_API void disable_tooltips ();
+
+ void convert_bgra_to_rgba (guint8 const *, guint8 * dst, int, int);
};
#endif /* __gtkmm2ext_utils_h__ */
obj = bld(features = 'cxx cxxshlib')
obj.source = [ 'panner_1in2out.cc' ]
obj.export_includes = ['.']
- obj.cxxflags = '-DPACKAGE="libardour_pan1in2out"'
+ obj.defines = [ 'PACKAGE="libardour_pan1in2out"' ]
+ if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+ obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
+ obj.defines = [ 'ARDOURPANNER_DLL_EXPORTS' ]
obj.includes = ['.']
obj.name = 'libardour_pan1in2out'
obj.target = 'pan1in2out'
obj = bld(features = 'cxx cxxshlib')
obj.source = [ 'panner_2in2out.cc' ]
obj.export_includes = ['.']
- obj.cxxflags = '-DPACKAGE="libardour_pan2in2out"'
+ obj.defines = [ 'PACKAGE="libardour_pan2in2out"' ]
+ if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+ obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
+ obj.defines = [ 'ARDOURPANNER_DLL_EXPORTS' ]
obj.includes = ['.']
obj.name = 'libardour_pan2in2out'
obj.target = 'pan2in2out'
obj = bld(features = 'cxx cxxshlib')
obj.source = [ 'vbap_speakers.cc', 'vbap.cc' ]
obj.export_includes = ['.']
- obj.cxxflags = '-DPACKAGE="libardour_panvbap"'
+ obj.defines = [ 'PACKAGE="libardour_panvbap"' ]
+ if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+ obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL_=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
+ obj.defines = [ 'ARDOURPANNER_DLL_EXPORTS' ]
obj.includes = ['.']
obj.name = 'libardour_panvbap'
obj.target = 'panvbap'
/* this namespace is so that we can write DEBUG::bit_name */
- extern uint64_t Stateful;
- extern uint64_t Properties;
- extern uint64_t FileManager;
- extern uint64_t Pool;
- extern uint64_t EventLoop;
- extern uint64_t AbstractUI;
+ LIBPBD_API extern uint64_t Stateful;
+ LIBPBD_API extern uint64_t Properties;
+ LIBPBD_API extern uint64_t FileManager;
+ LIBPBD_API extern uint64_t Pool;
+ LIBPBD_API extern uint64_t EventLoop;
+ LIBPBD_API extern uint64_t AbstractUI;
+ extern uint64_t FileUtils;
}
}
* @param pattern A Glib::PatternSpec used to match the files
* @param result A vector in which to place the resulting matches.
*/
- void
+ LIBPBD_API void
-find_matching_files_in_search_path (const SearchPath& search_path,
+find_matching_files_in_search_path (const Searchpath& search_path,
const Glib::PatternSpec& pattern,
std::vector<std::string>& result);
*
* @return true If file is found within the search path.
*/
- bool
+ LIBPBD_API bool
-find_file_in_search_path (const SearchPath& search_path,
+find_file_in_search_path (const Searchpath& search_path,
const std::string& filename,
std::string& result);
#ifndef __libpbd__floating_h__
#define __libpbd__floating_h__
+#include <stdint.h>
+
#include <cmath>
+ #include "pbd/libpbd_visibility.h"
+
namespace PBD {
- union Float_t
+ union LIBPBD_API Float_t
{
Float_t (float num = 0.0f) : f(num) {}
#include <vector>
#include <string>
+#ifdef COMPILER_MSVC
+#include <ardourext/misc.h>
+#else
#include <regex.h>
+#endif
- class PathScanner
+ #include "pbd/libpbd_visibility.h"
+
+ class LIBPBD_API PathScanner
{
public:
return to_write;
}
- template<class T> void
+ template<class T> LIBPBD_API void
-RingBuffer<T>::get_read_vector (RingBuffer<T>::rw_vector *vec)
+RingBuffer<T>::get_read_vector (typename RingBuffer<T>::rw_vector *vec)
{
guint free_cnt;
}
}
- template<class T> void
+ template<class T> LIBPBD_API void
-RingBuffer<T>::get_write_vector (RingBuffer<T>::rw_vector *vec)
+RingBuffer<T>::get_write_vector (typename RingBuffer<T>::rw_vector *vec)
{
guint free_cnt;
return to_write;
}
- template<class T> void
+ template<class T> LIBPBD_API void
-RingBufferNPT<T>::get_read_vector (RingBufferNPT<T>::rw_vector *vec)
+RingBufferNPT<T>::get_read_vector (typename RingBufferNPT<T>::rw_vector *vec)
{
size_t free_cnt;
size_t cnt2;
}
}
- template<class T> void
+ template<class T> LIBPBD_API void
-RingBufferNPT<T>::get_write_vector (RingBufferNPT<T>::rw_vector *vec)
+RingBufferNPT<T>::get_write_vector (typename RingBufferNPT<T>::rw_vector *vec)
{
size_t free_cnt;
size_t cnt2;
* "search path string" contains absolute directory paths
* separated by a colon(:) or a semi-colon(;) on windows.
*
- * The SearchPath class does not test whether the paths exist
+ * The Searchpath class does not test whether the paths exist
* or are directories. It is basically just a container.
*/
- class Searchpath : public std::vector<std::string>
+ class LIBPBD_API SearchPath : public std::vector<std::string>
{
public:
/**
#ifndef __pbd_semutils_h__
#define __pbd_semutils_h__
+#ifdef PLATFORM_WINDOWS
+#include <windows.h>
+#else
#include <semaphore.h>
+#endif
+ #include "pbd/libpbd_visibility.h"
+
namespace PBD {
- class ProcessSemaphore {
+ class LIBPBD_API ProcessSemaphore {
private:
-#ifdef __APPLE__
+#ifdef PLATFORM_WINDOWS
+ HANDLE _sem;
+
+#elif __APPLE__
sem_t* _sem;
sem_t* ptr_to_sem() const { return _sem; }
#else
#include <cstdlib>
#endif
+ #include "pbd/libpbd_visibility.h"
+
+
namespace PBD {
- void stacktrace (std::ostream& out, int levels = 0);
- void trace_twb();
+ LIBPBD_API void stacktrace (std::ostream& out, int levels = 0);
+ LIBPBD_API void trace_twb();
+ std::string demangle (const std::string&);
template<typename T>
- class thing_with_backtrace
+ class LIBPBD_API thing_with_backtrace
{
public:
thing_with_backtrace () {
#include <map>
#include <sigc++/slot.h>
#include <sigc++/bind.h>
+#ifndef COMPILER_MSVC
#include <sys/time.h>
+#else
+#include <ardourext/misc.h>
+#endif
+ #include "pbd/libpbd_visibility.h"
#include "pbd/command.h"
typedef sigc::slot<void> UndoAction;
#define __pbd_uuid_h__
#include <string>
-#include <uuid/uuid.h>
+#include <boost/uuid/uuid.hpp>
+#include <boost/uuid/uuid_generators.hpp>
+ #include "pbd/libpbd_visibility.h"
+
namespace PBD {
- class UUID : public boost::uuids::uuid {
+ class LIBPBD_API UUID {
public:
- UUID () { uuid_generate (id); }
- UUID (UUID const & other) { uuid_copy (id, other.id); }
- UUID (std::string const & str) { uuid_parse (str.c_str(), id); }
-
- UUID& operator= (std::string const & str);
- std::string to_s () const;
-
- bool operator== (UUID const & other) const { return !uuid_compare (id, other.id); }
- bool operator!= (UUID const & other) const { return uuid_compare (id, other.id); }
- bool operator< (UUID const & other) const { return uuid_compare (id, other.id) < 0; }
-
- operator bool() const { return !uuid_is_null (id); }
-
- private:
- uuid_t id;
+ UUID ()
+ : boost::uuids::uuid (boost::uuids::random_generator()()) {}
+ UUID (std::string const & str)
+ : boost::uuids::uuid (boost::uuids::string_generator()(str)) {}
+ explicit UUID (boost::uuids::uuid const& u)
+ : boost::uuids::uuid(u)
+ {}
+
+ operator boost::uuids::uuid() {
+ return static_cast<boost::uuids::uuid&>(*this);
+ }
+
+ operator boost::uuids::uuid() const {
+ return static_cast<boost::uuids::uuid const&>(*this);
+ }
+
+ UUID& operator= (std::string const & str);
+ std::string to_s () const;
+
+ operator bool() const { return !is_nil(); }
};
} // namespace PBD
autowaf.configure(conf)
def build(bld):
- obj = bld(features = 'cxx cxxshlib')
- obj.source = '''
- basic_ui.cc
- control_protocol.cc
- '''
+ if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+ obj = bld.shlib(features = 'c cxx cshlib cxxshlib', source=controlcp_sources)
+ # defines for this library
+ obj.defines = [ 'LIBCONTROLCP_DLL=1', 'LIBCONTROLCP_DLL_EXPORTS=1' ]
+ # internal shared libs that we use
+ obj.defines += [ 'LIBPBD_DLL=1', 'LIBARDOUR_DLL=1', 'LIBEVORAL_DLL=1' ]
+ obj.cxxflags = [ '-fvisibility=hidden' ]
+ obj.cflags = [ '-fvisibility=hidden' ]
+ else:
+ obj = bld.stlib(features = 'c cxx cstlib cxxstlib', source=controlcp_sources)
+ obj.cxxflags = [ '-fPIC' ]
+ obj.defines = [ ]
+
obj.export_includes = ['.', './control_protocol' ]
- obj.cxxflags = '-DPACKAGE="ardour_cp" -fPIC'
+ obj.defines += [ 'PACKAGE="ardour_cp"' ]
obj.includes = ['.', './control_protocol']
+ obj.defines = [ 'ARDOURCP_DLL_EXPORTS' ]
obj.name = 'libardour_cp'
obj.target = 'ardourcp'
- obj.use = 'ardour libtimecode'
+ obj.use = 'libardour libtimecode'
obj.vnum = LIBARDOUR_CP_LIB_VERSION
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
interface.cc
'''
obj.export_includes = ['.']
- obj.cxxflags = '-DPACKAGE="ardour_cp"'
+ obj.defines = [ 'PACKAGE="ardour_osc"' ]
+ if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+ obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
obj.includes = ['.', './osc']
obj.name = 'libardour_osc'
+ obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
obj.target = 'ardour_osc'
obj.uselib = ' LO '
obj.use = 'libardour libardour_cp libpbd'
wheel_modes.cc
'''
obj.export_includes = ['./tranzport']
- obj.cxxflags = '-DPACKAGE="ardour_tranzport"'
+ obj.defines = [ 'PACKAGE="ardour_tranzport"' ]
+ if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+ obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBGTKMM2EXT_DLL=1' ]
obj.includes = ['.', './tranzport']
obj.name = 'libardour_tranzport'
+ obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
obj.target = 'ardour_tranzport'
obj.use = 'libardour libardour_cp'
obj.vnum = LIBARDOUR_TRANZPORT_LIB_VERSION
interface.cc
'''
obj.export_includes = ['./wiimote']
- obj.cxxflags = '-DPACKAGE="ardour_wiimote"'
+ obj.defines = [ 'PACKAGE="ardour_wiimote"' ]
+ if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+ obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBGTKMM2EXT_DLL=1', 'LIBEVORAL_DLL=1' ]
obj.includes = ['.', '../libs']
obj.name = 'libardour_wiimote'
+ obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
obj.target = 'ardour_wiimote'
obj.uselib = 'GTKMM CWIID'
obj.use = 'libardour libardour_cp libgtkmm2ext'