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

Contents of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3557 - (show annotations) (download)
Sun Aug 18 00:06:04 2019 UTC (4 hours, 48 minutes ago) by schoenebeck
File size: 59204 byte(s)
* NKSP: Introducing 64 bit support for NKSP integer scripts
  variables (declare $foo).
* Require C++11 compiler support.
* Autoconf: Added m4/ax_cxx_compile_stdcxx.m4 macro which is used
  for checking in configure for C++11 support (as mandatory
  requirement) and automatically adds compiler argument if required
  (e.g. -std=C++11).
* Bumped version (2.1.1.svn3).

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

  ViewVC Help
Powered by ViewVC