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

Contents of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3768 - (show annotations) (download)
Fri May 15 19:52:31 2020 UTC (3 years, 10 months ago) by schoenebeck
File size: 62664 byte(s)
Ref<> smart pointer class is now thread-safe.

* Require C11 compliant compiler.

* Ref<> class: Implemented lock-free & wait-free thread-safety.

* Ref<> class: Use portable format specifier %p for pointers.

* Bumped version (2.1.1.svn56).

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

  ViewVC Help
Powered by ViewVC