aboutsummaryrefslogtreecommitdiff
path: root/audio/azr3/patches
diff options
context:
space:
mode:
authorJohannes Schoepfer <slackbuilds@schoepfer.info>2019-11-23 15:13:41 +0700
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2019-11-23 15:13:41 +0700
commit40f5bc20ba0ebf1bc10291bae7328e4c258df51e (patch)
treefd6e5a2c0ed674b2fc887e435836808e7add66ae /audio/azr3/patches
parentbd55645a968ac13e53009cb2ae58cd3496f2a533 (diff)
audio/azr3: Added (tonewheel organ simulator).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'audio/azr3/patches')
-rw-r--r--audio/azr3/patches/drop_lash_support.patch188
-rw-r--r--audio/azr3/patches/errs_and_warns.patch90
-rw-r--r--audio/azr3/patches/fix-compilation.patch96
-rw-r--r--audio/azr3/patches/linking_order.patch36
4 files changed, 410 insertions, 0 deletions
diff --git a/audio/azr3/patches/drop_lash_support.patch b/audio/azr3/patches/drop_lash_support.patch
new file mode 100644
index 0000000000000..4f7ec45a7d277
--- /dev/null
+++ b/audio/azr3/patches/drop_lash_support.patch
@@ -0,0 +1,188 @@
+Description: Disable LASH support.
+Author: Alessio Treglia <alessio@debian.org>
+Forwarded: no
+---
+ Makefile | 6 +--
+ azr3/main.cpp | 91 ----------------------------------------------------------
+ azr3/main.hpp | 7 ----
+ 3 files changed, 4 insertions(+), 100 deletions(-)
+
+--- azr3-jack.orig/Makefile
++++ azr3-jack/Makefile
+@@ -10,7 +10,7 @@ PACKAGE_WEBPAGE = "http://ll-plugins.non
+ PACKAGE_BUGTRACKER = "https://savannah.nongnu.org/bugs/?group=ll-plugins"
+ PACKAGE_VC = "http://git.savannah.gnu.org/cgit/ll-plugins/azr3-jack.git/"
+
+-PKG_DEPS = gtkmm-2.4>=2.8.8 jack>=0.103.0 lash-1.0>=0.5.3
++PKG_DEPS = gtkmm-2.4>=2.8.8 jack>=0.103.0
+
+
+ PROGRAMS = azr3
+@@ -32,8 +32,8 @@ azr3_SOURCES = \
+ drawbar.hpp drawbar.cpp \
+ textbox.hpp textbox.cpp
+ azr3_SOURCEDIR = azr3
+-azr3_CFLAGS = `pkg-config --cflags gtkmm-2.4 jack lash-1.0` -DDATADIR=\"$(pkgdatadir)\"
+-azr3_LDFLAGS = `pkg-config --libs gtkmm-2.4 jack lash-1.0`
++azr3_CFLAGS = `pkg-config --cflags gtkmm-2.4 jack` -DDATADIR=\"$(pkgdatadir)\"
++azr3_LDFLAGS = `pkg-config --libs gtkmm-2.4 jack` -lpthread
+ azr3_cpp_CFLAGS = $(shell if pkg-config --atleast-version=0.107 jack ; then echo -include azr3/newjack.hpp; fi)
+ main_cpp_CFLAGS = -DPACKAGE_VERSION=\"$(PACKAGE_VERSION)\"
+
+--- azr3-jack.orig/azr3/main.hpp
++++ azr3-jack/azr3/main.hpp
+@@ -25,7 +25,6 @@
+ #include <gtkmm.h>
+ #include <pthread.h>
+ #include <semaphore.h>
+-#include <lash/lash.h>
+
+ #include "azr3.hpp"
+ #include "azr3gui.hpp"
+@@ -65,10 +64,6 @@ protected:
+
+ int process(jack_nframes_t nframes);
+
+- bool check_lash_events();
+-
+- bool init_lash(lash_args_t* lash_args, const std::string& jack_name);
+-
+ void auto_connect();
+
+ static int static_process(jack_nframes_t frames, void* arg);
+@@ -89,10 +84,8 @@ protected:
+ sem_t m_gui_changed;
+ float m_gui_controls[63];
+ Preset m_presets[128];
+- lash_client_t* m_lash_client;
+
+ bool m_ok;
+- bool m_started_by_lashd;
+ std::string m_auto_midi;
+ std::string m_auto_audio;
+
+--- azr3-jack.orig/azr3/main.cpp
++++ azr3-jack/azr3/main.cpp
+@@ -32,13 +32,6 @@ using namespace std;
+
+
+ Main::Main(int& argc, char**& argv) : m_ok(false) {
+-
+- /* this is a bit dumb, but the only way I know of to check whether we were
+- started by lashd is to see if lash_extract_args() removes any arguments */
+- int old_argc = argc;
+- lash_args_t* lash_args = lash_extract_args(&argc, &argv);
+- m_started_by_lashd = (argc != old_argc);
+-
+ // parse all non-LASH arguments
+ OptionParser op;
+ bool help(false);
+@@ -165,10 +158,6 @@ Main::Main(int& argc, char**& argv) : m_
+ }
+ }
+ }
+-
+- // initialise LASH
+- if (!init_lash(lash_args, jack_get_client_name(m_jack_client)))
+- return;
+
+ m_win->set_title("AZR-3");
+ m_win->set_resizable(false);
+@@ -184,14 +173,11 @@ void Main::run() {
+ jack_activate(m_jack_client);
+
+ // auto-connect JACK ports if desired
+- if (!m_started_by_lashd)
+- auto_connect();
++ auto_connect();
+
+ Glib::signal_timeout().
+ connect(sigc::bind_return(sigc::mem_fun(*this, &Main::check_changes),
+ true), 10);
+- Glib::signal_timeout().
+- connect(sigc::mem_fun(*this, &Main::check_lash_events), 500);
+ m_kit->run(*m_win);
+ jack_deactivate(m_jack_client);
+ m_engine->deactivate();
+@@ -345,81 +331,6 @@ int Main::process(jack_nframes_t nframes
+ }
+
+
+-bool Main::check_lash_events() {
+- lash_event_t* event;
+- bool go_on = true;
+- while ((event = lash_get_event(m_lash_client))) {
+-
+- // save
+- if (lash_event_get_type(event) == LASH_Save_File) {
+- cerr<<"Received LASH Save command"<<endl;
+- string dir(lash_event_get_string(event));
+- ofstream fout((dir + "/state").c_str());
+- fout<<int(m_program);
+- for (uint32_t i = 0; i < 63; ++i)
+- fout<<" "<<m_gui_controls[i];
+- fout<<endl;
+- write_presets((dir + "/presets").c_str());
+- lash_send_event(m_lash_client,
+- lash_event_new_with_type(LASH_Save_File));
+- }
+-
+- // restore
+- else if (lash_event_get_type(event) == LASH_Restore_File) {
+- cerr<<"Received LASH Restore command"<<endl;
+- string dir(lash_event_get_string(event));
+- for (unsigned char i = 0; i < 128; ++i)
+- m_presets[i].empty = true;
+- load_presets((dir + "/presets").c_str());
+- m_gui->clear_programs();
+- for (unsigned char i = 0; i < 128; ++i) {
+- if (!m_presets[i].empty)
+- m_gui->add_program(i, m_presets[i].name.c_str());
+- }
+- ifstream fin((dir + "/state").c_str());
+- int prog;
+- fin>>prog;
+- m_gui->set_program(prog);
+- for (uint32_t p = 0; p < 63; ++p) {
+- float tmp;
+- fin>>tmp;
+- m_gui->set_control(p, tmp);
+- }
+- lash_send_event(m_lash_client,
+- lash_event_new_with_type(LASH_Restore_File));
+- }
+-
+- // quit
+- else if (lash_event_get_type(event) == LASH_Quit) {
+- cerr<<"Received LASH Quit command"<<endl;
+- Gtk::Main::instance()->quit();
+- go_on = false;
+- }
+-
+- lash_event_destroy(event);
+- }
+- return go_on;
+-}
+-
+-
+-bool Main::init_lash(lash_args_t* lash_args, const std::string& jack_name) {
+-
+- m_lash_client = lash_init(lash_args, "AZR-3",
+- LASH_Config_File, LASH_PROTOCOL(2, 0));
+- if (m_lash_client) {
+- lash_event_t* event = lash_event_new_with_type(LASH_Client_Name);
+- lash_event_set_string(event, "AZR-3");
+- lash_send_event(m_lash_client, event);
+- lash_jack_client_name(m_lash_client, jack_name.c_str());
+- Glib::signal_timeout().
+- connect(sigc::mem_fun(*this, &Main::check_lash_events), 500);
+- }
+- else
+- cerr<<"Could not initialise LASH!"<<endl;
+- return (m_lash_client != 0);
+-}
+-
+-
+ int Main::static_process(jack_nframes_t frames, void* arg) {
+ return static_cast<Main*>(arg)->process(frames);
+ }
diff --git a/audio/azr3/patches/errs_and_warns.patch b/audio/azr3/patches/errs_and_warns.patch
new file mode 100644
index 0000000000000..1a0a190c58acd
--- /dev/null
+++ b/audio/azr3/patches/errs_and_warns.patch
@@ -0,0 +1,90 @@
+Description: Fix some compilation errors and warnings.
+From: http://git.savannah.gnu.org/gitweb/?p=ll-plugins/azr3-jack.git;a=commit;h=2453bdc15286
+Author: Lars Luthman <mail@larsluthman.net>
+Origin: upstream, commit:2453bdc15286
+---
+ azr3/azr3gui.cpp | 10 +++++-----
+ azr3/azr3gui.hpp | 6 +++---
+ azr3/main.cpp | 2 --
+ 3 files changed, 8 insertions(+), 10 deletions(-)
+
+--- azr3-jack.orig/azr3/azr3gui.cpp
++++ azr3-jack/azr3/azr3gui.cpp
+@@ -332,7 +332,7 @@ void AZR3GUI::set_back_pixmap(Widget* wd
+ }
+
+
+-Knob* AZR3GUI::add_knob(Fixed& fbox, RefPtr<Pixmap>& pm, int port,
++Knob* AZR3GUI::add_knob(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
+ float min, float max, float value,
+ int xoffset, int yoffset,
+ float dmin, float dmax, bool decimal) {
+@@ -350,7 +350,7 @@ Knob* AZR3GUI::add_knob(Fixed& fbox, Ref
+ s->set_bg_pixmap(STATE_SELECTED, npm);
+ s->set_bg_pixmap(STATE_INSENSITIVE, npm);
+ knob->set_style(s);
+- if (port >= 0 && port < m_adj.size()) {
++ if (port < m_adj.size()) {
+ knob->get_adjustment().signal_value_changed().
+ connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
+ mem_fun(knob->get_adjustment(),
+@@ -362,7 +362,7 @@ Knob* AZR3GUI::add_knob(Fixed& fbox, Ref
+ }
+
+
+-Drawbar* AZR3GUI::add_drawbar(Fixed& fbox, RefPtr<Pixmap>& pm, int port,
++Drawbar* AZR3GUI::add_drawbar(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
+ float min, float max, float value,
+ int xoffset, int yoffset,
+ Drawbar::Type type) {
+@@ -380,7 +380,7 @@ Drawbar* AZR3GUI::add_drawbar(Fixed& fbo
+ s->set_bg_pixmap(STATE_SELECTED, npm);
+ s->set_bg_pixmap(STATE_INSENSITIVE, npm);
+ db->set_style(s);
+- if (port >= 0 && port < m_adj.size()) {
++ if (port < m_adj.size()) {
+ db->get_adjustment().signal_value_changed().
+ connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
+ mem_fun(db->get_adjustment(), &Adjustment::get_value)));
+@@ -391,7 +391,7 @@ Drawbar* AZR3GUI::add_drawbar(Fixed& fbo
+ }
+
+
+-Switch* AZR3GUI::add_switch(Fixed& fbox, int port,
++Switch* AZR3GUI::add_switch(Fixed& fbox, size_t port,
+ int xoffset, int yoffset, Switch::Type type) {
+ Switch* sw = manage(new Switch(type));
+ fbox.put(*sw, xoffset, yoffset);
+--- azr3-jack.orig/azr3/azr3gui.hpp
++++ azr3-jack/azr3/azr3gui.hpp
+@@ -62,15 +62,15 @@ protected:
+
+ void splitbox_clicked();
+ void set_back_pixmap(Widget* wdg, Glib::RefPtr<Gdk::Pixmap> pm);
+- Knob* add_knob(Gtk::Fixed& fbox, Glib::RefPtr<Gdk::Pixmap>& pm, int port,
++ Knob* add_knob(Gtk::Fixed& fbox, Glib::RefPtr<Gdk::Pixmap>& pm, size_t port,
+ float min, float max, float value,
+ int xoffset, int yoffset,
+ float dmin, float dmax, bool decimal);
+ Drawbar* add_drawbar(Gtk::Fixed& fbox, Glib::RefPtr<Gdk::Pixmap>& pm,
+- int port, float min, float max, float value,
++ size_t port, float min, float max, float value,
+ int xoffset, int yoffset,
+ Drawbar::Type type);
+- Switch* add_switch(Gtk::Fixed& fbox, int port,
++ Switch* add_switch(Gtk::Fixed& fbox, size_t port,
+ int xoffset, int yoffset, Switch::Type type);
+ Gtk::EventBox* add_clickbox(Gtk::Fixed& fbox, int xoffset, int yoffset,
+ int width, int height);
+--- azr3-jack.orig/azr3/main.cpp
++++ azr3-jack/azr3/main.cpp
+@@ -338,9 +338,7 @@ int Main::static_process(jack_nframes_t
+
+ void Main::auto_connect() {
+
+- const char* env;
+ const char** port_list;
+- const char* name = jack_get_client_name(m_jack_client);
+
+ // MIDI input
+ if (m_auto_midi != "") {
diff --git a/audio/azr3/patches/fix-compilation.patch b/audio/azr3/patches/fix-compilation.patch
new file mode 100644
index 0000000000000..51d483640afd8
--- /dev/null
+++ b/audio/azr3/patches/fix-compilation.patch
@@ -0,0 +1,96 @@
+--- azr3-jack/azr3/azr3gui.cpp.orig 2019-11-10 19:46:08.722849544 +0100
++++ azr3-jack/azr3/azr3gui.cpp 2019-11-11 18:59:48.967071810 +0100
+@@ -80,7 +80,7 @@
+ connect(mem_fun(*this, &AZR3GUI::splitpoint_changed));
+ Menu* menu = create_menu();
+ m_tbox->signal_button_press_event().
+- connect(bind(mem_fun(*this, &AZR3GUI::popup_menu), menu));
++ connect(sigc::bind(mem_fun(*this, &AZR3GUI::popup_menu), menu));
+
+ // keyboard split switch
+ m_splitswitch = add_switch(m_fbox, -1, 537, 49, Switch::Mini);
+@@ -141,8 +141,8 @@
+ // mode switcher
+ Widget* eb = add_clickbox(m_fbox, 14, 319, 14, 44);
+ eb->signal_button_press_event().
+- connect(sigc::hide(bind(bind(mem_fun(*this, &AZR3GUI::change_mode),
+- ref(m_fbox)), false)));
++ connect(sigc::hide(sigc::bind(sigc::bind(mem_fun(*this, &AZR3GUI::change_mode),
++ std::ref(m_fbox)), false)));
+ m_fx_widgets.push_back(eb);
+
+ // Mr Valve controls
+@@ -182,8 +182,8 @@
+ // mode switcher 2
+ Widget* eb2 = add_clickbox(m_vbox, 14, 53, 14, 44);
+ eb2->signal_button_press_event().
+- connect(sigc::hide(bind(bind(mem_fun(*this, &AZR3GUI::change_mode),
+- ref(m_fbox)), true)));
++ connect(sigc::hide(sigc::bind(sigc::bind(mem_fun(*this, &AZR3GUI::change_mode),
++ std::ref(m_fbox)), true)));
+
+ // vibrato controls
+ add_switch(m_vbox, n_1_vibrato, 39, 17, Switch::Green);
+@@ -332,7 +332,7 @@
+ }
+
+
+-Knob* AZR3GUI::add_knob(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
++Knob* AZR3GUI::add_knob(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
+ float min, float max, float value,
+ int xoffset, int yoffset,
+ float dmin, float dmax, bool decimal) {
+@@ -352,7 +352,7 @@
+ knob->set_style(s);
+ if (port < m_adj.size()) {
+ knob->get_adjustment().signal_value_changed().
+- connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
++ connect(compose(sigc::bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
+ mem_fun(knob->get_adjustment(),
+ &Adjustment::get_value)));
+ assert(m_adj[port] == 0);
+@@ -362,7 +362,7 @@
+ }
+
+
+-Drawbar* AZR3GUI::add_drawbar(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
++Drawbar* AZR3GUI::add_drawbar(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
+ float min, float max, float value,
+ int xoffset, int yoffset,
+ Drawbar::Type type) {
+@@ -382,7 +382,7 @@
+ db->set_style(s);
+ if (port < m_adj.size()) {
+ db->get_adjustment().signal_value_changed().
+- connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
++ connect(compose(sigc::bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
+ mem_fun(db->get_adjustment(), &Adjustment::get_value)));
+ assert(m_adj[port] == 0);
+ m_adj[port] = &db->get_adjustment();
+@@ -397,7 +397,7 @@
+ fbox.put(*sw, xoffset, yoffset);
+ if (port >= 0 && port < m_adj.size()) {
+ sw->get_adjustment().signal_value_changed().
+- connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed),port),
++ connect(compose(sigc::bind<0>(mem_fun(*this, &AZR3GUI::control_changed),port),
+ mem_fun(sw->get_adjustment(), &Adjustment::get_value)));
+ assert(m_adj[port] == 0);
+ m_adj[port] = &sw->get_adjustment();
+@@ -489,7 +489,7 @@
+ oss<<setw(2)<<setfill('0')<<iter->first<<' '<<iter->second.substr(0, 23);
+ MenuItem* item = manage(new MenuItem(oss.str()));
+ item->signal_activate().
+- connect(bind(mem_fun(*this, &AZR3GUI::program_changed), iter->first));
++ connect(sigc::bind(mem_fun(*this, &AZR3GUI::program_changed), iter->first));
+ m_program_menu->items().push_back(*item);
+ item->show();
+ item->get_child()->modify_bg(STATE_NORMAL, m_menu_bg);
+@@ -503,7 +503,7 @@
+ for (int i = 0; i < 128; ++i) {
+ MenuItem* item = manage(new MenuItem(note2str(i)));
+ item->signal_activate().
+- connect(bind(mem_fun(*m_splitpoint_adj, &Adjustment::set_value),
++ connect(sigc::bind(mem_fun(*m_splitpoint_adj, &Adjustment::set_value),
+ i / 128.0));
+ m_split_menu->items().push_back(*item);
+ item->show();
diff --git a/audio/azr3/patches/linking_order.patch b/audio/azr3/patches/linking_order.patch
new file mode 100644
index 0000000000000..242716fdfd792
--- /dev/null
+++ b/audio/azr3/patches/linking_order.patch
@@ -0,0 +1,36 @@
+Description: Fix linking order to properly pass LDFLAGS values to the linker.
+Author: Alessio Treglia <alessio@debian.org>
+Forwarded: no
+---
+ Makefile.template | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- azr3-jack-1.2.3.orig/Makefile.template
++++ azr3-jack-1.2.3/Makefile.template
+@@ -118,7 +118,7 @@ $$($(2)_CXXOBJECTS): Makefile.config $$(
+ $(CXX) -c -o $$@ $(SHARED_LIBRARY_CFLAGS) $(CFLAGS) $(CXXFLAGS) $$($(2)_CFLAGS) $$(patsubst $$($(2)_BLDPRF)%,$$($(2)_SRCPRF)%,$$(subst .o,.cpp,$$@))
+
+ $$($(2)_BLDPRF)/$(1): $$($(2)_OBJECTS) $$($(2)_ARCHIVES) $$($(2)_LIBRARIES) $$(filter-out $$(wildcard $$($(2)_BUILDDIR)), $$($(2)_BUILDDIR))
+- $(CXX) $(SHARED_LIBRARY_LDFLAGS) $$($(2)_OBJECTS) -Wl,--whole-archive $$($(2)_ARCHIVES) -Wl,--no-whole-archive $$($(2)_LOCALLDFLAGS) $$($(2)_LOCALLIBRARIES) $(LDFLAGS) $$($(2)_LDFLAGS) -o $$@ -Wl,-soname=$(1).0
++ $(CXX) $(LDFLAGS) $(SHARED_LIBRARY_LDFLAGS) $$($(2)_OBJECTS) -Wl,--whole-archive $$($(2)_ARCHIVES) -Wl,--no-whole-archive $$($(2)_LOCALLDFLAGS) $$($(2)_LOCALLIBRARIES) $$($(2)_LDFLAGS) -o $$@ -Wl,-soname=$(1).0
+ /sbin/ldconfig -n $$($(2)_BLDPRF)
+
+ install-$(2)-headers: $$(patsubst %,$$($(2)_SRCPRF)/%,$$($(2)_HEADERS))
+@@ -211,7 +211,7 @@ $$($(1)_CXXOBJECTS): Makefile.config $$(
+ $(CXX) -c -o $$@ $(CFLAGS) $(CXXFLAGS) $$($(1)_CFLAGS) $$($$(patsubst %.o,%_cpp_CFLAGS,$$(notdir $$@))) $$($(1)_CFLAGS) $$(patsubst $$($(1)_BLDPRF)%,$$($(1)_SRCPRF)%,$$(subst .o,.cpp,$$@))
+
+ $$($(1)_BLDPRF)/$(1): $$($(1)_OBJECTS) $$($(1)_LIBRARIES) $$($(1)_ARCHIVES) $$(filter-out $$(wildcard $$($(1)_BUILDDIR)), $$($(1)_BUILDDIR))
+- $(CXX) $$($(1)_OBJECTS) $$($(1)_ARCHIVES) $$($(1)_LOCALLDFLAGS) $$($(1)_LOCALLIBRARIES) $$($(1)_LDFLAGS) $(LDFLAGS) -o $$@
++ $(CXX) $(LDFLAGS) $$($(1)_OBJECTS) $$($(1)_ARCHIVES) $$($(1)_LOCALLDFLAGS) $$($(1)_LOCALLIBRARIES) $$($(1)_LDFLAGS) -o $$@
+
+ install-$(1)-headers: $$(patsubst %,$$($(1)_SRCPRF)/%,$$($(1)_HEADERS))
+ mkdir -p $(DESTDIR)/$(pkgincludedir)
+@@ -264,7 +264,7 @@ $$($(2)_CXXOBJECTS): Makefile.config $$(
+ $(CXX) -c -o $$@ $(MODULE_CFLAGS) $(CFLAGS) $(CXXFLAGS) $$($(2)_CFLAGS) $$($$(patsubst %.o,%_cpp_CFLAGS,$$(notdir $$@))) $$($(2)_CFLAGS) $$(patsubst $$($(2)_BLDPRF)%,$$($(2)_SRCPRF)%,$$(subst .o,.cpp,$$@))
+
+ $$($(2)_BLDPRF)/$(1): $$($(2)_OBJECTS) $$($(2)_LIBRARIES) $$($(2)_ARCHIVES) $$(filter-out $$(wildcard $$($(2)_BUILDDIR)), $$($(2)_BUILDDIR))
+- $(CXX) $(MODULE_LDFLAGS) $$($(2)_OBJECTS) $$($(2)_LOCALLDFLAGS) $$($(2)_LOCALLIBRARIES) $$($(2)_ARCHIVES) $(LDFLAGS) $$($(2)_LDFLAGS) -o $$@
++ $(CXX) $(LDFLAGS) $(MODULE_LDFLAGS) $$($(2)_OBJECTS) $$($(2)_LOCALLDFLAGS) $$($(2)_LOCALLIBRARIES) $$($(2)_ARCHIVES) $$($(2)_LDFLAGS) -o $$@
+
+ install-$(2)-headers: $$(patsubst %,$$($(2)_SRCPRF)/%,$$($(2)_HEADERS))
+ mkdir -p $(DESTDIR)/$(pkgincludedir)