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

Annotation of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 781 - (hide annotations) (download)
Mon Sep 26 10:17:00 2005 UTC (18 years, 5 months ago) by schoenebeck
Original Path: linuxsampler/trunk/configure.in
File size: 34983 byte(s)
* fixed event handling bug which was introduced by the recent synthesis
  optimizations (events were only processed for the first active voice)
* added global volume attenuation of -9 dB (0.35f) to prevent clipping
  which can be overridden with --enable-global-attenuation

1 schoenebeck 9 AC_INIT(configure.in)
2 schoenebeck 697
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 schoenebeck 12 AC_C_BIGENDIAN
38 schoenebeck 9 AC_CANONICAL_SYSTEM
39    
40 schoenebeck 80 AC_SUBST(target)
41     AC_SUBST(target_alias)
42     AC_SUBST(target_cpu)
43     AC_SUBST(target_os)
44     AC_SUBST(target_vendor)
45 schoenebeck 18
46 schoenebeck 275
47 schoenebeck 554 ###########################################################################
48     # General Checks
49 schoenebeck 275
50 schoenebeck 510 AC_MSG_CHECKING([whether x86 architecture])
51 schoenebeck 9 def_arch_x86=0
52     case $target_cpu in
53     "i386" | "i486" | "i586" | "i686" | "i786")
54     echo "yes"
55     def_arch_x86=1;;
56     *)
57     echo "no";;
58     esac
59     AC_DEFINE_UNQUOTED(ARCH_X86,$def_arch_x86,[Define to 1 if you build for x86 architecture.])
60    
61 schoenebeck 510 # 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 schoenebeck 288 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 schoenebeck 18 AC_CHECK_HEADER(alsa/asoundlib.h,
108     AC_CHECK_LIB(asound, main,
109 schoenebeck 291 have_alsa=1
110 schoenebeck 18 ,
111 schoenebeck 291 have_alsa=0
112 schoenebeck 18 )
113     ,
114 schoenebeck 291 have_alsa=0
115 schoenebeck 18 )
116 schoenebeck 291 if test "$have_alsa" = "1"; then
117 schoenebeck 288 have_midi_input_driver="true"
118     have_audio_output_driver="true";
119 schoenebeck 18 fi
120 schoenebeck 291 AM_CONDITIONAL(HAVE_ALSA, test $have_alsa = "1")
121 schoenebeck 288 AC_DEFINE_UNQUOTED(HAVE_ALSA,$have_alsa,[Define to 1 if you have ALSA installed.])
122 schoenebeck 18
123     echo -n "checking Alsa version... "
124     AC_LANG_SAVE
125     AC_LANG_C
126     AC_TRY_RUN([
127     #include <alsa/asoundlib.h>
128     void main(void) {
129     /* ensure backward compatibility */
130     #if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR)
131     #define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR
132     #endif
133     exit(SND_LIB_MAJOR);
134     }
135     ],
136     alsa_major=0,
137     alsa_major=$?,
138     alsa_major=0
139     )
140     AC_TRY_RUN([
141     #include <alsa/asoundlib.h>
142     void main(void) {
143     /* ensure backward compatibility */
144     #if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR)
145     #define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR
146     #endif
147     exit(SND_LIB_MINOR);
148     }
149     ],
150     alsa_minor=0,
151     alsa_minor=$?,
152     alsa_minor=0
153     )
154     AC_TRY_RUN([
155     #include <alsa/asoundlib.h>
156     void main(void) {
157     /* ensure backward compatibility */
158     #if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR)
159     #define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR
160     #endif
161     exit(SND_LIB_SUBMINOR);
162     }
163     ],
164     alsa_subminor=0,
165     alsa_subminor=$?,
166     alsa_subminor=0
167     )
168     AC_LANG_RESTORE
169     echo "$alsa_major.$alsa_minor.$alsa_subminor";
170     AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_major,[Define to the major version number of your Alsa installation.])
171     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.])
173    
174 schoenebeck 31 # JACK
175     PKG_CHECK_MODULES(JACK, jack, HAVE_JACK=true, HAVE_JACK=false)
176     AC_SUBST(JACK_LIBS)
177     AC_SUBST(JACK_CFLAGS)
178 schoenebeck 33 if test $HAVE_JACK = false; then
179     HAVE_JACK=0;
180     else
181 schoenebeck 288 HAVE_JACK=1
182     have_audio_output_driver="true";
183 persson 379 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 schoenebeck 33 fi
185 schoenebeck 288 AM_CONDITIONAL(HAVE_JACK, test $HAVE_JACK = 1)
186 schoenebeck 31 AC_DEFINE_UNQUOTED(HAVE_JACK,$HAVE_JACK,[Define to 1 if you have JACK installed.])
187    
188 schoenebeck 609 # 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 schoenebeck 504 # Check presence of libgig
215 schoenebeck 738 libgig_version="2.0.2"
216 schoenebeck 504 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 schoenebeck 714 else
222     echo "yes, found libgig $libgig_version"
223 schoenebeck 504 fi
224     AC_SUBST(GIG_CFLAGS)
225     AC_SUBST(GIG_LIBS)
226    
227 senkov 397 # 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 schoenebeck 714 echo "no, support for instrument DB will be disabled!"
234 senkov 397 else
235     HAVE_SQLITE3=1
236 schoenebeck 714 echo "yes"
237 senkov 397 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 schoenebeck 31
241 schoenebeck 291 if test "$have_midi_input_driver" = "false"; then
242 schoenebeck 288 echo "No supported MIDI input system found!"
243 schoenebeck 609 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 schoenebeck 288 exit -1;
248     fi
249 schoenebeck 291 if test "$have_audio_output_driver" = "false"; then
250 schoenebeck 288 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 schoenebeck 554 ###########################################################################
257     # Handle Configuration Options
258    
259     # TODO: should we use AC_ARG_VAR(variable, description) instead?
260    
261 schoenebeck 617 AC_ARG_ENABLE(asm,
262 schoenebeck 738 [ --enable-asm
263     Enable hand-crafted assembly optimizations
264     (default=off). LinuxSampler provides CPU specific
265 schoenebeck 617 assembly optimizations for the most important
266 schoenebeck 738 synthesis algorithms. This is currently disabled
267     by default since current asm code is broken.],
268     [config_asm="yes"],
269     [config_asm="no"]
270 schoenebeck 617 )
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 schoenebeck 554 AC_ARG_ENABLE(dev-mode,
276 schoenebeck 738 [ --disable-dev-mode
277     Disable development mode (default=on). In that mode
278 schoenebeck 554 we do some extra sanity checks here and there.
279     This helps to spot possible problems, but reduces
280     efficiency a bit],
281 schoenebeck 738 [config_dev_mode="no"],
282     [config_dev_mode="yes"]
283 schoenebeck 554 )
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 schoenebeck 738 AC_ARG_ENABLE(subfragment-size,
440     [ --enable-subfragment-size
441     Every audio fragment will be splitted into
442     subfragments. Where each subfragment renders
443     audio with constant synthesis parameters. This is
444     done for efficiency reasons. This parameter
445     defines the default size of a subfragment in
446     sample points. A large value means less CPU time
447     whereas a low value means better audio quality
448     (default=32).],
449     [config_subfragment_size="${enableval}"],
450     [config_subfragment_size="32"]
451     )
452     AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_SUBFRAGMENT_SIZE, $config_subfragment_size, [Define default subfragment size (in sample points).])
453    
454 schoenebeck 781 AC_ARG_ENABLE(global-attenuation,
455     [ --enable-global-attenuation
456     To prevent clipping all samples will be lowered
457     in amplitude by this given factor.
458     (default=0.35)],
459     [config_global_attenuation="${enableval}"],
460     [config_global_attenuation="0.35"]
461     )
462     AC_DEFINE_UNQUOTED(CONFIG_GLOBAL_ATTENUATION, $config_global_attenuation, [Define global volume attenuation (as floating point factor).])
463    
464 schoenebeck 554 AC_ARG_ENABLE(voice-steal-algo,
465     [ --enable-voice-steal-algo
466     Voice stealing algorithm to be used. Currently
467     available options:
468     none:
469     Disable voice stealing completely.
470 schoenebeck 563 oldestvoiceonkey (default):
471 schoenebeck 554 Try to kill a voice on the same key first,
472     if no success, proceed with the oldest key.
473 schoenebeck 563 oldestkey:
474 schoenebeck 554 Try to kill a voice from the oldest active
475     key.],
476     [ if test ! "(" "${enableval}" = "none" \
477     -o "${enableval}" = "oldestvoiceonkey" \
478     -o "${enableval}" = "oldestkey" ")" ; then
479     AC_MSG_ERROR([Unknown voice stealing algorithm for parameter --enable-voice-steal-algo])
480     else
481     config_voice_steal_algo="${enableval}"
482 schoenebeck 579 fi
483 schoenebeck 554 ],
484 schoenebeck 563 [config_voice_steal_algo="oldestvoiceonkey"]
485 schoenebeck 554 )
486     AC_DEFINE_UNQUOTED(CONFIG_VOICE_STEAL_ALGO, voice_steal_algo_${config_voice_steal_algo}, [Define voice stealing algorithm to be used.])
487    
488     AC_ARG_ENABLE(sysex-buffer-size,
489     [ --enable-sysex-buffer-size
490     System Exclusive Message buffer size in kB
491     (default=2048).],
492     [config_sysex_buffer_size="${enableval}"],
493     [config_sysex_buffer_size="2048"]
494     )
495     AC_DEFINE_UNQUOTED(CONFIG_SYSEX_BUFFER_SIZE, $config_sysex_buffer_size, [Define SysEx buffer size.])
496    
497     AC_ARG_ENABLE(force-filter,
498     [ --enable-force-filter
499     If enabled will force filter to be used even if
500     no usage was define in instrument patch files.
501     (default=no).],
502     [config_force_filter="yes"],
503     [config_force_filter="no"]
504     )
505     if test "$config_force_filter" = "yes"; then
506     AC_DEFINE_UNQUOTED(CONFIG_FORCE_FILTER, 1, [Define to 1 to force filter usage.])
507     fi
508    
509     AC_ARG_ENABLE(filter-cutoff-min,
510     [ --enable-filter-cutoff-min
511     Minimum filter cutoff frequency in Hz
512     (default=100.0).],
513     [config_filter_cutoff_min="${enableval}"],
514     [config_filter_cutoff_min="100.0"]
515     )
516     AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MIN, ${config_filter_cutoff_min}f, [Define min. filter cutoff frequency.])
517    
518     AC_ARG_ENABLE(filter-cutoff-max,
519     [ --enable-filter-cutoff-max
520     Maximum filter cutoff frequency in Hz
521     (default=10000.0).],
522     [config_filter_cutoff_max="${enableval}"],
523     [config_filter_cutoff_max="10000.0"]
524     )
525     AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MAX, ${config_filter_cutoff_max}f, [Define max. filter cutoff frequency.])
526    
527     AC_ARG_ENABLE(override-cutoff-ctrl,
528     [ --enable-override-cutoff-ctrl
529     Override filter cutoff MIDI controller (default=no).
530     Note: you have to define the MIDI controller number
531     here, it's not a boolean parameter type! If this
532     option is used, controller number given by
533     instrument patch will be ignored and instead this
534     supplied value will be used.],
535     [config_override_cutoff_ctrl="${enableval}"],
536     [config_override_cutoff_ctrl="no"]
537     )
538     if test ! "$config_override_cutoff_ctrl" = "no"; then
539     AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_CUTOFF_CTRL, $config_override_cutoff_ctrl, [Define to a MIDI controller number to override cutoff control.])
540     fi
541    
542     AC_ARG_ENABLE(override-resonance-ctrl,
543     [ --enable-override-resonance-ctrl
544     Override filter resonance MIDI controller
545     (default=no). Note: you have to define the MIDI
546     controller number here, it's not a boolean
547     parameter type! If this option is used, controller
548     number given by instrument patch will be ignored
549     and instead this supplied value will be used.],
550     [config_override_resonance_ctrl="${enableval}"],
551     [config_override_resonance_ctrl="no"]
552     )
553     if test ! "$config_override_resonance_ctrl" = "no"; then
554     AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_RESONANCE_CTRL, $config_override_resonance_ctrl, [Define to a MIDI controller number to override resonance control.])
555     fi
556    
557     AC_ARG_ENABLE(override-filter-type,
558     [ --enable-override-filter-type
559     Override filter type (default=no). Options:
560     hp: for highpass
561     bp: for bandpass
562     br: for bandreject
563     lp: for lowpass
564     lpt: for lowpass turbo],
565     [ if test "${enableval}" = "hp" ; then
566     config_override_filter_type="::gig::vcf_type_highpass"
567     elif test "${enableval}" = "bp" ; then
568     config_override_filter_type="::gig::vcf_type_bandpass"
569     elif test "${enableval}" = "br" ; then
570     config_override_filter_type="::gig::vcf_type_bandreject"
571     elif test "${enableval}" = "lp" ; then
572     config_override_filter_type="::gig::vcf_type_lowpass"
573     elif test "${enableval}" = "lpt" ; then
574     config_override_filter_type="::gig::vcf_type_lowpassturbo"
575     elif test ! "${enableval}" = "no"; then
576     AC_MSG_ERROR([Unknown filter type for parameter --enable-override-filter-type])
577 schoenebeck 579 fi
578 schoenebeck 554 ],
579     [config_override_filter_type="no"]
580     )
581     if test ! "$config_override_filter_type" = "no"; then
582     AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_FILTER_TYPE, $config_override_filter_type, [Define to a filter type to always force that filter type.])
583     fi
584    
585 schoenebeck 563 AC_ARG_ENABLE(gs-checksum,
586     [ --enable-gs-checksum
587     Enable Roland General Synth SysEx checksum check
588     (default=no). If this is enabled, all GS SysEx
589     messages which do not provide a correct checksum
590     will be ignored. This is disabled by default as
591     not all devices honor GS checksums.],
592     [config_assert_gs_sysex_checksum="yes"],
593     [config_assert_gs_sysex_checksum="no"]
594     )
595     if test "config_assert_gs_sysex_checksum" = "yes"; then
596     AC_DEFINE_UNQUOTED(CONFIG_ASSERT_GS_SYSEX_CHECKSUM, 1, [Define to 1 if you want to enable GS SysEx check.])
597     fi
598    
599 schoenebeck 714 AC_ARG_ENABLE(signed-triang-algo,
600     [ --enable-signed-triang-algo
601     Signed triangular wave algorithm to be used (e.g. for LFOs).
602     Currently available options:
603     intmath:
604     Uses integer math without any branch will then be
605     converted to floating point value for each sample point.
606     This int->float conversion might hurt on some systems.
607 senkov 720 intmathabs:
608     Similar to intmath but uses abs() function.
609     Depending on compiler and platrofm this could
610     perform better than integer math as it avoids
611     an extra integer multiply instruction.
612    
613 schoenebeck 714 diharmonic:
614     The triangular wave will be approximated by adding two
615     sinusoidials. This solution might especially hurt on
616     systems with weak floating point unit.
617     benchmark (default):
618     This is not an algorithm. Use this option if the
619     appropriate algorithm should be automatically
620     chosen by the configure script by performing a
621     benchmark between the algorithms mentioned above.
622     This will NOT work for cross compilation!],
623     [ if test ! "(" "${enableval}" = "intmath" \
624 senkov 720 -o "${enableval}" = "intmathabs" \
625 schoenebeck 714 -o "${enableval}" = "diharmonic" ")" ; then
626     AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-signed-triang-algo])
627     else
628     config_signed_triang_algo="${enableval}"
629     fi
630     ],
631     [config_signed_triang_algo="benchmark"]
632     )
633 schoenebeck 563
634 schoenebeck 714 AC_ARG_ENABLE(unsigned-triang-algo,
635     [ --enable-unsigned-triang-algo
636     Unsigned triangular wave algorithm to be used (e.g. for LFOs).
637     Currently available options:
638     intmath:
639     Uses integer math without any branch will then be
640     converted to floating point value for each sample point.
641     This int->float conversion might hurt on some systems.
642 senkov 720 intmathabs:
643     Similar to intmath but uses abs() function.
644     Depending on compiler and platrofm this could
645     perform better than integer math as it avoids
646     an extra integer multiply instruction.
647    
648 schoenebeck 714 diharmonic:
649     The triangular wave will be approximated by adding two
650     sinusoidials. This solution might especially hurt on
651     systems with weak floating point unit.
652     benchmark (default):
653     This is not an algorithm. Use this option if the
654     appropriate algorithm should be automatically
655     chosen by the configure script by performing a
656     benchmark between the algorithms mentioned above.
657     This will NOT work for cross compilation!],
658     [ if test ! "(" "${enableval}" = "intmath" \
659 senkov 720 -o "${enableval}" = "intmathabs" \
660 schoenebeck 714 -o "${enableval}" = "diharmonic" ")" ; then
661     AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-unsigned-triang-algo])
662     else
663     config_unsigned_triang_algo="${enableval}"
664     fi
665     ],
666     [config_unsigned_triang_algo="benchmark"]
667     )
668    
669 iliev 716 AC_ARG_ENABLE(process-muted-channels,
670     [ --enable-process-muted-channels
671     Enable processing of muted channels (default=no).
672     In that mode all MIDI events in the muted channels
673     will be processed. This will provide information
674     about the active voices in the muted channels and
675     will not discard notes, triggered in mute mode,
676     when the channel is unmuted. But also will reduce
677     the efficiency.],
678     [config_process_muted_channels="yes"],
679     [config_process_muted_channels="no"]
680     )
681     if test "$config_process_muted_channels" = "yes"; then
682     AC_DEFINE_UNQUOTED(CONFIG_PROCESS_MUTED_CHANNELS, 1, [Define to 1 if you want to enable processing of muted channels.])
683     fi
684 schoenebeck 714
685 iliev 716
686 schoenebeck 554 ###########################################################################
687 schoenebeck 714 # Automatic Benchmarks (to detect the best algorithms for the system)
688    
689     AC_LANG_SAVE
690    
691     if test "$config_signed_triang_algo" = "benchmark"; then
692     echo -n "benchmarking for the best (signed) triangular oscillator algorithm... "
693     AC_LANG_CPLUSPLUS
694     AC_TRY_RUN([
695     #define SIGNED 1
696     #define SILENT 1
697 schoenebeck 738 #include "${srcdir}/benchmarks/triang.cpp"
698 schoenebeck 714 ],
699     triang_signed=0,
700     triang_signed=$?,
701     triang_signed=0
702     )
703     if test "$triang_signed" = "2"; then
704     config_signed_triang_algo="intmath"
705     echo "integer math"
706     elif test "$triang_signed" = "3"; then
707     config_signed_triang_algo="diharmonic"
708     echo "di harmonics"
709 senkov 720 elif test "$triang_signed" = "5"; then
710     config_signed_triang_algo="intmathabs"
711     echo "integer math using abs()"
712 schoenebeck 714 else
713     echo "Benchmark of signed triangular wave algorithms failed!"
714     echo "Maybe you are doing cross compilation? In that case you have to select"
715     echo "an algorithm manually with './configure --enable-signed-triang-algo=...'"
716     echo "Call './configure --help' for further information or read configure.in."
717     exit -1;
718     fi
719     fi
720 schoenebeck 738 AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, ${triang_signed}, [Define signed triangular wave algorithm to be used.])
721 schoenebeck 714
722     if test "$config_unsigned_triang_algo" = "benchmark"; then
723     echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... "
724     AC_LANG_CPLUSPLUS
725     AC_TRY_RUN([
726     #define SIGNED 0
727     #define SILENT 1
728 schoenebeck 738 #include "${srcdir}/benchmarks/triang.cpp"
729 schoenebeck 714 ],
730     triang_unsigned=0,
731     triang_unsigned=$?,
732     triang_unsigned=0
733     )
734     if test "$triang_unsigned" = "2"; then
735     config_unsigned_triang_algo="intmath"
736     echo "integer math"
737     elif test "$triang_unsigned" = "3"; then
738     config_unsigned_triang_algo="diharmonic"
739     echo "di harmonics"
740 senkov 720 elif test "$triang_unsigned" = "5"; then
741 schoenebeck 726 config_unsigned_triang_algo="intmathabs"
742 senkov 720 echo "integer math using abs()"
743 schoenebeck 714 else
744     echo "Benchmark of unsigned triangular wave algorithms failed!"
745     echo "Maybe you are doing cross compilation? In that case you have to select"
746     echo "an algorithm manually with './configure --enable-unsigned-triang-algo=...'"
747     echo "Call './configure --help' for further information or read configure.in."
748     exit -1;
749     fi
750     fi
751 schoenebeck 738 AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.])
752 schoenebeck 714
753     AC_LANG_RESTORE
754    
755    
756     ###########################################################################
757 schoenebeck 554 # Create Build Files
758    
759 schoenebeck 9 AM_CONFIG_HEADER(config.h)
760 schoenebeck 697 AM_INIT_AUTOMAKE(linuxsampler, "$LINUXSAMPLER_RELEASE_MAJOR.$LINUXSAMPLER_RELEASE_MINOR.$LINUXSAMPLER_RELEASE_BUILD")
761 schoenebeck 9
762     AC_LANG_CPLUSPLUS
763     AC_PROG_CXX
764 persson 497
765 persson 685 # some gcc 4.0 versions need -msse for SSE register allocations
766     if test "$config_asm" = "yes"; then
767     if test "$def_arch_x86" = 1; then
768     CXXFLAGS="$CXXFLAGS -msse"
769     fi
770     fi
771    
772 persson 497 # autoconf 2.59/libtool 1.5.12 bug? work-around. Without a check like
773     # this, the dlfcn.h check in am_prog_libtool may fail.
774     AC_CHECK_HEADER(stdlib.h)
775    
776 schoenebeck 654 AC_OUTPUT( \
777     Makefile \
778     man/Makefile \
779     man/linuxsampler.1 \
780     src/Makefile \
781     src/network/Makefile \
782     src/engines/Makefile \
783     src/engines/gig/Makefile \
784     src/engines/common/Makefile \
785     src/common/Makefile src/lib/Makefile \
786     src/lib/fileloader/Makefile \
787     src/lib/fileloader/libgig/Makefile \
788     src/testcases/Makefile \
789     src/drivers/Makefile \
790     src/drivers/audio/Makefile \
791     src/drivers/midi/Makefile \
792     linuxsampler.spec \
793     debian/Makefile \
794     Artwork/Makefile \
795     scripts/Makefile \
796     osx/Makefile \
797     osx/LinuxSampler.xcode/Makefile \
798     Documentation/Makefile \
799     Documentation/Engines/Makefile \
800     Documentation/Engines/gig/Makefile \
801 schoenebeck 697 linuxsampler.pc \
802     Doxyfile \
803 schoenebeck 654 )
804 schoenebeck 554
805    
806     ###########################################################################
807     # Output All Configuration Options
808    
809     echo ""
810     echo "#####################################################################"
811     echo "# LinuxSampler Configuration #"
812     echo "#-------------------------------------------------------------------#"
813 schoenebeck 617 echo "# Assembly Optimizations: ${config_asm}"
814 schoenebeck 554 echo "# Development Mode: ${config_dev_mode}"
815     echo "# Debug Level: ${config_debug_level}"
816     echo "# Use Exceptions in RT Context: ${config_rt_exceptions}"
817     echo "# Preload Samples: ${config_preload_samples}"
818     echo "# Maximum Pitch: ${config_max_pitch} (octaves)"
819     echo "# Maximum Events: ${config_max_events}"
820     echo "# Envelope Bottom Level: ${config_eg_bottom} (linear)"
821     echo "# Envelope Minimum Release Time: ${config_eg_min_release_time} s"
822     echo "# Streams to be refilled per Disk Thread Cycle: ${config_refill_streams}"
823     echo "# Minimum Stream Refill Size: ${config_stream_min_refill}"
824     echo "# Maximum Stream Refill Size: ${config_stream_max_refill}"
825     echo "# Stream Size: ${config_stream_size}"
826     echo "# Maximum Disk Streams: ${config_max_streams}"
827     echo "# Maximum Voices: ${config_max_voices}"
828 schoenebeck 738 echo "# Default Subfragment Size: ${config_subfragment_size}"
829 schoenebeck 781 echo "# Global Volume Attenuation: ${config_global_attenuation}"
830 schoenebeck 563 echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}"
831 schoenebeck 714 echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}"
832     echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}"
833 schoenebeck 554 echo "# SysEx Buffer Size: ${config_sysex_buffer_size} Byte"
834     echo "# Force Filter Usage: ${config_force_filter}"
835     echo "# Filter Cutoff Minimum: ${config_filter_cutoff_min} Hz"
836     echo "# Filter Cutoff Maximum: ${config_filter_cutoff_max} Hz"
837     echo "# Override Filter Cutoff Controller: ${config_override_cutoff_ctrl}"
838     echo "# Override Filter Resonance Controller: ${config_override_resonance_ctrl}"
839     echo "# Override Filter Type: ${config_override_filter_type}"
840 schoenebeck 563 echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}"
841 iliev 716 echo "# Process Muted Channels: ${config_process_muted_channels}"
842 schoenebeck 554 echo "#-------------------------------------------------------------------#"
843     echo "# Read './configure --help' or file 'configure.in' for details. #"
844     echo "#####################################################################"
845     echo ""
846     echo "Good. Now type 'make' to compile, followed by 'make install' as root."
847     echo ""

  ViewVC Help
Powered by ViewVC