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

Legend:
Removed from v.31  
changed lines
  Added in v.2594

  ViewVC Help
Powered by ViewVC