--- linuxsampler/trunk/configure.in 2007/10/15 12:14:13 1432 +++ linuxsampler/trunk/configure.in 2009/01/31 11:31:41 1830 @@ -5,7 +5,7 @@ LINUXSAMPLER_RELEASE_MAJOR=0 LINUXSAMPLER_RELEASE_MINOR=5 -LINUXSAMPLER_RELEASE_BUILD=0 +LINUXSAMPLER_RELEASE_BUILD=1.9cvs #------------------------------------------------------------------------------------ # The following is the libtool / shared library version. This doesn't have to @@ -24,20 +24,22 @@ # 6. If any interfaces have been removed since the last public release, then set age # to 0. -LIBLINUXSAMPLER_LT_CURRENT=1 +LIBLINUXSAMPLER_LT_CURRENT=2 LIBLINUXSAMPLER_LT_REVISION=0 -LIBLINUXSAMPLER_LT_AGE=0 +LIBLINUXSAMPLER_LT_AGE=1 SHARED_VERSION_INFO="$LIBLINUXSAMPLER_LT_CURRENT:$LIBLINUXSAMPLER_LT_REVISION:$LIBLINUXSAMPLER_LT_AGE" #------------------------------------------------------------------------------------ # the LSCP specification version this LinuSampler release complies with: LSCP_RELEASE_MAJOR=1 -LSCP_RELEASE_MINOR=2 +LSCP_RELEASE_MINOR=4 AC_DEFINE_UNQUOTED(LSCP_RELEASE_MAJOR, ${LSCP_RELEASE_MAJOR}, [LSCP spec major version this release complies with.]) AC_DEFINE_UNQUOTED(LSCP_RELEASE_MINOR, ${LSCP_RELEASE_MINOR}, [LSCP spec minor version this release complies with.]) +AC_PROG_CXX +AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL AC_SUBST(SHLIB_VERSION_ARG) @@ -52,6 +54,7 @@ AC_SUBST(target_os) AC_SUBST(target_vendor) +PKG_PROG_PKG_CONFIG ########################################################################### # General Checks @@ -59,7 +62,7 @@ AC_MSG_CHECKING([whether x86 architecture]) def_arch_x86=0 case $target_cpu in - "i386" | "i486" | "i586" | "i686" | "i786") + "i386" | "i486" | "i586" | "i686" | "i786" | "x86_64") echo "yes" def_arch_x86=1;; *) @@ -71,7 +74,7 @@ # (only if the user did not provide one) CXX_CPU_SWITCH= if ! echo "X $CXXFLAGS " | grep -q -- " \(-march=\|-mcpu=\|-mtune=\|-arch=\)" ; then - if test "$def_arch_x86" = 1; then + if test "$def_arch_x86" = 1 -a "$target_cpu" != "x86_64"; then CXX_CPU_SWITCH="-march=$target_cpu" elif test "$target_cpu" = "ppc"; then CXX_CPU_SWITCH="-arch=$target_cpu" @@ -79,6 +82,14 @@ fi AC_SUBST([CXX_CPU_SWITCH]) +# check if we're on MS Windows +AC_CHECK_HEADERS( + mmsystem.h, + have_windows=1, + have_windows=0 +) +AM_CONDITIONAL(HAVE_WINDOWS, test $have_windows = "1") + AC_MSG_CHECKING([whether UNIX98 compatible]) AC_LANG_SAVE AC_LANG_C @@ -101,7 +112,7 @@ ) AC_LANG_RESTORE AC_MSG_RESULT([$have_unix98]) -if test "$have_unix98" = "no"; then +if test "$have_unix98" = "no" -a "have_windows" = "0"; then if test "x$HAVE_UNIX98" = "x"; then echo "LinuxSampler only runs on UNIX98 compatible systems, which is mandatory for" echo "pthread_mutexattr_settype() call in Mutex.cpp. You may want to run @@ -114,6 +125,50 @@ # check for AC_CHECK_HEADERS(features.h) +# test for POSIX thread library +m4_ifdef([m4_include(m4/pthread.m4)],, + [sinclude([m4/pthread.m4])]) +ACX_PTHREAD +LIBS="$PTHREAD_LIBS $LIBS" +CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" +CC="$PTHREAD_CC" + +# check for a bug in NPTL-enabled glibc +# (see Gentoo bug report #194076) +AC_ARG_ENABLE(nptl-bug-check, + [ --disable-nptl-bug-check + Disable check for a bug in certain NPTL-enabled + glibc versions that caused crashs.], + [config_check_nptl_bug="$enableval"], + [config_check_nptl_bug="yes"] +) +if test "$config_check_nptl_bug" = "yes"; then + m4_ifdef([m4_include(m4/nptl_bug.m4)],, + [sinclude([m4/nptl_bug.m4])]) + ACX_NPTL_GLIBC_BUG([ + echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + echo "You seem to have a buggy PTHREAD library! LinuxSampler would" + echo "probably crash due to this. Please report us the system you are" + echo "using and/or file a bug report to the bug tracking system of" + echo "your distribution." + echo "If you have a NPTL-enabled glibc AND it was compiled for TLS as" + echo "well, you can try to circumvent this problem for now by setting" + echo "the environment variable LD_ASSUME_KERNEL=\"2.4.1\" , which" + echo "should cause this test to pass." + echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + AC_MSG_ERROR([possibly NPTL glibc bug detected]) + ]) +else + echo "NPTL glibc bug check disabled" +fi + +# FIXME: this is actually a dependency of libgig, not of LS directly, why +# isn't it hidden by libgig? +AC_CHECK_HEADERS(uuid/uuid.h) +AC_SEARCH_LIBS(uuid_generate, uuid) + + ########################################################################### # Checks for available audio and MIDI systems / drivers @@ -216,7 +271,10 @@ if test $have_jack = "1"; then AC_SUBST(JACK_LIBS) AC_SUBST(JACK_CFLAGS) - AC_CHECK_LIB(jack, jack_client_name_size, [AC_DEFINE(HAVE_JACK_CLIENT_NAME_SIZE, 1, [Define to 1 if you have the `jack_client_name_size' function.])], , $JACK_LIBS) + linuxsampler_save_LIBS=$LIBS + LIBS="$JACK_LIBS $LIBS" + AC_CHECK_FUNCS(jack_client_name_size jack_client_open) + LIBS=$linuxsampler_save_LIBS have_audio_output_driver="true"; fi else @@ -225,6 +283,29 @@ AM_CONDITIONAL(HAVE_JACK, test $have_jack = "1") AC_DEFINE_UNQUOTED(HAVE_JACK,$have_jack,[Define to 1 if you have JACK installed.]) +# JACK MIDI +have_jack_midi=0 +if test $have_jack = "1"; then + linuxsampler_save_CFLAGS=$CFLAGS + linuxsampler_save_LIBS=$LIBS + CFLAGS="$JACK_CFLAGS $CFLAGS" + LIBS="$JACK_LIBS $LIBS" + AC_CHECK_HEADER(jack/midiport.h, have_jack_midi=1, have_jack_midi=0) + if test $have_jack_midi = "1"; then + AC_CHECK_FUNCS(jack_midi_get_event_count) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[ + jack_midi_clear_buffer(0, 0); + ]])], [AC_DEFINE(JACK_MIDI_FUNCS_NEED_NFRAMES, 1, + [Define to 1 if you have the old jack midi functions that need an nframes argument.])]) + have_midi_input_driver="true" + fi + CFLAGS=$linuxsampler_save_CFLAGS + LIBS=$linuxsampler_save_LIBS +fi +AM_CONDITIONAL(HAVE_JACK_MIDI, test $have_jack_midi = "1") +AC_DEFINE_UNQUOTED(HAVE_JACK_MIDI, $have_jack_midi, + [Define to 1 if you have JACK with MIDI support installed.]) + # ARTS AC_ARG_ENABLE(arts-driver, [ --disable-arts-driver @@ -247,6 +328,45 @@ AM_CONDITIONAL(HAVE_ARTS, test "$have_arts" = "1") AC_DEFINE_UNQUOTED(HAVE_ARTS,$have_arts,[Define to 1 if you have aRts installed.]) +# ASIO AUDIO (Win32) +AC_ARG_ENABLE(asiosdk-dir, + [ --enable-asiosdk-dir + Directory where the ASIO SDK is located, this automatically + enables the compilation of the ASIO audio output driver.], + [config_asiosdk_dir="${enableval}"], + [config_asiosdk_dir="."] +) +AC_SUBST(config_asiosdk_dir) + +AC_ARG_ENABLE(asio-driver, + [ --disable-asio-driver + Disable support for the Windows ASIO driver.], + [config_asio_driver="$enableval"], + [config_asio_driver="yes"] +) +have_asio=0 +ASIOSDK_BASEDIR= +if test "$config_asio_driver" = "yes"; then + asiosdk_headerfile=$config_asiosdk_dir/ASIOSDK2/common/asio.h + echo -n "checking for ASIO headerfile: $asiosdk_headerfile ...." + if test -e $asiosdk_headerfile ; then + echo yes + have_asio=1 + ASIOSDK_BASEDIR="$config_asiosdk_dir" + else + echo no + have_asio=0 + fi + if test "$have_asio" = "1"; then + have_audio_output_driver="true" + fi +else + echo "Windows ASIO support disabled by configure script parameter" +fi +AC_SUBST(ASIOSDK_BASEDIR) +AM_CONDITIONAL(HAVE_ASIO, test $have_asio = "1") +AC_DEFINE_UNQUOTED(HAVE_ASIO,$have_asio,[Define to 1 if you have ASIO installed.]) + # MidiShare (Linux, OS X, Windows) AC_ARG_ENABLE(midishare-driver, [ --disable-midishare-driver @@ -295,18 +415,89 @@ AM_CONDITIONAL(HAVE_COREMIDI, test $have_coremidi = "1") AC_DEFINE_UNQUOTED(HAVE_COREMIDI,$have_coremidi,[Define to 1 if you have CoreMIDI installed.]) +# CoreAudio (OS X) +AC_ARG_ENABLE(coreaudio-driver, + [ --disable-coreaudio-driver + Disable support for the Apple CoreAudio system.], + [config_coreaudio_driver="$enableval"], + [config_coreaudio_driver="yes"] +) +have_coreaudio=0 +if test "$config_coreaudio_driver" = "yes"; then + AC_CHECK_HEADER(CoreAudio/CoreAudio.h, + have_coreaudio=1, + have_coreaudio=0 + ) + if test "$have_coreaudio" = "1"; then + have_audio_output_driver="true" + fi +else + echo "CoreAudio support disabled by configure script parameter" +fi +AM_CONDITIONAL(HAVE_COREAUDIO, test $have_coreaudio = "1") +AC_DEFINE_UNQUOTED(HAVE_COREAUDIO,$have_coreaudio,[Define to 1 if you have CoreAudio installed.]) + +# MME MIDI (Win32) +AC_ARG_ENABLE(mmemidi-driver, + [ --disable-mmemidi-driver + Disable support for the Windows MME MIDI system.], + [config_mmemidi_driver="$enableval"], + [config_mmemidi_driver="yes"] +) +have_mmemidi=0 +if test "$config_mmemidi_driver" = "yes"; then + AC_CHECK_HEADERS(mmsystem.h, + have_mmemidi=1, + have_mmemidi=0 + ) + if test "$have_mmemidi" = "1"; then + have_midi_input_driver="true" + fi +else + echo "MME MIDI support disabled by configure script parameter" +fi +AM_CONDITIONAL(HAVE_MME_MIDI, test $have_mmemidi = "1") +AC_DEFINE_UNQUOTED(HAVE_MME_MIDI,$have_mmemidi,[Define to 1 if you have MME MIDI installed.]) + + +# DSSI +AC_CHECK_HEADERS(dssi.h, + have_dssi=1, + have_dssi=0) +AM_CONDITIONAL(HAVE_DSSI, test $have_dssi = "1") + +# LV2 +PKG_CHECK_MODULES(LV2, lv2core, have_lv2=1, have_lv2=0) +if test $have_lv2 = "0"; then + AC_CHECK_HEADER(lv2.h, have_lv2=1, have_lv2=0) +fi +AM_CONDITIONAL(HAVE_LV2, test $have_lv2 = "1") + +# VST +AC_ARG_ENABLE(vstsdk-dir, + [ --enable-vstsdk-dir + Directory where the VST SDK is located. + This automatically enables the compilation + of the VST plugin.], + [VSTSDK_DIR="${enableval}"], + [VSTSDK_DIR=] +) +AC_SUBST(VSTSDK_DIR) +AM_CONDITIONAL(HAVE_VST, test "x$VSTSDK_DIR" != "x") + + # have we found at least one MIDI input and one audio output driver ? if test "$have_midi_input_driver" = "false"; then echo "No supported MIDI input system found!" echo "Sorry, LinuxSampler only supports the following MIDI drivers at the moment:" - echo "ALSA, MIDIShare, CoreMIDI." + echo "ALSA, JACK, MIDIShare, CoreMIDI, MME." echo "If you think you have one of those available on your system, make sure you" echo "also have the respective development (header) files installed." exit -1; fi if test "$have_audio_output_driver" = "false"; then echo "No supported audio output system found!" - echo "Sorry, LinuxSampler only supports ALSA, JACK and ARTS as audio output" + echo "Sorry, LinuxSampler only supports ALSA, JACK, ARTS and ASIO as audio output" echo "driver at the moment!" exit -1; fi @@ -317,7 +508,7 @@ # Checks for various DLL libraries # Check presence of libgig -libgig_version="3.2.0" +libgig_version="3.2.1" PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false) if test "$HAVE_GIG" = "false"; then echo "Required libgig version not found!" @@ -424,6 +615,17 @@ AC_DEFINE_UNQUOTED(CONFIG_RT_EXCEPTIONS, 1, [Define to 1 to allow exceptions in the realtime context.]) fi +AC_ARG_ENABLE(pthread-testcancel, + [ --enable-pthread-testcancel + Enable pthread_testcancel() calls and avoid asynchronous + cancel of pthreads (default=no).], + [config_pthread_testcancel="$enableval"], + [config_pthread_testcancel="no"] +) +if test "$config_pthread_testcancel" = "yes"; then + AC_DEFINE_UNQUOTED(CONFIG_PTHREAD_TESTCANCEL, 1, [Define to 1 to enable pthread_testcancel() calls.]) +fi + AC_ARG_ENABLE(preload-samples, [ --enable-preload-samples Due to seeking and latency issues with hard drives @@ -529,23 +731,25 @@ AC_ARG_ENABLE(max-streams, [ --enable-max-streams - Maximum amount of disk streams (default=90). This - value should always be higher than the maximum - amount of voices.], + Initial maximum amount of disk streams + (default=90). This value can be changed at + runtime. It should always be higher than the + maximum amount of voices.], [config_max_streams="${enableval}"], [config_max_streams="90"] ) -AC_DEFINE_UNQUOTED(CONFIG_MAX_STREAMS, $config_max_streams, [Define max. streams.]) +AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_MAX_STREAMS, $config_max_streams, [Define initial max. streams.]) AC_ARG_ENABLE(max-voices, [ --enable-max-voices - Maximum amount of voices (default=64). This value - should always be lower than the maximum amount of - disk streams.], + Initial maximum amount of voices (default=64). + This value can be changed at runtime. It should + always be lower than the maximum amount of disk + streams.], [config_max_voices="${enableval}"], [config_max_voices="64"] ) -AC_DEFINE_UNQUOTED(CONFIG_MAX_VOICES, $config_max_voices, [Define max. voices.]) +AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_MAX_VOICES, $config_max_voices, [Define initial max. voices.]) AC_ARG_ENABLE(subfragment-size, [ --enable-subfragment-size @@ -847,6 +1051,22 @@ AC_DEFINE_UNQUOTED(CONFIG_INTERPOLATE_VOLUME, 1, [Define to 1 if you want to enable interpolation of volume modulation.]) fi +AC_ARG_ENABLE(master-volume-sysex-by-port, + [ --enable-master-volume-sysex-by-port + Whether global volume sysex message should be + applied globally to the whole sampler or only to + the sampler channels connected to the same MIDI + input port on which the sysex message arrived on. + By default global volume sysex messages apply + globally to the whole sampler, since many MIDI + devices behave that way.], + [config_master_volume_sysex_by_port="$enableval"], + [config_master_volume_sysex_by_port="no"] +) +if test "$config_master_volume_sysex_by_port" = "yes"; then + AC_DEFINE_UNQUOTED(CONFIG_MASTER_VOLUME_SYSEX_BY_PORT, 1, [Define to 1 if you want global volume sysex message only be applied to the respective MIDI port.]) +fi + AC_ARG_ENABLE(plugin-dir, [ --enable-plugin-dir Directory where the sampler shall look for potential plugins, @@ -973,7 +1193,6 @@ AM_INIT_AUTOMAKE(linuxsampler, "$LINUXSAMPLER_RELEASE_MAJOR.$LINUXSAMPLER_RELEASE_MINOR.$LINUXSAMPLER_RELEASE_BUILD") AC_LANG_CPLUSPLUS -AC_PROG_CXX # some gcc 4.0 versions need -msse for SSE register allocations if test "$config_asm" = "yes"; then @@ -996,12 +1215,17 @@ src/engines/Makefile \ src/engines/gig/Makefile \ src/engines/common/Makefile \ + src/effects/Makefile \ src/common/Makefile \ src/testcases/Makefile \ src/drivers/Makefile \ src/drivers/audio/Makefile \ src/drivers/midi/Makefile \ src/plugins/Makefile \ + src/hostplugins/Makefile \ + src/hostplugins/dssi/Makefile \ + src/hostplugins/lv2/Makefile \ + src/hostplugins/vst/Makefile \ linuxsampler.spec \ debian/Makefile \ Artwork/Makefile \ @@ -1042,8 +1266,8 @@ echo "# Minimum Stream Refill Size: ${config_stream_min_refill}" echo "# Maximum Stream Refill Size: ${config_stream_max_refill}" echo "# Stream Size: ${config_stream_size}" -echo "# Maximum Disk Streams: ${config_max_streams}" -echo "# Maximum Voices: ${config_max_voices}" +echo "# Default Maximum Disk Streams: ${config_max_streams}" +echo "# Default Maximum Voices: ${config_max_voices}" echo "# Default Subfragment Size: ${config_subfragment_size}" echo "# Default Global Volume Attenuation: ${config_global_attenuation_default}" echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}" @@ -1062,6 +1286,7 @@ echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}" echo "# Process Muted Channels: ${config_process_muted_channels}" echo "# Process All-Notes-Off MIDI message: ${config_process_all_notes_off}" +echo "# Apply global volume SysEx by MIDI port: ${config_master_volume_sysex_by_port}" echo "# Interpolate Volume: ${config_interpolate_volume}" echo "# Instruments database support: ${config_instruments_db}" if test "$config_instruments_db" = "yes"; then