@@ -4,6 +4,7 @@ man/*.1 | |||
.stamp_* | |||
.DS_Store | |||
__pycache__ | |||
*.dll | |||
*.pyc | |||
*.pkg | |||
android/.server/ | |||
@@ -14,3 +15,7 @@ codeBlocks | |||
macos/package.xml | |||
macos/package-welcome.txt | |||
# windows release files | |||
windows/inno/version.iss | |||
windows/inno/win32 | |||
windows/inno/win64 |
@@ -132,6 +132,7 @@ def build(bld): | |||
] | |||
includes = ['../windows' ] + includes | |||
libsuffix = "64" if (bld.env['DEST_CPU'] == "x86_64" and not bld.variant) else "" | |||
buildbindir = os.path.join('..', bld.path.get_bld().srcpath().rstrip(bld.path.srcpath())) | |||
staticbuild = bool('BUILD_STATIC' in bld.env and bld.env['BUILD_STATIC']) | |||
uselib.append('REGEX') | |||
uselib.append('WS2_32') | |||
@@ -145,17 +146,23 @@ def build(bld): | |||
if bld.env['IS_MACOSX']: | |||
clientlib.framework = ['CoreAudio', 'Accelerate'] | |||
clientlib.defines = 'HAVE_CONFIG_H' | |||
clientlib.includes = includes | |||
clientlib.name = 'clientlib' | |||
clientlib.target = 'jack'+libsuffix | |||
clientlib.install_path = '${LIBDIR}' | |||
clientlib.use = uselib | |||
if bld.env['IS_WINDOWS']: | |||
clientlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' | |||
clientlib.env['cxxstlib_PATTERN'] = 'lib%s.a' | |||
clientlib.env['implib_PATTERN'] = 'lib%s.dll.a' | |||
clientlib.install_path = '${LIBDIR}' | |||
clientlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' | |||
clientlib.env['cxxstlib_PATTERN'] = 'lib%s.a' | |||
clientlib.env['implib_PATTERN'] = 'lib%s.dll.a' | |||
if staticbuild: | |||
clientlib.env['SHLIB_MARKER'] = '' | |||
clientlib.env.append_value('LINKFLAGS', ['-static-libstdc++', '--disable-auto-import']) | |||
clientlib.env.append_value('LINKFLAGS', ['-Wl,--output-def,lib%s.def' % clientlib.target]) | |||
bld.install_files(clientlib.install_path, [os.path.join(buildbindir, 'lib%s.def' % clientlib.target)]) | |||
if bld.env['AUTOSTART_METHOD'] == 'dbus': | |||
clientlib.use.append('DBUS-1') | |||
clientlib.includes = includes | |||
clientlib.name = 'clientlib' | |||
clientlib.target = 'jack'+libsuffix | |||
clientlib.source = [] + common_libsources | |||
clientlib.source += [ | |||
'JackLibClient.cpp', | |||
@@ -202,15 +209,6 @@ def build(bld): | |||
if bld.env['IS_SUN']: | |||
clientlib.env.append_value('LINKFLAGS', '-lnsl -lsocket') | |||
if bld.env['IS_WINDOWS']: | |||
# remove switch to shared binaries if possible, as we most likely want static builds on Windows | |||
if staticbuild: | |||
clientlib.env['SHLIB_MARKER'] = '' | |||
# statically link libjack to libstdc++, some client apps like ardour come | |||
# with a different version of libstdc++.dll that takes precedence and results | |||
# in missing symbols during runtime | |||
clientlib.env.append_value('LINKFLAGS', ['-static-libstdc++', '--disable-auto-import']) | |||
if bld.variant: | |||
# if there is variant defined, we expect it to be the 32bit client lib one | |||
# we don't want to build other stuff in this variant | |||
@@ -223,6 +221,7 @@ def build(bld): | |||
serverlib.includes = includes | |||
serverlib.name = 'serverlib' | |||
serverlib.target = 'jackserver'+libsuffix | |||
serverlib.install_path = '${LIBDIR}' | |||
serverlib.use = uselib | |||
if bld.env['IS_WINDOWS']: | |||
serverlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' | |||
@@ -231,7 +230,8 @@ def build(bld): | |||
if staticbuild: | |||
serverlib.env['SHLIB_MARKER'] = '' | |||
serverlib.env.append_value('LINKFLAGS', ['-static-libstdc++', '--disable-auto-import']) | |||
serverlib.install_path = '${LIBDIR}' | |||
serverlib.env.append_value('LINKFLAGS', ['-Wl,--output-def,lib%s.def' % serverlib.target]) | |||
bld.install_files(serverlib.install_path, [os.path.join(buildbindir, 'lib%s.def' % serverlib.target)]) | |||
serverlib.source = [] + common_libsources | |||
serverlib.source += [ | |||
'JackAudioDriver.cpp', | |||
@@ -325,17 +325,20 @@ def build(bld): | |||
netlib.includes = includes | |||
netlib.name = 'netlib' | |||
netlib.target = 'jacknet'+libsuffix | |||
netlib.install_path = '${LIBDIR}' | |||
netlib.use = ['SAMPLERATE', 'CELT', 'OPUS', 'PTHREAD'] | |||
if bld.env['IS_WINDOWS']: | |||
netlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' | |||
netlib.env['cxxstlib_PATTERN'] = 'lib%s.a' | |||
netlib.env['implib_PATTERN'] = 'lib%s.dll.a' | |||
if staticbuild: | |||
netlib.env['SHLIB_MARKER'] = '' | |||
netlib.use += ['WS2_32', 'WINMM'] | |||
netlib.use += ['WS2_32', 'WINMM'] | |||
netlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' | |||
netlib.env['cxxstlib_PATTERN'] = 'lib%s.a' | |||
netlib.env['implib_PATTERN'] = 'lib%s.dll.a' | |||
if staticbuild: | |||
netlib.env['SHLIB_MARKER'] = '' | |||
netlib.env.append_value('LINKFLAGS', ['-static-libstdc++', '--disable-auto-import']) | |||
netlib.env.append_value('LINKFLAGS', ['-Wl,--output-def,lib%s.def' % netlib.target]) | |||
bld.install_files(netlib.install_path, [os.path.join(buildbindir, 'lib%s.def' % netlib.target)]) | |||
elif not bld.env['IS_MACOSX']: | |||
netlib.use += ['RT'] | |||
netlib.install_path = '${LIBDIR}' | |||
netlib.use += ['RT'] | |||
netlib.source = [ | |||
'JackNetAPI.cpp', | |||
'JackNetInterface.cpp', | |||
@@ -792,7 +792,7 @@ HTML_HEADER = | |||
# each generated HTML page. If it is left blank doxygen will generate a | |||
# standard footer. | |||
HTML_FOOTER = | |||
HTML_FOOTER = @SRCDIR@/no_date_footer.html | |||
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading | |||
# style sheet that is used by each HTML page. It can be used to | |||
@@ -2,35 +2,21 @@ | |||
# encoding: utf-8 | |||
example_programs = { | |||
'jack_freewheel' : 'freewheel.c', | |||
'jack_connect' : 'connect.c', | |||
'jack_lsp' : 'lsp.c', | |||
'jack_cpu_load' : 'cpu_load.c', | |||
'jack_latent_client' : 'latent_client.c', | |||
'jack_metro' : 'metro.c', | |||
'jack_midi_latency_test' : 'midi_latency_test.c', | |||
'jack_midiseq' : 'midiseq.c', | |||
'jack_midisine' : 'midisine.c', | |||
'jack_net_master' : 'netmaster.c', | |||
'jack_net_slave' : 'netslave.c', | |||
'jack_server_control' : 'server_control.cpp', | |||
'jack_showtime' : 'showtime.c', | |||
'jack_simdtests' : 'simdtests.cpp', | |||
'jack_simple_client' : 'simple_client.c', | |||
'jack_zombie' : 'zombie.c', | |||
'jack_load' : 'ipload.c', | |||
'jack_unload' : 'ipunload.c', | |||
'jack_alias' : 'alias.c', | |||
'jack_bufsize' : 'bufsize.c', | |||
'jack_wait' : 'wait.c', | |||
'jack_samplerate' : 'samplerate.c', | |||
'jack_evmon' : 'evmon.c', | |||
'jack_monitor_client' : 'monitor_client.c', | |||
'jack_thru' : 'thru_client.c', | |||
'jack_cpu_load' : 'cpu_load.c', | |||
'jack_simple_session_client' : 'simple_session_client.c', | |||
'jack_session_notify' : 'session_notify.c', | |||
'jack_server_control' : 'server_control.cpp', | |||
'jack_net_slave' : 'netslave.c', | |||
'jack_net_master' : 'netmaster.c', | |||
'jack_latent_client' : 'latent_client.c', | |||
'jack_midi_dump' : 'midi_dump.c', | |||
'jack_midi_latency_test' : 'midi_latency_test.c', | |||
'jack_simdtests' : 'simdtests.cpp', | |||
'jack_property' : 'property.c', | |||
'jack_thru' : 'thru_client.c', | |||
'jack_zombie' : 'zombie.c', | |||
} | |||
example_libs = { | |||
@@ -38,12 +24,8 @@ example_libs = { | |||
} | |||
def configure(conf): | |||
conf.env['BUILD_EXAMPLE_CLIENT_TRANSPORT'] = conf.env['READLINE'] | |||
conf.env['BUILD_EXAMPLE_CLIENT_REC'] = conf.env['SNDFILE'] | |||
conf.env['BUILD_EXAMPLE_ALSA_IO'] = conf.env['SAMPLERATE'] and conf.env['BUILD_DRIVER_ALSA'] | |||
def build(bld): | |||
if bld.env['IS_LINUX']: | |||
os_incdir = ['../linux', '../posix'] | |||
@@ -78,24 +60,13 @@ def build(bld): | |||
prog.use += ['RT', 'M'] | |||
if bld.env['IS_SUN']: | |||
prog.use += ['M'] | |||
if bld.env['IS_WINDOWS'] and bld.env['BUILD_STATIC']: | |||
prog.env['LIB_PTHREAD'] = [':libwinpthread.a'] | |||
#prog.cflags = ['-Wno-deprecated-declarations', '-Wno-misleading-indentation'] | |||
#prog.cxxflags = ['-Wno-deprecated-declarations', '-Wno-misleading-indentation'] | |||
prog.target = example_program | |||
if bld.env['BUILD_EXAMPLE_CLIENT_TRANSPORT']: | |||
prog = bld(features = 'c cprogram') | |||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||
prog.source = 'transport.c' | |||
prog.use = ['clientlib'] | |||
if bld.env['IS_LINUX']: | |||
prog.use += ['RT', 'READLINE'] | |||
if bld.env['IS_MACOSX']: | |||
prog.use += ['READLINE'] | |||
if bld.env['IS_WINDOWS']: | |||
prog.use += ['READLINE'] | |||
prog.target = 'jack_transport' | |||
if bld.env['BUILD_EXAMPLE_CLIENT_REC']: | |||
prog = bld(features = 'c cprogram') | |||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||
@@ -109,32 +80,10 @@ def build(bld): | |||
prog.use += ['RT', 'SNDFILE'] | |||
if bld.env['IS_WINDOWS']: | |||
prog.uselib = ['SNDFILE'] | |||
if bld.env['BUILD_STATIC']: | |||
prog.env['LIB_PTHREAD'] = [':libwinpthread.a'] | |||
prog.target = 'jack_rec' | |||
if bld.env['IS_LINUX'] or bld.env['IS_MACOSX']: | |||
prog = bld(features = 'c cprogram') | |||
prog.includes = os_incdir + ['.', '..', '../common/jack', '../common'] | |||
prog.source = ['netsource.c', '../common/netjack_packet.c'] | |||
prog.env.append_value('CFLAGS', '-DNO_JACK_ERROR') | |||
prog.use = ['CELT', 'SAMPLERATE', 'OPUS', 'M', 'clientlib'] | |||
prog.target = 'jack_netsource' | |||
prog.defines = ['HAVE_CONFIG_H'] | |||
if bld.env['IS_LINUX'] and bld.env['BUILD_EXAMPLE_ALSA_IO']: | |||
prog = bld(features = 'c cprogram') | |||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||
prog.source = ['alsa_in.c', '../common/memops.c'] | |||
prog.env.append_value('CFLAGS', '-DNO_JACK_ERROR') | |||
prog.use = ['clientlib', 'ALSA', 'SAMPLERATE', 'M'] | |||
prog.target = 'alsa_in' | |||
prog = bld(features = 'c cprogram') | |||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||
prog.source = ['alsa_out.c', '../common/memops.c'] | |||
prog.env.append_value('CFLAGS', '-DNO_JACK_ERROR') | |||
prog.use = ['clientlib', 'ALSA', 'SAMPLERATE', 'M'] | |||
prog.target = 'alsa_out' | |||
for example_lib, example_lib_source in list(example_libs.items()): | |||
lib = bld(features = 'c cshlib') | |||
if not bld.env['IS_WINDOWS']: | |||
@@ -144,9 +93,7 @@ def build(bld): | |||
lib.source = example_lib_source | |||
if bld.env['IS_SUN']: | |||
lib.env.append_value('LINKFLAGS', '-lm') | |||
if bld.env['IS_WINDOWS'] and bld.env['BUILD_STATIC']: | |||
prog.env['LIB_PTHREAD'] = [':libwinpthread.a'] | |||
lib.use = 'serverlib' | |||
lib.install_path = '${ADDON_DIR}/' | |||
if not bld.env['IS_WINDOWS']: | |||
bld.symlink_as('${PREFIX}/bin/jack_disconnect', 'jack_connect') | |||
bld.install_files('${PREFIX}/bin', 'jack_control', chmod=0o755) |
@@ -352,21 +352,22 @@ int JackAlsaDriver::Open(jack_nframes_t nframes, | |||
capture_latency, | |||
playback_latency, | |||
midi); | |||
if (fDriver) { | |||
// ALSA driver may have changed the in/out values | |||
fCaptureChannels = ((alsa_driver_t *)fDriver)->capture_nchannels; | |||
fPlaybackChannels = ((alsa_driver_t *)fDriver)->playback_nchannels; | |||
if (JackServerGlobals::on_device_reservation_loop != NULL) { | |||
device_reservation_loop_running = true; | |||
if (JackPosixThread::StartImp(&fReservationLoopThread, 0, 0, on_device_reservation_loop, NULL) != 0) { | |||
device_reservation_loop_running = false; | |||
} | |||
} | |||
return 0; | |||
} else { | |||
if (!fDriver) { | |||
Close(); | |||
return -1; | |||
} | |||
// ALSA driver may have changed the in/out values | |||
fCaptureChannels = ((alsa_driver_t *)fDriver)->capture_nchannels; | |||
fPlaybackChannels = ((alsa_driver_t *)fDriver)->playback_nchannels; | |||
if (JackServerGlobals::on_device_reservation_loop != NULL) { | |||
device_reservation_loop_running = true; | |||
if (JackPosixThread::StartImp(&fReservationLoopThread, 0, 0, on_device_reservation_loop, NULL) != 0) { | |||
device_reservation_loop_running = false; | |||
} | |||
} | |||
return 0; | |||
} | |||
int JackAlsaDriver::Close() | |||
@@ -837,10 +837,8 @@ alsa_driver_set_parameters (alsa_driver_t *driver, | |||
if (driver->playback_nchannels > driver->capture_nchannels) { | |||
driver->max_nchannels = driver->playback_nchannels; | |||
driver->user_nchannels = driver->capture_nchannels; | |||
} else { | |||
driver->max_nchannels = driver->capture_nchannels; | |||
driver->user_nchannels = driver->playback_nchannels; | |||
} | |||
alsa_driver_setup_io_function_pointers (driver); | |||
@@ -2040,7 +2038,6 @@ alsa_driver_new (char *name, char *playback_alsa_device, | |||
driver->hw = 0; | |||
driver->capture_and_playback_not_synced = FALSE; | |||
driver->max_nchannels = 0; | |||
driver->user_nchannels = 0; | |||
driver->playback_nchannels = user_playback_nchnls; | |||
driver->capture_nchannels = user_capture_nchnls; | |||
driver->playback_sample_bytes = (shorts_first ? 2:4); | |||
@@ -72,7 +72,6 @@ typedef struct _alsa_driver { | |||
unsigned long *capture_interleave_skip; | |||
unsigned long *playback_interleave_skip; | |||
channel_t max_nchannels; | |||
channel_t user_nchannels; | |||
channel_t playback_nchannels; | |||
channel_t capture_nchannels; | |||
unsigned long playback_sample_bytes; | |||
@@ -633,7 +633,7 @@ JackCoreMidiDriver::Start() | |||
jack_info("JackCoreMidiDriver::Start - Enabling physical input ports."); | |||
for (; pi_count < num_physical_inputs; pi_count++) { | |||
if (physical_input_ports[pi_count]->Start() < 0) { | |||
if (!physical_input_ports[pi_count]->Start()) { | |||
jack_error("JackCoreMidiDriver::Start - Failed to enable physical " | |||
"input port."); | |||
goto stop_physical_input_ports; | |||
@@ -643,7 +643,7 @@ JackCoreMidiDriver::Start() | |||
jack_info("JackCoreMidiDriver::Start - Enabling physical output ports."); | |||
for (; po_count < num_physical_outputs; po_count++) { | |||
if (physical_output_ports[po_count]->Start() < 0) { | |||
if (!physical_output_ports[po_count]->Start()) { | |||
jack_error("JackCoreMidiDriver::Start - Failed to enable physical " | |||
"output port."); | |||
goto stop_physical_output_ports; | |||
@@ -653,7 +653,7 @@ JackCoreMidiDriver::Start() | |||
jack_info("JackCoreMidiDriver::Start - Enabling virtual input ports."); | |||
for (; vi_count < num_virtual_inputs; vi_count++) { | |||
if (virtual_input_ports[vi_count]->Start() < 0) { | |||
if (!virtual_input_ports[vi_count]->Start()) { | |||
jack_error("JackCoreMidiDriver::Start - Failed to enable virtual " | |||
"input port."); | |||
goto stop_virtual_input_ports; | |||
@@ -663,7 +663,7 @@ JackCoreMidiDriver::Start() | |||
jack_info("JackCoreMidiDriver::Start - Enabling virtual output ports."); | |||
for (; vo_count < num_virtual_outputs; vo_count++) { | |||
if (virtual_output_ports[vo_count]->Start() < 0) { | |||
if (!virtual_output_ports[vo_count]->Start()) { | |||
jack_error("JackCoreMidiDriver::Start - Failed to enable virtual " | |||
"output port."); | |||
goto stop_virtual_output_ports; | |||
@@ -676,28 +676,28 @@ JackCoreMidiDriver::Start() | |||
stop_virtual_output_ports: | |||
for (int i = 0; i < vo_count; i++) { | |||
if (virtual_output_ports[i]->Stop() < 0) { | |||
if (!virtual_output_ports[i]->Stop()) { | |||
jack_error("JackCoreMidiDriver::Start - Failed to disable virtual " | |||
"output port."); | |||
} | |||
} | |||
stop_virtual_input_ports: | |||
for (int i = 0; i < vi_count; i++) { | |||
if (virtual_input_ports[i]->Stop() < 0) { | |||
if (!virtual_input_ports[i]->Stop()) { | |||
jack_error("JackCoreMidiDriver::Start - Failed to disable virtual " | |||
"input port."); | |||
} | |||
} | |||
stop_physical_output_ports: | |||
for (int i = 0; i < po_count; i++) { | |||
if (physical_output_ports[i]->Stop() < 0) { | |||
if (!physical_output_ports[i]->Stop()) { | |||
jack_error("JackCoreMidiDriver::Start - Failed to disable " | |||
"physical output port."); | |||
} | |||
} | |||
stop_physical_input_ports: | |||
for (int i = 0; i < pi_count; i++) { | |||
if (physical_input_ports[i]->Stop() < 0) { | |||
if (!physical_input_ports[i]->Stop()) { | |||
jack_error("JackCoreMidiDriver::Start - Failed to disable " | |||
"physical input port."); | |||
} | |||
@@ -716,7 +716,7 @@ JackCoreMidiDriver::Stop() | |||
jack_info("JackCoreMidiDriver::Stop - disabling physical input ports."); | |||
for (int i = 0; i < num_physical_inputs; i++) { | |||
if (physical_input_ports[i]->Stop() < 0) { | |||
if (!physical_input_ports[i]->Stop()) { | |||
jack_error("JackCoreMidiDriver::Stop - Failed to disable physical " | |||
"input port."); | |||
result = -1; | |||
@@ -726,7 +726,7 @@ JackCoreMidiDriver::Stop() | |||
jack_info("JackCoreMidiDriver::Stop - disabling physical output ports."); | |||
for (int i = 0; i < num_physical_outputs; i++) { | |||
if (physical_output_ports[i]->Stop() < 0) { | |||
if (!physical_output_ports[i]->Stop()) { | |||
jack_error("JackCoreMidiDriver::Stop - Failed to disable physical " | |||
"output port."); | |||
result = -1; | |||
@@ -736,7 +736,7 @@ JackCoreMidiDriver::Stop() | |||
jack_info("JackCoreMidiDriver::Stop - disabling virtual input ports."); | |||
for (int i = 0; i < num_virtual_inputs; i++) { | |||
if (virtual_input_ports[i]->Stop() < 0) { | |||
if (!virtual_input_ports[i]->Stop()) { | |||
jack_error("JackCoreMidiDriver::Stop - Failed to disable virtual " | |||
"input port."); | |||
result = -1; | |||
@@ -746,7 +746,7 @@ JackCoreMidiDriver::Stop() | |||
jack_info("JackCoreMidiDriver::Stop - disabling virtual output ports."); | |||
for (int i = 0; i < num_virtual_outputs; i++) { | |||
if (virtual_output_ports[i]->Stop() < 0) { | |||
if (!virtual_output_ports[i]->Stop()) { | |||
jack_error("JackCoreMidiDriver::Stop - Failed to disable virtual " | |||
"output port."); | |||
result = -1; | |||
@@ -825,7 +825,7 @@ extern "C" { | |||
desc = jack_driver_descriptor_construct("coremidi", JackDriverSlave, "Apple CoreMIDI API based MIDI backend", &filler); | |||
value.ui = 0; | |||
value.ui = 0; | |||
jack_driver_descriptor_add_parameter(desc, &filler, "inchannels", 'i', JackDriverParamUInt, &value, NULL, "CoreMIDI virtual bus", NULL); | |||
jack_driver_descriptor_add_parameter(desc, &filler, "outchannels", 'o', JackDriverParamUInt, &value, NULL, "CoreMIDI virtual bus", NULL); | |||
@@ -0,0 +1,94 @@ | |||
#! /usr/bin/python3 | |||
# encoding: utf-8 | |||
example_tools = { | |||
'jack_alias' : 'alias.c', | |||
'jack_bufsize' : 'bufsize.c', | |||
'jack_connect' : 'connect.c', | |||
'jack_evmon' : 'evmon.c', | |||
'jack_freewheel' : 'freewheel.c', | |||
'jack_load' : 'ipload.c', | |||
'jack_lsp' : 'lsp.c', | |||
'jack_midi_dump' : 'midi_dump.c', | |||
'jack_monitor_client' : 'monitor_client.c', | |||
'jack_property' : 'property.c', | |||
'jack_samplerate' : 'samplerate.c', | |||
'jack_session_notify' : 'session_notify.c', | |||
'jack_unload' : 'ipunload.c', | |||
'jack_wait' : 'wait.c', | |||
} | |||
def configure(conf): | |||
conf.env['BUILD_EXAMPLE_ALSA_IO'] = conf.env['SAMPLERATE'] and conf.env['BUILD_DRIVER_ALSA'] | |||
conf.env['BUILD_EXAMPLE_CLIENT_TRANSPORT'] = conf.env['READLINE'] | |||
def build(bld): | |||
if bld.env['IS_LINUX']: | |||
os_incdir = ['../linux', '../posix'] | |||
if bld.env['IS_MACOSX']: | |||
os_incdir = ['../macosx', '../posix'] | |||
if bld.env['IS_SUN']: | |||
os_incdir = ['../solaris', '../posix'] | |||
if bld.env['IS_WINDOWS']: | |||
os_incdir = ['../windows'] | |||
for example_tool, example_tool_source in list(example_tools.items()): | |||
if bld.env['IS_MACOSX']: | |||
prog = bld(features='c cprogram', framework = ['Foundation']) | |||
else: | |||
prog = bld(features='c cprogram') | |||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||
prog.source = example_tool_source | |||
prog.use = ['clientlib'] | |||
if bld.env['IS_LINUX']: | |||
prog.use += ['RT', 'M'] | |||
if bld.env['IS_SUN']: | |||
prog.use += ['M'] | |||
if bld.env['IS_WINDOWS'] and bld.env['BUILD_STATIC']: | |||
prog.env['LIB_PTHREAD'] = [':libwinpthread.a'] | |||
#prog.cflags = ['-Wno-deprecated-declarations', '-Wno-misleading-indentation'] | |||
#prog.cxxflags = ['-Wno-deprecated-declarations', '-Wno-misleading-indentation'] | |||
prog.target = example_tool | |||
if bld.env['BUILD_EXAMPLE_CLIENT_TRANSPORT']: | |||
prog = bld(features = 'c cprogram') | |||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||
prog.source = 'transport.c' | |||
prog.use = ['clientlib'] | |||
if bld.env['IS_LINUX']: | |||
prog.use += ['RT', 'READLINE'] | |||
if bld.env['IS_MACOSX']: | |||
prog.use += ['READLINE'] | |||
if bld.env['IS_WINDOWS']: | |||
prog.use += ['READLINE'] | |||
if bld.env['BUILD_STATIC']: | |||
prog.env['LIB_PTHREAD'] = [':libwinpthread.a'] | |||
prog.target = 'jack_transport' | |||
if bld.env['IS_LINUX'] or bld.env['IS_MACOSX']: | |||
prog = bld(features = 'c cprogram') | |||
prog.includes = os_incdir + ['.', '..', '../common/jack', '../common'] | |||
prog.source = ['netsource.c', '../common/netjack_packet.c'] | |||
prog.env.append_value('CFLAGS', '-DNO_JACK_ERROR') | |||
prog.use = ['CELT', 'SAMPLERATE', 'OPUS', 'M', 'clientlib'] | |||
prog.target = 'jack_netsource' | |||
prog.defines = ['HAVE_CONFIG_H'] | |||
if bld.env['IS_LINUX'] and bld.env['BUILD_EXAMPLE_ALSA_IO']: | |||
prog = bld(features = 'c cprogram') | |||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||
prog.source = ['alsa_in.c', '../common/memops.c'] | |||
prog.env.append_value('CFLAGS', '-DNO_JACK_ERROR') | |||
prog.use = ['clientlib', 'ALSA', 'SAMPLERATE', 'M'] | |||
prog.target = 'alsa_in' | |||
prog = bld(features = 'c cprogram') | |||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||
prog.source = ['alsa_out.c', '../common/memops.c'] | |||
prog.env.append_value('CFLAGS', '-DNO_JACK_ERROR') | |||
prog.use = ['clientlib', 'ALSA', 'SAMPLERATE', 'M'] | |||
prog.target = 'alsa_out' | |||
if not bld.env['IS_WINDOWS']: | |||
bld.symlink_as('${PREFIX}/bin/jack_disconnect', 'jack_connect') | |||
bld.install_files('${PREFIX}/bin', 'jack_control', chmod=0o755) |
@@ -24,7 +24,7 @@ | |||
#define jack_server_dir "server" | |||
#define jack_client_dir "client" | |||
#define JACK_DEFAULT_DRIVER "portaudio" | |||
#define JACK_LOCATION "C:/Program Files/Jack" | |||
#define JACK_LOCATION "C:\\Program Files\\JACK2" | |||
#ifndef ADDON_DIR | |||
#define ADDON_DIR "jack" | |||
@@ -39,8 +39,10 @@ Source: "win32\bin\qjackctl.exe"; DestDir: "{app}\qjackctl"; Components: qjackct | |||
Source: "Qt5*.dll"; DestDir: "{app}\qjackctl"; Components: qjackctl; | |||
Source: "qwindows.dll"; DestDir: "{app}\qjackctl\platforms"; Components: qjackctl; | |||
; dev | |||
Source: "win32\include\jack\*.h"; DestDir: "{app}\include"; Components: dev; | |||
Source: "win32\include\jack\*.h"; DestDir: "{app}\include\jack"; Components: dev; | |||
Source: "win32\lib\*.a"; DestDir: "{app}\lib"; Components: dev; | |||
Source: "win32\lib\*.def"; DestDir: "{app}\lib"; Components: dev; | |||
Source: "win32\lib\*.lib"; DestDir: "{app}\lib"; Components: dev; | |||
Source: "win32\lib\jack\*.a"; DestDir: "{app}\lib\jack"; Components: dev; | |||
[Icons] | |||
@@ -35,13 +35,19 @@ Source: "win64\lib\jack\*.dll"; DestDir: "{app}\jack"; | |||
Source: "win64\bin\jack_*.exe"; DestDir: "{app}\tools"; | |||
; jack client lib (NOTE goes into windir) | |||
Source: "win64\lib\libjack64.dll"; DestDir: "{win}"; | |||
Source: "win64\lib32\libjack.dll"; DestDir: "{win}"; | |||
; qjackctl | |||
Source: "win64\bin\qjackctl.exe"; DestDir: "{app}\qjackctl"; Components: qjackctl; | |||
Source: "Qt5*.dll"; DestDir: "{app}\qjackctl"; Components: qjackctl; | |||
Source: "qwindows.dll"; DestDir: "{app}\qjackctl\platforms"; Components: qjackctl; | |||
; dev | |||
Source: "win64\include\jack\*.h"; DestDir: "{app}\include"; Components: dev; | |||
Source: "win64\include\jack\*.h"; DestDir: "{app}\include\jack"; Components: dev; | |||
Source: "win64\lib\*.a"; DestDir: "{app}\lib"; Components: dev; | |||
Source: "win64\lib\*.def"; DestDir: "{app}\lib"; Components: dev; | |||
Source: "win64\lib\*.lib"; DestDir: "{app}\lib"; Components: dev; | |||
Source: "win64\lib32\*.a"; DestDir: "{app}\lib32"; Components: dev; | |||
Source: "win64\lib32\*.def"; DestDir: "{app}\lib32"; Components: dev; | |||
Source: "win64\lib32\*.lib"; DestDir: "{app}\lib32"; Components: dev; | |||
Source: "win64\lib\jack\*.a"; DestDir: "{app}\lib\jack"; Components: dev; | |||
[Icons] | |||
@@ -204,8 +204,8 @@ JackWinMMEDriver::Open(bool capturing, bool playing, int in_channels, | |||
new JackWinMMEOutputPort(fAliasName, client_name, | |||
playback_driver_name, i); | |||
} catch (std::exception& e) { | |||
jack_error("JackWinMMEDriver::Open - while creating output " | |||
"port: %s", e.what()); | |||
jack_error("JackWinMMEDriver::Open - while creating output port: %s | %s, %s, %s", | |||
e.what(), fAliasName, client_name, playback_driver_name); | |||
continue; | |||
} | |||
output_count++; | |||
@@ -215,10 +215,7 @@ JackWinMMEDriver::Open(bool capturing, bool playing, int in_channels, | |||
jack_log("JackWinMMEDriver::Open - input_count %d", input_count); | |||
jack_log("JackWinMMEDriver::Open - output_count %d", output_count); | |||
if (! (input_count || output_count)) { | |||
jack_error("JackWinMMEDriver::Open - no WinMME inputs or outputs " | |||
"allocated."); | |||
} else if (! JackMidiDriver::Open(capturing, playing, input_count, | |||
if (! JackMidiDriver::Open(capturing, playing, input_count, | |||
output_count, monitor, | |||
capture_driver_name, | |||
playback_driver_name, capture_latency, | |||
@@ -286,7 +283,7 @@ JackWinMMEDriver::Start() | |||
jack_log("JackWinMMEDriver::Start - Enabling input ports."); | |||
for (; input_count < fCaptureChannels; input_count++) { | |||
if (input_ports[input_count]->Start() < 0) { | |||
if (! input_ports[input_count]->Start()) { | |||
jack_error("JackWinMMEDriver::Start - Failed to enable input " | |||
"port."); | |||
goto stop_input_ports; | |||
@@ -296,7 +293,7 @@ JackWinMMEDriver::Start() | |||
jack_log("JackWinMMEDriver::Start - Enabling output ports."); | |||
for (; output_count < fPlaybackChannels; output_count++) { | |||
if (output_ports[output_count]->Start() < 0) { | |||
if (! output_ports[output_count]->Start()) { | |||
jack_error("JackWinMMEDriver::Start - Failed to enable output " | |||
"port."); | |||
goto stop_output_ports; | |||
@@ -308,14 +305,14 @@ JackWinMMEDriver::Start() | |||
stop_output_ports: | |||
for (int i = 0; i < output_count; i++) { | |||
if (output_ports[i]->Stop() < 0) { | |||
if (! output_ports[i]->Stop()) { | |||
jack_error("JackWinMMEDriver::Start - Failed to disable output " | |||
"port."); | |||
} | |||
} | |||
stop_input_ports: | |||
for (int i = 0; i < input_count; i++) { | |||
if (input_ports[i]->Stop() < 0) { | |||
if (! input_ports[i]->Stop()) { | |||
jack_error("JackWinMMEDriver::Start - Failed to disable input " | |||
"port."); | |||
} | |||
@@ -334,7 +331,7 @@ JackWinMMEDriver::Stop() | |||
jack_log("JackWinMMEDriver::Stop - disabling input ports."); | |||
for (int i = 0; i < fCaptureChannels; i++) { | |||
if (input_ports[i]->Stop() < 0) { | |||
if (! input_ports[i]->Stop()) { | |||
jack_error("JackWinMMEDriver::Stop - Failed to disable input " | |||
"port."); | |||
result = -1; | |||
@@ -344,7 +341,7 @@ JackWinMMEDriver::Stop() | |||
jack_log("JackWinMMEDriver::Stop - disabling output ports."); | |||
for (int i = 0; i < fPlaybackChannels; i++) { | |||
if (output_ports[i]->Stop() < 0) { | |||
if (! output_ports[i]->Stop()) { | |||
jack_error("JackWinMMEDriver::Stop - Failed to disable output " | |||
"port."); | |||
result = -1; | |||
@@ -289,6 +289,7 @@ def configure(conf): | |||
conf.recurse('example-clients') | |||
conf.recurse('tools') | |||
# test for the availability of ucontext, and how it should be used | |||
for t in ['gp_regs', 'uc_regs', 'mc_gregs', 'gregs']: | |||
@@ -424,6 +425,14 @@ def configure(conf): | |||
conf.env['LIBDIR'] = Options.options.libdir32 | |||
else: | |||
conf.env['LIBDIR'] = conf.env['PREFIX'] + '/lib32' | |||
if conf.env['IS_WINDOWS'] and conf.env['BUILD_STATIC']: | |||
def replaceFor32bit(env): | |||
for e in env: yield e.replace('x86_64', 'i686', 1) | |||
for env in ('AR', 'CC', 'CXX', 'LINK_CC', 'LINK_CXX'): | |||
conf.all_envs[lib32][env] = list(replaceFor32bit(conf.all_envs[lib32][env])) | |||
conf.all_envs[lib32]['LIB_REGEX'] = ['tre32'] | |||
# libdb does not work in mixed mode | |||
conf.all_envs[lib32]['HAVE_DB'] = 0 | |||
conf.all_envs[lib32]['HAVE_DB_H'] = 0 | |||
@@ -804,6 +813,8 @@ def build(bld): | |||
build_drivers(bld) | |||
bld.recurse('example-clients') | |||
bld.recurse('tools') | |||
if bld.env['IS_LINUX']: | |||
bld.recurse('man') | |||
bld.recurse('systemd') | |||