/[svn]/linuxsampler/trunk/configure.ac
ViewVC logotype

Contents of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2372 - (show annotations) (download)
Sat Sep 22 18:28:38 2012 UTC (11 years, 5 months ago) by schoenebeck
File size: 57844 byte(s)
* VST: implemented retrieval and switching of programs using the
  sampler's internal MIDI instrument mapping system
* VST: reply to "canDo" plugin features we don't know as "don't know"
* bumped version to 1.0.0.svn19

1 #------------------------------------------------------------------------------------
2 # LinuxSampler's / liblinuxsampler's "official" release version:
3
4 m4_define(linuxsampler_release_major, 1)
5 m4_define(linuxsampler_release_minor, 0)
6 m4_define(linuxsampler_release_build, 0.svn19)
7
8
9 AC_INIT([linuxsampler],[linuxsampler_release_major.linuxsampler_release_minor.linuxsampler_release_build])
10 AC_CONFIG_SRCDIR([configure.ac])
11
12 #------------------------------------------------------------------------------------
13 # The following is the libtool / shared library version. This doesn't have to
14 # do anything with the release version. It MUST conform to the following rules:
15 #
16 # 1. Start with version information of `0:0:0' for each libtool library.
17 # 2. Update the version information only immediately before a public release of
18 # your software. More frequent updates are unnecessary, and only guarantee
19 # that the current interface number gets larger faster.
20 # 3. If the library source code has changed at all since the last update, then
21 # increment revision (`c:r:a' becomes `c:r+1:a').
22 # 4. If any interfaces have been added, removed, or changed since the last update,
23 # increment current, and set revision to 0.
24 # 5. If any interfaces have been added since the last public release, then increment
25 # age.
26 # 6. If any interfaces have been removed since the last public release, then set age
27 # to 0.
28
29 LIBLINUXSAMPLER_LT_CURRENT=3
30 LIBLINUXSAMPLER_LT_REVISION=0
31 LIBLINUXSAMPLER_LT_AGE=0
32 SHARED_VERSION_INFO="$LIBLINUXSAMPLER_LT_CURRENT:$LIBLINUXSAMPLER_LT_REVISION:$LIBLINUXSAMPLER_LT_AGE"
33
34 #------------------------------------------------------------------------------------
35 # the LSCP specification version this LinuSampler release complies with:
36
37 LSCP_RELEASE_MAJOR=1
38 LSCP_RELEASE_MINOR=5
39
40 AC_DEFINE_UNQUOTED(LSCP_RELEASE_MAJOR, ${LSCP_RELEASE_MAJOR}, [LSCP spec major version this release complies with.])
41 AC_DEFINE_UNQUOTED(LSCP_RELEASE_MINOR, ${LSCP_RELEASE_MINOR}, [LSCP spec minor version this release complies with.])
42
43 AC_PROG_CXX
44 AC_LIBTOOL_WIN32_DLL
45 AC_PROG_LIBTOOL
46
47 AC_SUBST(SHLIB_VERSION_ARG)
48 AC_SUBST(SHARED_VERSION_INFO)
49
50 module=yes eval LIB_EXT=$shrext_cmds
51 AC_SUBST(LIB_EXT)
52
53 AC_C_BIGENDIAN
54 AC_CANONICAL_HOST
55
56 PKG_PROG_PKG_CONFIG
57
58 ###########################################################################
59 # General Checks
60
61 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
62
63 AC_MSG_CHECKING([whether x86 architecture])
64 def_arch_x86=0
65 case $host_cpu in
66 "i386" | "i486" | "i586" | "i686" | "i786" | "x86_64")
67 echo "yes"
68 def_arch_x86=1;;
69 *)
70 echo "no";;
71 esac
72 AC_DEFINE_UNQUOTED(ARCH_X86,$def_arch_x86,[Define to 1 if you build for x86 architecture.])
73
74 # determine the right gcc switch for CPU specific optimizations
75 # (only if the user did not provide one)
76 CXX_CPU_SWITCH=
77 if ! echo "X $CXXFLAGS " | grep -q -- " \(-march=\|-mcpu=\|-mtune=\|-arch=\)" ; then
78 if test "$def_arch_x86" = 1 -a "$host_cpu" != "x86_64"; then
79 CXX_CPU_SWITCH="-march=$host_cpu"
80 elif test "$target_cpu" = "ppc"; then
81 CXX_CPU_SWITCH="-arch=$host_cpu"
82 fi
83 fi
84 AC_SUBST([CXX_CPU_SWITCH])
85
86 mac=no
87 linux=no
88 case "$host" in
89 *-*-darwin*)
90 mac=yes
91 ;;
92 *-*-linux*)
93 linux=yes
94 ;;
95 esac
96 AM_CONDITIONAL(LINUX, test "$linux" = yes)
97 AM_CONDITIONAL(MAC, test "$mac" = yes)
98
99 # check if we're on MS Windows
100 AC_CHECK_HEADERS(
101 mmsystem.h,
102 have_windows=1,
103 have_windows=0,
104 [#include <windef.h>]
105 )
106 AM_CONDITIONAL(HAVE_WINDOWS, test $have_windows = "1")
107
108 AC_MSG_CHECKING([whether UNIX98 compatible])
109 AC_LANG_PUSH([C])
110 AC_RUN_IFELSE([AC_LANG_SOURCE([[
111 #ifndef _GNU_SOURCE
112 #define _GNU_SOURCE 1
113 #endif
114 #include <features.h>
115 void main(void) {
116 #if _XOPEN_SOURCE >= 500
117 exit(0); /* UNIX98 compatible */
118 #else
119 exit(-1); /* not UNIX98 compatible */
120 #endif
121 }
122 ]])],
123 have_unix98="yes",
124 have_unix98="no",
125 have_unix98="no"
126 )
127 AC_LANG_POP([C])
128 AC_MSG_RESULT([$have_unix98])
129 if test "$have_unix98" = "no" -a "$have_windows" = "0" -a "$mac" = "no" ; then
130 if test "x$HAVE_UNIX98" = "x"; then
131 echo "LinuxSampler only runs on UNIX98 compatible systems, which is mandatory for"
132 echo "pthread_mutexattr_settype() call in Mutex.cpp. You may want to run"
133 echo "./configure with environment variable HAVE_UNIX98=1 in case you think you"
134 echo "have a UNIX98 compatible system."
135 exit -1;
136 fi
137 fi
138
139 # check for <features.h>
140 AC_CHECK_HEADERS(features.h)
141
142 # test for POSIX thread library
143 m4_ifdef([m4_include(m4/pthread.m4)],,
144 [sinclude([m4/pthread.m4])])
145 ACX_PTHREAD
146 LIBS="$PTHREAD_LIBS $LIBS"
147 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
148 CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
149 CC="$PTHREAD_CC"
150
151 # check for a bug in NPTL-enabled glibc
152 # (see Gentoo bug report #194076)
153 AC_ARG_ENABLE(nptl-bug-check,
154 [ --disable-nptl-bug-check
155 Disable check for a bug in certain NPTL-enabled
156 glibc versions that caused crashs.],
157 [config_check_nptl_bug="$enableval"],
158 [config_check_nptl_bug="yes"]
159 )
160 if test "$config_check_nptl_bug" = "yes"; then
161 m4_ifdef([m4_include(m4/nptl_bug.m4)],,
162 [sinclude([m4/nptl_bug.m4])])
163 ACX_NPTL_GLIBC_BUG([
164 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
165 echo "You seem to have a buggy PTHREAD library! LinuxSampler would"
166 echo "probably crash due to this. Please report us the system you are"
167 echo "using and/or file a bug report to the bug tracking system of"
168 echo "your distribution."
169 echo "If you have a NPTL-enabled glibc AND it was compiled for TLS as"
170 echo "well, you can try to circumvent this problem for now by setting"
171 echo "the environment variable LD_ASSUME_KERNEL=\"2.4.1\" , which"
172 echo "should cause this test to pass."
173 echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
174 AC_MSG_ERROR([possibly NPTL glibc bug detected])
175 ])
176 else
177 echo "NPTL glibc bug check disabled"
178 fi
179
180 # FIXME: this is actually a dependency of libgig, not of LS directly, why
181 # isn't it hidden by libgig?
182 AC_CHECK_HEADERS(uuid/uuid.h)
183 AC_SEARCH_LIBS(uuid_generate, uuid)
184
185
186
187 ###########################################################################
188 # Checks for available audio and MIDI systems / drivers
189 # (we throw an error if there's not at least one system for audio output and MIDI input available)
190
191 have_midi_input_driver="false"
192 have_audio_output_driver="false"
193
194 # ALSA
195 AC_ARG_ENABLE(alsa-driver,
196 [ --disable-alsa-driver
197 Disable support for the Advanced Linux Sound
198 Architecture (ALSA).],
199 [config_alsa_driver="$enableval"],
200 [config_alsa_driver="yes"]
201 )
202 have_alsa=0
203 if test "$config_alsa_driver" = "yes"; then
204 AC_CHECK_HEADER(alsa/asoundlib.h,
205 AC_CHECK_LIB(asound, main,
206 have_alsa=1
207 ,
208 have_alsa=0
209 )
210 ,
211 have_alsa=0
212 )
213 if test "$have_alsa" = "1"; then
214 have_midi_input_driver="true"
215 have_audio_output_driver="true";
216 fi
217
218 echo -n "checking Alsa version... "
219 AC_LANG_PUSH([C])
220 AC_RUN_IFELSE([AC_LANG_SOURCE([[
221 #include <alsa/asoundlib.h>
222 void main(void) {
223 /* ensure backward compatibility */
224 #if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR)
225 #define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR
226 #endif
227 exit(SND_LIB_MAJOR);
228 }
229 ]])],
230 alsa_major=0,
231 alsa_major=$?,
232 alsa_major=0
233 )
234 AC_RUN_IFELSE([AC_LANG_SOURCE([[
235 #include <alsa/asoundlib.h>
236 void main(void) {
237 /* ensure backward compatibility */
238 #if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR)
239 #define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR
240 #endif
241 exit(SND_LIB_MINOR);
242 }
243 ]])],
244 alsa_minor=0,
245 alsa_minor=$?,
246 alsa_minor=0
247 )
248 AC_RUN_IFELSE([AC_LANG_SOURCE([[
249 #include <alsa/asoundlib.h>
250 void main(void) {
251 /* ensure backward compatibility */
252 #if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR)
253 #define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR
254 #endif
255 exit(SND_LIB_SUBMINOR);
256 }
257 ]])],
258 alsa_subminor=0,
259 alsa_subminor=$?,
260 alsa_subminor=0
261 )
262 AC_LANG_POP([C])
263 echo "$alsa_major.$alsa_minor.$alsa_subminor";
264 AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_major,[Define to the major version number of your Alsa installation.])
265 AC_DEFINE_UNQUOTED(ALSA_MINOR,$alsa_minor,[Define to the minor version number of your Alsa installation.])
266 AC_DEFINE_UNQUOTED(ALSA_SUBMINOR,$alsa_subminor,[Define to the subminor version number of your Alsa installation.])
267 else
268 echo "ALSA support disabled by configure script parameter"
269 fi
270 AM_CONDITIONAL(HAVE_ALSA, test $have_alsa = "1")
271 AC_DEFINE_UNQUOTED(HAVE_ALSA,$have_alsa,[Define to 1 if you have ALSA installed.])
272 config_have_alsa="no"
273 if test $have_alsa = "1"; then
274 config_have_alsa="yes"
275 fi
276
277 # JACK
278 AC_ARG_ENABLE(jack-driver,
279 [ --disable-jack-driver
280 Disable support for the Jack Audio Connection Kit
281 (JACK).],
282 [config_jack_driver="$enableval"],
283 [config_jack_driver="yes"]
284 )
285 have_jack=0
286 if test "$config_jack_driver" = "yes"; then
287 PKG_CHECK_MODULES(JACK, jack, have_jack=1, have_jack=0)
288 if test $have_jack = "1"; then
289 AC_SUBST(JACK_LIBS)
290 AC_SUBST(JACK_CFLAGS)
291 linuxsampler_save_LIBS=$LIBS
292 LIBS="$JACK_LIBS $LIBS"
293 AC_CHECK_FUNCS(jack_client_name_size jack_client_open)
294 LIBS=$linuxsampler_save_LIBS
295 have_audio_output_driver="true";
296 fi
297 else
298 echo "JACK support disabled by configure script parameter"
299 fi
300 AM_CONDITIONAL(HAVE_JACK, test $have_jack = "1")
301 AC_DEFINE_UNQUOTED(HAVE_JACK,$have_jack,[Define to 1 if you have JACK installed.])
302 config_have_jack="no"
303 if test $have_jack = "1"; then
304 config_have_jack="yes"
305 fi
306
307 # JACK MIDI
308 have_jack_midi=0
309 if test $have_jack = "1"; then
310 linuxsampler_save_CFLAGS=$CFLAGS
311 linuxsampler_save_LIBS=$LIBS
312 CFLAGS="$JACK_CFLAGS $CFLAGS"
313 LIBS="$JACK_LIBS $LIBS"
314 AC_CHECK_HEADER(jack/midiport.h, have_jack_midi=1, have_jack_midi=0)
315 if test $have_jack_midi = "1"; then
316 AC_CHECK_FUNCS(jack_midi_get_event_count)
317 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <jack/midiport.h>]], [[
318 jack_midi_clear_buffer(0, 0);
319 ]])], [AC_DEFINE(JACK_MIDI_FUNCS_NEED_NFRAMES, 1,
320 [Define to 1 if you have the old jack midi functions that need an nframes argument.])])
321 have_midi_input_driver="true"
322 fi
323 CFLAGS=$linuxsampler_save_CFLAGS
324 LIBS=$linuxsampler_save_LIBS
325 fi
326 AM_CONDITIONAL(HAVE_JACK_MIDI, test $have_jack_midi = "1")
327 AC_DEFINE_UNQUOTED(HAVE_JACK_MIDI, $have_jack_midi,
328 [Define to 1 if you have JACK with MIDI support installed.])
329 config_have_jack_midi="no"
330 if test $have_jack_midi = "1"; then
331 config_have_jack_midi="yes"
332 fi
333
334 # ARTS
335 AC_ARG_ENABLE(arts-driver,
336 [ --disable-arts-driver
337 Disable support for the Analogue Realtime System
338 (aRts).],
339 [config_arts_driver="$enableval"],
340 [config_arts_driver="yes"]
341 )
342 have_arts=0
343 if test "$config_arts_driver" = "yes"; then
344 m4_ifdef([m4_include(m4/arts.m4)],,
345 [sinclude([m4/arts.m4])])
346 AM_PATH_ARTS(0.9.5, have_arts=1, have_arts=0)
347 if test "$have_arts" = "1"; then
348 have_audio_output_driver="true"
349 fi
350 else
351 echo "ARTS support disabled by configure script parameter"
352 fi
353 AM_CONDITIONAL(HAVE_ARTS, test "$have_arts" = "1")
354 AC_DEFINE_UNQUOTED(HAVE_ARTS,$have_arts,[Define to 1 if you have aRts installed.])
355 config_have_arts="no"
356 if test $have_arts = "1"; then
357 config_have_arts="yes"
358 fi
359
360 # ASIO AUDIO (Win32)
361 AC_ARG_ENABLE(asiosdk-dir,
362 [ --enable-asiosdk-dir
363 Directory where the ASIO SDK is located, this automatically
364 enables the compilation of the ASIO audio output driver.],
365 [config_asiosdk_dir="${enableval}"],
366 [config_asiosdk_dir="."]
367 )
368 AC_SUBST(config_asiosdk_dir)
369
370 AC_ARG_ENABLE(asio-driver,
371 [ --disable-asio-driver
372 Disable support for the Windows ASIO driver.],
373 [config_asio_driver="$enableval"],
374 [config_asio_driver="yes"]
375 )
376 have_asio=0
377 ASIOSDK_BASEDIR=
378 if test "$config_asio_driver" = "yes"; then
379 asiosdk_headerfile=$config_asiosdk_dir/ASIOSDK2/common/asio.h
380 echo -n "checking for ASIO headerfile: $asiosdk_headerfile ...."
381 if test -e $asiosdk_headerfile ; then
382 echo yes
383 have_asio=1
384 ASIOSDK_BASEDIR="$config_asiosdk_dir"
385 else
386 echo no
387 have_asio=0
388 fi
389 if test "$have_asio" = "1"; then
390 have_audio_output_driver="true"
391 fi
392 else
393 echo "Windows ASIO support disabled by configure script parameter"
394 fi
395 AC_SUBST(ASIOSDK_BASEDIR)
396 AM_CONDITIONAL(HAVE_ASIO, test $have_asio = "1")
397 AC_DEFINE_UNQUOTED(HAVE_ASIO,$have_asio,[Define to 1 if you have ASIO installed.])
398 config_have_asio="no"
399 if test $have_asio = "1"; then
400 config_have_asio="yes"
401 fi
402
403 # MidiShare (Linux, OS X, Windows)
404 AC_ARG_ENABLE(midishare-driver,
405 [ --disable-midishare-driver
406 Disable support for the MidiShare system.],
407 [config_midishare_driver="$enableval"],
408 [config_midishare_driver="yes"]
409 )
410 have_midishare=0
411 if test "$config_midishare_driver" = "yes"; then
412 AC_CHECK_HEADER(MidiShare.h,
413 AC_CHECK_LIB(MidiShare, MidiCountEvs,
414 have_midishare=1,
415 have_midishare=0
416 )
417 ,
418 have_midishare=0
419 )
420 if test "$have_midishare" = "1"; then
421 have_midi_input_driver="true"
422 fi
423 else
424 echo "MidiShare support disabled by configure script parameter"
425 fi
426 AM_CONDITIONAL(HAVE_MIDISHARE, test $have_midishare = "1")
427 AC_DEFINE_UNQUOTED(HAVE_MIDISHARE,$have_midishare,[Define to 1 if you have MidiShare installed.])
428 config_have_midishare="no"
429 if test $have_midishare = "1"; then
430 config_have_midishare="yes"
431 fi
432
433 # CoreMIDI (OS X)
434 AC_ARG_ENABLE(coremidi-driver,
435 [ --disable-coremidi-driver
436 Disable support for the Apple CoreMIDI system.],
437 [config_coremidi_driver="$enableval"],
438 [config_coremidi_driver="yes"]
439 )
440 have_coremidi=0
441 if test "$config_coremidi_driver" = "yes"; then
442 AC_CHECK_HEADER(CoreMIDI/CoreMIDI.h,
443 have_coremidi=1,
444 have_coremidi=0
445 )
446 if test "$have_coremidi" = "1"; then
447 have_midi_input_driver="true"
448 fi
449 else
450 echo "CoreMIDI support disabled by configure script parameter"
451 fi
452 AM_CONDITIONAL(HAVE_COREMIDI, test $have_coremidi = "1")
453 AC_DEFINE_UNQUOTED(HAVE_COREMIDI,$have_coremidi,[Define to 1 if you have CoreMIDI installed.])
454 config_have_coremidi="no"
455 if test $have_coremidi = "1"; then
456 config_have_coremidi="yes"
457 fi
458
459 # CoreAudio (OS X)
460 AC_ARG_ENABLE(coreaudio-driver,
461 [ --disable-coreaudio-driver
462 Disable support for the Apple CoreAudio system.],
463 [config_coreaudio_driver="$enableval"],
464 [config_coreaudio_driver="yes"]
465 )
466 have_coreaudio=0
467 if test "$config_coreaudio_driver" = "yes"; then
468 AC_CHECK_HEADER(CoreAudio/CoreAudio.h,
469 have_coreaudio=1,
470 have_coreaudio=0
471 )
472 if test "$have_coreaudio" = "1"; then
473 have_audio_output_driver="true"
474 fi
475 else
476 echo "CoreAudio support disabled by configure script parameter"
477 fi
478 AM_CONDITIONAL(HAVE_COREAUDIO, test $have_coreaudio = "1")
479 AC_DEFINE_UNQUOTED(HAVE_COREAUDIO,$have_coreaudio,[Define to 1 if you have CoreAudio installed.])
480 config_have_coreaudio="no"
481 if test $have_coreaudio = "1"; then
482 config_have_coreaudio="yes"
483 fi
484
485 # MME MIDI (Win32)
486 AC_ARG_ENABLE(mmemidi-driver,
487 [ --disable-mmemidi-driver
488 Disable support for the Windows MME MIDI system.],
489 [config_mmemidi_driver="$enableval"],
490 [config_mmemidi_driver="yes"]
491 )
492 have_mmemidi=0
493 if test "$config_mmemidi_driver" = "yes"; then
494 AC_CHECK_HEADERS(mmsystem.h,
495 have_mmemidi=1,
496 have_mmemidi=0
497 )
498 if test "$have_mmemidi" = "1"; then
499 have_midi_input_driver="true"
500 fi
501 else
502 echo "MME MIDI support disabled by configure script parameter"
503 fi
504 AM_CONDITIONAL(HAVE_MME_MIDI, test $have_mmemidi = "1")
505 AC_DEFINE_UNQUOTED(HAVE_MME_MIDI,$have_mmemidi,[Define to 1 if you have MME MIDI installed.])
506 config_have_mme="no"
507 if test $have_mmemidi = "1"; then
508 config_have_mme="yes"
509 fi
510
511 # DSSI
512 AC_CHECK_HEADERS(dssi.h,
513 config_have_dssi="yes",
514 config_have_dssi="no")
515 AM_CONDITIONAL(HAVE_DSSI, test $config_have_dssi = "yes")
516
517 # LV2
518 PKG_CHECK_MODULES(LV2, lv2 >= 1.0.0, config_have_lv2="yes", config_have_lv2="no")
519 AC_SUBST(LV2_CFLAGS)
520 AC_SUBST(LV2_LIBS)
521 AM_CONDITIONAL(HAVE_LV2, test $config_have_lv2 = "yes")
522
523 # VST
524 AC_ARG_ENABLE(vstsdk-dir,
525 [ --enable-vstsdk-dir
526 Directory where the VST SDK is located.
527 This automatically enables the compilation
528 of the VST plugin.],
529 [VSTSDK_DIR="${enableval}"],
530 [VSTSDK_DIR=]
531 )
532 AC_SUBST(VSTSDK_DIR)
533 AM_CONDITIONAL(HAVE_VST, test "x$VSTSDK_DIR" != "x")
534 config_have_vst="no"
535 if test "x$VSTSDK_DIR" != "x"; then
536 config_have_vst="yes"
537 fi
538
539 # AU
540 AC_CHECK_HEADERS(AudioUnit/AudioUnit.h,
541 config_have_au="yes",
542 config_have_au="no")
543 AM_CONDITIONAL(HAVE_AU, test $config_have_au = "yes")
544 AM_CONDITIONAL(HAVE_AUFLAGS, test "$AUFLAGS" != "")
545
546 if test $config_have_au = "yes" ; then
547 if test "x$DEVELOPER_EXTRAS_DIR" = "x" ; then
548 if test -d /Developer/Extras ; then
549 DEVELOPER_EXTRAS_DIR=/Developer/Extras
550 else
551 DEVELOPER_EXTRAS_DIR=/Developer/Examples
552 fi
553 fi
554 AC_SUBST(DEVELOPER_EXTRAS_DIR)
555 fi
556
557 if test "x$MAC_PLUGIN_INSTALL_DIR" = "x" ; then
558 MAC_PLUGIN_INSTALL_DIR=/Library/Audio/Plug-Ins
559 fi
560 AC_SUBST(MAC_PLUGIN_INSTALL_DIR)
561
562 # have we found at least one MIDI input and one audio output driver ?
563 if test "$have_midi_input_driver" = "false"; then
564 echo "No supported MIDI input system found!"
565 echo "Sorry, LinuxSampler only supports the following MIDI drivers at the moment:"
566 echo "ALSA, JACK, MIDIShare, CoreMIDI, MME."
567 echo "If you think you have one of those available on your system, make sure you"
568 echo "also have the respective development (header) files installed."
569 exit -1;
570 fi
571 if test "$have_audio_output_driver" = "false"; then
572 echo "No supported audio output system found!"
573 echo "Sorry, LinuxSampler only supports ALSA, JACK, ARTS and ASIO as audio output"
574 echo "driver at the moment!"
575 exit -1;
576 fi
577
578
579
580 ###########################################################################
581 # Checks for various DLL libraries
582
583 # Check presence of libgig
584 libgig_version="3.3.0"
585 PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false)
586 if test "$HAVE_GIG" = "false"; then
587 echo "Required libgig version not found!"
588 echo "You need to have libgig version ${libgig_version} installed!"
589 exit -1;
590 else
591 echo "yes, found libgig $libgig_version"
592 fi
593 AC_SUBST(GIG_CFLAGS)
594 AC_SUBST(GIG_LIBS)
595
596 # SF2 Engine (requires libgig)
597 AC_ARG_ENABLE(sf2-engine,
598 [ --disable-sf2-engine
599 Disable compilation of the SF2 engine.
600 You need to have libgig installed.],
601 [config_sf2_engine="$enableval"],
602 [config_sf2_engine="yes"]
603 )
604 HAVE_SF2=0;
605 if test "$config_sf2_engine" = "yes"; then
606 HAVE_SF2=1
607 else
608 echo "SF2 engine disabled by configure script parameter"
609 fi
610 AM_CONDITIONAL(HAVE_SF2, test $HAVE_SF2 = 1)
611 AC_DEFINE_UNQUOTED(HAVE_SF2,$HAVE_SF2,[Define to 1 if you want SF2 engine and have libsf2 installed.])
612 config_have_sf2="no"
613 if test $HAVE_SF2 = "1"; then
614 config_have_sf2="yes"
615 fi
616
617 # Check presence of libsndfile
618 libsndfile_version="1.0"
619 PKG_CHECK_MODULES(SNDFILE, sndfile >= $libsndfile_version, HAVE_SNDFILE=true, HAVE_SNDFILE=false)
620 if test "$HAVE_SNDFILE" = "false"; then
621 echo "Required libsndfile version not found!"
622 echo "You need to have libsndfile version ${libsndfile_version} installed!"
623 exit -1;
624 else
625 echo "yes, found libsndfile $libsndfile_version"
626 fi
627 AC_SUBST(SNDFILE_CFLAGS)
628 AC_SUBST(SNDFILE_LIBS)
629
630 # Check for Vorbis support in libsndfile
631 linuxsampler_save_CFLAGS=$CFLAGS
632 CFLAGS="$SNDFILE_CFLAGS $CFLAGS"
633 AC_CHECK_DECLS([SF_FORMAT_VORBIS], [], [], [[#include <sndfile.h>]])
634
635 # Check for loop functionality in libsndfile
636 AC_CHECK_MEMBERS([SF_INSTRUMENT.loops],,
637 [AC_MSG_WARN([Your version of libsndfile does not support
638 reading of loop information. LinuxSampler will not be able to
639 extract loop information from sample files.])],
640 [#include <sndfile.h>])
641 CFLAGS=$linuxsampler_save_CFLAGS
642
643 # Instruments DB feature (requires SQLite 3.3)
644 AC_ARG_ENABLE(instruments-db,
645 [ --disable-instruments-db
646 Disable compilation of the sampler's instruments
647 database feature. You need to have SQLite 3.3
648 or younger installed for this feature.],
649 [config_instruments_db="$enableval"],
650 [config_instruments_db="yes"]
651 )
652 HAVE_SQLITE3=0;
653 if test "$config_instruments_db" = "yes"; then
654 # Check presence of sqlite3
655 sqlite_version="3.3"
656 PKG_CHECK_MODULES(SQLITE3, sqlite3 >= $sqlite_version, HAVE_SQLITE3=true, HAVE_SQLITE3=false)
657 AC_SUBST(SQLITE3_LIBS)
658 AC_SUBST(SQLITE3_CFLAGS)
659 if test $HAVE_SQLITE3 = false; then
660 HAVE_SQLITE3=0
661 config_instruments_db="no"
662 echo "*** Required sqlite version not found!"
663 echo "*** You need to have sqlite version ${sqlite_version} or higher"
664 echo "*** for instruments database support to be enabled."
665 echo "*** Support for instruments DB will be disabled!"
666 else
667 HAVE_SQLITE3=1
668 fi
669 else
670 echo "Instruments DB feature disabled by configure script parameter"
671 fi
672 AM_CONDITIONAL(HAVE_SQLITE3, test $HAVE_SQLITE3 = 1)
673 AC_DEFINE_UNQUOTED(HAVE_SQLITE3,$HAVE_SQLITE3,[Define to 1 if you want the instruments DB feature and have SQLITE3 installed.])
674
675
676
677 ###########################################################################
678 # Handle Configuration Options
679
680 # TODO: should we use AC_ARG_VAR(variable, description) instead?
681
682 AC_ARG_ENABLE(asm,
683 [ --disable-asm
684 Enable hand-crafted assembly optimizations
685 (default=on). LinuxSampler provides CPU specific
686 assembly optimizations. This is currently limited
687 to just enter a fast (denormal) FPU mode on x86
688 platforms. There are currently no synthesis core
689 assembly optimizations anymore since LS 0.4.0],
690 [config_asm="$enableval"],
691 [config_asm="yes"]
692 )
693 if test "$config_asm" = "yes"; then
694 AC_DEFINE_UNQUOTED(CONFIG_ASM, 1, [Define to 1 if you want to enable asm optimizations.])
695 fi
696
697 AC_ARG_ENABLE(dev-mode,
698 [ --enable-dev-mode
699 Enable development mode (default=off). In that mode
700 we do some extra sanity checks here and there.
701 This helps to spot possible problems, but reduces
702 efficiency a bit],
703 [config_dev_mode="$enableval"],
704 [config_dev_mode="no"]
705 )
706 if test "$config_dev_mode" = "yes"; then
707 AC_DEFINE_UNQUOTED(CONFIG_DEVMODE, 1, [Define to 1 if you want to enable development mode.])
708 fi
709
710 AC_ARG_ENABLE(debug-level,
711 [ --enable-debug-level
712 Specify verbosity of console messages (default=1).
713 The higher the value, the higher will be verbosity.
714 A value of 0 means no console output at all.
715 There's not really an upper limit but the usual
716 level of all messages is currently somewhere less
717 than 10.],
718 [config_debug_level="${enableval}"],
719 [config_debug_level="1"]
720 )
721 AC_DEFINE_UNQUOTED(CONFIG_DEBUG_LEVEL, $config_debug_level, [Define console verbosity.])
722
723 AC_ARG_ENABLE(rt-exceptions,
724 [ --enable-rt-exceptions
725 Enable exceptions in the realtime thread
726 (default=no). If this is enabled, exceptions will
727 be thrown on critical errors in the realtime
728 context as well. Otherwise if disabled
729 segmentation faults will be forced by the
730 application on critical errors.],
731 [config_rt_exceptions="$enableval"],
732 [config_rt_exceptions="no"]
733 )
734 if test "$config_rt_exceptions" = "yes"; then
735 AC_DEFINE_UNQUOTED(CONFIG_RT_EXCEPTIONS, 1, [Define to 1 to allow exceptions in the realtime context.])
736 fi
737
738 config_pthread_testcancel="$mac"
739 AC_ARG_ENABLE(pthread-testcancel,
740 [ --enable-pthread-testcancel
741 Enable pthread_testcancel() calls and avoid
742 asynchronous cancel of pthreads (default=yes
743 for Mac targets, no otherwise).],
744 [config_pthread_testcancel="$enableval"],
745 [])
746 if test "$config_pthread_testcancel" = "yes"; then
747 AC_DEFINE_UNQUOTED(CONFIG_PTHREAD_TESTCANCEL, 1, [Define to 1 to enable pthread_testcancel() calls.])
748 fi
749
750 AC_ARG_ENABLE(preload-samples,
751 [ --enable-preload-samples
752 Due to seeking and latency issues with hard drives
753 we have to cache a small part of samples' head in
754 RAM (default=32768). The higher this value the
755 more memory will be occupied for each sample, but
756 the safer this will be in regards of possible
757 droputs. A 'good' value depends on the running
758 system and usage dependant factors.],
759 [config_preload_samples="${enableval}"],
760 [config_preload_samples="32768"]
761 )
762 AC_DEFINE_UNQUOTED(CONFIG_PRELOAD_SAMPLES, $config_preload_samples, [Define amount of sample points to be cached in RAM.])
763
764 AC_ARG_ENABLE(max-pitch,
765 [ --enable-max-pitch
766 Specify the maximum allowed pitch value in octaves
767 (default=4). To lower memory usage you might want
768 set a smaller value.],
769 [config_max_pitch="${enableval}"],
770 [config_max_pitch="4"]
771 )
772 AC_DEFINE_UNQUOTED(CONFIG_MAX_PITCH, $config_max_pitch, [Define max. allowed pitch.])
773
774 AC_ARG_ENABLE(max-events,
775 [ --enable-max-events
776 Specify the maximum allowed amount of events to be
777 processed per fragment (default=1024).],
778 [config_max_events="${enableval}"],
779 [config_max_events="1024"]
780 )
781 AC_DEFINE_UNQUOTED(CONFIG_MAX_EVENTS_PER_FRAGMENT, $config_max_events, [Define max. allowed events per fragment.])
782
783 AC_ARG_ENABLE(eg-bottom,
784 [ --enable-eg-bottom
785 Bottom limit of envelope generators
786 (default=0.001). Certain kinds of curve types like
787 exponential curves converge against 0 but never
788 reach 0. So we have to define a certain low value
789 after which we should consider all smaller values
790 to be 'almost zero'. The smaller this value, the
791 longer will voices survive in EG's release stage
792 and thus waste voices. If this value is too high
793 will cause click sounds though.],
794 [config_eg_bottom="${enableval}"],
795 [config_eg_bottom="0.001"]
796 )
797 AC_DEFINE_UNQUOTED(CONFIG_EG_BOTTOM, $config_eg_bottom, [Define bottom limit of envelopes.])
798
799 AC_ARG_ENABLE(eg-min-release-time,
800 [ --enable-eg-min-release-time
801 Specify the lowest allowed release time in seconds
802 (default=0.0025). This value will also be used to
803 ramp down voices on voice stealing. This value
804 should always be less than the period time of the
805 used audio driver, as in case of voice stealing
806 the killed voice needs to be completely ramped
807 down in the same fragment.],
808 [config_eg_min_release_time="${enableval}"],
809 [config_eg_min_release_time="0.0025"]
810 )
811 AC_DEFINE_UNQUOTED(CONFIG_EG_MIN_RELEASE_TIME, $config_eg_min_release_time, [Define min. release time.])
812
813 AC_ARG_ENABLE(refill-streams,
814 [ --enable-refill-streams
815 Number of streams that should be refilled in each
816 disk thread cycle (default=4).],
817 [config_refill_streams="${enableval}"],
818 [config_refill_streams="4"]
819 )
820 AC_DEFINE_UNQUOTED(CONFIG_REFILL_STREAMS_PER_RUN, $config_refill_streams, [Define amount of streams to be refilled per cycle.])
821
822 AC_ARG_ENABLE(stream-min-refill,
823 [ --enable-stream-min-refill
824 Minimum refill size for disk streams (default=1024).
825 The disk thread will go to sleep for a while if no
826 stream had to be refilled more than this value in
827 a disk thread cycle.],
828 [config_stream_min_refill="${enableval}"],
829 [config_stream_min_refill="1024"]
830 )
831 AC_DEFINE_UNQUOTED(CONFIG_STREAM_MIN_REFILL_SIZE, $config_stream_min_refill, [Define min. stream refill size.])
832
833 AC_ARG_ENABLE(stream-max-refill,
834 [ --enable-stream-max-refill
835 Maximum refill size for disk streams
836 (default=65536). The disk thread will refill
837 each stream only by a size of this value per
838 disk thread cycle.],
839 [config_stream_max_refill="${enableval}"],
840 [config_stream_max_refill="65536"]
841 )
842 AC_DEFINE_UNQUOTED(CONFIG_STREAM_MAX_REFILL_SIZE, $config_stream_max_refill, [Define max. stream refill size.])
843
844 AC_ARG_ENABLE(stream-size,
845 [ --enable-stream-size
846 Size of each stream's ring buffer in sample points
847 (default=262144).],
848 [config_stream_size="${enableval}"],
849 [config_stream_size="262144"]
850 )
851 AC_DEFINE_UNQUOTED(CONFIG_STREAM_BUFFER_SIZE, $config_stream_size, [Define each stream's ring buffer size.])
852
853 AC_ARG_ENABLE(max-streams,
854 [ --enable-max-streams
855 Initial maximum amount of disk streams
856 (default=90). This value can be changed at
857 runtime. It should always be higher than the
858 maximum amount of voices.],
859 [config_max_streams="${enableval}"],
860 [config_max_streams="90"]
861 )
862 AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_MAX_STREAMS, $config_max_streams, [Define initial max. streams.])
863
864 AC_ARG_ENABLE(max-voices,
865 [ --enable-max-voices
866 Initial maximum amount of voices (default=64).
867 This value can be changed at runtime. It should
868 always be lower than the maximum amount of disk
869 streams.],
870 [config_max_voices="${enableval}"],
871 [config_max_voices="64"]
872 )
873 AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_MAX_VOICES, $config_max_voices, [Define initial max. voices.])
874
875 AC_ARG_ENABLE(subfragment-size,
876 [ --enable-subfragment-size
877 Every audio fragment will be splitted into
878 subfragments. Where each subfragment renders
879 audio with constant synthesis parameters. This is
880 done for efficiency reasons. This parameter
881 defines the default size of a subfragment in
882 sample points. A large value means less CPU time
883 whereas a low value means better audio quality
884 (default=32).],
885 [config_subfragment_size="${enableval}"],
886 [config_subfragment_size="32"]
887 )
888 AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_SUBFRAGMENT_SIZE, $config_subfragment_size, [Define default subfragment size (in sample points).])
889
890 AC_ARG_ENABLE(global-attenuation-default,
891 [ --enable-global-attenuation-default
892 To prevent clipping all samples will be lowered
893 in amplitude by this given default factor (can
894 be overridden at runtime).
895 (default=0.35)],
896 [config_global_attenuation_default="${enableval}"],
897 [config_global_attenuation_default="0.35"]
898 )
899 AC_DEFINE_UNQUOTED(CONFIG_GLOBAL_ATTENUATION_DEFAULT, $config_global_attenuation_default, [Define default global volume attenuation (as floating point factor).])
900
901 AC_ARG_ENABLE(voice-steal-algo,
902 [ --enable-voice-steal-algo
903 Voice stealing algorithm to be used. Currently
904 available options:
905 none:
906 Disable voice stealing completely.
907 oldestvoiceonkey (default):
908 Try to kill a voice on the same key first,
909 if no success, proceed with the oldest key.
910 oldestkey:
911 Try to kill a voice from the oldest active
912 key.],
913 [ if test ! "(" "${enableval}" = "none" \
914 -o "${enableval}" = "oldestvoiceonkey" \
915 -o "${enableval}" = "oldestkey" ")" ; then
916 AC_MSG_ERROR([Unknown voice stealing algorithm for parameter --enable-voice-steal-algo])
917 else
918 config_voice_steal_algo="${enableval}"
919 fi
920 ],
921 [config_voice_steal_algo="oldestvoiceonkey"]
922 )
923 AC_DEFINE_UNQUOTED(CONFIG_VOICE_STEAL_ALGO, voice_steal_algo_${config_voice_steal_algo}, [Define voice stealing algorithm to be used.])
924
925 AC_ARG_ENABLE(sysex-buffer-size,
926 [ --enable-sysex-buffer-size
927 System Exclusive Message buffer size in kB
928 (default=2048).],
929 [config_sysex_buffer_size="${enableval}"],
930 [config_sysex_buffer_size="2048"]
931 )
932 AC_DEFINE_UNQUOTED(CONFIG_SYSEX_BUFFER_SIZE, $config_sysex_buffer_size, [Define SysEx buffer size.])
933
934 AC_ARG_ENABLE(force-filter,
935 [ --enable-force-filter
936 If enabled will force filter to be used even if
937 no usage was define in instrument patch files.
938 (default=no).],
939 [config_force_filter="$enableval"],
940 [config_force_filter="no"]
941 )
942 if test "$config_force_filter" = "yes"; then
943 AC_DEFINE_UNQUOTED(CONFIG_FORCE_FILTER, 1, [Define to 1 to force filter usage.])
944 fi
945
946 AC_ARG_ENABLE(filter-cutoff-min,
947 [ --enable-filter-cutoff-min
948 Minimum filter cutoff frequency in Hz
949 (default=100.0).],
950 [config_filter_cutoff_min="${enableval}"],
951 [config_filter_cutoff_min="100.0"]
952 )
953 AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MIN, ${config_filter_cutoff_min}f, [Define min. filter cutoff frequency.])
954
955 AC_ARG_ENABLE(filter-cutoff-max,
956 [ --enable-filter-cutoff-max
957 Maximum filter cutoff frequency in Hz
958 (default=10000.0).],
959 [config_filter_cutoff_max="${enableval}"],
960 [config_filter_cutoff_max="10000.0"]
961 )
962 AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MAX, ${config_filter_cutoff_max}f, [Define max. filter cutoff frequency.])
963
964 AC_ARG_ENABLE(override-cutoff-ctrl,
965 [ --enable-override-cutoff-ctrl
966 Override filter cutoff MIDI controller (default=no).
967 Note: you have to define the MIDI controller number
968 here, it's not a boolean parameter type! If this
969 option is used, controller number given by
970 instrument patch will be ignored and instead this
971 supplied value will be used.],
972 [config_override_cutoff_ctrl="${enableval}"],
973 [config_override_cutoff_ctrl="no"]
974 )
975 if test ! "$config_override_cutoff_ctrl" = "no"; then
976 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_CUTOFF_CTRL, $config_override_cutoff_ctrl, [Define to a MIDI controller number to override cutoff control.])
977 fi
978
979 AC_ARG_ENABLE(override-resonance-ctrl,
980 [ --enable-override-resonance-ctrl
981 Override filter resonance MIDI controller
982 (default=no). Note: you have to define the MIDI
983 controller number here, it's not a boolean
984 parameter type! If this option is used, controller
985 number given by instrument patch will be ignored
986 and instead this supplied value will be used.],
987 [config_override_resonance_ctrl="${enableval}"],
988 [config_override_resonance_ctrl="no"]
989 )
990 if test ! "$config_override_resonance_ctrl" = "no"; then
991 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_RESONANCE_CTRL, $config_override_resonance_ctrl, [Define to a MIDI controller number to override resonance control.])
992 fi
993
994 AC_ARG_ENABLE(override-filter-type,
995 [ --enable-override-filter-type
996 Override filter type (default=no). Options:
997 hp: for highpass
998 bp: for bandpass
999 br: for bandreject
1000 lp: for lowpass
1001 lpt: for lowpass turbo],
1002 [ if test "${enableval}" = "hp" ; then
1003 config_override_filter_type="::gig::vcf_type_highpass"
1004 elif test "${enableval}" = "bp" ; then
1005 config_override_filter_type="::gig::vcf_type_bandpass"
1006 elif test "${enableval}" = "br" ; then
1007 config_override_filter_type="::gig::vcf_type_bandreject"
1008 elif test "${enableval}" = "lp" ; then
1009 config_override_filter_type="::gig::vcf_type_lowpass"
1010 elif test "${enableval}" = "lpt" ; then
1011 config_override_filter_type="::gig::vcf_type_lowpassturbo"
1012 elif test ! "${enableval}" = "no"; then
1013 AC_MSG_ERROR([Unknown filter type for parameter --enable-override-filter-type])
1014 fi
1015 ],
1016 [config_override_filter_type="no"]
1017 )
1018 if test ! "$config_override_filter_type" = "no"; then
1019 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_FILTER_TYPE, $config_override_filter_type, [Define to a filter type to always force that filter type.])
1020 fi
1021
1022 AC_ARG_ENABLE(gs-checksum,
1023 [ --enable-gs-checksum
1024 Enable Roland General Synth SysEx checksum check
1025 (default=no). If this is enabled, all GS SysEx
1026 messages which do not provide a correct checksum
1027 will be ignored. This is disabled by default as
1028 not all devices honor GS checksums.],
1029 [config_assert_gs_sysex_checksum="$enableval"],
1030 [config_assert_gs_sysex_checksum="no"]
1031 )
1032 if test "config_assert_gs_sysex_checksum" = "yes"; then
1033 AC_DEFINE_UNQUOTED(CONFIG_ASSERT_GS_SYSEX_CHECKSUM, 1, [Define to 1 if you want to enable GS SysEx check.])
1034 fi
1035
1036 AC_ARG_ENABLE(portamento-time-min,
1037 [ --enable-portamento-time-min
1038 Minimum Portamento time in seconds
1039 (default=0.1).],
1040 [config_portamento_time_min="${enableval}"],
1041 [config_portamento_time_min="0.1"]
1042 )
1043 AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_MIN, $config_portamento_time_min, [Define min. portamento time.])
1044
1045 AC_ARG_ENABLE(portamento-time-max,
1046 [ --enable-portamento-time-max
1047 Maximum Portamento time in seconds
1048 (default=32).],
1049 [config_portamento_time_max="${enableval}"],
1050 [config_portamento_time_max="32"]
1051 )
1052 AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_MAX, $config_portamento_time_max, [Define max. portamento time.])
1053
1054 AC_ARG_ENABLE(portamento-time-default,
1055 [ --enable-portamento-time-default
1056 Default Portamento time in seconds
1057 (default=1).],
1058 [config_portamento_time_default="${enableval}"],
1059 [config_portamento_time_default="1"]
1060 )
1061 AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_DEFAULT, $config_portamento_time_default, [Define default portamento time.])
1062
1063 AC_ARG_ENABLE(signed-triang-algo,
1064 [ --enable-signed-triang-algo
1065 Signed triangular wave algorithm to be used (e.g. for LFOs).
1066 Currently available options:
1067 intmath:
1068 Uses integer math without any branch will then be
1069 converted to floating point value for each sample point.
1070 This int->float conversion might hurt on some systems.
1071 intmathabs:
1072 Similar to intmath but uses abs() function.
1073 Depending on compiler and platrofm this could
1074 perform better than integer math as it avoids
1075 an extra integer multiply instruction.
1076 diharmonic:
1077 The triangular wave will be approximated by adding two
1078 sinusoidials. This solution might especially hurt on
1079 systems with weak floating point unit.
1080 benchmark (default):
1081 This is not an algorithm. Use this option if the
1082 appropriate algorithm should be automatically
1083 chosen by the configure script by performing a
1084 benchmark between the algorithms mentioned above.
1085 This will NOT work for cross compilation!],
1086 [ if test ! "(" "${enableval}" = "intmath" \
1087 -o "${enableval}" = "intmathabs" \
1088 -o "${enableval}" = "diharmonic" ")" ; then
1089 AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-signed-triang-algo])
1090 else
1091 config_signed_triang_algo="${enableval}"
1092 fi
1093 ],
1094 [config_signed_triang_algo="benchmark"]
1095 )
1096
1097 AC_ARG_ENABLE(unsigned-triang-algo,
1098 [ --enable-unsigned-triang-algo
1099 Unsigned triangular wave algorithm to be used (e.g. for LFOs).
1100 Currently available options:
1101 intmath:
1102 Uses integer math without any branch will then be
1103 converted to floating point value for each sample point.
1104 This int->float conversion might hurt on some systems.
1105 intmathabs:
1106 Similar to intmath but uses abs() function.
1107 Depending on compiler and platrofm this could
1108 perform better than integer math as it avoids
1109 an extra integer multiply instruction.
1110 diharmonic:
1111 The triangular wave will be approximated by adding two
1112 sinusoidials. This solution might especially hurt on
1113 systems with weak floating point unit.
1114 benchmark (default):
1115 This is not an algorithm. Use this option if the
1116 appropriate algorithm should be automatically
1117 chosen by the configure script by performing a
1118 benchmark between the algorithms mentioned above.
1119 This will NOT work for cross compilation!],
1120 [ if test ! "(" "${enableval}" = "intmath" \
1121 -o "${enableval}" = "intmathabs" \
1122 -o "${enableval}" = "diharmonic" ")" ; then
1123 AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-unsigned-triang-algo])
1124 else
1125 config_unsigned_triang_algo="${enableval}"
1126 fi
1127 ],
1128 [config_unsigned_triang_algo="benchmark"]
1129 )
1130
1131 AC_ARG_ENABLE(process-muted-channels,
1132 [ --enable-process-muted-channels
1133 Enable processing of muted channels (default=no).
1134 In that mode all MIDI events in the muted channels
1135 will be processed. This will provide information
1136 about the active voices in the muted channels and
1137 will not discard notes, triggered in mute mode,
1138 when the channel is unmuted. But also will reduce
1139 the efficiency.],
1140 [config_process_muted_channels="$enableval"],
1141 [config_process_muted_channels="no"]
1142 )
1143 if test "$config_process_muted_channels" = "yes"; then
1144 AC_DEFINE_UNQUOTED(CONFIG_PROCESS_MUTED_CHANNELS, 1, [Define to 1 if you want to enable processing of muted channels.])
1145 fi
1146
1147 AC_ARG_ENABLE(process-all-notes-off,
1148 [ --disable-process-all-notes-off
1149 Disable interpretation of All-Notes-Off MIDI
1150 messages (default=on). By default LS will release
1151 all voices whenever it receives an All-Notes-Off
1152 MIDI message. You can disable this behavior, so
1153 that LS simply ignores such messages.],
1154 [config_process_all_notes_off="$enableval"],
1155 [config_process_all_notes_off="yes"]
1156 )
1157 if test "$config_process_all_notes_off" = "yes"; then
1158 AC_DEFINE_UNQUOTED(CONFIG_PROCESS_ALL_NOTES_OFF, 1, [Define to 1 if you want to enable processing of All-Notes-Off MIDI messages.])
1159 fi
1160
1161 AC_ARG_ENABLE(interpolate-volume,
1162 [ --disable-interpolate-volume
1163 Disable interpolation of volume modulation
1164 (default=on). With this enabled, the volume changes
1165 generated by for example the envelope generator
1166 will be smoother, minimizing the risk for audio
1167 clicks. Disable it to reduce CPU usage.],
1168 [config_interpolate_volume="$enableval"],
1169 [config_interpolate_volume="yes"]
1170 )
1171 if test "$config_interpolate_volume" = "yes"; then
1172 AC_DEFINE_UNQUOTED(CONFIG_INTERPOLATE_VOLUME, 1, [Define to 1 if you want to enable interpolation of volume modulation.])
1173 fi
1174
1175 AC_ARG_ENABLE(master-volume-sysex-by-port,
1176 [ --enable-master-volume-sysex-by-port
1177 Whether global volume sysex message should be
1178 applied globally to the whole sampler or only to
1179 the sampler channels connected to the same MIDI
1180 input port on which the sysex message arrived on.
1181 By default global volume sysex messages apply
1182 globally to the whole sampler, since many MIDI
1183 devices behave that way.],
1184 [config_master_volume_sysex_by_port="$enableval"],
1185 [config_master_volume_sysex_by_port="no"]
1186 )
1187 if test "$config_master_volume_sysex_by_port" = "yes"; then
1188 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.])
1189 fi
1190
1191 AC_ARG_ENABLE(plugin-dir,
1192 [ --enable-plugin-dir
1193 Directory where the sampler shall look for potential plugins,
1194 that is 3rd party shared libraries that should be loaded by
1195 the sampler on startup. By default the sampler will search
1196 for plugins in the subdirectory "plugins" below its own
1197 library directory.
1198 (i.e. /usr/local/lib/linuxsampler/plugins)],
1199 [config_plugin_dir="${enableval}"],
1200 [config_plugin_dir="${libdir}/linuxsampler/plugins"]
1201 )
1202 AC_SUBST(config_plugin_dir)
1203
1204 AC_ARG_ENABLE(default-instruments-db-location,
1205 [ --enable-default-instruments-db-location
1206 Only when instruments DB feature is enabled: file name
1207 which shall be taken as default location of the
1208 instruments DB file. This location can still be
1209 overridden at runtime with a command line switch.
1210 (default: /var/lib/linuxsampler/instruments.db)],
1211 [config_default_instruments_db_file="${enableval}"],
1212 [config_default_instruments_db_file="/var/lib/linuxsampler/instruments.db"]
1213 )
1214 AC_DEFINE_UNQUOTED(
1215 CONFIG_DEFAULT_INSTRUMENTS_DB_LOCATION,
1216 "$config_default_instruments_db_file",
1217 [Only when instruments DB feature is enabled: default location of the DB file.]
1218 )
1219 AC_SUBST(config_default_instruments_db_file)
1220
1221
1222 ###########################################################################
1223 # Automatic Benchmarks (to detect the best algorithms for the system)
1224
1225 if test "$config_signed_triang_algo" = "benchmark"; then
1226 echo -n "benchmarking for the best (signed) triangular oscillator algorithm... "
1227 AC_LANG_PUSH([C++])
1228 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1229 #define SIGNED 1
1230 #define SILENT 1
1231 #include "${srcdir}/benchmarks/triang.cpp"
1232 ]])],
1233 triang_signed=0,
1234 triang_signed=$?,
1235 triang_signed=0
1236 )
1237 AC_LANG_POP([C++])
1238 if test "$triang_signed" = "2"; then
1239 config_signed_triang_algo="intmath"
1240 echo "integer math"
1241 elif test "$triang_signed" = "3"; then
1242 config_signed_triang_algo="diharmonic"
1243 echo "di harmonics"
1244 elif test "$triang_signed" = "5"; then
1245 config_signed_triang_algo="intmathabs"
1246 echo "integer math using abs()"
1247 else
1248 echo "Benchmark of signed triangular wave algorithms failed!"
1249 echo "Maybe you are doing cross compilation? In that case you have to select"
1250 echo "an algorithm manually with './configure --enable-signed-triang-algo=...'"
1251 echo "Call './configure --help' for further information or read configure.in."
1252 exit -1;
1253 fi
1254 else
1255 case "$config_signed_triang_algo" in
1256 intmath)
1257 triang_signed=2 ;;
1258 diharmonic)
1259 triang_signed=3 ;;
1260 intmathabs)
1261 triang_signed=5 ;;
1262 esac
1263 fi
1264 AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, ${triang_signed}, [Define signed triangular wave algorithm to be used.])
1265
1266 if test "$config_unsigned_triang_algo" = "benchmark"; then
1267 echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... "
1268 AC_LANG_PUSH([C++])
1269 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1270 #define SIGNED 0
1271 #define SILENT 1
1272 #include "${srcdir}/benchmarks/triang.cpp"
1273 ]])],
1274 triang_unsigned=0,
1275 triang_unsigned=$?,
1276 triang_unsigned=0
1277 )
1278 AC_LANG_POP([C++])
1279 if test "$triang_unsigned" = "2"; then
1280 config_unsigned_triang_algo="intmath"
1281 echo "integer math"
1282 elif test "$triang_unsigned" = "3"; then
1283 config_unsigned_triang_algo="diharmonic"
1284 echo "di harmonics"
1285 elif test "$triang_unsigned" = "5"; then
1286 config_unsigned_triang_algo="intmathabs"
1287 echo "integer math using abs()"
1288 else
1289 echo "Benchmark of unsigned triangular wave algorithms failed!"
1290 echo "Maybe you are doing cross compilation? In that case you have to select"
1291 echo "an algorithm manually with './configure --enable-unsigned-triang-algo=...'"
1292 echo "Call './configure --help' for further information or read configure.in."
1293 exit -1;
1294 fi
1295 else
1296 case "$config_unsigned_triang_algo" in
1297 intmath)
1298 triang_unsigned=2 ;;
1299 diharmonic)
1300 triang_unsigned=3 ;;
1301 intmathabs)
1302 triang_unsigned=5 ;;
1303 esac
1304 fi
1305 AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.])
1306
1307
1308 ###########################################################################
1309 # Create Build Files
1310
1311 AC_CONFIG_HEADERS([config.h])
1312 AM_INIT_AUTOMAKE
1313
1314 AC_LANG([C++])
1315
1316 # autoconf 2.59/libtool 1.5.12 bug? work-around. Without a check like
1317 # this, the dlfcn.h check in am_prog_libtool may fail.
1318 AC_CHECK_HEADER(stdlib.h)
1319
1320 AC_CONFIG_FILES([\
1321 Makefile \
1322 man/Makefile \
1323 man/linuxsampler.1 \
1324 src/Makefile \
1325 src/db/Makefile \
1326 src/network/Makefile \
1327 src/engines/Makefile \
1328 src/engines/gig/Makefile \
1329 src/engines/sf2/Makefile \
1330 src/engines/sfz/Makefile \
1331 src/engines/common/Makefile \
1332 src/effects/Makefile \
1333 src/common/Makefile \
1334 src/testcases/Makefile \
1335 src/drivers/Makefile \
1336 src/drivers/audio/Makefile \
1337 src/drivers/midi/Makefile \
1338 src/plugins/Makefile \
1339 src/hostplugins/Makefile \
1340 src/hostplugins/dssi/Makefile \
1341 src/hostplugins/lv2/Makefile \
1342 src/hostplugins/lv2/manifest.ttl \
1343 src/hostplugins/vst/Makefile \
1344 src/hostplugins/au/Makefile \
1345 linuxsampler.spec \
1346 debian/Makefile \
1347 Artwork/Makefile \
1348 scripts/Makefile \
1349 osx/Makefile \
1350 osx/linuxsampler.xcodeproj/Makefile \
1351 Documentation/Makefile \
1352 Documentation/Engines/Makefile \
1353 Documentation/Engines/gig/Makefile \
1354 linuxsampler.pc \
1355 Doxyfile \
1356 ])
1357 AC_OUTPUT
1358
1359 # resolve all nested variables in '${config_plugin_dir}'
1360 # (merely for providing a human readable summary below)
1361 while test $config_plugin_dir != `eval echo ${config_plugin_dir}` ; do
1362 config_plugin_dir=`eval echo ${config_plugin_dir}`
1363 done
1364
1365
1366 ###########################################################################
1367 # Output All Configuration Options
1368
1369 echo ""
1370 echo "#####################################################################"
1371 echo "# LinuxSampler Configuration #"
1372 echo "#-------------------------------------------------------------------#"
1373 echo "# Release Version: ${VERSION}"
1374 echo "# LSCP Version: ${LSCP_RELEASE_MAJOR}.${LSCP_RELEASE_MINOR}"
1375 echo "#-------------------------------------------------------------------"
1376 echo "# Assembly Optimizations: ${config_asm}"
1377 echo "# Development Mode: ${config_dev_mode}"
1378 echo "# Debug Level: ${config_debug_level}"
1379 echo "# Use Exceptions in RT Context: ${config_rt_exceptions}"
1380 echo "# Preload Samples: ${config_preload_samples}"
1381 echo "# Maximum Pitch: ${config_max_pitch} (octaves)"
1382 echo "# Maximum Events: ${config_max_events}"
1383 echo "# Envelope Bottom Level: ${config_eg_bottom} (linear)"
1384 echo "# Envelope Minimum Release Time: ${config_eg_min_release_time} s"
1385 echo "# Streams to be refilled per Disk Thread Cycle: ${config_refill_streams}"
1386 echo "# Minimum Stream Refill Size: ${config_stream_min_refill}"
1387 echo "# Maximum Stream Refill Size: ${config_stream_max_refill}"
1388 echo "# Stream Size: ${config_stream_size}"
1389 echo "# Default Maximum Disk Streams: ${config_max_streams}"
1390 echo "# Default Maximum Voices: ${config_max_voices}"
1391 echo "# Default Subfragment Size: ${config_subfragment_size}"
1392 echo "# Default Global Volume Attenuation: ${config_global_attenuation_default}"
1393 echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}"
1394 echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}"
1395 echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}"
1396 echo "# SysEx Buffer Size: ${config_sysex_buffer_size} Byte"
1397 echo "# Min. Portamento Time: ${config_portamento_time_min} s"
1398 echo "# Max. Portamento Time: ${config_portamento_time_max} s"
1399 echo "# Default Portamento Time: ${config_portamento_time_default} s"
1400 echo "# Force Filter Usage: ${config_force_filter}"
1401 echo "# Filter Cutoff Minimum: ${config_filter_cutoff_min} Hz"
1402 echo "# Filter Cutoff Maximum: ${config_filter_cutoff_max} Hz"
1403 echo "# Override Filter Cutoff Controller: ${config_override_cutoff_ctrl}"
1404 echo "# Override Filter Resonance Controller: ${config_override_resonance_ctrl}"
1405 echo "# Override Filter Type: ${config_override_filter_type}"
1406 echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}"
1407 echo "# Process Muted Channels: ${config_process_muted_channels}"
1408 echo "# Process All-Notes-Off MIDI message: ${config_process_all_notes_off}"
1409 echo "# Apply global volume SysEx by MIDI port: ${config_master_volume_sysex_by_port}"
1410 echo "# Interpolate Volume: ${config_interpolate_volume}"
1411 echo "# Instruments database support: ${config_instruments_db}"
1412 if test "$config_instruments_db" = "yes"; then
1413 echo "# Instruments DB default location: ${config_default_instruments_db_file}"
1414 fi
1415 echo "# Plugin Path: ${config_plugin_dir}"
1416 echo "#-------------------------------------------------------------------"
1417 echo "# MIDI Input Drivers:"
1418 echo "# ALSA: ${config_have_alsa}, JACK: ${config_have_jack_midi}, CoreMIDI: ${config_have_coremidi}, MME: ${config_have_mme}, MidiShare: ${config_have_midishare}"
1419 echo "#-------------------------------------------------------------------"
1420 echo "# Audio Output Drivers:"
1421 echo "# ALSA: ${config_have_alsa}, JACK: ${config_have_jack}, ARTS: ${config_have_arts}, CoreAudio: ${config_have_coreaudio}, ASIO: ${config_have_asio}"
1422 echo "#-------------------------------------------------------------------"
1423 echo "# Sampler Engines:"
1424 echo "# GIG: yes, SF2: ${config_have_sf2}, SFZ: yes"
1425 echo "#-------------------------------------------------------------------"
1426 echo "# Effect plugin systems for internal effects:"
1427 echo "# LADSPA: yes"
1428 echo "#-------------------------------------------------------------------"
1429 echo "# Building sampler as plugin for following host standards:"
1430 echo "# DSSI: ${config_have_dssi}, LV2: ${config_have_lv2}, VST: ${config_have_vst}, AU: ${config_have_au}"
1431 echo "#-------------------------------------------------------------------#"
1432 echo "# Read './configure --help' or file 'configure.in' for details. #"
1433 echo "#####################################################################"
1434 echo ""
1435 echo "Good. Now type 'make' to compile, followed by 'make install' as root."
1436 echo ""

  ViewVC Help
Powered by ViewVC