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

Diff of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.80  
changed lines
  Added in v.3283

  ViewVC Help
Powered by ViewVC