212 |
AC_DEFINE_UNQUOTED(HAVE_COREMIDI,$have_coremidi,[Define to 1 if you have CoreMIDI installed.]) |
AC_DEFINE_UNQUOTED(HAVE_COREMIDI,$have_coremidi,[Define to 1 if you have CoreMIDI installed.]) |
213 |
|
|
214 |
# Check presence of libgig |
# Check presence of libgig |
215 |
libgig_version="2.0.1" |
libgig_version="2.0.2" |
216 |
PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false) |
PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false) |
217 |
if test "$HAVE_GIG" = "false"; then |
if test "$HAVE_GIG" = "false"; then |
218 |
echo "Required libgig version not found!" |
echo "Required libgig version not found!" |
259 |
# TODO: should we use AC_ARG_VAR(variable, description) instead? |
# TODO: should we use AC_ARG_VAR(variable, description) instead? |
260 |
|
|
261 |
AC_ARG_ENABLE(asm, |
AC_ARG_ENABLE(asm, |
262 |
[ --disable-asm |
[ --enable-asm |
263 |
Disable hand-crafted assembly optimizations |
Enable hand-crafted assembly optimizations |
264 |
(default=on). LinuxSampler provides CPU specific |
(default=off). LinuxSampler provides CPU specific |
265 |
assembly optimizations for the most important |
assembly optimizations for the most important |
266 |
synthesis algorithms. You usually don't want to |
synthesis algorithms. This is currently disabled |
267 |
disable that.], |
by default since current asm code is broken.], |
268 |
[config_asm="no"], |
[config_asm="yes"], |
269 |
[config_asm="yes"] |
[config_asm="no"] |
270 |
) |
) |
271 |
if test "$config_asm" = "yes"; then |
if test "$config_asm" = "yes"; then |
272 |
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 hand-crafted asm optimizations.]) |
273 |
fi |
fi |
274 |
|
|
275 |
AC_ARG_ENABLE(dev-mode, |
AC_ARG_ENABLE(dev-mode, |
276 |
[ --enable-dev-mode |
[ --disable-dev-mode |
277 |
Enable development mode (default=no). In that mode |
Disable development mode (default=on). In that mode |
278 |
we do some extra sanity checks here and there. |
we do some extra sanity checks here and there. |
279 |
This helps to spot possible problems, but reduces |
This helps to spot possible problems, but reduces |
280 |
efficiency a bit], |
efficiency a bit], |
281 |
[config_dev_mode="yes"], |
[config_dev_mode="no"], |
282 |
[config_dev_mode="no"] |
[config_dev_mode="yes"] |
283 |
) |
) |
284 |
if test "$config_dev_mode" = "yes"; then |
if test "$config_dev_mode" = "yes"; then |
285 |
AC_DEFINE_UNQUOTED(CONFIG_DEVMODE, 1, [Define to 1 if you want to enable development mode.]) |
AC_DEFINE_UNQUOTED(CONFIG_DEVMODE, 1, [Define to 1 if you want to enable development mode.]) |
436 |
) |
) |
437 |
AC_DEFINE_UNQUOTED(CONFIG_MAX_VOICES, $config_max_voices, [Define max. voices.]) |
AC_DEFINE_UNQUOTED(CONFIG_MAX_VOICES, $config_max_voices, [Define max. voices.]) |
438 |
|
|
439 |
|
AC_ARG_ENABLE(subfragment-size, |
440 |
|
[ --enable-subfragment-size |
441 |
|
Every audio fragment will be splitted into |
442 |
|
subfragments. Where each subfragment renders |
443 |
|
audio with constant synthesis parameters. This is |
444 |
|
done for efficiency reasons. This parameter |
445 |
|
defines the default size of a subfragment in |
446 |
|
sample points. A large value means less CPU time |
447 |
|
whereas a low value means better audio quality |
448 |
|
(default=32).], |
449 |
|
[config_subfragment_size="${enableval}"], |
450 |
|
[config_subfragment_size="32"] |
451 |
|
) |
452 |
|
AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_SUBFRAGMENT_SIZE, $config_subfragment_size, [Define default subfragment size (in sample points).]) |
453 |
|
|
454 |
|
AC_ARG_ENABLE(global-attenuation, |
455 |
|
[ --enable-global-attenuation |
456 |
|
To prevent clipping all samples will be lowered |
457 |
|
in amplitude by this given factor. |
458 |
|
(default=0.35)], |
459 |
|
[config_global_attenuation="${enableval}"], |
460 |
|
[config_global_attenuation="0.35"] |
461 |
|
) |
462 |
|
AC_DEFINE_UNQUOTED(CONFIG_GLOBAL_ATTENUATION, $config_global_attenuation, [Define global volume attenuation (as floating point factor).]) |
463 |
|
|
464 |
AC_ARG_ENABLE(voice-steal-algo, |
AC_ARG_ENABLE(voice-steal-algo, |
465 |
[ --enable-voice-steal-algo |
[ --enable-voice-steal-algo |
466 |
Voice stealing algorithm to be used. Currently |
Voice stealing algorithm to be used. Currently |
494 |
) |
) |
495 |
AC_DEFINE_UNQUOTED(CONFIG_SYSEX_BUFFER_SIZE, $config_sysex_buffer_size, [Define SysEx buffer size.]) |
AC_DEFINE_UNQUOTED(CONFIG_SYSEX_BUFFER_SIZE, $config_sysex_buffer_size, [Define SysEx buffer size.]) |
496 |
|
|
|
AC_ARG_ENABLE(filter-update-steps, |
|
|
[ --enable-filter-update-steps |
|
|
Amount of sample points after which filter |
|
|
parameters (cutoff, resonance) are going to be |
|
|
updated (default=64). Higher value means less CPU |
|
|
load, but also worse parameter resolution, this |
|
|
value will be aligned to a power of two.], |
|
|
[config_filter_update_steps="${enableval}"], |
|
|
[config_filter_update_steps="64"] |
|
|
) |
|
|
AC_DEFINE_UNQUOTED(CONFIG_FILTER_UPDATE_STEPS, $config_filter_update_steps, [Define amount of steps to refresh filter coefficients.]) |
|
|
|
|
497 |
AC_ARG_ENABLE(force-filter, |
AC_ARG_ENABLE(force-filter, |
498 |
[ --enable-force-filter |
[ --enable-force-filter |
499 |
If enabled will force filter to be used even if |
If enabled will force filter to be used even if |
604 |
Uses integer math without any branch will then be |
Uses integer math without any branch will then be |
605 |
converted to floating point value for each sample point. |
converted to floating point value for each sample point. |
606 |
This int->float conversion might hurt on some systems. |
This int->float conversion might hurt on some systems. |
607 |
|
intmathabs: |
608 |
|
Similar to intmath but uses abs() function. |
609 |
|
Depending on compiler and platrofm this could |
610 |
|
perform better than integer math as it avoids |
611 |
|
an extra integer multiply instruction. |
612 |
|
|
613 |
diharmonic: |
diharmonic: |
614 |
The triangular wave will be approximated by adding two |
The triangular wave will be approximated by adding two |
615 |
sinusoidials. This solution might especially hurt on |
sinusoidials. This solution might especially hurt on |
621 |
benchmark between the algorithms mentioned above. |
benchmark between the algorithms mentioned above. |
622 |
This will NOT work for cross compilation!], |
This will NOT work for cross compilation!], |
623 |
[ if test ! "(" "${enableval}" = "intmath" \ |
[ if test ! "(" "${enableval}" = "intmath" \ |
624 |
|
-o "${enableval}" = "intmathabs" \ |
625 |
-o "${enableval}" = "diharmonic" ")" ; then |
-o "${enableval}" = "diharmonic" ")" ; then |
626 |
AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-signed-triang-algo]) |
AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-signed-triang-algo]) |
627 |
else |
else |
639 |
Uses integer math without any branch will then be |
Uses integer math without any branch will then be |
640 |
converted to floating point value for each sample point. |
converted to floating point value for each sample point. |
641 |
This int->float conversion might hurt on some systems. |
This int->float conversion might hurt on some systems. |
642 |
|
intmathabs: |
643 |
|
Similar to intmath but uses abs() function. |
644 |
|
Depending on compiler and platrofm this could |
645 |
|
perform better than integer math as it avoids |
646 |
|
an extra integer multiply instruction. |
647 |
|
|
648 |
diharmonic: |
diharmonic: |
649 |
The triangular wave will be approximated by adding two |
The triangular wave will be approximated by adding two |
650 |
sinusoidials. This solution might especially hurt on |
sinusoidials. This solution might especially hurt on |
656 |
benchmark between the algorithms mentioned above. |
benchmark between the algorithms mentioned above. |
657 |
This will NOT work for cross compilation!], |
This will NOT work for cross compilation!], |
658 |
[ if test ! "(" "${enableval}" = "intmath" \ |
[ if test ! "(" "${enableval}" = "intmath" \ |
659 |
|
-o "${enableval}" = "intmathabs" \ |
660 |
-o "${enableval}" = "diharmonic" ")" ; then |
-o "${enableval}" = "diharmonic" ")" ; then |
661 |
AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-unsigned-triang-algo]) |
AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-unsigned-triang-algo]) |
662 |
else |
else |
666 |
[config_unsigned_triang_algo="benchmark"] |
[config_unsigned_triang_algo="benchmark"] |
667 |
) |
) |
668 |
|
|
669 |
|
AC_ARG_ENABLE(process-muted-channels, |
670 |
|
[ --enable-process-muted-channels |
671 |
|
Enable processing of muted channels (default=no). |
672 |
|
In that mode all MIDI events in the muted channels |
673 |
|
will be processed. This will provide information |
674 |
|
about the active voices in the muted channels and |
675 |
|
will not discard notes, triggered in mute mode, |
676 |
|
when the channel is unmuted. But also will reduce |
677 |
|
the efficiency.], |
678 |
|
[config_process_muted_channels="yes"], |
679 |
|
[config_process_muted_channels="no"] |
680 |
|
) |
681 |
|
if test "$config_process_muted_channels" = "yes"; then |
682 |
|
AC_DEFINE_UNQUOTED(CONFIG_PROCESS_MUTED_CHANNELS, 1, [Define to 1 if you want to enable processing of muted channels.]) |
683 |
|
fi |
684 |
|
|
685 |
|
|
686 |
########################################################################### |
########################################################################### |
687 |
# Automatic Benchmarks (to detect the best algorithms for the system) |
# Automatic Benchmarks (to detect the best algorithms for the system) |
694 |
AC_TRY_RUN([ |
AC_TRY_RUN([ |
695 |
#define SIGNED 1 |
#define SIGNED 1 |
696 |
#define SILENT 1 |
#define SILENT 1 |
697 |
#include "benchmarks/triang.cpp" |
#include "${srcdir}/benchmarks/triang.cpp" |
698 |
], |
], |
699 |
triang_signed=0, |
triang_signed=0, |
700 |
triang_signed=$?, |
triang_signed=$?, |
706 |
elif test "$triang_signed" = "3"; then |
elif test "$triang_signed" = "3"; then |
707 |
config_signed_triang_algo="diharmonic" |
config_signed_triang_algo="diharmonic" |
708 |
echo "di harmonics" |
echo "di harmonics" |
709 |
|
elif test "$triang_signed" = "5"; then |
710 |
|
config_signed_triang_algo="intmathabs" |
711 |
|
echo "integer math using abs()" |
712 |
else |
else |
713 |
echo "Benchmark of signed triangular wave algorithms failed!" |
echo "Benchmark of signed triangular wave algorithms failed!" |
714 |
echo "Maybe you are doing cross compilation? In that case you have to select" |
echo "Maybe you are doing cross compilation? In that case you have to select" |
717 |
exit -1; |
exit -1; |
718 |
fi |
fi |
719 |
fi |
fi |
720 |
AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, signed_triang_algo_${config_signed_triang_algo}, [Define signed triangular wave algorithm to be used.]) |
AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, ${triang_signed}, [Define signed triangular wave algorithm to be used.]) |
721 |
|
|
722 |
if test "$config_unsigned_triang_algo" = "benchmark"; then |
if test "$config_unsigned_triang_algo" = "benchmark"; then |
723 |
echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... " |
echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... " |
725 |
AC_TRY_RUN([ |
AC_TRY_RUN([ |
726 |
#define SIGNED 0 |
#define SIGNED 0 |
727 |
#define SILENT 1 |
#define SILENT 1 |
728 |
#include "benchmarks/triang.cpp" |
#include "${srcdir}/benchmarks/triang.cpp" |
729 |
], |
], |
730 |
triang_unsigned=0, |
triang_unsigned=0, |
731 |
triang_unsigned=$?, |
triang_unsigned=$?, |
737 |
elif test "$triang_unsigned" = "3"; then |
elif test "$triang_unsigned" = "3"; then |
738 |
config_unsigned_triang_algo="diharmonic" |
config_unsigned_triang_algo="diharmonic" |
739 |
echo "di harmonics" |
echo "di harmonics" |
740 |
|
elif test "$triang_unsigned" = "5"; then |
741 |
|
config_unsigned_triang_algo="intmathabs" |
742 |
|
echo "integer math using abs()" |
743 |
else |
else |
744 |
echo "Benchmark of unsigned triangular wave algorithms failed!" |
echo "Benchmark of unsigned triangular wave algorithms failed!" |
745 |
echo "Maybe you are doing cross compilation? In that case you have to select" |
echo "Maybe you are doing cross compilation? In that case you have to select" |
748 |
exit -1; |
exit -1; |
749 |
fi |
fi |
750 |
fi |
fi |
751 |
AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, unsigned_triang_algo_${config_unsigned_triang_algo}, [Define unsigned triangular wave algorithm to be used.]) |
AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.]) |
752 |
|
|
753 |
AC_LANG_RESTORE |
AC_LANG_RESTORE |
754 |
|
|
825 |
echo "# Stream Size: ${config_stream_size}" |
echo "# Stream Size: ${config_stream_size}" |
826 |
echo "# Maximum Disk Streams: ${config_max_streams}" |
echo "# Maximum Disk Streams: ${config_max_streams}" |
827 |
echo "# Maximum Voices: ${config_max_voices}" |
echo "# Maximum Voices: ${config_max_voices}" |
828 |
|
echo "# Default Subfragment Size: ${config_subfragment_size}" |
829 |
|
echo "# Global Volume Attenuation: ${config_global_attenuation}" |
830 |
echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}" |
echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}" |
831 |
echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}" |
echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}" |
832 |
echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}" |
echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}" |
833 |
echo "# SysEx Buffer Size: ${config_sysex_buffer_size} Byte" |
echo "# SysEx Buffer Size: ${config_sysex_buffer_size} Byte" |
|
echo "# Filter Update Steps: ${config_filter_update_steps}" |
|
834 |
echo "# Force Filter Usage: ${config_force_filter}" |
echo "# Force Filter Usage: ${config_force_filter}" |
835 |
echo "# Filter Cutoff Minimum: ${config_filter_cutoff_min} Hz" |
echo "# Filter Cutoff Minimum: ${config_filter_cutoff_min} Hz" |
836 |
echo "# Filter Cutoff Maximum: ${config_filter_cutoff_max} Hz" |
echo "# Filter Cutoff Maximum: ${config_filter_cutoff_max} Hz" |
838 |
echo "# Override Filter Resonance Controller: ${config_override_resonance_ctrl}" |
echo "# Override Filter Resonance Controller: ${config_override_resonance_ctrl}" |
839 |
echo "# Override Filter Type: ${config_override_filter_type}" |
echo "# Override Filter Type: ${config_override_filter_type}" |
840 |
echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}" |
echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}" |
841 |
|
echo "# Process Muted Channels: ${config_process_muted_channels}" |
842 |
echo "#-------------------------------------------------------------------#" |
echo "#-------------------------------------------------------------------#" |
843 |
echo "# Read './configure --help' or file 'configure.in' for details. #" |
echo "# Read './configure --help' or file 'configure.in' for details. #" |
844 |
echo "#####################################################################" |
echo "#####################################################################" |