1 dnl sxe-mm.m4 -- Multimedia goodness
6 AC_DEFUN([SXE_MM_CHECK_XPM], [
7 ## arg #1: action on success
8 ## arg #2: action on failure
9 pushdef([MM_SUCC], [$1])
10 pushdef([MM_FAIL], [$2])
12 AC_MSG_CHECKING([for xpm support])
16 if test "$window_system" = "none"; then
21 SXE_LANG_WERROR([off])
22 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
23 LDFLAGS="$LDFLAGS $X_PRE_LIBS $X_LIBS $libs_x"
24 LIBS="$LIBS -lXpm -lX11"
26 SXE_CHECK_HEADERS([X11/xpm.h], [:], [MM_FAIL])
28 AC_MSG_CHECKING([for Xpm (more recent than 3.4f)])
29 AC_RUN_IFELSE([AC_LANG_SOURCE([[
32 int main(int c, char **v)
35 XpmIncludeVersion != XpmLibraryVersion() ? 1 :
36 XpmIncludeVersion < 30406 ? 2 : 0 ;
37 }]])], [./conftest dummy_arg; xpm_status=$?;
38 if test "$xpm_status" = "0"; then
43 if test "$xpm_status" = "1"; then
45 Xpm library version and header file version don't match!
46 I have disabled xpm on your behalf.])
47 elif test "$xpm_status" = "2"; then
49 Xpm library version is too old!
50 I have disabled xpm on your behalf.])
53 Internal xpm detection logic error!])
62 ])dnl SXE_MM_CHECK_XPM
64 AC_DEFUN([SXE_MM_CHECK_XFACE], [
65 ## arg #1: action on success
66 ## arg #2: action on failure
67 pushdef([MM_SUCC], [$1])
68 pushdef([MM_FAIL], [$2])
70 AC_MSG_CHECKING([for xface support])
74 SXE_LANG_WERROR([off])
75 dnl SXE_PREPEND_UNDUP([-I$x_includes], [c_switch_site])
76 dnl SXE_PREPEND_UNDUP([-L$x_libraries], [ld_switch_site])
77 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
78 LDFLAGS="$LDFLAGS $X_LIBS"
81 if test "$window_system" = "none"; then
85 SXE_CHECK_HEADERS([compface.h], [:], [MM_FAIL])
86 AC_CHECK_LIB([compface], [UnGenFace], [:], [MM_FAIL])
89 ])dnl SXE_MM_CHECK_XFACE
91 AC_DEFUN([SXE_MM_CHECK_GIF], [
92 ## arg #1: action on success
93 ## arg #2: action on failure
94 pushdef([MM_SUCC], [$1])
95 pushdef([MM_FAIL], [$2])
97 AC_MSG_CHECKING([for gif support])
103 if test "$window_system" = "none"; then
108 ])dnl SXE_MM_CHECK_GIF
110 AC_DEFUN([SXE_MM_CHECK_JPEG], [
111 ## arg #1: action on success
112 ## arg #2: action on failure
113 pushdef([MM_SUCC], [$1])
114 pushdef([MM_FAIL], [$2])
116 AC_MSG_CHECKING([for jpeg support])
120 SXE_LANG_WERROR([off])
121 dnl SXE_PREPEND_UNDUP([-I$x_includes], [c_switch_site])
122 dnl SXE_PREPEND_UNDUP([-L$x_libraries], [ld_switch_site])
123 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
124 LDFLAGS="$LDFLAGS $X_LIBS"
127 if test "$window_system" = "none"; then
131 SXE_CHECK_HEADERS([jpeglib.h], [:], [MM_FAIL])
132 AC_CHECK_LIB([jpeg], [jpeg_destroy_decompress], [:], [MM_FAIL], [$INFLATE_LIB])
135 ])dnl SXE_MM_CHECK_JPEG
138 AC_DEFUN([_SXE_MM_CHECK_PNG_HEADERS], [dnl
139 ## defines sxe_cv_feat_png_headers
140 ## also defines and substs PNG_CPPFLAGS
143 SXE_LANG_WERROR([off])
144 PNG_CPPFLAGS="$CPPFLAGS $X_CFLAGS"
145 CPPFLAGS="$PNG_CPPFLAGS"
146 SXE_CHECK_HEADERS([png.h])
149 if test "${ac_cv_header_png_h}" = "yes"; then
150 sxe_cv_feat_png_headers="yes"
152 sxe_cv_feat_png_headers="no"
155 AC_SUBST([PNG_CPPFLAGS])
156 ])dnl _SXE_MM_CHECK_PNG_HEADERS
158 AC_DEFUN([_SXE_MM_CHECK_PNG_LIBS], [dnl
159 ## defines sxe_cv_feat_png_libs
160 ## also defines and substs PNG_LIBS and PNG_LDFLAGS
163 SXE_LANG_WERROR([off])
164 PNG_LDFLAGS="$LDFLAGS $X_LIBS"
165 LDFLAGS="$PNG_LDFLAGS"
166 AC_CHECK_LIB([png], [png_read_image], [], [], [$INFLATE_LIB])
169 if test "${ac_cv_lib_png_png_read_image}" = "yes"; then
170 sxe_cv_feat_png_libs="yes"
171 PNG_LIBS="$INFLATE_LIB -lpng"
173 sxe_cv_feat_png_libs="no"
178 AC_SUBST([PNG_LDFLAGS])
179 ])dnl _SXE_MM_CHECK_PNG_LIBS
181 AC_DEFUN([_SXE_MM_CHECK_PNG_VERSION], [dnl
182 ## defines sxe_cv_tmp_png_status to yes if version info seems okay
183 AC_REQUIRE([_SXE_MM_CHECK_PNG_HEADERS])
184 AC_REQUIRE([_SXE_MM_CHECK_PNG_LIBS])
186 SXE_MSG_CHECKING([for workable png version information])
189 CPPFLAGS="$PNG_CPPFLAGS"
190 LDFLAGS="$PNG_LDFLAGS"
192 AC_RUN_IFELSE([AC_LANG_SOURCE([[
193 #if defined HAVE_PNG_H
195 #endif /* HAVE_PNG_H */
197 int main(int c, char **v)
202 if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) {
205 return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;
206 }]])], [./conftest dummy_arg; png_status=$?;
207 if test "$png_status" = "0"; then
208 sxe_cv_tmp_png_status="yes"
210 elif test "$png_status" = "1"; then
211 sxe_cv_tmp_png_status="yes"
213 PNG library version and header file don't match!
214 This is odd but I think I give it a whirl.
215 If things work out badly I suggest to turn off your computer forever.])
217 elif test "$png_status" = "2"; then
218 sxe_cv_tmp_png_status="no"
220 PNG library version too old (pre 1.0.2)!
221 I have disabled PNG support on your behalf.])
224 sxe_cv_tmp_png_status="no"
226 Whatever happened just now, I'm completely fucked.])
227 fi], [sxe_cv_tmp_png_status="no"], [sxe_cv_tmp_png_status="no"])
228 SXE_MSG_RESULT([${sxe_cv_tmp_png_status}])
230 ])dnl _SXE_MM_CHECK_PNG_VERSION
232 AC_DEFUN([SXE_MM_CHECK_PNG], [
233 ## SXE_MM_CHECK_PNG(<action-if-found>, <action-if-not-found>)
234 ## defines HAVE_PNG in case png is usable
235 pushdef([MM_SUCC], [$1])
236 pushdef([MM_FAIL], [$2])
238 SXE_MSG_CHECKING([for PNG support])
241 _SXE_MM_CHECK_PNG_HEADERS
242 _SXE_MM_CHECK_PNG_LIBS
243 _SXE_MM_CHECK_PNG_VERSION
246 ## we want to see a header and png_read_image really
247 if test "${sxe_cv_feat_png_headers}" = "yes" -a \
248 "${sxe_cv_feat_png_libs}" = "yes" -a \
249 "${sxe_cv_tmp_png_status}" = "yes"; then
250 sxe_cv_feat_png="yes"
251 AC_DEFINE([HAVE_PNG], [1], [Define to 1 if png is usable.])
257 ])dnl SXE_MM_CHECK_PNG
259 AC_DEFUN([SXE_MM_CHECK_TIFF], [
260 ## arg #1: action on success
261 ## arg #2: action on failure
262 pushdef([MM_SUCC], [$1])
263 pushdef([MM_FAIL], [$2])
265 AC_MSG_CHECKING([for TIFF support])
269 SXE_LANG_WERROR([off])
270 dnl SXE_PREPEND_UNDUP([-I$x_includes], [c_switch_site])
271 dnl SXE_PREPEND_UNDUP([-L$x_libraries], [ld_switch_site])
272 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
273 LDFLAGS="$LDFLAGS $X_LIBS"
276 if test "$window_system" = "none"; then
280 SXE_CHECK_HEADERS([tiffio.h], [:], [MM_FAIL])
281 AC_CHECK_LIB([tiff], [TIFFClientOpen], [:], [MM_FAIL], [$INFLATE_LIB])
284 ])dnl SXE_MM_CHECK_TIFF
286 AC_DEFUN([SXE_MM_SEARCH_INFLATE], [
287 dnl Too many stupid linkers can't detect cascaded lib dependencies
288 dnl until runtime. So we always search for libz compression support.
289 AC_SEARCH_LIBS([inflate], [c z gz], [
290 if test "$ac_cv_lib_c_inflate" = "yes"; then
292 elif test "$ac_cv_lib_z_inflate" = "yes"; then
294 elif test "$ac_cv_lib_gz_inflate" = "yes"; then
297 if test -n "$INFLATE_LIB"; then
298 SXE_PREPEND([$INFLATE_LIB], [MM_LIBS])
300 ])dnl SXE_MM_SEARCH_INFLATE
302 AC_DEFUN([SXE_MM_CHECK_SNDFILE], [
303 ## assumes $PKG_CONFIG is defined
304 ## arg #1: action on success
305 ## arg #2: action on failure
307 _SXE_MM_CHECK_pkgconfig_based([sndfile], [sndfile], [1.0.12], [dnl
308 sf_open sf_close sf_readf_short sf_readf_int dnl
309 sf_readf_float sf_seek sf_open_virtual],
310 [sndfile.h], [$1], [$2])
311 ])dnl SXE_MM_CHECK_SNDFILE
313 AC_DEFUN([SXE_MM_CHECK_FFMPEG], [
314 ## assumes $PKG_CONFIG is defined
315 ## arg #1: action on success
316 ## arg #2: action on failure
317 pushdef([ACTION_IF_FOUND], [$1])
318 pushdef([ACTION_IF_NOT_FOUND], [$2])
322 ## Minimum versions required matches FFmpeg stable v2.0.1
323 ## released 2013-08-13
324 SXE_PC_CHECK_VERSION_ATLEAST([libavformat], [55.12.100])
325 SXE_PC_CHECK_VERSION_ATLEAST([libavcodec], [55.18.102])
326 SXE_PC_CHECK_VERSION_ATLEAST([libavutil], [52.38.100])
328 SXE_CHECK_FFMPEG_HEADERS
329 SXE_CHECK_FFMPEG_LIBS
331 ## make sure we have at least one of the headers
332 if test "$ac_cv_header_avformat_h" = "yes" -o \
333 "$ac_cv_header_ffmpeg_avformat_h" = "yes" -o \
334 "$ac_cv_header_libavformat_avformat_h" = "yes"; then
335 sxe_cv_feat_ffmpeg_headers="yes"
337 sxe_cv_feat_ffmpeg_headers="no"
340 if test "$sxe_cv_feat_ffmpeg_headers" = "yes"; then
341 if test "$ac_cv_header_avcodec_h" = "yes" -o \
342 "$ac_cv_header_ffmpeg_avcodec_h" = "yes" -o \
343 "$ac_cv_header_libavcodec_avcodec_h" = "yes"; then
344 sxe_cv_feat_ffmpeg_headers="yes"
346 sxe_cv_feat_ffmpeg_headers="no"
350 if test "$sxe_cv_feat_ffmpeg_headers" = "yes"; then
351 if test "$ac_cv_header_ffmpeg_dict_h" = "yes" -o \
352 "$ac_cv_header_libavutil_dict_h" = "yes"; then
353 sxe_cv_feat_ffmpeg_headers="yes"
355 sxe_cv_feat_ffmpeg_headers="no"
359 if test "$sxe_cv_feat_ffmpeg_headers" = "yes"; then
360 if test "$ac_cv_header_ffmpeg_time_h" = "yes" -o \
361 "$ac_cv_header_libavutil_time_h" = "yes"; then
362 sxe_cv_feat_ffmpeg_headers="yes"
364 sxe_cv_feat_ffmpeg_headers="no"
368 ## make sure either decode_audio is there
369 if test "$ac_cv_lib_avcodec_avcodec_decode_audio" = "yes" -o \
370 "$ac_cv_lib_avcodec_avcodec_decode_audio2" = "yes" -o \
371 "$ac_cv_lib_avcodec_avcodec_decode_audio3" = "yes"; then
372 sxe_cv_feat_ffmpeg_decoders="yes"
375 if test "$sxe_cv_feat_ffmpeg_headers" = "yes" -a \
376 "$sxe_cv_feat_ffmpeg_decoders" = "yes" -a \
377 "$ac_cv_lib_avformat_avformat_alloc_context" = "yes" -a \
378 "$ac_cv_lib_avformat_avformat_free_context" = "yes" -a \
379 "$ac_cv_lib_avformat_avio_alloc_context" = "yes" -a \
380 "$ac_cv_lib_avformat_avio_size" = "yes" -a \
381 "$ac_cv_lib_avformat_avio_feof" = "yes" -a \
382 "$ac_cv_lib_avformat_avformat_open_input" = "yes" -a \
383 "$ac_cv_lib_avformat_avformat_close_input" = "yes" -a \
384 "$ac_cv_lib_avformat_avformat_find_stream_info" = "yes" -a \
385 "$ac_cv_lib_avformat_av_probe_input_format" = "yes" -a \
386 "$ac_cv_lib_avformat_av_iformat_next" = "yes" -a \
387 "$ac_cv_lib_avformat_av_read_frame" = "yes" -a \
388 "$ac_cv_lib_avformat_av_seek_frame" = "yes" -a \
389 "$ac_cv_lib_avformat_av_register_all" = "yes" -a \
390 "$ac_cv_lib_avformat_av_dump_format" = "yes" -a \
391 "$ac_cv_lib_avformat_av_get_sample_fmt_string" = "yes" -a \
392 "$ac_cv_lib_avformat_av_get_bytes_per_sample" = "yes" -a \
393 "$ac_cv_lib_avcodec_avcodec_find_decoder" = "yes" -a \
394 "$ac_cv_lib_avcodec_avcodec_open2" = "yes" -a \
395 "$ac_cv_lib_avutil_av_dict_get" = "yes"; then
396 sxe_cv_feat_ffmpeg="yes"
398 sxe_cv_feat_ffmpeg="no"
401 if test "$sxe_cv_feat_ffmpeg" = "yes"; then
409 popdef([ACTION_IF_FOUND])
410 popdef([ACTION_IF_NOT_FOUND])
411 ])dnl SXE_MM_CHECK_FFMPEG
413 AC_DEFUN([SXE_CHECK_FFMPEG_HEADERS], [dnl
414 FFMPEG_CPPFLAGS="$(${PKG_CONFIG} --cflags libavformat libavcodec libavutil)"
416 ## backup current configuration
418 CPPFLAGS="${CPPFLAGS} ${FFMPEG_CPPFLAGS}"
419 AC_CHECK_HEADERS([avformat.h avcodec.h])
420 AC_CHECK_HEADERS([ffmpeg/avformat.h ffmpeg/avcodec.h])
421 AC_CHECK_HEADERS([ffmpeg/dict.h ffmpeg/time.h])
422 AC_CHECK_HEADERS([libavformat/avformat.h libavcodec/avcodec.h])
423 AC_CHECK_HEADERS([libavutil/dict.h libavutil/time.h])
425 ## restore configuration
427 ])dnl SXE_CHECK_FFMPEG_HEADERS
429 AC_DEFUN([SXE_CHECK_FFMPEG_LIBS], [dnl
430 FFMPEG_LDFLAGS="$(${PKG_CONFIG} --libs-only-other libavformat libavcodec libavutil) \
431 $(${PKG_CONFIG} --libs-only-L libavformat libavcodec libavutil)"
432 FFMPEG_LIBS="$(${PKG_CONFIG} --libs-only-l libavformat libavcodec libavutil)"
434 ## backup current configuration
436 LDFLAGS="${LDFLAGS} ${FFMPEG_LDFLAGS}"
438 AC_CHECK_LIB([avcodec], [avcodec_find_decoder], [:], [:], [${FFMPEG_LIBS}])
439 AC_CHECK_LIB([avcodec], [avcodec_open2], [:], [:], [${FFMPEG_LIBS}])
440 AC_CHECK_LIB([avcodec], [avcodec_decode_audio], [:], [:], [${FFMPEG_LIBS}])
441 AC_CHECK_LIB([avcodec], [avcodec_decode_audio2], [:], [:], [${FFMPEG_LIBS}])
442 AC_CHECK_LIB([avcodec], [avcodec_decode_audio3], [:], [:], [${FFMPEG_LIBS}])
443 AC_CHECK_LIB([avcodec], [avcodec_decode_audio4], [:], [:], [${FFMPEG_LIBS}])
445 AC_CHECK_LIB([avformat], [avformat_open_input], [:], [:], [${FFMPEG_LIBS}])
446 AC_CHECK_LIB([avformat], [avformat_close_input], [:], [:], [${FFMPEG_LIBS}])
447 AC_CHECK_LIB([avformat], [avformat_find_stream_info], [:], [:], [${FFMPEG_LIBS}])
448 AC_CHECK_LIB([avformat], [av_iformat_next], [:], [:], [${FFMPEG_LIBS}])
449 AC_CHECK_LIB([avformat], [av_probe_input_format], [:], [:], [${FFMPEG_LIBS}])
450 AC_CHECK_LIB([avformat], [av_read_frame], [:], [:], [${FFMPEG_LIBS}])
451 AC_CHECK_LIB([avformat], [av_seek_frame], [:], [:], [${FFMPEG_LIBS}])
452 AC_CHECK_LIB([avformat], [av_register_all], [:], [:], [${FFMPEG_LIBS}])
453 AC_CHECK_LIB([avformat], [av_dump_format], [:], [:], [${FFMPEG_LIBS}])
454 AC_CHECK_LIB([avformat], [av_get_bytes_per_sample], [:], [:], [${FFMPEG_LIBS}])
455 AC_CHECK_LIB([avformat], [av_get_sample_fmt_string], [:], [:], [${FFMPEG_LIBS}])
456 AC_CHECK_LIB([avformat], [avformat_alloc_context], [:], [:], [${FFMPEG_LIBS}])
457 AC_CHECK_LIB([avformat], [avformat_free_context], [:], [:], [${FFMPEG_LIBS}])
458 AC_CHECK_LIB([avformat], [avio_alloc_context], [:], [:], [${FFMPEG_LIBS}])
459 AC_CHECK_LIB([avformat], [avio_size], [:], [:], [${FFMPEG_LIBS}])
460 AC_CHECK_LIB([avformat], [avio_feof], [:], [:], [${FFMPEG_LIBS}])
462 AC_CHECK_LIB([avutil], [av_dict_get], [:], [:], [${FFMPEG_LIBS}])
464 if test "$ac_cv_lib_avcodec_avcodec_decode_audio" = "yes"; then
465 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO], [1],
466 [Define to 1 if avcodec_decode_audio is usable.])
468 if test "$ac_cv_lib_avcodec_avcodec_decode_audio2" = "yes"; then
469 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO2], [1],
470 [Define to 1 if avcodec_decode_audio2 is usable.])
472 if test "$ac_cv_lib_avcodec_avcodec_decode_audio3" = "yes"; then
473 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO3], [1],
474 [Define to 1 if avcodec_decode_audio is usable.])
476 if test "$ac_cv_lib_avcodec_avcodec_decode_audio4" = "yes"; then
477 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO4], [1],
478 [Define to 1 if avcodec_decode_audio is usable.])
481 ## restore configuration
483 ])dnl SXE_CHECK_FFMPEG_LIBS
489 AC_DEFUN([SXE_MM_CHECK_SOX], [dnl
490 ## call like this SXE_MM_CHECK_SOX([<if-found>], [<if-not-found>])
491 ## arg #1: action on success
492 ## arg #2: action on failure
493 pushdef([ACTION_IF_FOUND], [$1])
494 pushdef([ACTION_IF_NOT_FOUND], [$2])
496 AC_CACHE_CHECK([for SoX support], [sxe_cv_feat_sox], [_SXE_CHECK_SOX])
498 if test "$sxe_cv_feat_sox" = "yes"; then
506 popdef([ACTION_IF_FOUND])
507 popdef([ACTION_IF_NOT_FOUND])
508 ])dnl SXE_MM_CHECK_SOX
510 AC_DEFUN([_SXE_CHECK_SOX], [dnl
511 AC_REQUIRE([SXE_CHECK_SOX_LOCATIONS])
513 if test "$have_smelly_sox" = "yes"; then
516 SXE_CHECK_SOX_HEADERS
518 SXE_CHECK_SOX_STRUCTS
520 if test "$ac_cv_lib_sox_sox_open_read" = "yes" -a \
521 "$ac_cv_lib_sox_sox_close" = "yes" -a \
522 "$ac_cv_lib_sox_sox_seek" = "yes" -a \
523 "$ac_cv_header_sox_h" = "yes" -a \
524 "$ac_cv_type_sox_format_t" = "yes" -a \
525 "$ac_cv_type_struct_sox_format_t" = "yes" -a \
526 "$sxe_cv_mm_sox_open_read_fooked" != "yes"; then
527 sxe_cv_feat_sox="yes"
535 AC_DEFUN([SXE_CHECK_SOX_LOCATIONS], [dnl
536 PKG_CHECK_MODULES([SOX], [sox >= 14.1.0], [dnl
538 sox_cppflags="$SOX_CFLAGS"
540 sox_libs="$SOX_LIBS"], [dnl
541 have_smelly_sox="yes"
542 AC_MSG_WARN([Your SoX is too old or non-existant. You need >= 14.1.0])])
543 ])dnl SXE_CHECK_SOX_PLACES
545 AC_DEFUN([SXE_PUMP_SOX_LOCATIONS], [dnl
547 CPPFLAGS="$CPPFLAGS $sox_cppflags"
548 LDFLAGS="$LDFLAGS $sox_ldflags"
549 LIBS="$LIBS $sox_libs"
550 ])dnl SXE_PUMP_SOX_LOCATIONS
552 AC_DEFUN([SXE_DUMP_SOX_LOCATIONS], [dnl
554 ])dnl SXE_DUMP_SOX_LOCATIONS
556 AC_DEFUN([SXE_CHECK_SOX_HEADERS], [dnl
557 AC_REQUIRE([SXE_CHECK_SOX_LOCATIONS])
558 SXE_PUMP_SOX_LOCATIONS
559 AC_CHECK_HEADERS([sox.h])
560 SXE_DUMP_SOX_LOCATIONS
561 ])dnl SXE_CHECK_SOX_HEADERS
563 AC_DEFUN([SXE_CHECK_SOX_LIBS], [dnl
564 AC_REQUIRE([SXE_CHECK_SOX_LOCATIONS])
566 echo "void cleanup(void) {}" > cleanup.c
567 $CC -c -o cleanup.o cleanup.c
569 SXE_PUMP_SOX_LOCATIONS
570 ## checks for the spankin' new sox
571 AC_CHECK_LIB([sox], [sox_open_read], [:], [:],
572 [cleanup.o $sox_ldflags $sox_libs])
573 AC_CHECK_LIB([sox], [sox_close], [:], [:], [cleanup.o $sox_ldflags $sox_libs])
574 AC_CHECK_LIB([sox], [sox_read], [:], [:], [cleanup.o $sox_ldflags $sox_libs])
575 AC_CHECK_LIB([sox], [sox_seek], [:], [:], [cleanup.o $sox_ldflags $sox_libs])
577 SXE_DUMP_SOX_LOCATIONS
580 CPPFLAGS="$CPPFLAGS ${SOX_CPPFLAGS}"
581 SXE_LANG_WERROR([on])
582 SXE_MSG_CHECKING([whether sox_open_read() takes 4 arguments])
583 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
584 #if defined HAVE_ERRNO_H
587 #if defined HAVE_SOX_H
591 sox_open_read("tmp", NULL, NULL, NULL);
593 [sxe_cv_mm_sox_open_read_4args="yes"],
594 [sxe_cv_mm_sox_open_read_4args="no"])
595 SXE_MSG_RESULT([$sxe_cv_mm_sox_open_read_4args])
597 SXE_MSG_CHECKING([whether sox_open_read() takes 3 arguments])
598 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
599 #if defined HAVE_ERRNO_H
602 #if defined HAVE_SOX_H
606 sox_open_read("tmp", NULL, NULL);
608 [sxe_cv_mm_sox_open_read_3args="yes"],
609 [sxe_cv_mm_sox_open_read_3args="no"])
610 SXE_MSG_RESULT([$sxe_cv_mm_sox_open_read_3args])
613 if test "$sxe_cv_mm_sox_open_read_3args" = "yes"; then
614 AC_DEFINE([HAVE_SOX_OPEN_READ_3ARGS], [1],
615 [Whether sox_open_read() takes 3 arguments.])
616 AC_DEFINE([HAVE_SOX_OPEN_READ_NARGS], [3],
617 [How many arguments sox_open_read() takes.])
618 elif test "$sxe_cv_mm_sox_open_read_4args" = "yes"; then
619 AC_DEFINE([HAVE_SOX_OPEN_READ_4ARGS], [1],
620 [Whether sox_open_read() takes 4 arguments.])
621 AC_DEFINE([HAVE_SOX_OPEN_READ_NARGS], [4],
622 [How many arguments sox_open_read() takes.])
625 Very weird SoX you've got there.
626 I better disable SoX on your behalf.
628 sxe_cv_mm_sox_open_read_fooked="yes"
631 ## clean up our cleanup snack
632 rm -f cleanup.c cleanup.o
633 ])dnl SXE_CHECK_SOX_LIBS
635 AC_DEFUN([SXE_CHECK_SOX_STRUCTS], [dnl
637 AC_CHECK_TYPES([sox_format_t], [:], [:], [
642 AC_CHECK_TYPES([sox_ssize_t], [:], [:], [
647 AC_CHECK_TYPES([sox_sample_t], [:], [:], [
652 AC_CHECK_TYPES([sox_signalinfo_t], [:], [:], [
653 #if defined HAVE_SOX_H
657 AC_CHECK_TYPES([struct sox_format_t], [:], [:], [
662 AC_CHECK_MEMBERS([struct sox_format_t.signal], [:], [:], [
668 AC_CHECK_MEMBERS([sox_signalinfo_t.precision], [:], [:], [
673 ])dnl SXE_CHECK_SOX_STRUCTS
676 AC_DEFUN([SXE_MM_CHECK_MAD], [
677 ## arg #1: action on success
678 ## arg #2: action on failure
679 pushdef([MM_SUCC], [$1])
680 pushdef([MM_FAIL], [$2])
682 AC_MSG_CHECKING([for mad support])
686 SXE_CHECK_HEADERS([mad.h], [:], [MM_FAIL])
687 AC_CHECK_LIB([mad], [mad_synth_init], [:], [MM_FAIL])
688 AC_CHECK_LIB([mad], [mad_stream_init], [:], [MM_FAIL])
689 AC_CHECK_LIB([mad], [mad_frame_init], [:], [MM_FAIL])
690 AC_CHECK_LIB([mad], [mad_synth_frame], [:], [MM_FAIL])
691 AC_CHECK_LIB([mad], [mad_stream_buffer], [:], [MM_FAIL])
692 AC_CHECK_LIB([mad], [mad_frame_decode], [:], [MM_FAIL])
696 ])dnl SXE_MM_CHECK_MAD
698 AC_DEFUN([SXE_MM_CHECK_MAGIC], [
699 ## assumes $PKG_CONFIG is defined
700 ## arg #1: action on success
701 ## arg #2: action on failure
702 pushdef([MM_SUCC], [$1])
703 pushdef([MM_FAIL], [$2])
705 AC_MSG_CHECKING([for libmagic/file support])
710 AC_CHECK_LIB([magic], [magic_open], [:], [MM_FAIL])
711 SXE_CHECK_HEADERS([magic.h], [:], [MM_FAIL])
712 SXE_CHECK_HEADERS([file.h])
717 ])dnl SXE_MM_CHECK_MAGIC
720 AC_DEFUN([SXE_MM_CHECK_OSS], [
721 ## arg #1: action on success
722 ## arg #2: action on failure
723 pushdef([MM_SUCC], [$1])
724 pushdef([MM_FAIL], [$2])
726 AC_MSG_CHECKING([for OSS support])
731 SXE_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h linux/soundcard.h soundcard.h])
732 if test "$ac_cv_header_linux_soundcard_h"="yes" -o \
733 "$ac_cv_header_machine_soundcard_h"="yes" -o \
734 "$ac_cv_header_soundcard_h"="yes" -o \
735 "$ac_cv_header_sys_soundcard_h"="yes"
737 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
738 #if defined HAVE_MACHINE_SOUNDCARD_H && HAVE_MACHINE_SOUNDCARD_H
739 #include <machine/soundcard.h>
740 #elif defined HAVE_SYS_SOUNDCARD_H && HAVE_SYS_SOUNDCARD_H
741 #include <sys/soundcard.h>
742 #elif defined HAVE_LINUX_SOUNDCARD_H && HAVE_LINUX_SOUNDCARD_H
743 #include <linux/soundcard.h>
745 #include <soundcard.h>
748 [[ ioctl(0, SNDCTL_DSP_RESET, 0); ]])],
749 [oss_ioctl_linked=yes],
750 [oss_ioctl_linked=no])
751 if test "${oss_ioctl_linked}" = "no"
753 if test "${opsys}" = "netbsd"
755 AC_CHECK_LIB([ossaudio],[_oss_ioctl],
757 # netbsd needs this Linux OSS emulator library, just a ioctl
760 SXE_PREPEND([-lossaudio], [MM_LIBS])
771 ])dnl SXE_MM_CHECK_OSS
773 AC_DEFUN([SXE_MM_CHECK_PULSE], [
774 ## assumes $PKG_CONFIG is defined
775 ## arg #1: action on success
776 ## arg #2: action on failure
778 PKG_CHECK_MODULES([PULSE], [libpulse >= 2.0.0], [$1], [$2])
779 ])dnl SXE_MM_CHECK_PULSE
781 AC_DEFUN([SXE_MM_CHECK_JACK], [
782 ## assumes $PKG_CONFIG is defined
783 ## arg #1: action on success
784 ## arg #2: action on failure
786 _SXE_MM_CHECK_pkgconfig_based([jack], [jack], [0.98.0], [dnl
787 jack_client_open jack_get_ports jack_port_register dnl
788 jack_set_process_callback jack_set_error_function dnl
789 jack_on_shutdown jack_activate jack_connect jack_disconnect dnl
790 jack_client_close jack_port_get_buffer], [jack/jack.h], [$1], [$2])
791 ])dnl SXE_MM_CHECK_JACK
793 AC_DEFUN([SXE_MM_CHECK_AO], [
794 ## assumes $PKG_CONFIG is defined
795 ## arg #1: action on success
796 ## arg #2: action on failure
798 _SXE_MM_CHECK_pkgconfig_based([ao], [ao], [0.6], [dnl
799 ao_initialize ao_driver_id ao_default_driver_id dnl
800 ao_open_live ao_close ao_shutdown ao_play], [ao/ao.h], [$1], [$2])
801 ])dnl SXE_MM_CHECK_AO
803 AC_DEFUN([SXE_MM_CHECK_ESD], [
804 ## arg #1: action on success
805 ## arg #2: action on failure
806 SXE_SEARCH_CONFIG_PROG([esd-config])
808 pushdef([MM_SUCC], [$1])
809 pushdef([MM_FAIL], [$2])
811 AC_MSG_CHECKING([for ESD support])
814 if test "$have_esd_config" = "no" -o -z "$ESD_CONFIG"; then
815 AS_MESSAGE([*** esd-config not found.])
816 AS_MESSAGE([*** Cannot check for ESD.])
822 if test "$have_esd_config" = "yes"; then
824 ESD_CPPFLAGS="`$ESD_CONFIG --cflags`"
825 ESD_LDFLAGS="-L`$ESD_CONFIG --libs`"
826 dnl SXE_APPEND_UNDUP([$esd_c_switch], [c_switch_site])
827 dnl SXE_PREPEND([$esd_libs], [LIBS])
828 CPPFLAGS="$CPPFLAGS $ESD_CPPFLAGS"
829 LDFLAGS="$LDFLAGS $ESD_LDFLAGS"
832 SXE_CHECK_HEADERS([esd.h], [:], [MM_FAIL])
833 AC_CHECK_LIB([esd], [esd_play_stream], [:], [MM_FAIL], [$esd_libs])
841 ])dnl SXE_MM_CHECK_ESD
843 AC_DEFUN([SXE_MM_CHECK_ALSA], [
844 ## call like this SXE_MM_CHECK_ALSA([<if-found>], [<if-not-found>])
845 ## defines HAVE_ALSA, HAVE_ALSA_SOUND
846 ## and sxe_cv_feat_alsa
847 pushdef([ACTION_IF_FOUND], [$1])
848 pushdef([ACTION_IF_NOT_FOUND], [$2])
850 AC_CACHE_CHECK([for ALSA support],
851 [sxe_cv_feat_alsa], [_SXE_MM_CHECK_ALSA])
853 if test "$sxe_cv_feat_alsa" = "yes"; then
854 AC_DEFINE([HAVE_ALSA], [1],
855 [Whether ALSA can be used as sound device])
856 AC_DEFINE([HAVE_ALSA_SOUND], [1],
857 [Whether ALSA can be used as sound device])
864 popdef([ACTION_IF_FOUND])
865 popdef([ACTION_IF_NOT_FOUND])
866 ])dnl SXE_MM_CHECK_ALSA
868 AC_DEFUN([_SXE_MM_CHECK_ALSA], [dnl
870 AC_REQUIRE([SXE_CHECK_ALSA_HEADERS])
871 AC_REQUIRE([SXE_CHECK_ALSA_VERSION])
872 AC_REQUIRE([SXE_CHECK_ALSA_LIBS])
874 if test "$ac_cv_header_alsa_input_h" = "yes" -a \
875 "$ac_cv_header_alsa_output_h" = "yes" -a \
876 "$ac_cv_header_alsa_global_h" = "yes" -a \
877 "$ac_cv_header_alsa_conf_h" = "yes" -a \
878 "$ac_cv_header_alsa_pcm_h" = "yes" -a \
879 "$ac_cv_header_alsa_error_h" = "yes" -a \
881 "$sxe_mm_alsa_version_supported_p" = "yes" -a \
883 "$ac_cv_lib_asound_snd_pcm_close" = "yes" -a \
884 "$ac_cv_lib_asound_snd_pcm_hw_free" = "yes" -a \
885 "$ac_cv_lib_asound_snd_pcm_hw_params_any" = "yes" -a \
886 "$ac_cv_lib_asound_snd_pcm_hw_params_free" = "yes" -a \
887 "$ac_cv_lib_asound_snd_pcm_hw_params_set_access" = "yes" -a \
888 "$ac_cv_lib_asound_snd_pcm_hw_params_set_channels" = "yes" -a \
889 "$ac_cv_lib_asound_snd_pcm_hw_params_set_format" = "yes" -a \
890 "$ac_cv_lib_asound_snd_pcm_hw_params_set_rate_near" = "yes" -a \
891 "$ac_cv_lib_asound_snd_pcm_hw_params_test_channels" = "yes" -a \
892 "$ac_cv_lib_asound_snd_pcm_hw_params_test_format" = "yes" -a \
893 "$ac_cv_lib_asound_snd_pcm_open" = "yes" -a \
894 "$ac_cv_lib_asound_snd_pcm_prepare" = "yes" -a \
895 "$ac_cv_lib_asound_snd_pcm_writei" = "yes"; then
896 sxe_cv_feat_alsa="yes"
898 sxe_cv_feat_alsa="no"
900 ])dnl _SXE_MM_CHECK_ALSA
902 AC_DEFUN([SXE_CHECK_ALSA_HEADERS], [dnl
903 ## dump the current configuration
905 SXE_LANG_WERROR([off])
906 SXE_CHECK_HEADERS([alsa/input.h alsa/output.h alsa/global.h])
907 SXE_CHECK_HEADERS([alsa/conf.h], [:], [:], [[
910 #if defined HAVE_ALSA_INPUT_H
911 # include <alsa/input.h>
913 #if defined HAVE_ALSA_OUTPUT_H
914 # include <alsa/output.h>
916 #if defined HAVE_ALSA_GLOBAL_H
917 # include <alsa/global.h>
920 SXE_CHECK_HEADERS([alsa/pcm.h alsa/error.h alsa/version.h], [:], [:], [[
923 #if defined HAVE_ALSA_INPUT_H
924 # include <alsa/input.h>
926 #if defined HAVE_ALSA_OUTPUT_H
927 # include <alsa/output.h>
929 #if defined HAVE_ALSA_GLOBAL_H
930 # include <alsa/global.h>
932 #if defined HAVE_ALSA_CONF_H
933 # include <alsa/conf.h>
938 ])dnl SXE_CHECK_ALSA_HEADERS
940 AC_DEFUN([SXE_CHECK_ALSA_VERSION], [dnl
941 AC_REQUIRE([SXE_CHECK_ALSA_HEADERS])
943 ## dump the configuration
945 SXE_LANG_WERROR([off])
946 AC_MSG_CHECKING([for alsa version])
948 AC_RUN_IFELSE([AC_LANG_SOURCE([[
951 #if defined HAVE_ALSA_INPUT_H
952 # include <alsa/input.h>
954 #if defined HAVE_ALSA_OUTPUT_H
955 # include <alsa/output.h>
957 #if defined HAVE_ALSA_GLOBAL_H
958 # include <alsa/global.h>
960 #if defined HAVE_ALSA_CONF_H
961 # include <alsa/conf.h>
963 #if defined HAVE_ALSA_PCM_H
964 # include <alsa/pcm.h>
966 #if defined HAVE_ALSA_ERROR_H
967 # include <alsa/error.h>
969 #if defined HAVE_ALSA_CONF_H
970 # include <alsa/version.h>
973 int main(int c, char *v[])
975 fprintf(stdout, SND_LIB_VERSION_STR);
977 }]])], dnl [./conftest; alsa_subminor=$?],[alsa_subminor=$?],[alsa_subminor=0]
978 [sxe_mm_alsa_version=$(./conftest)],
979 [:], [sxe_mm_alsa_version="undeterminable"])
981 case "${sxe_mm_alsa_version}" in
982 0.*.* | 1.0.3* | 1.0.9* )
983 AC_MSG_RESULT([${sxe_mm_alsa_version} (known to break)])
984 AC_MSG_WARN([Your ALSA version is _KNOWN_ to fail! Do not say we have not warned you!])
985 sxe_mm_alsa_version_supported_p="no"
987 1.0.2 | 1.0.4* | 1.0.5* | 1.0.6* | 1.0.7* | 1.0.8* )
988 AC_MSG_RESULT([${sxe_mm_alsa_version} (suspicious to break)])
989 AC_MSG_WARN([Your ALSA version has not been tested. Do not be surprised if it fails!])
990 sxe_mm_alsa_version_supported_p="no"
992 1.0.10* | 1.0.11* | 1.0.12* | 1.0.13* | 1.0.14* | 1.0.15* | 1.0.16* )
993 AC_MSG_RESULT([${sxe_mm_alsa_version} (sane)])
994 sxe_mm_alsa_version_supported_p="yes"
997 AC_MSG_RESULT([${sxe_mm_alsa_version} (unknown)])
998 AC_MSG_NOTICE([Your ALSA version is unknown, however we are confident that it works.])
999 AC_MSG_NOTICE([However, if we screwed up something, please report back!])
1000 sxe_mm_alsa_version_supported_p="yes"
1003 AC_MSG_RESULT([${sxe_mm_alsa_version} (unknown)])
1004 AC_MSG_WARN([Your ALSA version is unknown hence not supported!])
1005 sxe_mm_alsa_version_supported_p="no"
1009 ## restore everything
1011 ])dnl SXE_CHECK_ALSA_VERSION
1013 AC_DEFUN([SXE_CHECK_ALSA_LIBS], [dnl
1014 ## dump the current configuration
1017 AC_CHECK_LIB([asound], [snd_pcm_open], [:], [:])
1018 AC_CHECK_LIB([asound], [snd_pcm_close], [:], [:])
1019 AC_CHECK_LIB([asound], [snd_pcm_hw_free], [:], [:])
1020 AC_CHECK_LIB([asound], [snd_pcm_hw_params_any], [:], [:])
1021 AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_access], [:], [:])
1022 AC_CHECK_LIB([asound], [snd_pcm_hw_params_free], [:], [:])
1023 AC_CHECK_LIB([asound], [snd_pcm_hw_params_test_channels], [:], [:])
1024 AC_CHECK_LIB([asound], [snd_pcm_hw_params_test_format], [:], [:])
1025 AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_channels], [:], [:])
1026 AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_format], [:], [:])
1027 AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_rate_near], [:], [:])
1028 AC_CHECK_LIB([asound], [snd_pcm_prepare], [:], [:])
1029 AC_CHECK_LIB([asound], [snd_pcm_writei], [:], [:])
1031 ## restore everything
1033 ])dnl SXE_CHECK_ALSA_LIBS
1037 AC_DEFUN([SXE_MM_CHECK_NAS], [
1038 ## arg #1: action on success
1039 ## arg #2: action on failure
1040 pushdef([MM_SUCC], [$1])
1041 pushdef([MM_FAIL], [$2])
1043 AC_MSG_CHECKING([for NAS support])
1049 ## NAS is often stored inside the X hierarchy, so ...
1050 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1051 LDFLAGS="$LDFLAGS $X_LIBS"
1052 SXE_CHECK_HEADERS([audio/audiolib.h], [:], [MM_FAIL])
1053 AC_CHECK_LIB([audio], [AuOpenServer], [:], [MM_FAIL])
1054 AC_CHECK_LIB([audio], [AuCloseServer], [:], [MM_FAIL])
1055 AC_CHECK_LIB([audio], [AuCreateFlow], [:], [MM_FAIL])
1056 AC_CHECK_LIB([audio], [AuStartFlow], [:], [MM_FAIL])
1057 AC_CHECK_LIB([audio], [AuStopFlow], [:], [MM_FAIL])
1058 AC_CHECK_LIB([audio], [AuScanForTypedEvent], [:], [MM_FAIL])
1059 AC_CHECK_LIB([audio], [AuDispatchEvent], [:], [MM_FAIL])
1060 AC_CHECK_LIB([audio], [AuSetErrorHandler], [:], [MM_FAIL])
1061 AC_CHECK_LIB([audio], [AuSetIOErrorHandler], [:], [MM_FAIL])
1062 AC_CHECK_LIB([audio], [AuWriteElement], [:], [MM_FAIL])
1063 AC_CHECK_LIB([audio], [AuSetElements], [:], [MM_FAIL])
1064 AC_CHECK_LIB([audio], [AuRegisterEventHandler], [:], [MM_FAIL])
1065 AC_CHECK_LIB([audio], [AuSetElementParameters], [:], [MM_FAIL])
1067 dnl If the nas library does not contain the error jump point,
1068 dnl then we force safer behavior.
1069 AC_EGREP_HEADER([AuXtErrorJump], [audio/Xtutil.h], [], [old_nas=yes])
1070 if test "$old_nas" = "yes"; then
1071 AC_DEFINE([NAS_NO_ERROR_JUMP], [1], [Description here!])
1079 ])dnl SXE_MM_CHECK_NAS
1081 dnl sxe-mm.m4 ends here