--- linuxsampler/trunk/configure.in 2006/02/10 14:57:40 838 +++ linuxsampler/trunk/configure.in 2007/09/30 20:04:11 1360 @@ -4,8 +4,8 @@ # LinuxSampler's / liblinuxsampler's "official" release version: LINUXSAMPLER_RELEASE_MAJOR=0 -LINUXSAMPLER_RELEASE_MINOR=3 -LINUXSAMPLER_RELEASE_BUILD=3cvs +LINUXSAMPLER_RELEASE_MINOR=4 +LINUXSAMPLER_RELEASE_BUILD=0.7cvs #------------------------------------------------------------------------------------ # The following is the libtool / shared library version. This doesn't have to @@ -29,6 +29,15 @@ LIBLINUXSAMPLER_LT_AGE=0 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 + +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.]) + AM_PROG_LIBTOOL AC_SUBST(SHLIB_VERSION_ARG) @@ -64,7 +73,7 @@ if ! echo "X $CXXFLAGS " | grep -q -- " \(-march=\|-mcpu=\|-mtune=\|-arch=\)" ; then if test "$def_arch_x86" = 1; then CXX_CPU_SWITCH="-march=$target_cpu" - elif test "$target_cpu" = "powerpc"; then + elif test "$target_cpu" = "ppc"; then CXX_CPU_SWITCH="-arch=$target_cpu" fi fi @@ -105,129 +114,189 @@ # check for AC_CHECK_HEADERS(features.h) + +########################################################################### # Checks for available audio and MIDI systems / drivers # (we throw an error if there's not at least one system for audio output and MIDI input available) + have_midi_input_driver="false" have_audio_output_driver="false" -AC_CHECK_HEADER(alsa/asoundlib.h, - AC_CHECK_LIB(asound, main, - have_alsa=1 - , - have_alsa=0 - ) - , - have_alsa=0 -) -if test "$have_alsa" = "1"; then - have_midi_input_driver="true" - have_audio_output_driver="true"; +# ALSA +AC_ARG_ENABLE(alsa-driver, + [ --disable-alsa-driver + Disable support for the Advanced Linux Sound + Architecture (ALSA).], + [config_alsa_driver="$enableval"], + [config_alsa_driver="yes"] +) +have_alsa=0 +if test "$config_alsa_driver" = "yes"; then + AC_CHECK_HEADER(alsa/asoundlib.h, + AC_CHECK_LIB(asound, main, + have_alsa=1 + , + have_alsa=0 + ) + , + have_alsa=0 + ) + if test "$have_alsa" = "1"; then + have_midi_input_driver="true" + have_audio_output_driver="true"; + fi + + echo -n "checking Alsa version... " + AC_LANG_SAVE + AC_LANG_C + AC_TRY_RUN([ + #include + void main(void) { + /* ensure backward compatibility */ + #if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) + #define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR + #endif + exit(SND_LIB_MAJOR); + } + ], + alsa_major=0, + alsa_major=$?, + alsa_major=0 + ) + AC_TRY_RUN([ + #include + void main(void) { + /* ensure backward compatibility */ + #if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) + #define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR + #endif + exit(SND_LIB_MINOR); + } + ], + alsa_minor=0, + alsa_minor=$?, + alsa_minor=0 + ) + AC_TRY_RUN([ + #include + void main(void) { + /* ensure backward compatibility */ + #if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) + #define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR + #endif + exit(SND_LIB_SUBMINOR); + } + ], + alsa_subminor=0, + alsa_subminor=$?, + alsa_subminor=0 + ) + AC_LANG_RESTORE + echo "$alsa_major.$alsa_minor.$alsa_subminor"; + AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_major,[Define to the major version number of your Alsa installation.]) + AC_DEFINE_UNQUOTED(ALSA_MINOR,$alsa_minor,[Define to the minor version number of your Alsa installation.]) + AC_DEFINE_UNQUOTED(ALSA_SUBMINOR,$alsa_subminor,[Define to the subminor version number of your Alsa installation.]) +else + echo "ALSA support disabled by configure script parameter" fi AM_CONDITIONAL(HAVE_ALSA, test $have_alsa = "1") AC_DEFINE_UNQUOTED(HAVE_ALSA,$have_alsa,[Define to 1 if you have ALSA installed.]) -echo -n "checking Alsa version... " -AC_LANG_SAVE -AC_LANG_C -AC_TRY_RUN([ -#include -void main(void) { -/* ensure backward compatibility */ -#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) -#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR -#endif -exit(SND_LIB_MAJOR); -} -], -alsa_major=0, -alsa_major=$?, -alsa_major=0 -) -AC_TRY_RUN([ -#include -void main(void) { -/* ensure backward compatibility */ -#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) -#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR -#endif -exit(SND_LIB_MINOR); -} -], -alsa_minor=0, -alsa_minor=$?, -alsa_minor=0 -) -AC_TRY_RUN([ -#include -void main(void) { -/* ensure backward compatibility */ -#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) -#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR -#endif -exit(SND_LIB_SUBMINOR); -} -], -alsa_subminor=0, -alsa_subminor=$?, -alsa_subminor=0 -) -AC_LANG_RESTORE -echo "$alsa_major.$alsa_minor.$alsa_subminor"; -AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_major,[Define to the major version number of your Alsa installation.]) -AC_DEFINE_UNQUOTED(ALSA_MINOR,$alsa_minor,[Define to the minor version number of your Alsa installation.]) -AC_DEFINE_UNQUOTED(ALSA_SUBMINOR,$alsa_subminor,[Define to the subminor version number of your Alsa installation.]) - # JACK -PKG_CHECK_MODULES(JACK, jack, HAVE_JACK=true, HAVE_JACK=false) -AC_SUBST(JACK_LIBS) -AC_SUBST(JACK_CFLAGS) -if test $HAVE_JACK = false; then - HAVE_JACK=0; +AC_ARG_ENABLE(jack-driver, + [ --disable-jack-driver + Disable support for the Jack Audio Connection Kit + (JACK).], + [config_jack_driver="$enableval"], + [config_jack_driver="yes"] +) +have_jack=0 +if test "$config_jack_driver" = "yes"; then + PKG_CHECK_MODULES(JACK, jack, have_jack=1, have_jack=0) + 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) + have_audio_output_driver="true"; + fi else - HAVE_JACK=1 - have_audio_output_driver="true"; - 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) + echo "JACK support disabled by configure script parameter" fi -AM_CONDITIONAL(HAVE_JACK, test $HAVE_JACK = 1) -AC_DEFINE_UNQUOTED(HAVE_JACK,$HAVE_JACK,[Define to 1 if you have JACK installed.]) +AM_CONDITIONAL(HAVE_JACK, test $have_jack = "1") +AC_DEFINE_UNQUOTED(HAVE_JACK,$have_jack,[Define to 1 if you have JACK installed.]) # ARTS -sinclude([m4/arts.m4]) -AM_PATH_ARTS(0.9.5, have_arts=1, have_arts=0) -if test "$have_arts" = "1"; then - have_audio_output_driver="true" +AC_ARG_ENABLE(arts-driver, + [ --disable-arts-driver + Disable support for the Analogue Realtime System + (aRts).], + [config_arts_driver="$enableval"], + [config_arts_driver="yes"] +) +have_arts=0 +if test "$config_arts_driver" = "yes"; then + m4_ifdef([m4_include(m4/arts.m4)],, + [sinclude([m4/arts.m4])]) + AM_PATH_ARTS(0.9.5, have_arts=1, have_arts=0) + if test "$have_arts" = "1"; then + have_audio_output_driver="true" + fi +else + echo "ARTS support disabled by configure script parameter" fi AM_CONDITIONAL(HAVE_ARTS, test "$have_arts" = "1") AC_DEFINE_UNQUOTED(HAVE_ARTS,$have_arts,[Define to 1 if you have aRts installed.]) # MidiShare (Linux, OS X, Windows) -AC_CHECK_HEADER(MidiShare.h, - AC_CHECK_LIB(MidiShare, MidiCountEvs, - have_midishare=1, - have_midishare=0 - ) - , - have_midishare=0 -) -if test "$have_midishare" = "1"; then - have_midi_input_driver="true" +AC_ARG_ENABLE(midishare-driver, + [ --disable-midishare-driver + Disable support for the MidiShare system.], + [config_midishare_driver="$enableval"], + [config_midishare_driver="yes"] +) +have_midishare=0 +if test "$config_midishare_driver" = "yes"; then + AC_CHECK_HEADER(MidiShare.h, + AC_CHECK_LIB(MidiShare, MidiCountEvs, + have_midishare=1, + have_midishare=0 + ) + , + have_midishare=0 + ) + if test "$have_midishare" = "1"; then + have_midi_input_driver="true" + fi +else + echo "MidiShare support disabled by configure script parameter" fi AM_CONDITIONAL(HAVE_MIDISHARE, test $have_midishare = "1") AC_DEFINE_UNQUOTED(HAVE_MIDISHARE,$have_midishare,[Define to 1 if you have MidiShare installed.]) # CoreMIDI (OS X) -AC_CHECK_HEADER(CoreMIDI/CoreMIDI.h, - have_coremidi=1, - have_coremidi=0 -) -if test "$have_coremidi" = "1"; then - have_midi_input_driver="true" +AC_ARG_ENABLE(coremidi-driver, + [ --disable-coremidi-driver + Disable support for the Apple CoreMIDI system.], + [config_coremidi_driver="$enableval"], + [config_coremidi_driver="yes"] +) +have_coremidi=0 +if test "$config_coremidi_driver" = "yes"; then + AC_CHECK_HEADER(CoreMIDI/CoreMIDI.h, + have_coremidi=1, + have_coremidi=0 + ) + if test "$have_coremidi" = "1"; then + have_midi_input_driver="true" + fi +else + echo "CoreMIDI support disabled by configure script parameter" fi AM_CONDITIONAL(HAVE_COREMIDI, test $have_coremidi = "1") AC_DEFINE_UNQUOTED(HAVE_COREMIDI,$have_coremidi,[Define to 1 if you have CoreMIDI installed.]) # Check presence of libgig -libgig_version="2.0.2" +libgig_version="3.1.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!" @@ -239,16 +308,21 @@ AC_SUBST(GIG_CFLAGS) AC_SUBST(GIG_LIBS) -# SQLITE3 -PKG_CHECK_MODULES(SQLITE3, sqlite3, HAVE_SQLITE3=true, HAVE_SQLITE3=false) +# Check presence of sqlite3 +sqlite_version="3.3" +PKG_CHECK_MODULES(SQLITE3, sqlite3 >= $sqlite_version, HAVE_SQLITE3=true, HAVE_SQLITE3=false) AC_SUBST(SQLITE3_LIBS) AC_SUBST(SQLITE3_CFLAGS) if test $HAVE_SQLITE3 = false; then HAVE_SQLITE3=0; - echo "no, support for instrument DB will be disabled!" + instruments_db_support="no" + echo "*** Required sqlite version not found!" + echo "*** You need to have sqlite version ${sqlite_version} or higher" + echo "*** for instruments database support to be enabled." + echo "*** Support for instruments DB will be disabled!" else HAVE_SQLITE3=1 - echo "yes" + instruments_db_support="yes" fi AM_CONDITIONAL(HAVE_SQLITE3, test $HAVE_SQLITE3 = 1) AC_DEFINE_UNQUOTED(HAVE_SQLITE3,$HAVE_SQLITE3,[Define to 1 if you have SQLITE3 installed.]) @@ -274,17 +348,18 @@ # TODO: should we use AC_ARG_VAR(variable, description) instead? AC_ARG_ENABLE(asm, - [ --enable-asm + [ --disable-asm Enable hand-crafted assembly optimizations - (default=off). LinuxSampler provides CPU specific - assembly optimizations for the most important - synthesis algorithms. This is currently disabled - by default since current asm code is broken.], - [config_asm="yes"], - [config_asm="no"] + (default=on). LinuxSampler provides CPU specific + assembly optimizations. This is currently limited + to just enter a fast (denormal) FPU mode on x86 + platforms. There are currently no synthesis core + assembly optimizations anymore since LS 0.4.0], + [config_asm="$enableval"], + [config_asm="yes"] ) if test "$config_asm" = "yes"; then - AC_DEFINE_UNQUOTED(CONFIG_ASM, 1, [Define to 1 if you want to enable hand-crafted asm optimizations.]) + AC_DEFINE_UNQUOTED(CONFIG_ASM, 1, [Define to 1 if you want to enable asm optimizations.]) fi AC_ARG_ENABLE(dev-mode, @@ -293,7 +368,7 @@ we do some extra sanity checks here and there. This helps to spot possible problems, but reduces efficiency a bit], - [config_dev_mode="no"], + [config_dev_mode="$enableval"], [config_dev_mode="yes"] ) if test "$config_dev_mode" = "yes"; then @@ -321,7 +396,7 @@ context as well. Otherwise if disabled segmentation faults will be forced by the application on critical errors.], - [config_rt_exceptions="yes"], + [config_rt_exceptions="$enableval"], [config_rt_exceptions="no"] ) if test "$config_rt_exceptions" = "yes"; then @@ -466,15 +541,16 @@ ) AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_SUBFRAGMENT_SIZE, $config_subfragment_size, [Define default subfragment size (in sample points).]) -AC_ARG_ENABLE(global-attenuation, - [ --enable-global-attenuation +AC_ARG_ENABLE(global-attenuation-default, + [ --enable-global-attenuation-default To prevent clipping all samples will be lowered - in amplitude by this given factor. + in amplitude by this given default factor (can + be overridden at runtime). (default=0.35)], - [config_global_attenuation="${enableval}"], - [config_global_attenuation="0.35"] + [config_global_attenuation_default="${enableval}"], + [config_global_attenuation_default="0.35"] ) -AC_DEFINE_UNQUOTED(CONFIG_GLOBAL_ATTENUATION, $config_global_attenuation, [Define global volume attenuation (as floating point factor).]) +AC_DEFINE_UNQUOTED(CONFIG_GLOBAL_ATTENUATION_DEFAULT, $config_global_attenuation_default, [Define default global volume attenuation (as floating point factor).]) AC_ARG_ENABLE(voice-steal-algo, [ --enable-voice-steal-algo @@ -514,7 +590,7 @@ If enabled will force filter to be used even if no usage was define in instrument patch files. (default=no).], - [config_force_filter="yes"], + [config_force_filter="$enableval"], [config_force_filter="no"] ) if test "$config_force_filter" = "yes"; then @@ -604,7 +680,7 @@ messages which do not provide a correct checksum will be ignored. This is disabled by default as not all devices honor GS checksums.], - [config_assert_gs_sysex_checksum="yes"], + [config_assert_gs_sysex_checksum="$enableval"], [config_assert_gs_sysex_checksum="no"] ) if test "config_assert_gs_sysex_checksum" = "yes"; then @@ -650,8 +726,7 @@ Similar to intmath but uses abs() function. Depending on compiler and platrofm this could perform better than integer math as it avoids - an extra integer multiply instruction. - + an extra integer multiply instruction. diharmonic: The triangular wave will be approximated by adding two sinusoidials. This solution might especially hurt on @@ -685,8 +760,7 @@ Similar to intmath but uses abs() function. Depending on compiler and platrofm this could perform better than integer math as it avoids - an extra integer multiply instruction. - + an extra integer multiply instruction. diharmonic: The triangular wave will be approximated by adding two sinusoidials. This solution might especially hurt on @@ -717,13 +791,27 @@ will not discard notes, triggered in mute mode, when the channel is unmuted. But also will reduce the efficiency.], - [config_process_muted_channels="yes"], + [config_process_muted_channels="$enableval"], [config_process_muted_channels="no"] ) if test "$config_process_muted_channels" = "yes"; then AC_DEFINE_UNQUOTED(CONFIG_PROCESS_MUTED_CHANNELS, 1, [Define to 1 if you want to enable processing of muted channels.]) fi +AC_ARG_ENABLE(process-all-notes-off, + [ --disable-process-all-notes-off + Disable interpretation of All-Notes-Off MIDI + messages (default=on). By default LS will release + all voices whenever it receives an All-Notes-Off + MIDI message. You can disable this behavior, so + that LS simply ignores such messages.], + [config_process_all_notes_off="$enableval"], + [config_process_all_notes_off="yes"] +) +if test "$config_process_all_notes_off" = "yes"; then + AC_DEFINE_UNQUOTED(CONFIG_PROCESS_ALL_NOTES_OFF, 1, [Define to 1 if you want to enable processing of All-Notes-Off MIDI messages.]) +fi + AC_ARG_ENABLE(interpolate-volume, [ --disable-interpolate-volume Disable interpolation of volume modulation @@ -731,13 +819,26 @@ generated by for example the envelope generator will be smoother, minimizing the risk for audio clicks. Disable it to reduce CPU usage.], - [config_interpolate_volume="no"], + [config_interpolate_volume="$enableval"], [config_interpolate_volume="yes"] ) if test "$config_interpolate_volume" = "yes"; then AC_DEFINE_UNQUOTED(CONFIG_INTERPOLATE_VOLUME, 1, [Define to 1 if you want to enable interpolation of volume modulation.]) fi +AC_ARG_ENABLE(plugin-dir, + [ --enable-plugin-dir + Directory where the sampler shall look for potential plugins, + that is 3rd party shared libraries that should be loaded by + the sampler on startup. By default the sampler will search + for plugins in the subdirectory "plugins" below its own + library directory. + (i.e. /usr/local/lib/linuxsampler/plugins)], + [config_plugin_dir="${enableval}"], + [config_plugin_dir="${libdir}/linuxsampler/plugins"] +) +AC_SUBST(config_plugin_dir) + ########################################################################### # Automatic Benchmarks (to detect the best algorithms for the system) @@ -772,6 +873,15 @@ echo "Call './configure --help' for further information or read configure.in." exit -1; fi +else + case "$config_signed_triang_algo" in + intmath) + triang_signed=2 ;; + diharmonic) + triang_signed=3 ;; + intmathabs) + triang_signed=5 ;; + esac fi AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, ${triang_signed}, [Define signed triangular wave algorithm to be used.]) @@ -803,6 +913,15 @@ echo "Call './configure --help' for further information or read configure.in." exit -1; fi +else + case "$config_unsigned_triang_algo" in + intmath) + triang_unsigned=2 ;; + diharmonic) + triang_unsigned=3 ;; + intmathabs) + triang_unsigned=5 ;; + esac fi AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.]) @@ -834,13 +953,12 @@ man/Makefile \ man/linuxsampler.1 \ src/Makefile \ + src/db/Makefile \ src/network/Makefile \ src/engines/Makefile \ src/engines/gig/Makefile \ src/engines/common/Makefile \ - src/common/Makefile src/lib/Makefile \ - src/lib/fileloader/Makefile \ - src/lib/fileloader/libgig/Makefile \ + src/common/Makefile \ src/testcases/Makefile \ src/drivers/Makefile \ src/drivers/audio/Makefile \ @@ -850,7 +968,7 @@ Artwork/Makefile \ scripts/Makefile \ osx/Makefile \ - osx/LinuxSampler.xcode/Makefile \ + osx/linuxsampler.xcodeproj/Makefile \ Documentation/Makefile \ Documentation/Engines/Makefile \ Documentation/Engines/gig/Makefile \ @@ -858,6 +976,12 @@ Doxyfile \ ) +# resolve all nested variables in '${config_plugin_dir}' +# (merely for providing a human readable summary below) +while test $config_plugin_dir != `eval echo ${config_plugin_dir}` ; do + config_plugin_dir=`eval echo ${config_plugin_dir}` +done + ########################################################################### # Output All Configuration Options @@ -882,7 +1006,7 @@ echo "# Maximum Disk Streams: ${config_max_streams}" echo "# Maximum Voices: ${config_max_voices}" echo "# Default Subfragment Size: ${config_subfragment_size}" -echo "# Global Volume Attenuation: ${config_global_attenuation}" +echo "# Default Global Volume Attenuation: ${config_global_attenuation_default}" echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}" echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}" echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}" @@ -898,7 +1022,10 @@ echo "# Override Filter Type: ${config_override_filter_type}" 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 "# Interpolate Volume: ${config_interpolate_volume}" +echo "# Instruments database support: ${instruments_db_support}" +echo "# Plugin Path: ${config_plugin_dir}" echo "#-------------------------------------------------------------------#" echo "# Read './configure --help' or file 'configure.in' for details. #" echo "#####################################################################"