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

Legend:
Removed from v.275  
changed lines
  Added in v.3592

  ViewVC Help
Powered by ViewVC