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

Contents of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3763 - (show annotations) (download)
Sun Apr 5 20:15:57 2020 UTC (12 months, 1 week ago) by schoenebeck
File size: 62907 byte(s)
* Implemented global backtraceAsString() function for debugging purposes
  (POSIX systems only, no Windows implementation yet).

* Bumped version (2.1.1.svn51).

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.svn51)
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 config_pthread_testcancel="$mac"
864 AC_ARG_ENABLE(pthread-testcancel,
865 [ --enable-pthread-testcancel
866 Enable pthread_testcancel() calls and avoid
867 asynchronous cancel of pthreads (default=yes
868 for Mac targets, no otherwise).],
869 [config_pthread_testcancel="$enableval"],
870 [])
871 if test "$config_pthread_testcancel" = "yes"; then
872 AC_DEFINE_UNQUOTED(CONFIG_PTHREAD_TESTCANCEL, 1, [Define to 1 to enable pthread_testcancel() calls.])
873 fi
874
875 AC_ARG_ENABLE(preload-samples,
876 [ --enable-preload-samples
877 Due to seeking and latency issues with hard drives
878 we have to cache a small part of samples' head in
879 RAM (default=32768). The higher this value the
880 more memory will be occupied for each sample, but
881 the safer this will be in regards of possible
882 droputs. A 'good' value depends on the running
883 system and usage dependant factors.],
884 [config_preload_samples="${enableval}"],
885 [config_preload_samples="32768"]
886 )
887 AC_DEFINE_UNQUOTED(CONFIG_PRELOAD_SAMPLES, $config_preload_samples, [Define amount of sample points to be cached in RAM.])
888
889 AC_ARG_ENABLE(max-pitch,
890 [ --enable-max-pitch
891 Specify the maximum allowed pitch value in octaves
892 (default=4). To lower memory usage you might want
893 set a smaller value.],
894 [config_max_pitch="${enableval}"],
895 [config_max_pitch="4"]
896 )
897 AC_DEFINE_UNQUOTED(CONFIG_MAX_PITCH, $config_max_pitch, [Define max. allowed pitch.])
898
899 AC_ARG_ENABLE(max-events,
900 [ --enable-max-events
901 Specify the maximum allowed amount of events to be
902 processed per fragment (default=1024).],
903 [config_max_events="${enableval}"],
904 [config_max_events="1024"]
905 )
906 AC_DEFINE_UNQUOTED(CONFIG_MAX_EVENTS_PER_FRAGMENT, $config_max_events, [Define max. allowed events per fragment.])
907
908 AC_ARG_ENABLE(eg-bottom,
909 [ --enable-eg-bottom
910 Bottom limit of envelope generators
911 (default=0.001). Certain kinds of curve types like
912 exponential curves converge against 0 but never
913 reach 0. So we have to define a certain low value
914 after which we should consider all smaller values
915 to be 'almost zero'. The smaller this value, the
916 longer will voices survive in EG's release stage
917 and thus waste voices. If this value is too high
918 will cause click sounds though.],
919 [config_eg_bottom="${enableval}"],
920 [config_eg_bottom="0.001"]
921 )
922 AC_DEFINE_UNQUOTED(CONFIG_EG_BOTTOM, $config_eg_bottom, [Define bottom limit of envelopes.])
923
924 AC_ARG_ENABLE(eg-min-release-time,
925 [ --enable-eg-min-release-time
926 Specify the lowest allowed release time in seconds
927 (default=0.0025). This value will also be used to
928 ramp down voices on voice stealing. This value
929 should always be less than the period time of the
930 used audio driver, as in case of voice stealing
931 the killed voice needs to be completely ramped
932 down in the same fragment.],
933 [config_eg_min_release_time="${enableval}"],
934 [config_eg_min_release_time="0.0025"]
935 )
936 AC_DEFINE_UNQUOTED(CONFIG_EG_MIN_RELEASE_TIME, $config_eg_min_release_time, [Define min. release time.])
937
938 AC_ARG_ENABLE(refill-streams,
939 [ --enable-refill-streams
940 Number of streams that should be refilled in each
941 disk thread cycle (default=4).],
942 [config_refill_streams="${enableval}"],
943 [config_refill_streams="4"]
944 )
945 AC_DEFINE_UNQUOTED(CONFIG_REFILL_STREAMS_PER_RUN, $config_refill_streams, [Define amount of streams to be refilled per cycle.])
946
947 AC_ARG_ENABLE(stream-min-refill,
948 [ --enable-stream-min-refill
949 Minimum refill size for disk streams (default=1024).
950 The disk thread will go to sleep for a while if no
951 stream had to be refilled more than this value in
952 a disk thread cycle.],
953 [config_stream_min_refill="${enableval}"],
954 [config_stream_min_refill="1024"]
955 )
956 AC_DEFINE_UNQUOTED(CONFIG_STREAM_MIN_REFILL_SIZE, $config_stream_min_refill, [Define min. stream refill size.])
957
958 AC_ARG_ENABLE(stream-max-refill,
959 [ --enable-stream-max-refill
960 Maximum refill size for disk streams
961 (default=65536). The disk thread will refill
962 each stream only by a size of this value per
963 disk thread cycle.],
964 [config_stream_max_refill="${enableval}"],
965 [config_stream_max_refill="65536"]
966 )
967 AC_DEFINE_UNQUOTED(CONFIG_STREAM_MAX_REFILL_SIZE, $config_stream_max_refill, [Define max. stream refill size.])
968
969 AC_ARG_ENABLE(stream-size,
970 [ --enable-stream-size
971 Size of each stream's ring buffer in sample points
972 (default=262144).],
973 [config_stream_size="${enableval}"],
974 [config_stream_size="262144"]
975 )
976 AC_DEFINE_UNQUOTED(CONFIG_STREAM_BUFFER_SIZE, $config_stream_size, [Define each stream's ring buffer size.])
977
978 AC_ARG_ENABLE(max-streams,
979 [ --enable-max-streams
980 Initial maximum amount of disk streams
981 (default=90). This value can be changed at
982 runtime. It should always be higher than the
983 maximum amount of voices.],
984 [config_max_streams="${enableval}"],
985 [config_max_streams="90"]
986 )
987 AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_MAX_STREAMS, $config_max_streams, [Define initial max. streams.])
988
989 AC_ARG_ENABLE(max-voices,
990 [ --enable-max-voices
991 Initial maximum amount of voices (default=64).
992 This value can be changed at runtime. It should
993 always be lower than the maximum amount of disk
994 streams.],
995 [config_max_voices="${enableval}"],
996 [config_max_voices="64"]
997 )
998 AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_MAX_VOICES, $config_max_voices, [Define initial max. voices.])
999
1000 AC_ARG_ENABLE(subfragment-size,
1001 [ --enable-subfragment-size
1002 Every audio fragment will be splitted into
1003 subfragments. Where each subfragment renders
1004 audio with constant synthesis parameters. This is
1005 done for efficiency reasons. This parameter
1006 defines the default size of a subfragment in
1007 sample points. A large value means less CPU time
1008 whereas a low value means better audio quality
1009 (default=32).],
1010 [config_subfragment_size="${enableval}"],
1011 [config_subfragment_size="32"]
1012 )
1013 AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_SUBFRAGMENT_SIZE, $config_subfragment_size, [Define default subfragment size (in sample points).])
1014
1015 AC_ARG_ENABLE(global-attenuation-default,
1016 [ --enable-global-attenuation-default
1017 To prevent clipping all samples will be lowered
1018 in amplitude by this given default factor (can
1019 be overridden at runtime).
1020 (default=0.35)],
1021 [config_global_attenuation_default="${enableval}"],
1022 [config_global_attenuation_default="0.35"]
1023 )
1024 AC_DEFINE_UNQUOTED(CONFIG_GLOBAL_ATTENUATION_DEFAULT, $config_global_attenuation_default, [Define default global volume attenuation (as floating point factor).])
1025
1026 AC_ARG_ENABLE(voice-steal-algo,
1027 [ --enable-voice-steal-algo
1028 Voice stealing algorithm to be used. Currently
1029 available options:
1030 none:
1031 Disable voice stealing completely.
1032 oldestvoiceonkey (default):
1033 Try to kill a voice on the same key first,
1034 if no success, proceed with the oldest key.
1035 oldestkey:
1036 Try to kill a voice from the oldest active
1037 key.],
1038 [ if test ! "(" "${enableval}" = "none" \
1039 -o "${enableval}" = "oldestvoiceonkey" \
1040 -o "${enableval}" = "oldestkey" ")" ; then
1041 AC_MSG_ERROR([Unknown voice stealing algorithm for parameter --enable-voice-steal-algo])
1042 else
1043 config_voice_steal_algo="${enableval}"
1044 fi
1045 ],
1046 [config_voice_steal_algo="oldestvoiceonkey"]
1047 )
1048 AC_DEFINE_UNQUOTED(CONFIG_VOICE_STEAL_ALGO, voice_steal_algo_${config_voice_steal_algo}, [Define voice stealing algorithm to be used.])
1049
1050 AC_ARG_ENABLE(sysex-buffer-size,
1051 [ --enable-sysex-buffer-size
1052 System Exclusive Message buffer size in kB
1053 (default=2048).],
1054 [config_sysex_buffer_size="${enableval}"],
1055 [config_sysex_buffer_size="2048"]
1056 )
1057 AC_DEFINE_UNQUOTED(CONFIG_SYSEX_BUFFER_SIZE, $config_sysex_buffer_size, [Define SysEx buffer size.])
1058
1059 AC_ARG_ENABLE(force-filter,
1060 [ --enable-force-filter
1061 If enabled will force filter to be used even if
1062 no usage was define in instrument patch files.
1063 (default=no).],
1064 [config_force_filter="$enableval"],
1065 [config_force_filter="no"]
1066 )
1067 if test "$config_force_filter" = "yes"; then
1068 AC_DEFINE_UNQUOTED(CONFIG_FORCE_FILTER, 1, [Define to 1 to force filter usage.])
1069 fi
1070
1071 AC_ARG_ENABLE(filter-cutoff-min,
1072 [ --enable-filter-cutoff-min
1073 Minimum filter cutoff frequency in Hz
1074 (default=100.0).],
1075 [config_filter_cutoff_min="${enableval}"],
1076 [config_filter_cutoff_min="100.0"]
1077 )
1078 AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MIN, ${config_filter_cutoff_min}f, [Define min. filter cutoff frequency.])
1079
1080 AC_ARG_ENABLE(filter-cutoff-max,
1081 [ --enable-filter-cutoff-max
1082 Maximum filter cutoff frequency in Hz
1083 (default=10000.0).],
1084 [config_filter_cutoff_max="${enableval}"],
1085 [config_filter_cutoff_max="10000.0"]
1086 )
1087 AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MAX, ${config_filter_cutoff_max}f, [Define max. filter cutoff frequency.])
1088
1089 AC_ARG_ENABLE(override-cutoff-ctrl,
1090 [ --enable-override-cutoff-ctrl
1091 Override filter cutoff MIDI controller (default=no).
1092 Note: you have to define the MIDI controller number
1093 here, it's not a boolean parameter type! If this
1094 option is used, controller number given by
1095 instrument patch will be ignored and instead this
1096 supplied value will be used.],
1097 [config_override_cutoff_ctrl="${enableval}"],
1098 [config_override_cutoff_ctrl="no"]
1099 )
1100 if test ! "$config_override_cutoff_ctrl" = "no"; then
1101 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_CUTOFF_CTRL, $config_override_cutoff_ctrl, [Define to a MIDI controller number to override cutoff control.])
1102 fi
1103
1104 AC_ARG_ENABLE(override-resonance-ctrl,
1105 [ --enable-override-resonance-ctrl
1106 Override filter resonance MIDI controller
1107 (default=no). Note: you have to define the MIDI
1108 controller number here, it's not a boolean
1109 parameter type! If this option is used, controller
1110 number given by instrument patch will be ignored
1111 and instead this supplied value will be used.],
1112 [config_override_resonance_ctrl="${enableval}"],
1113 [config_override_resonance_ctrl="no"]
1114 )
1115 if test ! "$config_override_resonance_ctrl" = "no"; then
1116 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_RESONANCE_CTRL, $config_override_resonance_ctrl, [Define to a MIDI controller number to override resonance control.])
1117 fi
1118
1119 AC_ARG_ENABLE(override-filter-type,
1120 [ --enable-override-filter-type
1121 Override filter type (default=no). Options:
1122 hp: for highpass
1123 bp: for bandpass
1124 br: for bandreject
1125 lp: for lowpass
1126 lpt: for lowpass turbo],
1127 [ if test "${enableval}" = "hp" ; then
1128 config_override_filter_type="::gig::vcf_type_highpass"
1129 elif test "${enableval}" = "bp" ; then
1130 config_override_filter_type="::gig::vcf_type_bandpass"
1131 elif test "${enableval}" = "br" ; then
1132 config_override_filter_type="::gig::vcf_type_bandreject"
1133 elif test "${enableval}" = "lp" ; then
1134 config_override_filter_type="::gig::vcf_type_lowpass"
1135 elif test "${enableval}" = "lpt" ; then
1136 config_override_filter_type="::gig::vcf_type_lowpassturbo"
1137 elif test ! "${enableval}" = "no"; then
1138 AC_MSG_ERROR([Unknown filter type for parameter --enable-override-filter-type])
1139 fi
1140 ],
1141 [config_override_filter_type="no"]
1142 )
1143 if test ! "$config_override_filter_type" = "no"; then
1144 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_FILTER_TYPE, $config_override_filter_type, [Define to a filter type to always force that filter type.])
1145 fi
1146
1147 AC_ARG_ENABLE(gs-checksum,
1148 [ --enable-gs-checksum
1149 Enable Roland General Synth SysEx checksum check
1150 (default=no). If this is enabled, all GS SysEx
1151 messages which do not provide a correct checksum
1152 will be ignored. This is disabled by default as
1153 not all devices honor GS checksums.],
1154 [config_assert_gs_sysex_checksum="$enableval"],
1155 [config_assert_gs_sysex_checksum="no"]
1156 )
1157 if test "config_assert_gs_sysex_checksum" = "yes"; then
1158 AC_DEFINE_UNQUOTED(CONFIG_ASSERT_GS_SYSEX_CHECKSUM, 1, [Define to 1 if you want to enable GS SysEx check.])
1159 fi
1160
1161 AC_ARG_ENABLE(portamento-time-min,
1162 [ --enable-portamento-time-min
1163 Minimum Portamento time in seconds
1164 (default=0.1).],
1165 [config_portamento_time_min="${enableval}"],
1166 [config_portamento_time_min="0.1"]
1167 )
1168 AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_MIN, $config_portamento_time_min, [Define min. portamento time.])
1169
1170 AC_ARG_ENABLE(portamento-time-max,
1171 [ --enable-portamento-time-max
1172 Maximum Portamento time in seconds
1173 (default=32).],
1174 [config_portamento_time_max="${enableval}"],
1175 [config_portamento_time_max="32"]
1176 )
1177 AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_MAX, $config_portamento_time_max, [Define max. portamento time.])
1178
1179 AC_ARG_ENABLE(portamento-time-default,
1180 [ --enable-portamento-time-default
1181 Default Portamento time in seconds
1182 (default=1).],
1183 [config_portamento_time_default="${enableval}"],
1184 [config_portamento_time_default="1"]
1185 )
1186 AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_DEFAULT, $config_portamento_time_default, [Define default portamento time.])
1187
1188 AC_ARG_ENABLE(signed-triang-algo,
1189 [ --enable-signed-triang-algo
1190 Signed triangular wave algorithm to be used (e.g. for LFOs).
1191 Currently available options:
1192 intmath:
1193 Uses integer math without any branch will then be
1194 converted to floating point value for each sample point.
1195 This int->float conversion might hurt on some systems.
1196 intmathabs:
1197 Similar to intmath but uses abs() function.
1198 Depending on compiler and platrofm this could
1199 perform better than integer math as it avoids
1200 an extra integer multiply instruction.
1201 diharmonic:
1202 The triangular wave will be approximated by adding two
1203 sinusoidials. This solution might especially hurt on
1204 systems with weak floating point unit.
1205 benchmark (default):
1206 This is not an algorithm. Use this option if the
1207 appropriate algorithm should be automatically
1208 chosen by the configure script by performing a
1209 benchmark between the algorithms mentioned above.
1210 This will NOT work for cross compilation!],
1211 [ if test ! "(" "${enableval}" = "intmath" \
1212 -o "${enableval}" = "intmathabs" \
1213 -o "${enableval}" = "diharmonic" ")" ; then
1214 AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-signed-triang-algo])
1215 else
1216 config_signed_triang_algo="${enableval}"
1217 fi
1218 ],
1219 [config_signed_triang_algo="benchmark"]
1220 )
1221
1222 AC_ARG_ENABLE(unsigned-triang-algo,
1223 [ --enable-unsigned-triang-algo
1224 Unsigned triangular wave algorithm to be used (e.g. for LFOs).
1225 Currently available options:
1226 intmath:
1227 Uses integer math without any branch will then be
1228 converted to floating point value for each sample point.
1229 This int->float conversion might hurt on some systems.
1230 intmathabs:
1231 Similar to intmath but uses abs() function.
1232 Depending on compiler and platrofm this could
1233 perform better than integer math as it avoids
1234 an extra integer multiply instruction.
1235 diharmonic:
1236 The triangular wave will be approximated by adding two
1237 sinusoidials. This solution might especially hurt on
1238 systems with weak floating point unit.
1239 benchmark (default):
1240 This is not an algorithm. Use this option if the
1241 appropriate algorithm should be automatically
1242 chosen by the configure script by performing a
1243 benchmark between the algorithms mentioned above.
1244 This will NOT work for cross compilation!],
1245 [ if test ! "(" "${enableval}" = "intmath" \
1246 -o "${enableval}" = "intmathabs" \
1247 -o "${enableval}" = "diharmonic" ")" ; then
1248 AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-unsigned-triang-algo])
1249 else
1250 config_unsigned_triang_algo="${enableval}"
1251 fi
1252 ],
1253 [config_unsigned_triang_algo="benchmark"]
1254 )
1255
1256 AC_ARG_ENABLE(process-muted-channels,
1257 [ --enable-process-muted-channels
1258 Enable processing of muted channels (default=no).
1259 In that mode all MIDI events in the muted channels
1260 will be processed. This will provide information
1261 about the active voices in the muted channels and
1262 will not discard notes, triggered in mute mode,
1263 when the channel is unmuted. But also will reduce
1264 the efficiency.],
1265 [config_process_muted_channels="$enableval"],
1266 [config_process_muted_channels="no"]
1267 )
1268 if test "$config_process_muted_channels" = "yes"; then
1269 AC_DEFINE_UNQUOTED(CONFIG_PROCESS_MUTED_CHANNELS, 1, [Define to 1 if you want to enable processing of muted channels.])
1270 fi
1271
1272 AC_ARG_ENABLE(process-all-notes-off,
1273 [ --disable-process-all-notes-off
1274 Disable interpretation of All-Notes-Off MIDI
1275 messages (default=on). By default LS will release
1276 all voices whenever it receives an All-Notes-Off
1277 MIDI message. You can disable this behavior, so
1278 that LS simply ignores such messages.],
1279 [config_process_all_notes_off="$enableval"],
1280 [config_process_all_notes_off="yes"]
1281 )
1282 if test "$config_process_all_notes_off" = "yes"; then
1283 AC_DEFINE_UNQUOTED(CONFIG_PROCESS_ALL_NOTES_OFF, 1, [Define to 1 if you want to enable processing of All-Notes-Off MIDI messages.])
1284 fi
1285
1286 AC_ARG_ENABLE(interpolate-volume,
1287 [ --disable-interpolate-volume
1288 Disable interpolation of volume modulation
1289 (default=on). With this enabled, the volume changes
1290 generated by for example the envelope generator
1291 will be smoother, minimizing the risk for audio
1292 clicks. Disable it to reduce CPU usage.],
1293 [config_interpolate_volume="$enableval"],
1294 [config_interpolate_volume="yes"]
1295 )
1296 if test "$config_interpolate_volume" = "yes"; then
1297 AC_DEFINE_UNQUOTED(CONFIG_INTERPOLATE_VOLUME, 1, [Define to 1 if you want to enable interpolation of volume modulation.])
1298 fi
1299
1300 AC_ARG_ENABLE(master-volume-sysex-by-port,
1301 [ --enable-master-volume-sysex-by-port
1302 Whether global volume sysex message should be
1303 applied globally to the whole sampler or only to
1304 the sampler channels connected to the same MIDI
1305 input port on which the sysex message arrived on.
1306 By default global volume sysex messages apply
1307 globally to the whole sampler, since many MIDI
1308 devices behave that way.],
1309 [config_master_volume_sysex_by_port="$enableval"],
1310 [config_master_volume_sysex_by_port="no"]
1311 )
1312 if test "$config_master_volume_sysex_by_port" = "yes"; then
1313 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.])
1314 fi
1315
1316 AC_ARG_ENABLE(plugin-dir,
1317 [ --enable-plugin-dir
1318 Directory where the sampler shall look for potential plugins,
1319 that is 3rd party shared libraries that should be loaded by
1320 the sampler on startup. By default the sampler will search
1321 for plugins in the subdirectory "plugins" below its own
1322 library directory.
1323 (i.e. /usr/local/lib/linuxsampler/plugins)],
1324 [config_plugin_dir="${enableval}"],
1325 [config_plugin_dir="${libdir}/linuxsampler/plugins"]
1326 )
1327 AC_SUBST(config_plugin_dir)
1328
1329 AC_ARG_ENABLE(default-instruments-db-location,
1330 [ --enable-default-instruments-db-location
1331 Only when instruments DB feature is enabled: file name
1332 which shall be taken as default location of the
1333 instruments DB file. This location can still be
1334 overridden at runtime with a command line switch.
1335 (default: /var/lib/linuxsampler/instruments.db)],
1336 [config_default_instruments_db_file="${enableval}"],
1337 [config_default_instruments_db_file="/var/lib/linuxsampler/instruments.db"]
1338 )
1339 AC_DEFINE_UNQUOTED(
1340 CONFIG_DEFAULT_INSTRUMENTS_DB_LOCATION,
1341 "$config_default_instruments_db_file",
1342 [Only when instruments DB feature is enabled: default location of the DB file.]
1343 )
1344 AC_SUBST(config_default_instruments_db_file)
1345
1346
1347 ###########################################################################
1348 # Automatic Benchmarks (to detect the best algorithms for the system)
1349
1350 if test "$config_signed_triang_algo" = "benchmark"; then
1351 echo -n "benchmarking for the best (signed) triangular oscillator algorithm... "
1352 AC_LANG_PUSH([C++])
1353 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1354 #define SIGNED 1
1355 #define SILENT 1
1356 #include "${srcdir}/benchmarks/triang.cpp"
1357 ]])],
1358 triang_signed=0,
1359 triang_signed=$?,
1360 triang_signed=0
1361 )
1362 AC_LANG_POP([C++])
1363 if test "$triang_signed" = "2"; then
1364 config_signed_triang_algo="intmath"
1365 echo "integer math"
1366 elif test "$triang_signed" = "3"; then
1367 config_signed_triang_algo="diharmonic"
1368 echo "di harmonics"
1369 elif test "$triang_signed" = "5"; then
1370 config_signed_triang_algo="intmathabs"
1371 echo "integer math using abs()"
1372 else
1373 echo "Benchmark of signed triangular wave algorithms failed!"
1374 echo "Maybe you are doing cross compilation? In that case you have to select"
1375 echo "an algorithm manually with './configure --enable-signed-triang-algo=...'"
1376 echo "Call './configure --help' for further information or read configure.in."
1377 exit -1;
1378 fi
1379 else
1380 case "$config_signed_triang_algo" in
1381 intmath)
1382 triang_signed=2 ;;
1383 diharmonic)
1384 triang_signed=3 ;;
1385 intmathabs)
1386 triang_signed=5 ;;
1387 esac
1388 fi
1389 AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, ${triang_signed}, [Define signed triangular wave algorithm to be used.])
1390
1391 if test "$config_unsigned_triang_algo" = "benchmark"; then
1392 echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... "
1393 AC_LANG_PUSH([C++])
1394 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1395 #define SIGNED 0
1396 #define SILENT 1
1397 #include "${srcdir}/benchmarks/triang.cpp"
1398 ]])],
1399 triang_unsigned=0,
1400 triang_unsigned=$?,
1401 triang_unsigned=0
1402 )
1403 AC_LANG_POP([C++])
1404 if test "$triang_unsigned" = "2"; then
1405 config_unsigned_triang_algo="intmath"
1406 echo "integer math"
1407 elif test "$triang_unsigned" = "3"; then
1408 config_unsigned_triang_algo="diharmonic"
1409 echo "di harmonics"
1410 elif test "$triang_unsigned" = "5"; then
1411 config_unsigned_triang_algo="intmathabs"
1412 echo "integer math using abs()"
1413 else
1414 echo "Benchmark of unsigned triangular wave algorithms failed!"
1415 echo "Maybe you are doing cross compilation? In that case you have to select"
1416 echo "an algorithm manually with './configure --enable-unsigned-triang-algo=...'"
1417 echo "Call './configure --help' for further information or read configure.in."
1418 exit -1;
1419 fi
1420 else
1421 case "$config_unsigned_triang_algo" in
1422 intmath)
1423 triang_unsigned=2 ;;
1424 diharmonic)
1425 triang_unsigned=3 ;;
1426 intmathabs)
1427 triang_unsigned=5 ;;
1428 esac
1429 fi
1430 AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.])
1431
1432
1433 ###########################################################################
1434 # Create Build Files
1435
1436 AC_CONFIG_HEADERS([config.h])
1437
1438 AC_LANG([C++])
1439
1440 # autoconf 2.59/libtool 1.5.12 bug? work-around. Without a check like
1441 # this, the dlfcn.h check in am_prog_libtool may fail.
1442 AC_CHECK_HEADER(stdlib.h)
1443
1444 AC_CONFIG_FILES([\
1445 Makefile \
1446 man/Makefile \
1447 man/linuxsampler.1 \
1448 man/lscp.1 \
1449 src/Makefile \
1450 src/db/Makefile \
1451 src/network/Makefile \
1452 src/engines/Makefile \
1453 src/engines/gig/Makefile \
1454 src/engines/sf2/Makefile \
1455 src/engines/sfz/Makefile \
1456 src/engines/common/Makefile \
1457 src/effects/Makefile \
1458 src/common/Makefile \
1459 src/testcases/Makefile \
1460 src/drivers/Makefile \
1461 src/drivers/audio/Makefile \
1462 src/drivers/midi/Makefile \
1463 src/plugins/Makefile \
1464 src/hostplugins/Makefile \
1465 src/hostplugins/dssi/Makefile \
1466 src/hostplugins/lv2/Makefile \
1467 src/hostplugins/lv2/manifest.ttl \
1468 src/hostplugins/vst/Makefile \
1469 src/hostplugins/au/Makefile \
1470 src/scriptvm/Makefile \
1471 src/scriptvm/editor/Makefile \
1472 src/shell/Makefile \
1473 linuxsampler.spec \
1474 debian/Makefile \
1475 Artwork/Makefile \
1476 scripts/Makefile \
1477 osx/Makefile \
1478 osx/linuxsampler.xcodeproj/Makefile \
1479 Documentation/Makefile \
1480 Documentation/Engines/Makefile \
1481 Documentation/Engines/gig/Makefile \
1482 linuxsampler.pc \
1483 Doxyfile \
1484 ])
1485 AC_OUTPUT
1486
1487 # resolve all nested variables in '${config_plugin_dir}'
1488 # (merely for providing a human readable summary below)
1489 while test $config_plugin_dir != `eval echo ${config_plugin_dir}` ; do
1490 config_plugin_dir=`eval echo ${config_plugin_dir}`
1491 done
1492
1493
1494 ###########################################################################
1495 # Output All Configuration Options
1496
1497 echo ""
1498 echo "#####################################################################"
1499 echo "# LinuxSampler Configuration #"
1500 echo "#-------------------------------------------------------------------#"
1501 echo "# Release Version: ${VERSION}"
1502 echo "# LSCP Version: ${LSCP_RELEASE_MAJOR}.${LSCP_RELEASE_MINOR}"
1503 echo "#-------------------------------------------------------------------"
1504 echo "# Assembly Optimizations: ${config_asm}"
1505 echo "# Development Mode: ${config_dev_mode}"
1506 echo "# Debug Level: ${config_debug_level}"
1507 echo "# Use Exceptions in RT Context: ${config_rt_exceptions}"
1508 echo "# Preload Samples: ${config_preload_samples}"
1509 echo "# Maximum Pitch: ${config_max_pitch} (octaves)"
1510 echo "# Maximum Events: ${config_max_events}"
1511 echo "# Envelope Bottom Level: ${config_eg_bottom} (linear)"
1512 echo "# Envelope Minimum Release Time: ${config_eg_min_release_time} s"
1513 echo "# Streams to be refilled per Disk Thread Cycle: ${config_refill_streams}"
1514 echo "# Minimum Stream Refill Size: ${config_stream_min_refill}"
1515 echo "# Maximum Stream Refill Size: ${config_stream_max_refill}"
1516 echo "# Stream Size: ${config_stream_size}"
1517 echo "# Default Maximum Disk Streams: ${config_max_streams}"
1518 echo "# Default Maximum Voices: ${config_max_voices}"
1519 echo "# Default Subfragment Size: ${config_subfragment_size}"
1520 echo "# Default Global Volume Attenuation: ${config_global_attenuation_default}"
1521 echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}"
1522 echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}"
1523 echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}"
1524 echo "# SysEx Buffer Size: ${config_sysex_buffer_size} Byte"
1525 echo "# Min. Portamento Time: ${config_portamento_time_min} s"
1526 echo "# Max. Portamento Time: ${config_portamento_time_max} s"
1527 echo "# Default Portamento Time: ${config_portamento_time_default} s"
1528 echo "# Force Filter Usage: ${config_force_filter}"
1529 echo "# Filter Cutoff Minimum: ${config_filter_cutoff_min} Hz"
1530 echo "# Filter Cutoff Maximum: ${config_filter_cutoff_max} Hz"
1531 echo "# Override Filter Cutoff Controller: ${config_override_cutoff_ctrl}"
1532 echo "# Override Filter Resonance Controller: ${config_override_resonance_ctrl}"
1533 echo "# Override Filter Type: ${config_override_filter_type}"
1534 echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}"
1535 echo "# Process Muted Channels: ${config_process_muted_channels}"
1536 echo "# Process All-Notes-Off MIDI message: ${config_process_all_notes_off}"
1537 echo "# Apply global volume SysEx by MIDI port: ${config_master_volume_sysex_by_port}"
1538 echo "# Interpolate Volume: ${config_interpolate_volume}"
1539 echo "# Instruments database support: ${config_instruments_db}"
1540 if test "$config_instruments_db" = "yes"; then
1541 echo "# Instruments DB default location: ${config_default_instruments_db_file}"
1542 fi
1543 echo "# Plugin Path: ${config_plugin_dir}"
1544 echo "#-------------------------------------------------------------------"
1545 echo "# MIDI Input Drivers:"
1546 echo "# ALSA: ${config_have_alsa}, JACK: ${config_have_jack_midi}, CoreMIDI: ${config_have_coremidi}, MME: ${config_have_mme}, MidiShare: ${config_have_midishare}"
1547 echo "#-------------------------------------------------------------------"
1548 echo "# Audio Output Drivers:"
1549 echo "# ALSA: ${config_have_alsa}, JACK: ${config_have_jack}, ARTS: ${config_have_arts}, CoreAudio: ${config_have_coreaudio}, ASIO: ${config_have_asio}"
1550 echo "#-------------------------------------------------------------------"
1551 echo "# Sampler Engines:"
1552 echo "# GIG: yes, SF2: ${config_have_sf2}, SFZ: yes"
1553 echo "#-------------------------------------------------------------------"
1554 echo "# Effect plugin systems for internal effects:"
1555 echo "# LADSPA: yes"
1556 echo "#-------------------------------------------------------------------"
1557 echo "# Building sampler as plugin for following host standards:"
1558 echo "# DSSI: ${config_have_dssi}, LV2: ${config_have_lv2}, VST: ${config_have_vst}, AU: ${config_have_au}"
1559 echo "#-------------------------------------------------------------------#"
1560 echo "# Read './configure --help' or file 'configure.in' for details. #"
1561 echo "#####################################################################"
1562 echo ""
1563 echo "Good. Now type 'make' to compile, followed by 'make install' as root."
1564 echo ""

  ViewVC Help
Powered by ViewVC