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

Contents of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2962 - (show annotations) (download)
Sun Jul 17 17:54:04 2016 UTC (7 years, 8 months ago) by schoenebeck
File size: 58777 byte(s)
* NKSP: Fixed all change_*() built-in script functions to apply their
  synthesis parameter changes immediately in case the respective note
  was triggered at the same time, instead of scheduling the parameter
  change, especially because it would cause some parameter types's
  changes either to be ramped (i.e. change_vol()) or other types even
  to have not effect at all (i.e. change_attack()).
* Bumped version (2.0.0.svn20).

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

  ViewVC Help
Powered by ViewVC