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

Annotation of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1163 - (hide annotations) (download)
Mon Apr 16 21:56:18 2007 UTC (11 years, 11 months ago) by iliev
Original Path: linuxsampler/trunk/configure.in
File size: 41711 byte(s)
* added check for the presence of sqlite3 program

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 schoenebeck 937 LINUXSAMPLER_RELEASE_MINOR=4
8 schoenebeck 1049 LINUXSAMPLER_RELEASE_BUILD=0.4cvs
9 schoenebeck 697
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 schoenebeck 947 #------------------------------------------------------------------------------------
33     # the LSCP specification version this LinuSampler release complies with:
34    
35     LSCP_RELEASE_MAJOR=1
36     LSCP_RELEASE_MINOR=2
37    
38     AC_DEFINE_UNQUOTED(LSCP_RELEASE_MAJOR, ${LSCP_RELEASE_MAJOR}, [LSCP spec major version this release complies with.])
39     AC_DEFINE_UNQUOTED(LSCP_RELEASE_MINOR, ${LSCP_RELEASE_MINOR}, [LSCP spec minor version this release complies with.])
40    
41 schoenebeck 697 AM_PROG_LIBTOOL
42    
43     AC_SUBST(SHLIB_VERSION_ARG)
44     AC_SUBST(SHARED_VERSION_INFO)
45    
46 schoenebeck 12 AC_C_BIGENDIAN
47 schoenebeck 9 AC_CANONICAL_SYSTEM
48    
49 schoenebeck 80 AC_SUBST(target)
50     AC_SUBST(target_alias)
51     AC_SUBST(target_cpu)
52     AC_SUBST(target_os)
53     AC_SUBST(target_vendor)
54 schoenebeck 18
55 schoenebeck 275
56 schoenebeck 554 ###########################################################################
57     # General Checks
58 schoenebeck 275
59 schoenebeck 510 AC_MSG_CHECKING([whether x86 architecture])
60 schoenebeck 9 def_arch_x86=0
61     case $target_cpu in
62     "i386" | "i486" | "i586" | "i686" | "i786")
63     echo "yes"
64     def_arch_x86=1;;
65     *)
66     echo "no";;
67     esac
68     AC_DEFINE_UNQUOTED(ARCH_X86,$def_arch_x86,[Define to 1 if you build for x86 architecture.])
69    
70 schoenebeck 510 # determine the right gcc switch for CPU specific optimizations
71 schoenebeck 829 # (only if the user did not provide one)
72 schoenebeck 510 CXX_CPU_SWITCH=
73 schoenebeck 829 if ! echo "X $CXXFLAGS " | grep -q -- " \(-march=\|-mcpu=\|-mtune=\|-arch=\)" ; then
74     if test "$def_arch_x86" = 1; then
75     CXX_CPU_SWITCH="-march=$target_cpu"
76 schoenebeck 909 elif test "$target_cpu" = "ppc"; then
77 schoenebeck 829 CXX_CPU_SWITCH="-arch=$target_cpu"
78     fi
79 schoenebeck 510 fi
80     AC_SUBST([CXX_CPU_SWITCH])
81    
82 schoenebeck 288 AC_MSG_CHECKING([whether UNIX98 compatible])
83     AC_LANG_SAVE
84     AC_LANG_C
85     AC_TRY_RUN([
86     #ifndef _GNU_SOURCE
87     #define _GNU_SOURCE 1
88     #endif
89     #include <features.h>
90     void main(void) {
91     #if _XOPEN_SOURCE >= 500
92     exit(0); /* UNIX98 compatible */
93     #else
94     exit(-1); /* not UNIX98 compatible */
95     #endif
96     }
97     ],
98     have_unix98="yes",
99     have_unix98="no",
100     have_unix98="no"
101     )
102     AC_LANG_RESTORE
103     AC_MSG_RESULT([$have_unix98])
104     if test "$have_unix98" = "no"; then
105     if test "x$HAVE_UNIX98" = "x"; then
106     echo "LinuxSampler only runs on UNIX98 compatible systems, which is mandatory for"
107     echo "pthread_mutexattr_settype() call in Mutex.cpp. You may want to run
108     echo "./configure with environment variable HAVE_UNIX98=1 in case you think you
109     echo "have a UNIX98 compatible system."
110     exit -1;
111     fi
112     fi
113    
114 wylder 822 # check for <features.h>
115     AC_CHECK_HEADERS(features.h)
116 wylder 821
117 schoenebeck 852
118     ###########################################################################
119 schoenebeck 288 # Checks for available audio and MIDI systems / drivers
120     # (we throw an error if there's not at least one system for audio output and MIDI input available)
121 schoenebeck 852
122 schoenebeck 288 have_midi_input_driver="false"
123     have_audio_output_driver="false"
124    
125 schoenebeck 852 # ALSA
126     AC_ARG_ENABLE(alsa-driver,
127     [ --disable-alsa-driver
128     Disable support for the Advanced Linux Sound
129     Architecture (ALSA).],
130     [config_alsa_driver="no"],
131     [config_alsa_driver="yes"]
132 schoenebeck 18 )
133 schoenebeck 852 have_alsa=0
134     if test "$config_alsa_driver" = "yes"; then
135     AC_CHECK_HEADER(alsa/asoundlib.h,
136     AC_CHECK_LIB(asound, main,
137     have_alsa=1
138     ,
139     have_alsa=0
140     )
141     ,
142     have_alsa=0
143     )
144     if test "$have_alsa" = "1"; then
145     have_midi_input_driver="true"
146     have_audio_output_driver="true";
147     fi
148    
149     echo -n "checking Alsa version... "
150     AC_LANG_SAVE
151     AC_LANG_C
152     AC_TRY_RUN([
153     #include <alsa/asoundlib.h>
154     void main(void) {
155     /* ensure backward compatibility */
156     #if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR)
157     #define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR
158     #endif
159     exit(SND_LIB_MAJOR);
160     }
161     ],
162     alsa_major=0,
163     alsa_major=$?,
164     alsa_major=0
165     )
166     AC_TRY_RUN([
167     #include <alsa/asoundlib.h>
168     void main(void) {
169     /* ensure backward compatibility */
170     #if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR)
171     #define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR
172     #endif
173     exit(SND_LIB_MINOR);
174     }
175     ],
176     alsa_minor=0,
177     alsa_minor=$?,
178     alsa_minor=0
179     )
180     AC_TRY_RUN([
181     #include <alsa/asoundlib.h>
182     void main(void) {
183     /* ensure backward compatibility */
184     #if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR)
185     #define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR
186     #endif
187     exit(SND_LIB_SUBMINOR);
188     }
189     ],
190     alsa_subminor=0,
191     alsa_subminor=$?,
192     alsa_subminor=0
193     )
194     AC_LANG_RESTORE
195     echo "$alsa_major.$alsa_minor.$alsa_subminor";
196     AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_major,[Define to the major version number of your Alsa installation.])
197     AC_DEFINE_UNQUOTED(ALSA_MINOR,$alsa_minor,[Define to the minor version number of your Alsa installation.])
198     AC_DEFINE_UNQUOTED(ALSA_SUBMINOR,$alsa_subminor,[Define to the subminor version number of your Alsa installation.])
199     else
200     echo "ALSA support disabled by configure script parameter"
201 schoenebeck 18 fi
202 schoenebeck 291 AM_CONDITIONAL(HAVE_ALSA, test $have_alsa = "1")
203 schoenebeck 288 AC_DEFINE_UNQUOTED(HAVE_ALSA,$have_alsa,[Define to 1 if you have ALSA installed.])
204 schoenebeck 18
205 schoenebeck 852 # JACK
206     AC_ARG_ENABLE(jack-driver,
207     [ --disable-jack-driver
208     Disable support for the Jack Audio Connection Kit
209     (JACK).],
210     [config_jack_driver="no"],
211     [config_jack_driver="yes"]
212 schoenebeck 18 )
213 schoenebeck 852 have_jack=0
214     if test "$config_jack_driver" = "yes"; then
215     PKG_CHECK_MODULES(JACK, jack, have_jack=1, have_jack=0)
216     if test $have_jack = "1"; then
217     AC_SUBST(JACK_LIBS)
218     AC_SUBST(JACK_CFLAGS)
219     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)
220     have_audio_output_driver="true";
221     fi
222 schoenebeck 33 else
223 schoenebeck 852 echo "JACK support disabled by configure script parameter"
224 schoenebeck 33 fi
225 schoenebeck 852 AM_CONDITIONAL(HAVE_JACK, test $have_jack = "1")
226     AC_DEFINE_UNQUOTED(HAVE_JACK,$have_jack,[Define to 1 if you have JACK installed.])
227 schoenebeck 31
228 schoenebeck 838 # ARTS
229 schoenebeck 852 AC_ARG_ENABLE(arts-driver,
230     [ --disable-arts-driver
231     Disable support for the Analogue Realtime System
232     (aRts).],
233     [config_arts_driver="no"],
234     [config_arts_driver="yes"]
235     )
236     have_arts=0
237     if test "$config_arts_driver" = "yes"; then
238     m4_ifdef([m4_include(m4/arts.m4)],,
239     [sinclude([m4/arts.m4])])
240     AM_PATH_ARTS(0.9.5, have_arts=1, have_arts=0)
241     if test "$have_arts" = "1"; then
242     have_audio_output_driver="true"
243     fi
244     else
245     echo "ARTS support disabled by configure script parameter"
246 schoenebeck 838 fi
247     AM_CONDITIONAL(HAVE_ARTS, test "$have_arts" = "1")
248     AC_DEFINE_UNQUOTED(HAVE_ARTS,$have_arts,[Define to 1 if you have aRts installed.])
249    
250 schoenebeck 609 # MidiShare (Linux, OS X, Windows)
251 schoenebeck 852 AC_ARG_ENABLE(midishare-driver,
252     [ --disable-midishare-driver
253     Disable support for the MidiShare system.],
254     [config_midishare_driver="no"],
255     [config_midishare_driver="yes"]
256 schoenebeck 609 )
257 schoenebeck 852 have_midishare=0
258     if test "$config_midishare_driver" = "yes"; then
259     AC_CHECK_HEADER(MidiShare.h,
260     AC_CHECK_LIB(MidiShare, MidiCountEvs,
261     have_midishare=1,
262     have_midishare=0
263     )
264     ,
265     have_midishare=0
266     )
267     if test "$have_midishare" = "1"; then
268     have_midi_input_driver="true"
269     fi
270     else
271     echo "MidiShare support disabled by configure script parameter"
272 schoenebeck 609 fi
273     AM_CONDITIONAL(HAVE_MIDISHARE, test $have_midishare = "1")
274     AC_DEFINE_UNQUOTED(HAVE_MIDISHARE,$have_midishare,[Define to 1 if you have MidiShare installed.])
275    
276     # CoreMIDI (OS X)
277 schoenebeck 852 AC_ARG_ENABLE(coremidi-driver,
278     [ --disable-coremidi-driver
279     Disable support for the Apple CoreMIDI system.],
280     [config_coremidi_driver="no"],
281     [config_coremidi_driver="yes"]
282 schoenebeck 609 )
283 schoenebeck 852 have_coremidi=0
284     if test "$config_coremidi_driver" = "yes"; then
285     AC_CHECK_HEADER(CoreMIDI/CoreMIDI.h,
286     have_coremidi=1,
287     have_coremidi=0
288     )
289     if test "$have_coremidi" = "1"; then
290     have_midi_input_driver="true"
291     fi
292     else
293     echo "CoreMIDI support disabled by configure script parameter"
294 schoenebeck 609 fi
295     AM_CONDITIONAL(HAVE_COREMIDI, test $have_coremidi = "1")
296     AC_DEFINE_UNQUOTED(HAVE_COREMIDI,$have_coremidi,[Define to 1 if you have CoreMIDI installed.])
297    
298 schoenebeck 504 # Check presence of libgig
299 schoenebeck 1120 libgig_version="3.1.1"
300 schoenebeck 504 PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false)
301     if test "$HAVE_GIG" = "false"; then
302     echo "Required libgig version not found!"
303     echo "You need to have libgig version ${libgig_version} installed!"
304     exit -1;
305 schoenebeck 714 else
306     echo "yes, found libgig $libgig_version"
307 schoenebeck 504 fi
308     AC_SUBST(GIG_CFLAGS)
309     AC_SUBST(GIG_LIBS)
310    
311 iliev 1161 # Check presence of sqlite3
312 iliev 1163 AC_CHECK_PROG(HAVE_SQLITE3_CMD, sqlite3, true, false)
313 iliev 1161 sqlite_version="3.3"
314     PKG_CHECK_MODULES(SQLITE3, sqlite3 >= $sqlite_version, HAVE_SQLITE3=true, HAVE_SQLITE3=false)
315 senkov 397 AC_SUBST(SQLITE3_LIBS)
316     AC_SUBST(SQLITE3_CFLAGS)
317 iliev 1163 if test $HAVE_SQLITE3_CMD = false -o $HAVE_SQLITE3 = false; then
318 senkov 397 HAVE_SQLITE3=0;
319 iliev 1161 instruments_db_support="no"
320     echo "*** Required sqlite version not found!"
321     echo "*** You need to have sqlite version ${sqlite_version} or higher"
322     echo "*** for instruments database support to be enabled."
323     echo "*** Support for instruments DB will be disabled!"
324 senkov 397 else
325     HAVE_SQLITE3=1
326 iliev 1161 instruments_db_support="yes"
327 senkov 397 fi
328     AM_CONDITIONAL(HAVE_SQLITE3, test $HAVE_SQLITE3 = 1)
329     AC_DEFINE_UNQUOTED(HAVE_SQLITE3,$HAVE_SQLITE3,[Define to 1 if you have SQLITE3 installed.])
330 schoenebeck 31
331 schoenebeck 291 if test "$have_midi_input_driver" = "false"; then
332 schoenebeck 288 echo "No supported MIDI input system found!"
333 schoenebeck 609 echo "Sorry, LinuxSampler only supports the following MIDI drivers at the moment:"
334     echo "ALSA, MIDIShare, CoreMIDI."
335     echo "If you think you have one of those available on your system, make sure you"
336     echo "also have the respective development (header) files installed."
337 schoenebeck 288 exit -1;
338     fi
339 schoenebeck 291 if test "$have_audio_output_driver" = "false"; then
340 schoenebeck 288 echo "No supported audio output system found!"
341     echo "Sorry, LinuxSampler only supports ALSA and JACK as audio output driver at the moment!"
342     exit -1;
343     fi
344    
345    
346 schoenebeck 554 ###########################################################################
347     # Handle Configuration Options
348    
349     # TODO: should we use AC_ARG_VAR(variable, description) instead?
350    
351 schoenebeck 617 AC_ARG_ENABLE(asm,
352 schoenebeck 738 [ --enable-asm
353     Enable hand-crafted assembly optimizations
354     (default=off). LinuxSampler provides CPU specific
355 schoenebeck 617 assembly optimizations for the most important
356 schoenebeck 738 synthesis algorithms. This is currently disabled
357     by default since current asm code is broken.],
358     [config_asm="yes"],
359     [config_asm="no"]
360 schoenebeck 617 )
361     if test "$config_asm" = "yes"; then
362     AC_DEFINE_UNQUOTED(CONFIG_ASM, 1, [Define to 1 if you want to enable hand-crafted asm optimizations.])
363     fi
364    
365 schoenebeck 554 AC_ARG_ENABLE(dev-mode,
366 schoenebeck 947 [ --disable-dev-mode
367     Disable development mode (default=on). In that mode
368 schoenebeck 554 we do some extra sanity checks here and there.
369     This helps to spot possible problems, but reduces
370     efficiency a bit],
371 schoenebeck 947 [config_dev_mode="no"],
372     [config_dev_mode="yes"]
373 schoenebeck 554 )
374     if test "$config_dev_mode" = "yes"; then
375     AC_DEFINE_UNQUOTED(CONFIG_DEVMODE, 1, [Define to 1 if you want to enable development mode.])
376     fi
377    
378     AC_ARG_ENABLE(debug-level,
379     [ --enable-debug-level
380     Specify verbosity of console messages (default=1).
381     The higher the value, the higher will be verbosity.
382     A value of 0 means no console output at all.
383     There's not really an upper limit but the usual
384     level of all messages is currently somewhere less
385     than 10.],
386     [config_debug_level="${enableval}"],
387     [config_debug_level="1"]
388     )
389     AC_DEFINE_UNQUOTED(CONFIG_DEBUG_LEVEL, $config_debug_level, [Define console verbosity.])
390    
391     AC_ARG_ENABLE(rt-exceptions,
392     [ --enable-rt-exceptions
393     Enable exceptions in the realtime thread
394     (default=no). If this is enabled, exceptions will
395     be thrown on critical errors in the realtime
396     context as well. Otherwise if disabled
397     segmentation faults will be forced by the
398     application on critical errors.],
399     [config_rt_exceptions="yes"],
400     [config_rt_exceptions="no"]
401     )
402     if test "$config_rt_exceptions" = "yes"; then
403     AC_DEFINE_UNQUOTED(CONFIG_RT_EXCEPTIONS, 1, [Define to 1 to allow exceptions in the realtime context.])
404     fi
405    
406     AC_ARG_ENABLE(preload-samples,
407     [ --enable-preload-samples
408     Due to seeking and latency issues with hard drives
409     we have to cache a small part of samples' head in
410     RAM (default=32768). The higher this value the
411     more memory will be occupied for each sample, but
412     the safer this will be in regards of possible
413     droputs. A 'good' value depends on the running
414     system and usage dependant factors.],
415     [config_preload_samples="${enableval}"],
416     [config_preload_samples="32768"]
417     )
418     AC_DEFINE_UNQUOTED(CONFIG_PRELOAD_SAMPLES, $config_preload_samples, [Define amount of sample points to be cached in RAM.])
419    
420     AC_ARG_ENABLE(max-pitch,
421     [ --enable-max-pitch
422     Specify the maximum allowed pitch value in octaves
423     (default=4). To lower memory usage you might want
424     set a smaller value.],
425     [config_max_pitch="${enableval}"],
426     [config_max_pitch="4"]
427     )
428     AC_DEFINE_UNQUOTED(CONFIG_MAX_PITCH, $config_max_pitch, [Define max. allowed pitch.])
429    
430     AC_ARG_ENABLE(max-events,
431     [ --enable-max-events
432     Specify the maximum allowed amount of events to be
433     processed per fragment (default=1024).],
434     [config_max_events="${enableval}"],
435     [config_max_events="1024"]
436     )
437     AC_DEFINE_UNQUOTED(CONFIG_MAX_EVENTS_PER_FRAGMENT, $config_max_events, [Define max. allowed events per fragment.])
438    
439     AC_ARG_ENABLE(eg-bottom,
440     [ --enable-eg-bottom
441     Bottom limit of envelope generators
442     (default=0.001). Certain kinds of curve types like
443     exponential curves converge against 0 but never
444     reach 0. So we have to define a certain low value
445     after which we should consider all smaller values
446     to be 'almost zero'. The smaller this value, the
447     longer will voices survive in EG's release stage
448     and thus waste voices. If this value is too high
449     will cause click sounds though.],
450     [config_eg_bottom="${enableval}"],
451     [config_eg_bottom="0.001"]
452     )
453     AC_DEFINE_UNQUOTED(CONFIG_EG_BOTTOM, $config_eg_bottom, [Define bottom limit of envelopes.])
454    
455     AC_ARG_ENABLE(eg-min-release-time,
456     [ --enable-eg-min-release-time
457     Specify the lowest allowed release time in seconds
458     (default=0.0025). This value will also be used to
459     ramp down voices on voice stealing. This value
460     should always be less than the period time of the
461     used audio driver, as in case of voice stealing
462     the killed voice needs to be completely ramped
463     down in the same fragment.],
464     [config_eg_min_release_time="${enableval}"],
465     [config_eg_min_release_time="0.0025"]
466     )
467     AC_DEFINE_UNQUOTED(CONFIG_EG_MIN_RELEASE_TIME, $config_eg_min_release_time, [Define min. release time.])
468    
469     AC_ARG_ENABLE(refill-streams,
470     [ --enable-refill-streams
471     Number of streams that should be refilled in each
472     disk thread cycle (default=4).],
473     [config_refill_streams="${enableval}"],
474     [config_refill_streams="4"]
475     )
476     AC_DEFINE_UNQUOTED(CONFIG_REFILL_STREAMS_PER_RUN, $config_refill_streams, [Define amount of streams to be refilled per cycle.])
477    
478     AC_ARG_ENABLE(stream-min-refill,
479     [ --enable-stream-min-refill
480     Minimum refill size for disk streams (default=1024).
481     The disk thread will go to sleep for a while if no
482     stream had to be refilled more than this value in
483     a disk thread cycle.],
484     [config_stream_min_refill="${enableval}"],
485     [config_stream_min_refill="1024"]
486     )
487     AC_DEFINE_UNQUOTED(CONFIG_STREAM_MIN_REFILL_SIZE, $config_stream_min_refill, [Define min. stream refill size.])
488    
489     AC_ARG_ENABLE(stream-max-refill,
490     [ --enable-stream-max-refill
491     Maximum refill size for disk streams
492     (default=65536). The disk thread will refill
493     each stream only by a size of this value per
494     disk thread cycle.],
495     [config_stream_max_refill="${enableval}"],
496     [config_stream_max_refill="65536"]
497     )
498     AC_DEFINE_UNQUOTED(CONFIG_STREAM_MAX_REFILL_SIZE, $config_stream_max_refill, [Define max. stream refill size.])
499    
500     AC_ARG_ENABLE(stream-size,
501     [ --enable-stream-size
502     Size of each stream's ring buffer in sample points
503     (default=262144).],
504     [config_stream_size="${enableval}"],
505     [config_stream_size="262144"]
506     )
507     AC_DEFINE_UNQUOTED(CONFIG_STREAM_BUFFER_SIZE, $config_stream_size, [Define each stream's ring buffer size.])
508    
509     AC_ARG_ENABLE(max-streams,
510     [ --enable-max-streams
511     Maximum amount of disk streams (default=90). This
512     value should always be higher than the maximum
513     amount of voices.],
514     [config_max_streams="${enableval}"],
515     [config_max_streams="90"]
516     )
517     AC_DEFINE_UNQUOTED(CONFIG_MAX_STREAMS, $config_max_streams, [Define max. streams.])
518    
519     AC_ARG_ENABLE(max-voices,
520     [ --enable-max-voices
521     Maximum amount of voices (default=64). This value
522     should always be lower than the maximum amount of
523     disk streams.],
524     [config_max_voices="${enableval}"],
525     [config_max_voices="64"]
526     )
527     AC_DEFINE_UNQUOTED(CONFIG_MAX_VOICES, $config_max_voices, [Define max. voices.])
528    
529 schoenebeck 738 AC_ARG_ENABLE(subfragment-size,
530     [ --enable-subfragment-size
531     Every audio fragment will be splitted into
532     subfragments. Where each subfragment renders
533     audio with constant synthesis parameters. This is
534     done for efficiency reasons. This parameter
535     defines the default size of a subfragment in
536     sample points. A large value means less CPU time
537     whereas a low value means better audio quality
538     (default=32).],
539     [config_subfragment_size="${enableval}"],
540     [config_subfragment_size="32"]
541     )
542     AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_SUBFRAGMENT_SIZE, $config_subfragment_size, [Define default subfragment size (in sample points).])
543    
544 schoenebeck 1005 AC_ARG_ENABLE(global-attenuation-default,
545     [ --enable-global-attenuation-default
546 schoenebeck 781 To prevent clipping all samples will be lowered
547 schoenebeck 1005 in amplitude by this given default factor (can
548     be overridden at runtime).
549 schoenebeck 781 (default=0.35)],
550 schoenebeck 1005 [config_global_attenuation_default="${enableval}"],
551     [config_global_attenuation_default="0.35"]
552 schoenebeck 781 )
553 schoenebeck 1005 AC_DEFINE_UNQUOTED(CONFIG_GLOBAL_ATTENUATION_DEFAULT, $config_global_attenuation_default, [Define default global volume attenuation (as floating point factor).])
554 schoenebeck 781
555 schoenebeck 554 AC_ARG_ENABLE(voice-steal-algo,
556     [ --enable-voice-steal-algo
557     Voice stealing algorithm to be used. Currently
558     available options:
559     none:
560     Disable voice stealing completely.
561 schoenebeck 563 oldestvoiceonkey (default):
562 schoenebeck 554 Try to kill a voice on the same key first,
563     if no success, proceed with the oldest key.
564 schoenebeck 563 oldestkey:
565 schoenebeck 554 Try to kill a voice from the oldest active
566     key.],
567     [ if test ! "(" "${enableval}" = "none" \
568     -o "${enableval}" = "oldestvoiceonkey" \
569     -o "${enableval}" = "oldestkey" ")" ; then
570     AC_MSG_ERROR([Unknown voice stealing algorithm for parameter --enable-voice-steal-algo])
571     else
572     config_voice_steal_algo="${enableval}"
573 schoenebeck 579 fi
574 schoenebeck 554 ],
575 schoenebeck 563 [config_voice_steal_algo="oldestvoiceonkey"]
576 schoenebeck 554 )
577     AC_DEFINE_UNQUOTED(CONFIG_VOICE_STEAL_ALGO, voice_steal_algo_${config_voice_steal_algo}, [Define voice stealing algorithm to be used.])
578    
579     AC_ARG_ENABLE(sysex-buffer-size,
580     [ --enable-sysex-buffer-size
581     System Exclusive Message buffer size in kB
582     (default=2048).],
583     [config_sysex_buffer_size="${enableval}"],
584     [config_sysex_buffer_size="2048"]
585     )
586     AC_DEFINE_UNQUOTED(CONFIG_SYSEX_BUFFER_SIZE, $config_sysex_buffer_size, [Define SysEx buffer size.])
587    
588     AC_ARG_ENABLE(force-filter,
589     [ --enable-force-filter
590     If enabled will force filter to be used even if
591     no usage was define in instrument patch files.
592     (default=no).],
593     [config_force_filter="yes"],
594     [config_force_filter="no"]
595     )
596     if test "$config_force_filter" = "yes"; then
597     AC_DEFINE_UNQUOTED(CONFIG_FORCE_FILTER, 1, [Define to 1 to force filter usage.])
598     fi
599    
600     AC_ARG_ENABLE(filter-cutoff-min,
601     [ --enable-filter-cutoff-min
602     Minimum filter cutoff frequency in Hz
603     (default=100.0).],
604     [config_filter_cutoff_min="${enableval}"],
605     [config_filter_cutoff_min="100.0"]
606     )
607     AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MIN, ${config_filter_cutoff_min}f, [Define min. filter cutoff frequency.])
608    
609     AC_ARG_ENABLE(filter-cutoff-max,
610     [ --enable-filter-cutoff-max
611     Maximum filter cutoff frequency in Hz
612     (default=10000.0).],
613     [config_filter_cutoff_max="${enableval}"],
614     [config_filter_cutoff_max="10000.0"]
615     )
616     AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MAX, ${config_filter_cutoff_max}f, [Define max. filter cutoff frequency.])
617    
618     AC_ARG_ENABLE(override-cutoff-ctrl,
619     [ --enable-override-cutoff-ctrl
620     Override filter cutoff MIDI controller (default=no).
621     Note: you have to define the MIDI controller number
622     here, it's not a boolean parameter type! If this
623     option is used, controller number given by
624     instrument patch will be ignored and instead this
625     supplied value will be used.],
626     [config_override_cutoff_ctrl="${enableval}"],
627     [config_override_cutoff_ctrl="no"]
628     )
629     if test ! "$config_override_cutoff_ctrl" = "no"; then
630     AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_CUTOFF_CTRL, $config_override_cutoff_ctrl, [Define to a MIDI controller number to override cutoff control.])
631     fi
632    
633     AC_ARG_ENABLE(override-resonance-ctrl,
634     [ --enable-override-resonance-ctrl
635     Override filter resonance MIDI controller
636     (default=no). Note: you have to define the MIDI
637     controller number here, it's not a boolean
638     parameter type! If this option is used, controller
639     number given by instrument patch will be ignored
640     and instead this supplied value will be used.],
641     [config_override_resonance_ctrl="${enableval}"],
642     [config_override_resonance_ctrl="no"]
643     )
644     if test ! "$config_override_resonance_ctrl" = "no"; then
645     AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_RESONANCE_CTRL, $config_override_resonance_ctrl, [Define to a MIDI controller number to override resonance control.])
646     fi
647    
648     AC_ARG_ENABLE(override-filter-type,
649     [ --enable-override-filter-type
650     Override filter type (default=no). Options:
651     hp: for highpass
652     bp: for bandpass
653     br: for bandreject
654     lp: for lowpass
655     lpt: for lowpass turbo],
656     [ if test "${enableval}" = "hp" ; then
657     config_override_filter_type="::gig::vcf_type_highpass"
658     elif test "${enableval}" = "bp" ; then
659     config_override_filter_type="::gig::vcf_type_bandpass"
660     elif test "${enableval}" = "br" ; then
661     config_override_filter_type="::gig::vcf_type_bandreject"
662     elif test "${enableval}" = "lp" ; then
663     config_override_filter_type="::gig::vcf_type_lowpass"
664     elif test "${enableval}" = "lpt" ; then
665     config_override_filter_type="::gig::vcf_type_lowpassturbo"
666     elif test ! "${enableval}" = "no"; then
667     AC_MSG_ERROR([Unknown filter type for parameter --enable-override-filter-type])
668 schoenebeck 579 fi
669 schoenebeck 554 ],
670     [config_override_filter_type="no"]
671     )
672     if test ! "$config_override_filter_type" = "no"; then
673     AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_FILTER_TYPE, $config_override_filter_type, [Define to a filter type to always force that filter type.])
674     fi
675    
676 schoenebeck 563 AC_ARG_ENABLE(gs-checksum,
677     [ --enable-gs-checksum
678     Enable Roland General Synth SysEx checksum check
679     (default=no). If this is enabled, all GS SysEx
680     messages which do not provide a correct checksum
681     will be ignored. This is disabled by default as
682     not all devices honor GS checksums.],
683     [config_assert_gs_sysex_checksum="yes"],
684     [config_assert_gs_sysex_checksum="no"]
685     )
686     if test "config_assert_gs_sysex_checksum" = "yes"; then
687     AC_DEFINE_UNQUOTED(CONFIG_ASSERT_GS_SYSEX_CHECKSUM, 1, [Define to 1 if you want to enable GS SysEx check.])
688     fi
689    
690 schoenebeck 829 AC_ARG_ENABLE(portamento-time-min,
691     [ --enable-portamento-time-min
692     Minimum Portamento time in seconds
693     (default=0.1).],
694     [config_portamento_time_min="${enableval}"],
695     [config_portamento_time_min="0.1"]
696     )
697     AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_MIN, $config_portamento_time_min, [Define min. portamento time.])
698    
699     AC_ARG_ENABLE(portamento-time-max,
700     [ --enable-portamento-time-max
701     Maximum Portamento time in seconds
702     (default=32).],
703     [config_portamento_time_max="${enableval}"],
704     [config_portamento_time_max="32"]
705     )
706     AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_MAX, $config_portamento_time_max, [Define max. portamento time.])
707    
708     AC_ARG_ENABLE(portamento-time-default,
709     [ --enable-portamento-time-default
710     Default Portamento time in seconds
711     (default=1).],
712     [config_portamento_time_default="${enableval}"],
713     [config_portamento_time_default="1"]
714     )
715     AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_DEFAULT, $config_portamento_time_default, [Define default portamento time.])
716    
717 schoenebeck 714 AC_ARG_ENABLE(signed-triang-algo,
718     [ --enable-signed-triang-algo
719     Signed triangular wave algorithm to be used (e.g. for LFOs).
720     Currently available options:
721     intmath:
722     Uses integer math without any branch will then be
723     converted to floating point value for each sample point.
724     This int->float conversion might hurt on some systems.
725 senkov 720 intmathabs:
726     Similar to intmath but uses abs() function.
727     Depending on compiler and platrofm this could
728     perform better than integer math as it avoids
729     an extra integer multiply instruction.
730    
731 schoenebeck 714 diharmonic:
732     The triangular wave will be approximated by adding two
733     sinusoidials. This solution might especially hurt on
734     systems with weak floating point unit.
735     benchmark (default):
736     This is not an algorithm. Use this option if the
737     appropriate algorithm should be automatically
738     chosen by the configure script by performing a
739     benchmark between the algorithms mentioned above.
740     This will NOT work for cross compilation!],
741     [ if test ! "(" "${enableval}" = "intmath" \
742 senkov 720 -o "${enableval}" = "intmathabs" \
743 schoenebeck 714 -o "${enableval}" = "diharmonic" ")" ; then
744     AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-signed-triang-algo])
745     else
746     config_signed_triang_algo="${enableval}"
747     fi
748     ],
749     [config_signed_triang_algo="benchmark"]
750     )
751 schoenebeck 563
752 schoenebeck 714 AC_ARG_ENABLE(unsigned-triang-algo,
753     [ --enable-unsigned-triang-algo
754     Unsigned triangular wave algorithm to be used (e.g. for LFOs).
755     Currently available options:
756     intmath:
757     Uses integer math without any branch will then be
758     converted to floating point value for each sample point.
759     This int->float conversion might hurt on some systems.
760 senkov 720 intmathabs:
761     Similar to intmath but uses abs() function.
762     Depending on compiler and platrofm this could
763     perform better than integer math as it avoids
764     an extra integer multiply instruction.
765    
766 schoenebeck 714 diharmonic:
767     The triangular wave will be approximated by adding two
768     sinusoidials. This solution might especially hurt on
769     systems with weak floating point unit.
770     benchmark (default):
771     This is not an algorithm. Use this option if the
772     appropriate algorithm should be automatically
773     chosen by the configure script by performing a
774     benchmark between the algorithms mentioned above.
775     This will NOT work for cross compilation!],
776     [ if test ! "(" "${enableval}" = "intmath" \
777 senkov 720 -o "${enableval}" = "intmathabs" \
778 schoenebeck 714 -o "${enableval}" = "diharmonic" ")" ; then
779     AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-unsigned-triang-algo])
780     else
781     config_unsigned_triang_algo="${enableval}"
782     fi
783     ],
784     [config_unsigned_triang_algo="benchmark"]
785     )
786    
787 iliev 716 AC_ARG_ENABLE(process-muted-channels,
788     [ --enable-process-muted-channels
789     Enable processing of muted channels (default=no).
790     In that mode all MIDI events in the muted channels
791     will be processed. This will provide information
792     about the active voices in the muted channels and
793     will not discard notes, triggered in mute mode,
794     when the channel is unmuted. But also will reduce
795     the efficiency.],
796     [config_process_muted_channels="yes"],
797     [config_process_muted_channels="no"]
798     )
799     if test "$config_process_muted_channels" = "yes"; then
800     AC_DEFINE_UNQUOTED(CONFIG_PROCESS_MUTED_CHANNELS, 1, [Define to 1 if you want to enable processing of muted channels.])
801     fi
802 schoenebeck 714
803 schoenebeck 849 AC_ARG_ENABLE(process-all-notes-off,
804     [ --disable-process-all-notes-off
805     Disable interpretation of All-Notes-Off MIDI
806     messages (default=on). By default LS will release
807     all voices whenever it receives an All-Notes-Off
808     MIDI message. You can disable this behavior, so
809     that LS simply ignores such messages.],
810     [config_process_all_notes_off="no"],
811     [config_process_all_notes_off="yes"]
812     )
813     if test "$config_process_all_notes_off" = "yes"; then
814     AC_DEFINE_UNQUOTED(CONFIG_PROCESS_ALL_NOTES_OFF, 1, [Define to 1 if you want to enable processing of All-Notes-Off MIDI messages.])
815     fi
816    
817 persson 830 AC_ARG_ENABLE(interpolate-volume,
818     [ --disable-interpolate-volume
819     Disable interpolation of volume modulation
820     (default=on). With this enabled, the volume changes
821     generated by for example the envelope generator
822     will be smoother, minimizing the risk for audio
823     clicks. Disable it to reduce CPU usage.],
824     [config_interpolate_volume="no"],
825     [config_interpolate_volume="yes"]
826     )
827     if test "$config_interpolate_volume" = "yes"; then
828     AC_DEFINE_UNQUOTED(CONFIG_INTERPOLATE_VOLUME, 1, [Define to 1 if you want to enable interpolation of volume modulation.])
829     fi
830 iliev 716
831 persson 830
832 schoenebeck 554 ###########################################################################
833 schoenebeck 714 # Automatic Benchmarks (to detect the best algorithms for the system)
834    
835     AC_LANG_SAVE
836    
837     if test "$config_signed_triang_algo" = "benchmark"; then
838     echo -n "benchmarking for the best (signed) triangular oscillator algorithm... "
839     AC_LANG_CPLUSPLUS
840     AC_TRY_RUN([
841     #define SIGNED 1
842     #define SILENT 1
843 schoenebeck 738 #include "${srcdir}/benchmarks/triang.cpp"
844 schoenebeck 714 ],
845     triang_signed=0,
846     triang_signed=$?,
847     triang_signed=0
848     )
849     if test "$triang_signed" = "2"; then
850     config_signed_triang_algo="intmath"
851     echo "integer math"
852     elif test "$triang_signed" = "3"; then
853     config_signed_triang_algo="diharmonic"
854     echo "di harmonics"
855 senkov 720 elif test "$triang_signed" = "5"; then
856     config_signed_triang_algo="intmathabs"
857     echo "integer math using abs()"
858 schoenebeck 714 else
859     echo "Benchmark of signed triangular wave algorithms failed!"
860     echo "Maybe you are doing cross compilation? In that case you have to select"
861     echo "an algorithm manually with './configure --enable-signed-triang-algo=...'"
862     echo "Call './configure --help' for further information or read configure.in."
863     exit -1;
864     fi
865     fi
866 schoenebeck 738 AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, ${triang_signed}, [Define signed triangular wave algorithm to be used.])
867 schoenebeck 714
868     if test "$config_unsigned_triang_algo" = "benchmark"; then
869     echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... "
870     AC_LANG_CPLUSPLUS
871     AC_TRY_RUN([
872     #define SIGNED 0
873     #define SILENT 1
874 schoenebeck 738 #include "${srcdir}/benchmarks/triang.cpp"
875 schoenebeck 714 ],
876     triang_unsigned=0,
877     triang_unsigned=$?,
878     triang_unsigned=0
879     )
880     if test "$triang_unsigned" = "2"; then
881     config_unsigned_triang_algo="intmath"
882     echo "integer math"
883     elif test "$triang_unsigned" = "3"; then
884     config_unsigned_triang_algo="diharmonic"
885     echo "di harmonics"
886 senkov 720 elif test "$triang_unsigned" = "5"; then
887 schoenebeck 726 config_unsigned_triang_algo="intmathabs"
888 senkov 720 echo "integer math using abs()"
889 schoenebeck 714 else
890     echo "Benchmark of unsigned triangular wave algorithms failed!"
891     echo "Maybe you are doing cross compilation? In that case you have to select"
892     echo "an algorithm manually with './configure --enable-unsigned-triang-algo=...'"
893     echo "Call './configure --help' for further information or read configure.in."
894     exit -1;
895     fi
896     fi
897 schoenebeck 738 AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.])
898 schoenebeck 714
899     AC_LANG_RESTORE
900    
901    
902     ###########################################################################
903 schoenebeck 554 # Create Build Files
904    
905 schoenebeck 9 AM_CONFIG_HEADER(config.h)
906 schoenebeck 697 AM_INIT_AUTOMAKE(linuxsampler, "$LINUXSAMPLER_RELEASE_MAJOR.$LINUXSAMPLER_RELEASE_MINOR.$LINUXSAMPLER_RELEASE_BUILD")
907 schoenebeck 9
908     AC_LANG_CPLUSPLUS
909     AC_PROG_CXX
910 persson 497
911 persson 685 # some gcc 4.0 versions need -msse for SSE register allocations
912     if test "$config_asm" = "yes"; then
913     if test "$def_arch_x86" = 1; then
914     CXXFLAGS="$CXXFLAGS -msse"
915     fi
916     fi
917    
918 persson 497 # autoconf 2.59/libtool 1.5.12 bug? work-around. Without a check like
919     # this, the dlfcn.h check in am_prog_libtool may fail.
920     AC_CHECK_HEADER(stdlib.h)
921    
922 schoenebeck 654 AC_OUTPUT( \
923     Makefile \
924     man/Makefile \
925     man/linuxsampler.1 \
926     src/Makefile \
927 iliev 1161 src/db/Makefile \
928 schoenebeck 654 src/network/Makefile \
929     src/engines/Makefile \
930     src/engines/gig/Makefile \
931     src/engines/common/Makefile \
932     src/common/Makefile src/lib/Makefile \
933     src/lib/fileloader/Makefile \
934     src/lib/fileloader/libgig/Makefile \
935     src/testcases/Makefile \
936     src/drivers/Makefile \
937     src/drivers/audio/Makefile \
938     src/drivers/midi/Makefile \
939     linuxsampler.spec \
940     debian/Makefile \
941     Artwork/Makefile \
942     scripts/Makefile \
943     osx/Makefile \
944     osx/LinuxSampler.xcode/Makefile \
945     Documentation/Makefile \
946     Documentation/Engines/Makefile \
947     Documentation/Engines/gig/Makefile \
948 schoenebeck 697 linuxsampler.pc \
949     Doxyfile \
950 schoenebeck 654 )
951 schoenebeck 554
952    
953     ###########################################################################
954     # Output All Configuration Options
955    
956     echo ""
957     echo "#####################################################################"
958     echo "# LinuxSampler Configuration #"
959     echo "#-------------------------------------------------------------------#"
960 schoenebeck 617 echo "# Assembly Optimizations: ${config_asm}"
961 schoenebeck 554 echo "# Development Mode: ${config_dev_mode}"
962     echo "# Debug Level: ${config_debug_level}"
963     echo "# Use Exceptions in RT Context: ${config_rt_exceptions}"
964     echo "# Preload Samples: ${config_preload_samples}"
965     echo "# Maximum Pitch: ${config_max_pitch} (octaves)"
966     echo "# Maximum Events: ${config_max_events}"
967     echo "# Envelope Bottom Level: ${config_eg_bottom} (linear)"
968     echo "# Envelope Minimum Release Time: ${config_eg_min_release_time} s"
969     echo "# Streams to be refilled per Disk Thread Cycle: ${config_refill_streams}"
970     echo "# Minimum Stream Refill Size: ${config_stream_min_refill}"
971     echo "# Maximum Stream Refill Size: ${config_stream_max_refill}"
972     echo "# Stream Size: ${config_stream_size}"
973     echo "# Maximum Disk Streams: ${config_max_streams}"
974     echo "# Maximum Voices: ${config_max_voices}"
975 schoenebeck 738 echo "# Default Subfragment Size: ${config_subfragment_size}"
976 schoenebeck 1005 echo "# Default Global Volume Attenuation: ${config_global_attenuation_default}"
977 schoenebeck 563 echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}"
978 schoenebeck 714 echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}"
979     echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}"
980 schoenebeck 554 echo "# SysEx Buffer Size: ${config_sysex_buffer_size} Byte"
981 schoenebeck 829 echo "# Min. Portamento Time: ${config_portamento_time_min} s"
982     echo "# Max. Portamento Time: ${config_portamento_time_max} s"
983     echo "# Default Portamento Time: ${config_portamento_time_default} s"
984 schoenebeck 554 echo "# Force Filter Usage: ${config_force_filter}"
985     echo "# Filter Cutoff Minimum: ${config_filter_cutoff_min} Hz"
986     echo "# Filter Cutoff Maximum: ${config_filter_cutoff_max} Hz"
987     echo "# Override Filter Cutoff Controller: ${config_override_cutoff_ctrl}"
988     echo "# Override Filter Resonance Controller: ${config_override_resonance_ctrl}"
989     echo "# Override Filter Type: ${config_override_filter_type}"
990 schoenebeck 563 echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}"
991 iliev 716 echo "# Process Muted Channels: ${config_process_muted_channels}"
992 schoenebeck 849 echo "# Process All-Notes-Off MIDI message: ${config_process_all_notes_off}"
993 persson 830 echo "# Interpolate Volume: ${config_interpolate_volume}"
994 iliev 1161 echo "# Instruments database support: ${instruments_db_support}"
995 schoenebeck 554 echo "#-------------------------------------------------------------------#"
996     echo "# Read './configure --help' or file 'configure.in' for details. #"
997     echo "#####################################################################"
998     echo ""
999     echo "Good. Now type 'make' to compile, followed by 'make install' as root."
1000     echo ""

  ViewVC Help
Powered by ViewVC