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

Contents of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2516 - (show annotations) (download)
Thu Feb 6 21:11:23 2014 UTC (10 years, 1 month ago) by schoenebeck
File size: 57958 byte(s)
* WIP: LSCP Shell: implemented support for auto-correction of       
  obvious and trivial LSCP syntax mistakes, support for
  auto-completion by tab key and visual completion suggestion
  while typing.
* Bumped version (1.0.0.svn29).

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

  ViewVC Help
Powered by ViewVC