summaryrefslogtreecommitdiff
path: root/libs/backends/jack/weak_libjack.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-10-23 13:01:45 +0200
committerRobin Gareus <robin@gareus.org>2014-10-23 16:53:13 +0200
commitf3ff1b9669a2e56f73867ab7ebe3128833c4ab93 (patch)
tree31696c136665a3af14edf675022c56ca1d8d21c0 /libs/backends/jack/weak_libjack.h
parenta7ca603ab649a8bc6f010b519001e11dc7aac603 (diff)
weak/runtime jack linking: load libjack dynamically at runtime
Diffstat (limited to 'libs/backends/jack/weak_libjack.h')
-rw-r--r--libs/backends/jack/weak_libjack.h188
1 files changed, 188 insertions, 0 deletions
diff --git a/libs/backends/jack/weak_libjack.h b/libs/backends/jack/weak_libjack.h
new file mode 100644
index 0000000000..3985014dfb
--- /dev/null
+++ b/libs/backends/jack/weak_libjack.h
@@ -0,0 +1,188 @@
+/* runtime/weak dynamic JACK linking
+ *
+ * (C) 2014 Robin Gareus <robin@gareus.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+#ifndef _WEAK_JACK_H
+#define _WEAK_JACK_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/** check if libjack is available
+ *
+ * return 0 if libjack is dynamically linked of was
+ * successfully dl-opened. Otherwise:
+ *
+ * -1: library was not initialized
+ * -2: libjack was not found
+ * > 0 bitwise flags:
+ * 1: a required function was not found in libjack
+ * 2: jack_client_open was not found in libjack
+ */
+int have_libjack(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef USE_WEAK_JACK
+
+/* <jack/jack.h> */
+#define jack_client_open WJACK_client_openX
+#define jack_client_close WJACK_client_close
+#define jack_get_client_name WJACK_get_client_name
+#define jack_get_sample_rate WJACK_get_sample_rate
+#define jack_get_buffer_size WJACK_get_buffer_size
+#define jack_frames_since_cycle_start WJACK_frames_since_cycle_start
+#define jack_frame_time WJACK_frame_time
+#define jack_last_frame_time WJACK_last_frame_time
+#define jack_cpu_load WJACK_cpu_load
+#define jack_is_realtime WJACK_is_realtime
+
+#define jack_set_freewheel WJACK_set_freewheel
+#define jack_set_buffer_size WJACK_set_buffer_size
+
+#define jack_on_shutdown WJACK_on_shutdown
+#define jack_on_info_shutdown WJACK_on_info_shutdown
+#define jack_set_process_callback WJACK_set_process_callback
+#define jack_set_freewheel_callback WJACK_set_freewheel_callback
+#define jack_set_buffer_size_callback WJACK_set_buffer_size_callback
+#define jack_set_sample_rate_callback WJACK_set_sample_rate_callback
+#define jack_set_port_registration_callback WJACK_set_port_registration_callback
+#define jack_set_port_connect_callback WJACK_set_port_connect_callback
+#define jack_set_graph_order_callback WJACK_set_graph_order_callback
+#define jack_set_xrun_callback WJACK_set_xrun_callback
+#define jack_set_latency_callback WJACK_set_latency_callback
+#define jack_set_error_function WJACK_set_error_function
+
+#define jack_activate WJACK_activate
+#define jack_deactivate WJACK_deactivate
+
+#define jack_recompute_total_latencies WJACK_recompute_total_latencies
+#define jack_port_get_total_latency WJACK_port_get_total_latency
+#define jack_port_get_latency_range WJACK_port_get_latency_range
+#define jack_port_set_latency_range WJACK_port_set_latency_range
+#define jack_port_get_buffer WJACK_port_get_buffer
+#define jack_port_request_monitor WJACK_port_request_monitor
+#define jack_port_ensure_monitor WJACK_port_ensure_monitor
+#define jack_port_monitoring_input WJACK_port_monitoring_input
+
+#define jack_port_name WJACK_port_name
+#define jack_port_flags WJACK_port_flags
+#define jack_get_ports WJACK_get_ports
+#define jack_port_name_size WJACK_port_name_size
+#define jack_port_type_size WJACK_port_type_size
+#define jack_port_type_get_buffer_size WJACK_port_type_get_buffer_size
+#define jack_port_by_name WJACK_port_by_name
+#define jack_port_by_id WJACK_port_by_id
+#define jack_port_set_name WJACK_port_set_name
+#define jack_port_disconnect WJACK_port_disconnect
+#define jack_port_register WJACK_port_register
+#define jack_port_unregister WJACK_port_unregister
+#define jack_port_type WJACK_port_type
+#define jack_port_get_connections WJACK_port_get_connections
+#define jack_port_get_all_connections WJACK_port_get_all_connections
+#define jack_connect WJACK_connect
+#define jack_disconnect WJACK_disconnect
+#define jack_free WJACK_free
+
+#define jack_cycle_wait WJACK_cycle_wait
+#define jack_cycle_signal WJACK_cycle_signal
+#define jack_set_process_thread WJACK_set_process_thread
+#define jack_set_thread_init_callback WJACK_set_thread_init_callback
+
+/* <jack/transport.h> */
+#define jack_get_current_transport_frame WJACK_get_current_transport_frame
+#define jack_transport_locate WJACK_transport_locate
+#define jack_transport_start WJACK_transport_start
+#define jack_transport_stop WJACK_transport_stop
+#define jack_transport_query WJACK_transport_query
+#define jack_set_sync_callback WJACK_set_sync_callback
+#define jack_set_timebase_callback WJACK_set_timebase_callback
+#define jack_release_timebase WJACK_release_timebase
+
+/* <jack/midiport.h> */
+#define jack_midi_get_event_count WJACK_midi_get_event_count
+#define jack_midi_event_get WJACK_midi_event_get
+#define jack_midi_event_write WJACK_midi_event_write
+#define jack_midi_clear_buffer WJACK_midi_clear_buffer
+
+/* <jack/session.h> */
+#define jack_set_session_callback WJACK_set_session_callback
+#define jack_session_reply WJACK_session_reply
+#define jack_session_event_free WJACK_session_event_free
+
+/* <jack/ringbuffer.h> */
+#define jack_ringbuffer_create WJACK_ringbuffer_create
+#define jack_ringbuffer_free WJACK_ringbuffer_free
+#define jack_ringbuffer_reset WJACK_ringbuffer_reset
+#define jack_ringbuffer_read_advance WJACK_ringbuffer_read_advance
+#define jack_ringbuffer_write_advance WJACK_ringbuffer_write_advance
+#define jack_ringbuffer_read_space WJACK_ringbuffer_read_space
+#define jack_ringbuffer_write_space WJACK_ringbuffer_write_space
+#define jack_ringbuffer_read WJACK_ringbuffer_read
+#define jack_ringbuffer_write WJACK_ringbuffer_write
+#define jack_ringbuffer_mlock WJACK_ringbuffer_mlock
+
+/* <jack/thread.h> */
+#define jack_client_real_time_priority WJACK_client_real_time_priority
+#define jack_client_max_real_time_priority WJACK_client_max_real_time_priority
+#define jack_acquire_real_time_scheduling WJACK_acquire_real_time_scheduling
+#define jack_client_create_thread WJACK_client_create_thread
+#define jack_drop_real_time_scheduling WJACK_drop_real_time_scheduling
+#define jack_client_stop_thread WJACK_client_stop_thread
+#define jack_client_kill_thread WJACK_client_kill_thread
+
+/* var-args hack */
+#define jack_client_open1 WJACK_client_open1
+#define jack_client_open2 WJACK_client_open2
+#include <jack/types.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+jack_client_t * WJACK_client_open1 (
+ const char *client_name,
+ jack_options_t options, jack_status_t *status);
+
+jack_client_t * WJACK_client_open2 (
+ const char *client_name,
+ jack_options_t options, jack_status_t *status, const char *uuid);
+
+#ifdef __cplusplus
+}
+#endif
+
+#else
+
+/* var-args hack */
+#define jack_client_open1 jack_client_open
+#define jack_client_open2 jack_client_open
+
+#endif // USE_WEAK_JACK
+
+#include <jack/jack.h>
+#include <jack/transport.h>
+#include <jack/ringbuffer.h>
+#include <jack/midiport.h>
+#include <jack/session.h>
+#include <jack/thread.h>
+
+#endif // _WEAK_JACK_H