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

Diff of /linuxsampler/trunk/configure.in

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

revision 275 by schoenebeck, Sat Oct 9 15:40:35 2004 UTC revision 726 by schoenebeck, Mon Jul 25 15:13:59 2005 UTC
# Line 1  Line 1 
1  AC_INIT(configure.in)  AC_INIT(configure.in)
2    
3    #------------------------------------------------------------------------------------
4    # LinuxSampler's / liblinuxsampler's "official" release version:
5    
6    LINUXSAMPLER_RELEASE_MAJOR=0
7    LINUXSAMPLER_RELEASE_MINOR=3
8    LINUXSAMPLER_RELEASE_BUILD=3
9    
10    #------------------------------------------------------------------------------------
11    # The following is the libtool / shared library version. This doesn't have to
12    # do anything with the release version. It MUST conform to the following rules:
13    #
14    #  1. Start with version information of `0:0:0' for each libtool library.
15    #  2. Update the version information only immediately before a public release of
16    #     your software. More frequent updates are unnecessary, and only guarantee
17    #     that the current interface number gets larger faster.
18    #  3. If the library source code has changed at all since the last update, then
19    #     increment revision (`c:r:a' becomes `c:r+1:a').
20    #  4. If any interfaces have been added, removed, or changed since the last update,
21    #     increment current, and set revision to 0.
22    #  5. If any interfaces have been added since the last public release, then increment
23    #     age.
24    #  6. If any interfaces have been removed since the last public release, then set age
25    #     to 0.
26    
27    LIBLINUXSAMPLER_LT_CURRENT=0
28    LIBLINUXSAMPLER_LT_REVISION=0
29    LIBLINUXSAMPLER_LT_AGE=0
30    SHARED_VERSION_INFO="$LIBLINUXSAMPLER_LT_CURRENT:$LIBLINUXSAMPLER_LT_REVISION:$LIBLINUXSAMPLER_LT_AGE"
31    
32    AM_PROG_LIBTOOL
33    
34    AC_SUBST(SHLIB_VERSION_ARG)
35    AC_SUBST(SHARED_VERSION_INFO)
36    
37  AC_C_BIGENDIAN  AC_C_BIGENDIAN
38  AC_CANONICAL_SYSTEM  AC_CANONICAL_SYSTEM
39    
# Line 9  AC_SUBST(target_os) Line 44  AC_SUBST(target_os)
44  AC_SUBST(target_vendor)  AC_SUBST(target_vendor)
45    
46    
47  # TODO: Check for UNIX98 compatibility (needed for pthread_mutexattr_settype() call in Mutex.cpp)  ###########################################################################
48  #       checking macro _XOPEN_SOURCE >= 500 from features.h recommended for this  # General Checks
   
49    
50  echo -n "checking whether x86 architecture... "  AC_MSG_CHECKING([whether x86 architecture])
51  def_arch_x86=0  def_arch_x86=0
52  case $target_cpu in  case $target_cpu in
53    "i386" | "i486" | "i586" | "i686" | "i786")    "i386" | "i486" | "i586" | "i686" | "i786")
# Line 24  case $target_cpu in Line 58  case $target_cpu in
58  esac  esac
59  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.])
60    
61    # determine the right gcc switch for CPU specific optimizations
62    CXX_CPU_SWITCH=
63    if test "$def_arch_x86" = 1; then
64      CXX_CPU_SWITCH="-march=$target_cpu"
65    elif test "$target_cpu" = "powerpc"; then
66      CXX_CPU_SWITCH="-arch=$target_cpu"
67    fi
68    AC_SUBST([CXX_CPU_SWITCH])
69    
70    AC_MSG_CHECKING([whether UNIX98 compatible])
71    AC_LANG_SAVE
72    AC_LANG_C
73    AC_TRY_RUN([
74    #ifndef _GNU_SOURCE
75    #define _GNU_SOURCE 1
76    #endif
77    #include <features.h>
78    void main(void) {
79    #if _XOPEN_SOURCE >= 500
80    exit(0); /* UNIX98 compatible */
81    #else
82    exit(-1); /* not UNIX98 compatible */
83    #endif
84    }
85    ],
86    have_unix98="yes",
87    have_unix98="no",
88    have_unix98="no"
89    )
90    AC_LANG_RESTORE
91    AC_MSG_RESULT([$have_unix98])
92    if test "$have_unix98" = "no"; then
93        if test "x$HAVE_UNIX98" = "x"; then
94            echo "LinuxSampler only runs on UNIX98 compatible systems, which is mandatory for"
95            echo "pthread_mutexattr_settype() call in Mutex.cpp. You may want to run
96            echo "./configure with environment variable HAVE_UNIX98=1 in case you think you
97            echo "have a UNIX98 compatible system."
98            exit -1;
99        fi
100    fi
101    
102    # Checks for available audio and MIDI systems / drivers
103    # (we throw an error if there's not at least one system for audio output and MIDI input available)
104    have_midi_input_driver="false"
105    have_audio_output_driver="false"
106    
107  AC_CHECK_HEADER(alsa/asoundlib.h,  AC_CHECK_HEADER(alsa/asoundlib.h,
108      AC_CHECK_LIB(asound, main,      AC_CHECK_LIB(asound, main,
109                               have_alsa="true"                               have_alsa=1
110                               ,                               ,
111                               have_alsa="false"                               have_alsa=0
112                  )                  )
113                  ,                  ,
114                  have_alsa="false"                  have_alsa=0
115  )  )
116  if test "$have_alsa" = "false"; then  if test "$have_alsa" = "1"; then
117      echo "Alsa not installed!"      have_midi_input_driver="true"
118      echo "Sorry, LinuxSampler only supports Alsa sound drivers at the moment!"      have_audio_output_driver="true";
     exit -1;  
