Handle streams separately in tree_add_track()
[cmus.git] / configure
blob7f1a0314c42f7c14f2751a81408909d0c3c8bbe4
1 #!/bin/sh
3 . scripts/configure.sh || exit 1
5 check_cflags()
7 check_cc_flag -std=gnu99 -pipe -Wall -Wshadow -Wcast-align -Wpointer-arith \
8 -Wwrite-strings -Wundef -Wmissing-prototypes -Wredundant-decls
10 for i in -Wdeclaration-after-statement \
11 -Wold-style-definition \
12 -Wno-pointer-sign \
13 -Werror-implicit-function-declaration
15 check_cc_flag $i
16 done
17 return 0
20 check_compat()
22 COMPAT_LIBS=
23 case `uname -s` in
24 SunOS)
25 # connect() etc.
26 try_link -lsocket && COMPAT_LIBS="$COMPAT_LIBS -lsocket"
28 # gethostbyname()
29 try_link -lnsl && COMPAT_LIBS="$COMPAT_LIBS -lnsl"
31 # nanosleep()
32 if try_link -lrt
33 then
34 COMPAT_LIBS="$COMPAT_LIBS -lrt"
35 elif try_link -lposix4
36 then
37 COMPAT_LIBS="$COMPAT_LIBS -lposix4"
40 CYGWIN*)
41 CONFIG_CYGWIN=y
42 makefile_vars CONFIG_CYGWIN
43 esac
44 makefile_vars COMPAT_LIBS
47 rtsched_code="
48 #include <pthread.h>
50 int main(int argc, char *argv[])
52 pthread_attr_t attr;
53 struct sched_param param;
55 pthread_attr_init(&attr);
56 pthread_attr_setschedpolicy(&attr, SCHED_RR);
57 param.sched_priority = sched_get_priority_max(SCHED_RR);
58 pthread_attr_setschedparam(&attr, &param);
59 return 0;
63 check_rtsched()
65 msg_checking "for realtime scheduling"
66 if try_compile_link "$rtsched_code" $PTHREAD_CFLAGS $PTHREAD_LIBS
67 then
68 msg_result yes
69 EXTRA_CFLAGS="$EXTRA_CFLAGS -DREALTIME_SCHEDULING"
70 else
71 msg_result no
73 return 0
76 check_ncurses()
78 if check_library NCURSES "" -lncursesw
79 then
80 widechars=y
81 return 0
83 if check_library NCURSES "" -lncurses || check_library NCURSES "" -lcurses
84 then
85 widechars=n
86 msg_error "Your ncurses does not support wide characters!"
87 msg_error "Install ncursesw if you need wide character support,"
88 msg_error "you can ignore this warning otherwise."
89 return 0
91 return 1
94 check_mpc()
96 check_library MPC "" "-lmpcdec"
97 return $?
100 check_flac()
102 check_library FLAC "" "-lFLAC -lm" && return 0
103 check_library FLAC "" "-lFLAC -lvorbisfile -lm"
104 return $?
107 check_mad()
109 pkg_config MAD "mad" "" "-lmad -lm"
110 return $?
113 check_mikmod()
115 app_config MIKMOD libmikmod-config && return 0
116 # mikmod is linked against pthread
117 check_library MIKMOD "$PTHREAD_CFLAGS" "-lmikmod $PTHREAD_LIBS"
118 return $?
121 check_modplug()
123 pkg_config MODPLUG "libmodplug" "-I/usr/include/libmodplug" "-lmodplug -lstdc++ -lm"
124 return $?
127 check_vorbis()
129 if test "$CONFIG_TREMOR" = y
130 then
131 pkg_config VORBIS "vorbisidec" "" "-lvorbisidec -lm"
132 return $?
133 else
134 pkg_config VORBIS "vorbisfile" "" "-lvorbisfile -lvorbis -lm -logg"
135 return $?
139 check_wavpack()
141 pkg_config WAVPACK "wavpack" "" "-lwavpack"
142 return $?
145 check_alsa()
147 # the alsa.pc file should be always available
148 pkg_config ALSA "alsa >= 1.0.11"
149 return $?
152 check_ao()
154 pkg_config AO "ao" "" "-lao"
155 return $?
158 check_arts()
160 app_config ARTS artsc-config
161 return $?
164 check_oss()
166 case `uname -s` in
167 Linux|*FreeBSD)
169 *BSD)
170 check_library OSS "" "-lossaudio"
171 return $?
174 # unknown
176 esac
178 OSS_CFLAGS=""
179 OSS_LIBS=""
180 msg_checking "for header <sys/soundcard.h>"
181 if test -f /usr/include/sys/soundcard.h
182 then
183 msg_result "yes"
184 makefile_vars OSS_CFLAGS OSS_LIBS
185 return 0
186 else
187 msg_result "no"
189 return 1
192 check_sun()
194 msg_checking "for header <sys/audioio.h>"
195 if test -f /usr/include/sys/audioio.h
196 then
197 msg_result "yes"
198 return 0
199 else
200 msg_result "no"
201 return 1
205 check_waveout()
207 case `uname -s` in
208 CYGWIN*)
209 check_library WAVEOUT "" "-lwinmm"
210 return $?
211 esac
212 return 1
215 check_mp4()
217 check_header faad.h &&
218 check_library MP4 "" "-lmp4v2 -lfaad -lm"
219 return $?
222 check_aac()
224 check_header faad.h &&
225 check_library AAC "" "-lfaad -lm"
226 return $?
229 check_ffmpeg()
231 if pkg_config FFMPEG "libavformat"
232 then
233 if check_header 'ffmpeg/avcodec.h'
234 then
235 FFMPEG_CFLAGS="$FFMPEG_CFLAGS -DHAVE_FFMPEG_AVCODEC_H"
237 return 0
239 return 1
242 # defaults
243 prefix=/usr/local
244 DEBUG=1
245 CONFIG_TREMOR=n
246 CONFIG_MIKMOD=n
247 # unset CONFIG_* variables: if check succeeds 'y', otherwise 'n'
249 USAGE="
250 Options:
251 prefix Installation prefix [$prefix]
252 bindir User executables [\$prefix/bin]
253 datadir Read-only data [\$prefix/share]
254 libdir Libraries [\$prefix/lib]
255 mandir Man pages [\$datadir/man]
256 exampledir Examples [\$datadir/doc/cmus/examples]
257 DEBUG Debugging level (0-2) [$DEBUG]
259 Optional Features: y/n
260 CONFIG_FLAC Free Lossless Audio Codec (.flac, .fla) [auto]
261 CONFIG_MAD MPEG Audio Decoder (.mp3, .mp2, streams) [auto]
262 CONFIG_MODPLUG libmodplug (.mod, .x3m, ...) [auto]
263 CONFIG_MIKMOD libmikmod (.mod, .x3m, ...) [n]
264 CONFIG_MPC libmpcdec (Musepack .mpc, .mpp, .mp+) [auto]
265 CONFIG_VORBIS Ogg/Vorbis (.ogg, application/ogg, audio/x-ogg) [auto]
266 CONFIG_TREMOR Use Tremor as Ogg/Vorbis input plugin [n]
267 CONFIG_WAV WAV [y]
268 CONFIG_WAVPACK WavPack (.wv, audio/x-wavpack) [auto]
269 CONFIG_MP4 MPEG-4 AAC (.mp4, .m4a, .m4b) [auto]
270 CONFIG_AAC AAC (.aac, audio/aac, audio/aacp) [auto]
271 CONFIG_FFMPEG FFMPEG (.shn, .wma) [auto]
272 CONFIG_ALSA ALSA [auto]
273 CONFIG_AO Libao cross-platform audio library [auto]
274 CONFIG_ARTS ARTS [auto]
275 CONFIG_OSS Open Sound System [auto]
276 CONFIG_SUN Sun Audio [auto]
277 CONFIG_WAVEOUT Windows Wave Out [auto]
279 Also many standard variables like CC are recognized."
281 parse_command_line "$@"
283 case $DEBUG in
284 [0-2])
287 die "DEBUG must be 0-2"
289 esac
291 var_default bindir "${prefix}/bin"
292 var_default datadir "${prefix}/share"
293 var_default libdir "${prefix}/lib"
294 var_default mandir "${datadir}/man"
295 var_default exampledir "${datadir}/doc/cmus/examples"
297 check check_cc
298 check check_cflags
299 check check_cc_depgen
300 check check_endianness
301 check check_compat
302 check check_dl
303 check check_pthread
304 check check_rtsched
305 check check_ncurses
306 check check_iconv
308 check check_flac CONFIG_FLAC
309 check check_mad CONFIG_MAD
310 check check_mikmod CONFIG_MIKMOD
311 check check_modplug CONFIG_MODPLUG
312 check check_mpc CONFIG_MPC
313 check check_vorbis CONFIG_VORBIS
314 check check_wavpack CONFIG_WAVPACK
315 check check_mp4 CONFIG_MP4
316 check check_aac CONFIG_AAC
317 check check_ffmpeg CONFIG_FFMPEG
318 # nothing to check, just validate the variable values
319 check true CONFIG_TREMOR
320 check true CONFIG_WAV
321 check check_alsa CONFIG_ALSA
322 check check_ao CONFIG_AO
323 check check_arts CONFIG_ARTS
324 check check_oss CONFIG_OSS
325 check check_sun CONFIG_SUN
326 check check_waveout CONFIG_WAVEOUT
328 test "$WORDS_BIGENDIAN" = y && CFLAGS="${CFLAGS} -DWORDS_BIGENDIAN"
330 DATADIR="$datadir"
331 LIBDIR="$libdir"
333 config_header config/datadir.h DATADIR
334 config_header config/libdir.h LIBDIR
335 config_header config/debug.h DEBUG
336 config_header config/tremor.h CONFIG_TREMOR
338 makefile_vars bindir datadir libdir mandir exampledir
339 makefile_vars CONFIG_FLAC CONFIG_MAD CONFIG_MIKMOD CONFIG_MODPLUG CONFIG_MPC CONFIG_VORBIS CONFIG_WAVPACK CONFIG_WAV CONFIG_MP4 CONFIG_AAC CONFIG_FFMPEG
340 makefile_vars CONFIG_ALSA CONFIG_AO CONFIG_ARTS CONFIG_OSS CONFIG_SUN CONFIG_WAVEOUT
342 generate_config_mk