119  fi  fi
120    AM_CONDITIONAL(HAVE_ALSA, test $have_alsa = "1")
121    AC_DEFINE_UNQUOTED(HAVE_ALSA,$have_alsa,[Define to 1 if you have ALSA installed.])
122    
123  echo -n "checking Alsa version... "  echo -n "checking Alsa version... "
124  AC_LANG_SAVE  AC_LANG_SAVE
# Line 92  AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_majo Line 171  AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_majo
171  AC_DEFINE_UNQUOTED(ALSA_MINOR,$alsa_minor,[Define to the minor version number of your Alsa installation.])  AC_DEFINE_UNQUOTED(ALSA_MINOR,$alsa_minor,[Define to the minor version number of your Alsa installation.])
172  AC_DEFINE_UNQUOTED(ALSA_SUBMINOR,$alsa_subminor,[Define to the subminor version number of your Alsa installation.])  AC_DEFINE_UNQUOTED(ALSA_SUBMINOR,$alsa_subminor,[Define to the subminor version number of your Alsa installation.])
173    
   
174  # JACK  # JACK
175  PKG_CHECK_MODULES(JACK, jack, HAVE_JACK=true, HAVE_JACK=false)  PKG_CHECK_MODULES(JACK, jack, HAVE_JACK=true, HAVE_JACK=false)
176  AC_SUBST(JACK_LIBS)  AC_SUBST(JACK_LIBS)
# Line 100  AC_SUBST(JACK_CFLAGS) Line 178  AC_SUBST(JACK_CFLAGS)
178  if test $HAVE_JACK = false; then  if test $HAVE_JACK = false; then
179      HAVE_JACK=0;      HAVE_JACK=0;
180  else  else
181      HAVE_JACK=1;      HAVE_JACK=1
182        have_audio_output_driver="true";
183        AC_CHECK_LIB(jack, jack_client_name_size, [AC_DEFINE(HAVE_JACK_CLIENT_NAME_SIZE, 1, [Define to 1 if you have the `jack_client_name_size' function.])], , $JACK_LIBS)
184  fi  fi
185    AM_CONDITIONAL(HAVE_JACK, test $HAVE_JACK = 1)
186  AC_DEFINE_UNQUOTED(HAVE_JACK,$HAVE_JACK,[Define to 1 if you have JACK installed.])  AC_DEFINE_UNQUOTED(HAVE_JACK,$HAVE_JACK,[Define to 1 if you have JACK installed.])
187    
188    # MidiShare (Linux, OS X, Windows)
189    AC_CHECK_HEADER(MidiShare.h,
190        AC_CHECK_LIB(MidiShare, MidiCountEvs,
191                                have_midishare=1,
192                                have_midishare=0
193                    )
194                    ,
195                    have_midishare=0
196    )
197    if test "$have_midishare" = "1"; then
198        have_midi_input_driver="true"
199    fi
200    AM_CONDITIONAL(HAVE_MIDISHARE, test $have_midishare = "1")
201    AC_DEFINE_UNQUOTED(HAVE_MIDISHARE,$have_midishare,[Define to 1 if you have MidiShare installed.])
202    
203    # CoreMIDI (OS X)
204    AC_CHECK_HEADER(CoreMIDI/CoreMIDI.h,
205                    have_coremidi=1,
206                    have_coremidi=0
207    )
208    if test "$have_coremidi" = "1"; then
209        have_midi_input_driver="true"
210    fi
211    AM_CONDITIONAL(HAVE_COREMIDI, test $have_coremidi = "1")
212    AC_DEFINE_UNQUOTED(HAVE_COREMIDI,$have_coremidi,[Define to 1 if you have CoreMIDI installed.])
213    
214    # Check presence of libgig
215    libgig_version="2.0.1"
216    PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false)
217    if test "$HAVE_GIG" = "false"; then
218        echo "Required libgig version not found!"
219        echo "You need to have libgig version ${libgig_version} installed!"
220        exit -1;
221    else
222        echo "yes, found libgig $libgig_version"
223    fi
224    AC_SUBST(GIG_CFLAGS)
225    AC_SUBST(GIG_LIBS)
226    
227    # SQLITE3
228    PKG_CHECK_MODULES(SQLITE3, sqlite3, HAVE_SQLITE3=true, HAVE_SQLITE3=false)
229    AC_SUBST(SQLITE3_LIBS)
230    AC_SUBST(SQLITE3_CFLAGS)
231    if test $HAVE_SQLITE3 = false; then
232        HAVE_SQLITE3=0;
233        echo "no, support for instrument DB will be disabled!"
234    else
235        HAVE_SQLITE3=1
236        echo "yes"
237    fi
238    AM_CONDITIONAL(HAVE_SQLITE3, test $HAVE_SQLITE3 = 1)
239    AC_DEFINE_UNQUOTED(HAVE_SQLITE3,$HAVE_SQLITE3,[Define to 1 if you have SQLITE3 installed.])
240    
241    if test "$have_midi_input_driver" = "false"; then
242        echo "No supported MIDI input system found!"
243        echo "Sorry, LinuxSampler only supports the following MIDI drivers at the moment:"
244        echo "ALSA, MIDIShare, CoreMIDI."
245        echo "If you think you have one of those available on your system, make sure you"
246        echo "also have the respective development (header) files installed."
247        exit -1;
248    fi
249    if test "$have_audio_output_driver" = "false"; then
250        echo "No supported audio output system found!"
251        echo "Sorry, LinuxSampler only supports ALSA and JACK as audio output driver at the moment!"
252        exit -1;
253    fi
254    
255    
256    ###########################################################################
257    # Handle Configuration Options
258    
259    # TODO: should we use AC_ARG_VAR(variable, description) instead?
260    
261    AC_ARG_ENABLE(asm,
262      [  --disable-asm
263                              Disable hand-crafted assembly optimizations
264                              (default=on). LinuxSampler provides CPU specific
265                              assembly optimizations for the most important
266                              synthesis algorithms. You usually don't want to
267                              disable that.],
268      [config_asm="no"],
269      [config_asm="yes"]
270    )
271    if test "$config_asm" = "yes"; then
272      AC_DEFINE_UNQUOTED(CONFIG_ASM, 1, [Define to 1 if you want to enable hand-crafted asm optimizations.])
273    fi
274    
275    AC_ARG_ENABLE(dev-mode,
276      [  --enable-dev-mode
277                              Enable development mode (default=no). In that mode
278                              we do some extra sanity checks here and there.
279                              This helps to spot possible problems, but reduces
280                              efficiency a bit],
281      [config_dev_mode="yes"],
282      [config_dev_mode="no"]
283    )
284    if test "$config_dev_mode" = "yes"; then
285      AC_DEFINE_UNQUOTED(CONFIG_DEVMODE, 1, [Define to 1 if you want to enable development mode.])
286    fi
287    
288    AC_ARG_ENABLE(debug-level,
289      [  --enable-debug-level
290                              Specify verbosity of console messages (default=1).
291                              The higher the value, the higher will be verbosity.
292                              A value of 0 means no console output at all.
293                              There's not really an upper limit but the usual
294                              level of all messages is currently somewhere less
295                              than 10.],
296      [config_debug_level="${enableval}"],
297      [config_debug_level="1"]
298    )
299    AC_DEFINE_UNQUOTED(CONFIG_DEBUG_LEVEL, $config_debug_level, [Define console verbosity.])
300    
301    AC_ARG_ENABLE(rt-exceptions,
302      [  --enable-rt-exceptions
303                              Enable exceptions in the realtime thread
304                              (default=no). If this is enabled, exceptions will
305                              be thrown on critical errors in the realtime
306                              context as well. Otherwise if disabled
307                              segmentation faults will be forced by the
308                              application on critical errors.],
309      [config_rt_exceptions="yes"],
310      [config_rt_exceptions="no"]
311    )
312    if test "$config_rt_exceptions" = "yes"; then
313      AC_DEFINE_UNQUOTED(CONFIG_RT_EXCEPTIONS, 1, [Define to 1 to allow exceptions in the realtime context.])
314    fi
315    
316    AC_ARG_ENABLE(preload-samples,
317      [  --enable-preload-samples
318                              Due to seeking and latency issues with hard drives
319                              we have to cache a small part of samples' head in
320                              RAM (default=32768). The higher this value the
321                              more memory will be occupied for each sample, but
322                              the safer this will be in regards of possible
323                              droputs. A 'good' value depends on the running
324                              system and usage dependant factors.],
325      [config_preload_samples="${enableval}"],
326      [config_preload_samples="32768"]
327    )
328    AC_DEFINE_UNQUOTED(CONFIG_PRELOAD_SAMPLES, $config_preload_samples, [Define amount of sample points to be cached in RAM.])
329    
330    AC_ARG_ENABLE(max-pitch,
331      [  --enable-max-pitch
332                              Specify the maximum allowed pitch value in octaves
333                              (default=4). To lower memory usage you might want
334                              set a smaller value.],
335      [config_max_pitch="${enableval}"],
336      [config_max_pitch="4"]
337    )
338    AC_DEFINE_UNQUOTED(CONFIG_MAX_PITCH, $config_max_pitch, [Define max. allowed pitch.])
339    
340    AC_ARG_ENABLE(max-events,
341      [  --enable-max-events
342                              Specify the maximum allowed amount of events to be
343                              processed per fragment (default=1024).],
344      [config_max_events="${enableval}"],
345      [config_max_events="1024"]
346    )
347    AC_DEFINE_UNQUOTED(CONFIG_MAX_EVENTS_PER_FRAGMENT, $config_max_events, [Define max. allowed events per fragment.])
348    
349    AC_ARG_ENABLE(eg-bottom,
350      [  --enable-eg-bottom
351                              Bottom limit of envelope generators
352                              (default=0.001). Certain kinds of curve types like
353                              exponential curves converge against 0 but never
354                              reach 0. So we have to define a certain low value
355                              after which we should consider all smaller values
356                              to be 'almost zero'. The smaller this value, the
357                              longer will voices survive in EG's release stage
358                              and thus waste voices. If this value is too high
359                              will cause click sounds though.],
360      [config_eg_bottom="${enableval}"],
361      [config_eg_bottom="0.001"]
362    )
363    AC_DEFINE_UNQUOTED(CONFIG_EG_BOTTOM, $config_eg_bottom, [Define bottom limit of envelopes.])
364    
365    AC_ARG_ENABLE(eg-min-release-time,
366      [  --enable-eg-min-release-time
367                              Specify the lowest allowed release time in seconds
368                              (default=0.0025). This value will also be used to
369                              ramp down voices on voice stealing. This value
370                              should always be less than the period time of the
371                              used audio driver, as in case of voice stealing
372                              the killed voice needs to be completely ramped
373                              down in the same fragment.],
374      [config_eg_min_release_time="${enableval}"],
375      [config_eg_min_release_time="0.0025"]
376    )
377    AC_DEFINE_UNQUOTED(CONFIG_EG_MIN_RELEASE_TIME, $config_eg_min_release_time, [Define min. release time.])
378    
379    AC_ARG_ENABLE(refill-streams,
380      [  --enable-refill-streams
381                              Number of streams that should be refilled in each
382                              disk thread cycle (default=4).],
383      [config_refill_streams="${enableval}"],
384      [config_refill_streams="4"]
385    )
386    AC_DEFINE_UNQUOTED(CONFIG_REFILL_STREAMS_PER_RUN, $config_refill_streams, [Define amount of streams to be refilled per cycle.])
387    
388    AC_ARG_ENABLE(stream-min-refill,
389      [  --enable-stream-min-refill
390                              Minimum refill size for disk streams (default=1024).
391                              The disk thread will go to sleep for a while if no
392                              stream had to be refilled more than this value in
393                              a disk thread cycle.],
394      [config_stream_min_refill="${enableval}"],
395      [config_stream_min_refill="1024"]
396    )
397    AC_DEFINE_UNQUOTED(CONFIG_STREAM_MIN_REFILL_SIZE, $config_stream_min_refill, [Define min. stream refill size.])
398    
399    AC_ARG_ENABLE(stream-max-refill,
400      [  --enable-stream-max-refill
401                              Maximum refill size for disk streams
402                              (default=65536). The disk thread will refill
403                              each stream only by a size of this value per
404                              disk thread cycle.],
405      [config_stream_max_refill="${enableval}"],
406      [config_stream_max_refill="65536"]
407    )
408    AC_DEFINE_UNQUOTED(CONFIG_STREAM_MAX_REFILL_SIZE, $config_stream_max_refill, [Define max. stream refill size.])
409    
410    AC_ARG_ENABLE(stream-size,
411      [  --enable-stream-size
412                              Size of each stream's ring buffer in sample points
413                              (default=262144).],
414      [config_stream_size="${enableval}"],
415      [config_stream_size="262144"]
416    )
417    AC_DEFINE_UNQUOTED(CONFIG_STREAM_BUFFER_SIZE, $config_stream_size, [Define each stream's ring buffer size.])
418    
419    AC_ARG_ENABLE(max-streams,
420      [  --enable-max-streams
421                              Maximum amount of disk streams (default=90). This
422                              value should always be higher than the maximum
423                              amount of voices.],
424      [config_max_streams="${enableval}"],
425      [config_max_streams="90"]
426    )
427    AC_DEFINE_UNQUOTED(CONFIG_MAX_STREAMS, $config_max_streams, [Define max. streams.])
428    
429    AC_ARG_ENABLE(max-voices,
430      [  --enable-max-voices
431                              Maximum amount of voices (default=64). This value
432                              should always be lower than the maximum amount of
433                              disk streams.],
434      [config_max_voices="${enableval}"],
435      [config_max_voices="64"]
436    )
437    AC_DEFINE_UNQUOTED(CONFIG_MAX_VOICES, $config_max_voices, [Define max. voices.])
438    
439    AC_ARG_ENABLE(voice-steal-algo,
440      [  --enable-voice-steal-algo
441                              Voice stealing algorithm to be used. Currently
442                              available options:
443                                none:
444                                  Disable voice stealing completely.
445                                oldestvoiceonkey (default):
446                                  Try to kill a voice on the same key first,
447                                  if no success, proceed with the oldest key.
448                                oldestkey:
449                                  Try to kill a voice from the oldest active
450                                  key.],
451      [ if test ! "(" "${enableval}" = "none" \
452                  -o "${enableval}" = "oldestvoiceonkey" \
453                  -o "${enableval}" = "oldestkey" ")" ; then
454          AC_MSG_ERROR([Unknown voice stealing algorithm for parameter --enable-voice-steal-algo])
455        else
456          config_voice_steal_algo="${enableval}"
457        fi
458      ],
459      [config_voice_steal_algo="oldestvoiceonkey"]
460    )
461    AC_DEFINE_UNQUOTED(CONFIG_VOICE_STEAL_ALGO, voice_steal_algo_${config_voice_steal_algo}, [Define voice stealing algorithm to be used.])
462    
463    AC_ARG_ENABLE(sysex-buffer-size,
464      [  --enable-sysex-buffer-size
465                              System Exclusive Message buffer size in kB
466                              (default=2048).],
467      [config_sysex_buffer_size="${enableval}"],
468      [config_sysex_buffer_size="2048"]
469    )
470    AC_DEFINE_UNQUOTED(CONFIG_SYSEX_BUFFER_SIZE, $config_sysex_buffer_size, [Define SysEx buffer size.])
471    
472    AC_ARG_ENABLE(filter-update-steps,
473      [  --enable-filter-update-steps
474                              Amount of sample points after which filter
475                              parameters (cutoff, resonance) are going to be
476                              updated (default=64). Higher value means less CPU
477                              load, but also worse parameter resolution, this
478                              value will be aligned to a power of two.],
479      [config_filter_update_steps="${enableval}"],
480      [config_filter_update_steps="64"]
481    )
482    AC_DEFINE_UNQUOTED(CONFIG_FILTER_UPDATE_STEPS, $config_filter_update_steps, [Define amount of steps to refresh filter coefficients.])
483    
484    AC_ARG_ENABLE(force-filter,
485      [  --enable-force-filter
486                              If enabled will force filter to be used even if
487                              no usage was define in instrument patch files.
488                              (default=no).],
489      [config_force_filter="yes"],
490      [config_force_filter="no"]
491    )
492    if test "$config_force_filter" = "yes"; then
493      AC_DEFINE_UNQUOTED(CONFIG_FORCE_FILTER, 1, [Define to 1 to force filter usage.])
494    fi
495    
496    AC_ARG_ENABLE(filter-cutoff-min,
497      [  --enable-filter-cutoff-min
498                              Minimum filter cutoff frequency in Hz
499                              (default=100.0).],
500      [config_filter_cutoff_min="${enableval}"],
501      [config_filter_cutoff_min="100.0"]
502    )
503    AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MIN, ${config_filter_cutoff_min}f, [Define min. filter cutoff frequency.])
504    
505    AC_ARG_ENABLE(filter-cutoff-max,
506      [  --enable-filter-cutoff-max
507                              Maximum filter cutoff frequency in Hz
508                              (default=10000.0).],
509      [config_filter_cutoff_max="${enableval}"],
510      [config_filter_cutoff_max="10000.0"]
511    )
512    AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MAX, ${config_filter_cutoff_max}f, [Define max. filter cutoff frequency.])
513    
514    AC_ARG_ENABLE(override-cutoff-ctrl,
515      [  --enable-override-cutoff-ctrl
516                              Override filter cutoff MIDI controller (default=no).
517                              Note: you have to define the MIDI controller number
518                              here, it's not a boolean parameter type! If this
519                              option is used, controller number given by
520                              instrument patch will be ignored and instead this
521                              supplied value will be used.],
522      [config_override_cutoff_ctrl="${enableval}"],
523      [config_override_cutoff_ctrl="no"]
524    )
525    if test ! "$config_override_cutoff_ctrl" = "no"; then
526      AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_CUTOFF_CTRL, $config_override_cutoff_ctrl, [Define to a MIDI controller number to override cutoff control.])
527    fi
528    
529    AC_ARG_ENABLE(override-resonance-ctrl,
530      [  --enable-override-resonance-ctrl
531                              Override filter resonance MIDI controller
532                              (default=no). Note: you have to define the MIDI
533                              controller number here, it's not a boolean
534                              parameter type! If this option is used, controller
535                              number given by instrument patch will be ignored
536                              and instead this supplied value will be used.],
537      [config_override_resonance_ctrl="${enableval}"],
538      [config_override_resonance_ctrl="no"]
539    )
540    if test ! "$config_override_resonance_ctrl" = "no"; then
541      AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_RESONANCE_CTRL, $config_override_resonance_ctrl, [Define to a MIDI controller number to override resonance control.])
542    fi
543    
544    AC_ARG_ENABLE(override-filter-type,
545      [  --enable-override-filter-type
546                              Override filter type (default=no). Options:
547                              hp: for highpass
548                              bp: for bandpass
549                              br: for bandreject
550                              lp: for lowpass
551                              lpt: for lowpass turbo],
552      [ if   test "${enableval}" = "hp" ; then
553           config_override_filter_type="::gig::vcf_type_highpass"
554        elif test "${enableval}" = "bp" ; then
555           config_override_filter_type="::gig::vcf_type_bandpass"
556        elif test "${enableval}" = "br" ; then
557           config_override_filter_type="::gig::vcf_type_bandreject"
558        elif test "${enableval}" = "lp" ; then
559           config_override_filter_type="::gig::vcf_type_lowpass"
560        elif test "${enableval}" = "lpt" ; then
561           config_override_filter_type="::gig::vcf_type_lowpassturbo"
562        elif test ! "${enableval}" = "no"; then
563           AC_MSG_ERROR([Unknown filter type for parameter --enable-override-filter-type])
564        fi
565      ],
566      [config_override_filter_type="no"]
567    )
568    if test ! "$config_override_filter_type" = "no"; then
569      AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_FILTER_TYPE, $config_override_filter_type, [Define to a filter type to always force that filter type.])
570    fi
571    
572    AC_ARG_ENABLE(gs-checksum,
573      [  --enable-gs-checksum
574                              Enable Roland General Synth SysEx checksum check
575                              (default=no). If this is enabled, all GS SysEx
576                              messages which do not provide a correct checksum
577                              will be ignored. This is disabled by default as
578                              not all devices honor GS checksums.],
579      [config_assert_gs_sysex_checksum="yes"],
580      [config_assert_gs_sysex_checksum="no"]
581    )
582    if test "config_assert_gs_sysex_checksum" = "yes"; then
583      AC_DEFINE_UNQUOTED(CONFIG_ASSERT_GS_SYSEX_CHECKSUM, 1, [Define to 1 if you want to enable GS SysEx check.])
584    fi
585    
586    AC_ARG_ENABLE(signed-triang-algo,
587      [  --enable-signed-triang-algo
588                              Signed triangular wave algorithm to be used (e.g. for LFOs).
589                              Currently available options:
590                                intmath:
591                                  Uses integer math without any branch will then be
592                                  converted to floating point value for each sample point.
593                                  This int->float conversion might hurt on some systems.
594                                intmathabs:
595                                  Similar to intmath but uses abs() function.
596                                  Depending on compiler and platrofm this could
597                                  perform better than integer math as it avoids
598                                  an extra integer multiply instruction.
599    
600                                diharmonic:
601                                  The triangular wave will be approximated by adding two
602                                  sinusoidials. This solution might especially hurt on
603                                  systems with weak floating point unit.
604                                benchmark (default):
605                                  This is not an algorithm. Use this option if the
606                                  appropriate algorithm should be automatically
607                                  chosen by the configure script by performing a
608                                  benchmark between the algorithms mentioned above.
609                                  This will NOT work for cross compilation!],
610      [ if test ! "(" "${enableval}" = "intmath" \
611                  -o "${enableval}" = "intmathabs" \
612                  -o "${enableval}" = "diharmonic" ")" ; then
613          AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-signed-triang-algo])
614        else
615          config_signed_triang_algo="${enableval}"
616        fi
617      ],
618      [config_signed_triang_algo="benchmark"]
619    )
620    
621    AC_ARG_ENABLE(unsigned-triang-algo,
622      [  --enable-unsigned-triang-algo
623                              Unsigned triangular wave algorithm to be used (e.g. for LFOs).
624                              Currently available options:
625                                intmath:
626                                  Uses integer math without any branch will then be
627                                  converted to floating point value for each sample point.
628                                  This int->float conversion might hurt on some systems.
629                                intmathabs:
630                                  Similar to intmath but uses abs() function.
631                                  Depending on compiler and platrofm this could
632                                  perform better than integer math as it avoids
633                                  an extra integer multiply instruction.
634    
635                                diharmonic:
636                                  The triangular wave will be approximated by adding two
637                                  sinusoidials. This solution might especially hurt on
638                                  systems with weak floating point unit.
639                                benchmark (default):
640                                  This is not an algorithm. Use this option if the
641                                  appropriate algorithm should be automatically
642                                  chosen by the configure script by performing a
643                                  benchmark between the algorithms mentioned above.
644                                  This will NOT work for cross compilation!],
645      [ if test ! "(" "${enableval}" = "intmath" \
646                  -o "${enableval}" = "intmathabs" \
647                  -o "${enableval}" = "diharmonic" ")" ; then
648          AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-unsigned-triang-algo])
649        else
650          config_unsigned_triang_algo="${enableval}"
651        fi
652      ],
653      [config_unsigned_triang_algo="benchmark"]
654    )
655    
656    AC_ARG_ENABLE(process-muted-channels,
657      [  --enable-process-muted-channels
658                              Enable processing of muted channels (default=no).
659                              In that mode all MIDI events in the muted channels
660                              will be processed. This will provide information
661                              about the active voices in the muted channels and
662                              will not discard notes, triggered in mute mode,
663                              when the channel is unmuted. But also will reduce
664                              the efficiency.],
665      [config_process_muted_channels="yes"],
666      [config_process_muted_channels="no"]
667    )
668    if test "$config_process_muted_channels" = "yes"; then
669      AC_DEFINE_UNQUOTED(CONFIG_PROCESS_MUTED_CHANNELS, 1, [Define to 1 if you want to enable processing of muted channels.])
670    fi
671    
672    
673    ###########################################################################
674    # Automatic Benchmarks (to detect the best algorithms for the system)
675    
676    AC_LANG_SAVE
677    
678    if test "$config_signed_triang_algo" = "benchmark"; then
679        echo -n "benchmarking for the best (signed) triangular oscillator algorithm... "
680        AC_LANG_CPLUSPLUS
681        AC_TRY_RUN([
682                #define SIGNED 1
683                #define SILENT 1
684                #include "benchmarks/triang.cpp"
685            ],
686            triang_signed=0,
687            triang_signed=$?,
688            triang_signed=0
689        )
690        if test "$triang_signed" = "2"; then
691            config_signed_triang_algo="intmath"
692            echo "integer math"
693        elif test "$triang_signed" = "3"; then
694            config_signed_triang_algo="diharmonic"
695            echo "di harmonics"
696        elif test "$triang_signed" = "5"; then
697            config_signed_triang_algo="intmathabs"
698            echo "integer math using abs()"
699        else
700            echo "Benchmark of signed triangular wave algorithms failed!"
701            echo "Maybe you are doing cross compilation? In that case you have to select"
702            echo "an algorithm manually with './configure --enable-signed-triang-algo=...'"
703            echo "Call './configure --help' for further information or read configure.in."
704            exit -1;
705        fi
706    fi
707    AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, signed_triang_algo_${config_signed_triang_algo}, [Define signed triangular wave algorithm to be used.])
708    
709    if test "$config_unsigned_triang_algo" = "benchmark"; then
710        echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... "
711        AC_LANG_CPLUSPLUS
712        AC_TRY_RUN([
713                #define SIGNED 0
714                #define SILENT 1
715                #include "benchmarks/triang.cpp"
716            ],
717            triang_unsigned=0,
718            triang_unsigned=$?,
719            triang_unsigned=0
720        )
721        if test "$triang_unsigned" = "2"; then
722            config_unsigned_triang_algo="intmath"
723            echo "integer math"
724        elif test "$triang_unsigned" = "3"; then
725            config_unsigned_triang_algo="diharmonic"
726            echo "di harmonics"
727        elif test "$triang_unsigned" = "5"; then
728            config_unsigned_triang_algo="intmathabs"
729            echo "integer math using abs()"
730        else
731            echo "Benchmark of unsigned triangular wave algorithms failed!"
732            echo "Maybe you are doing cross compilation? In that case you have to select"
733            echo "an algorithm manually with './configure --enable-unsigned-triang-algo=...'"
734            echo "Call './configure --help' for further information or read configure.in."
735            exit -1;
736        fi
737    fi
738    AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, unsigned_triang_algo_${config_unsigned_triang_algo}, [Define unsigned triangular wave algorithm to be used.])
739    
740    AC_LANG_RESTORE
741    
742    
743    ###########################################################################
744    # Create Build Files
745    
746  AM_CONFIG_HEADER(config.h)  AM_CONFIG_HEADER(config.h)
747  AM_INIT_AUTOMAKE(linuxsampler, 0.2)  AM_INIT_AUTOMAKE(linuxsampler, "$LINUXSAMPLER_RELEASE_MAJOR.$LINUXSAMPLER_RELEASE_MINOR.$LINUXSAMPLER_RELEASE_BUILD")
748    
749  AC_LANG_CPLUSPLUS  AC_LANG_CPLUSPLUS
750  AC_PROG_CXX  AC_PROG_CXX
 AM_PROG_LIBTOOL  
751    
752  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)  # some gcc 4.0 versions need -msse for SSE register allocations
753    if test "$config_asm" = "yes"; then
754      if test "$def_arch_x86" = 1; then
755        CXXFLAGS="$CXXFLAGS -msse"
756      fi
757    fi
758    
759    # autoconf 2.59/libtool 1.5.12 bug? work-around. Without a check like
760    # this, the dlfcn.h check in am_prog_libtool may fail.
761    AC_CHECK_HEADER(stdlib.h)
762    
763    AC_OUTPUT( \
764        Makefile \
765        man/Makefile \
766        man/linuxsampler.1 \
767        src/Makefile \
768        src/network/Makefile \
769        src/engines/Makefile \
770        src/engines/gig/Makefile \
771        src/engines/common/Makefile \
772        src/common/Makefile src/lib/Makefile \
773        src/lib/fileloader/Makefile \
774        src/lib/fileloader/libgig/Makefile \
775        src/testcases/Makefile \
776        src/drivers/Makefile \
777        src/drivers/audio/Makefile \
778        src/drivers/midi/Makefile \
779        linuxsampler.spec \
780        debian/Makefile \
781        Artwork/Makefile \
782        scripts/Makefile \
783        osx/Makefile \
784        osx/LinuxSampler.xcode/Makefile \
785        Documentation/Makefile \
786        Documentation/Engines/Makefile \
787        Documentation/Engines/gig/Makefile \
788        linuxsampler.pc \
789        Doxyfile \
790    )
791    
792    
793    ###########################################################################
794    # Output All Configuration Options
795    
796    echo ""
797    echo "#####################################################################"
798    echo "# LinuxSampler Configuration                                        #"
799    echo "#-------------------------------------------------------------------#"
800    echo "# Assembly Optimizations: ${config_asm}"
801    echo "# Development Mode: ${config_dev_mode}"
802    echo "# Debug Level: ${config_debug_level}"
803    echo "# Use Exceptions in RT Context: ${config_rt_exceptions}"
804    echo "# Preload Samples: ${config_preload_samples}"
805    echo "# Maximum Pitch: ${config_max_pitch} (octaves)"
806    echo "# Maximum Events: ${config_max_events}"
807    echo "# Envelope Bottom Level: ${config_eg_bottom} (linear)"
808    echo "# Envelope Minimum Release Time: ${config_eg_min_release_time} s"
809    echo "# Streams to be refilled per Disk Thread Cycle: ${config_refill_streams}"
810    echo "# Minimum Stream Refill Size: ${config_stream_min_refill}"
811    echo "# Maximum Stream Refill Size: ${config_stream_max_refill}"
812    echo "# Stream Size: ${config_stream_size}"
813    echo "# Maximum Disk Streams: ${config_max_streams}"
814    echo "# Maximum Voices: ${config_max_voices}"
815    echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}"
816    echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}"
817    echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}"
818    echo "# SysEx Buffer Size: ${config_sysex_buffer_size} Byte"
819    echo "# Filter Update Steps: ${config_filter_update_steps}"
820    echo "# Force Filter Usage: ${config_force_filter}"
821    echo "# Filter Cutoff Minimum: ${config_filter_cutoff_min} Hz"
822    echo "# Filter Cutoff Maximum: ${config_filter_cutoff_max} Hz"
823    echo "# Override Filter Cutoff Controller: ${config_override_cutoff_ctrl}"
824    echo "# Override Filter Resonance Controller: ${config_override_resonance_ctrl}"
825    echo "# Override Filter Type: ${config_override_filter_type}"
826    echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}"
827    echo "# Process Muted Channels: ${config_process_muted_channels}"
828    echo "#-------------------------------------------------------------------#"
829    echo "# Read './configure --help' or file 'configure.in' for details.     #"
830    echo "#####################################################################"
831    echo ""
832    echo "Good. Now type 'make' to compile, followed by 'make install' as root."
833    echo ""

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

  ViewVC Help
Powered by ViewVC