1# Process this file with autoconf to produce a configure script. 2AC_PREREQ([2.60]) 3AC_INIT([aqualung],[1.0],[http://aqualung.factorial.hu/mantis]) 4AM_INIT_AUTOMAKE 5AC_CONFIG_SRCDIR([src/core.c]) 6AC_CONFIG_HEADERS([config.h]) 7AC_CONFIG_FILES([ 8 Makefile 9 doc/Makefile 10 po/Makefile.in 11 skin/Makefile 12 skin/dark/Makefile 13 skin/default/Makefile 14 skin/metal/Makefile 15 skin/ocean/Makefile 16 skin/plain/Makefile 17 skin/woody/Makefile 18 skin/no_skin/Makefile 19 src/Makefile 20 src/decoder/Makefile 21 src/encoder/Makefile 22 src/img/Makefile 23]) 24AC_CANONICAL_HOST 25 26 27# Checks for programs. 28AC_PROG_CC 29AC_PROG_RANLIB 30AC_PROG_CXX 31AM_PROG_CC_C_O 32AC_USE_SYSTEM_EXTENSIONS 33m4_ifndef([AM_GNU_GETTEXT], 34 [m4_fatal([GNU gettext is required to prepare the Aqualung build])]) 35AM_GNU_GETTEXT([external]) 36AM_GNU_GETTEXT_VERSION([0.17]) 37m4_ifndef([PKG_PROG_PKG_CONFIG], 38 [m4_fatal([pkg-config is required to prepare the Aqualung build])]) 39PKG_PROG_PKG_CONFIG 40 41 42# Checks for libraries. 43# opportunistic 44AC_CHECK_LIB([z], [gzopen]) 45AC_CHECK_LIB([bz2], [BZ2_bzopen]) 46# required 47AC_SEARCH_LIBS([floor], [m], [], 48 [AC_MSG_ERROR([POSIX math.h functions are required to build Aqualung])]) 49PKG_CHECK_MODULES([xml], [libxml-2.0]) 50PKG_CHECK_MODULES([glib], [glib-2.0 >= 2.14 gthread-2.0]) 51PKG_CHECK_MODULES([gtk], [gtk+-2.0 >= 2.18]) 52 53 54# Checks for header files. 55AC_CHECK_HEADERS([dlfcn.h errno.h fcntl.h sys/ioctl.h]) 56 57 58# Checks for typedefs, structures, and compiler characteristics. 59AC_C_CONST 60AC_C_INLINE 61AC_TYPE_SIZE_T 62 63 64# Checks for library functions. 65AC_FUNC_MALLOC 66AC_CHECK_FUNCS([memset mkdir psiginfo strcasestr strdup strndup strrchr strstr]) 67 68 69# Platform-specific tweaks. 70AC_SYS_LARGEFILE 71AS_CASE([$host_os], 72 [cygwin*], 73 [AS_VAR_IF([GCC], [yes], [CPPFLAGS="-mwin32 $CPPFLAGS"])], 74 [AC_CHECK_LIB([pthread], [pthread_create], [], 75 [AC_MSG_ERROR([pthreads are required to build Aqualung])])]) 76 77 78dnl 79dnl Convenience macros for expressing common autoconf idioms used below. 80dnl (These macro definitions themselves do not directly add code to the 81dnl configure script.) 82dnl 83dnl AQUALUNG_DETECT(package, brief-description, [detect-actions]) 84dnl ----------------------------------------------------------------------- 85AC_DEFUN([AQUALUNG_DETECT], [ 86 m4_pushdef([_aqualung_cond], [AS_TR_CPP([HAVE_$1])])[]dnl 87 AC_ARG_WITH([$1], 88 [AS_HELP_STRING([--with-$1], 89 [compile with $2 support (default: detect)])], 90 [], [with_$1='detect']) 91 AS_VAR_IF([with_$1], [no], [], [ 92 AC_MSG_NOTICE([$2 Support]) 93 m4_default([$3], [:]) 94 AS_CASE([$with_$1], 95 [detect], [with_$1='not found'], 96 [yes*], [AC_DEFINE(_aqualung_cond, [1], 97 [Define to build with $2 support])]) 98 ]) 99 AM_CONDITIONAL(_aqualung_cond, [expr "X$with_$1" : 'Xyes' >/dev/null]) 100 m4_popdef([_aqualung_cond])[]dnl 101])dnl 102dnl AQUALUNG_FOUND(package, [package_LIBS-value]) 103dnl ----------------------------------------------------------------------- 104AC_DEFUN([AQUALUNG_FOUND], [ 105 AS_VAR_IF([with_$1], [detect], [with_$1='yes (found)']) 106 m4_ifnblank([$2], [AC_SUBST([$1_LIBS], ['$2'])]) 107])dnl 108dnl AQUALUNG_MISSING(package, error-description) 109dnl ----------------------------------------------------------------------- 110AC_DEFUN([AQUALUNG_MISSING], 111 [AS_VAR_IF([with_$1], [yes], [AC_MSG_ERROR([$2])])])dnl 112 113 114# 115# Feature Options 116# 117AC_MSG_CHECKING([for type of build]) 118buildtype='release' 119AC_ARG_ENABLE([debug], 120 [AS_HELP_STRING([--enable-debug], [compile with debugging support])], 121 [AS_VAR_IF([enable_debug], [yes], [buildtype='debug'])]) 122AC_MSG_RESULT([$buildtype]) 123AS_VAR_IF([buildtype], [release], 124 [AC_DEFINE([RELEASE_BUILD], [1], [Define if doing a release build])], 125 [ 126 dnl 127 dnl backtracing is fairly non-standard, BSD users will likely have to 128 dnl install libexecinfo first 129 dnl 130 AC_CHECK_FUNC([backtrace_symbols], [], 131 [AC_CHECK_LIB([execinfo], [backtrace_symbols], 132 [AC_SUBST([debug_LIBS], [-lexecinfo])], 133 [AC_MSG_ERROR([debug builds need backtrace support])])]) 134 dnl 135 dnl We must ensure we have frame pointers for backtrace() to work with. 136 dnl As such, we must override any previously set optimizations (such as 137 dnl those set by the AC_PROG_CC macro), so while setting user variables 138 dnl directly is normally considered bad form, it's necessary here. 139 dnl 140 AS_VAR_IF([GCC], [yes], [ 141 AC_SUBST([debug_LDFLAGS], [-rdynamic]) 142 CFLAGS="$CFLAGS -ggdb -g -O0" 143 ]) 144 AS_VAR_IF([GXX], [yes], [CXXFLAGS="$CXXFLAGS -ggdb -g -O0"]) 145 AC_DEFINE([DEBUG_BUILD], [1], [Define if doing a debug build]) 146 ]) 147 148AC_ARG_ENABLE([jack_mgmt], 149 [AS_HELP_STRING([--disable-jack-mgmt], 150 [compile without JACK port management support])], 151 [], [enable_jack_mgmt='yes']) 152# see JACK output driver check below 153 154AC_ARG_ENABLE([loop], 155 [AS_HELP_STRING([--disable-loop], [compile without loop playback support])], 156 [], [enable_loop='yes']) 157AS_VAR_IF([enable_loop], [yes], 158 [AC_DEFINE([HAVE_LOOP], [1], [Define to build with loop playback support])]) 159AM_CONDITIONAL([HAVE_LOOP], [test "x$enable_loop" = 'xyes']) 160 161AC_ARG_ENABLE([podcast], 162 [AS_HELP_STRING([--disable-podcast], [compile without podcast support])], 163 [], [enable_podcast='yes']) 164AS_VAR_IF([enable_podcast], [yes], 165 [AC_DEFINE([HAVE_PODCAST], [1], [Define to build with podcast support])]) 166AM_CONDITIONAL([HAVE_PODCAST], [test "x$enable_podcast" = 'xyes']) 167 168AC_ARG_ENABLE([systray], 169 [AS_HELP_STRING([--disable-systray], [compile without systray support])], 170 [], [enable_systray='yes']) 171AS_VAR_IF([enable_systray], [yes], 172 [AC_DEFINE([HAVE_SYSTRAY], [1], [Define to build with GTK+ systray])]) 173 174AC_ARG_ENABLE([transcoding], 175 [AS_HELP_STRING([--disable-transcoding], 176 [compile without transcoding support])], 177 [], [enable_transcoding='yes']) 178AS_VAR_IF([enable_transcoding], [yes], [], [ 179 dnl 180 dnl --disable-transcoding implies --without-lame --without-vorbisenc 181 dnl setting these variables now ensures detection is forced off below 182 dnl 183 with_lame='no' 184 with_vorbisenc='no' 185]) 186 187 188# 189# Output Driver Library Options 190# 191AQUALUNG_DETECT([alsa], [ALSA], 192 [PKG_CHECK_MODULES([alsa], [alsa], 193 [AQUALUNG_FOUND([alsa])], 194 [AQUALUNG_MISSING([alsa], [ALSA support requires libasound])])]) 195 196AQUALUNG_DETECT([jack], [JACK], 197 [AC_CHECK_LIB([jack], [jack_on_info_shutdown], 198 [AQUALUNG_FOUND([jack], [-ljack])], 199 [AQUALUNG_MISSING([jack], [JACK support requires libjack])])]) 200AS_CASE([$enable_jack_mgmt/$with_jack], 201 [yes/yes*], [AC_DEFINE([HAVE_JACK_MGMT], [1], 202 [Define to build with JACK port management support])], 203 [enable_jack_mgmt='no']) 204AM_CONDITIONAL([HAVE_JACK_MGMT], [test "x$enable_jack_mgmt" = 'xyes']) 205 206AC_ARG_WITH([oss], 207 [AS_HELP_STRING([--with-oss], 208 [compile with OSS support (default: detect)])], 209 [], [with_oss='detect']) 210AS_VAR_IF([with_oss], [no], [], [ 211 AC_MSG_NOTICE([OSS Support]) 212 dnl 213 dnl OSS detection is a wee bit squirrely, sorry if this hard to follow... 214 dnl 215 AC_CHECK_HEADERS([sys/soundcard.h soundcard.h linux/soundcard.h], 216 [AS_CASE([$with_oss], [*yes], [], [with_oss='yes (found)'])], 217 [with_oss="Z$with_oss"]) 218 AS_CASE([$with_oss], 219 [ZZZyes], [AC_MSG_ERROR([OSS support requires soundcard.h])], 220 [*found*], [with_oss='yes (found)'], 221 [*yes*], [with_oss='yes'], 222 [with_oss='not found']) 223 AS_CASE([$with_oss], [yes*], [ 224 AC_CHECK_LIB([ossaudio], [_oss_ioctl], 225 [AC_SUBST([oss_LIBS], [-lossaudio])]) 226 AC_DEFINE([HAVE_OSS], [1], [Define to build with OSS support]) 227 ]) 228]) 229AM_CONDITIONAL([HAVE_OSS], [expr "X$with_oss" : 'Xyes' >/dev/null]) 230 231AQUALUNG_DETECT([pulse], [PulseAudio], 232 [PKG_CHECK_MODULES([pulse], [libpulse-simple], 233 [AQUALUNG_FOUND([pulse])], 234 [AQUALUNG_MISSING([pulse], [$pulse_PKG_ERRORS])])]) 235 236AQUALUNG_DETECT([sndio], [sndio], 237 [AC_CHECK_LIB([sndio], [sio_open], 238 [AQUALUNG_FOUND([sndio], [-lsndio])], 239 [AQUALUNG_MISSING([sndio], [sndio support requires libsndio])])]) 240 241AQUALUNG_DETECT([winmm], [Windows Multimedia Extensions API], [ 242 AC_MSG_CHECKING([for platform support]) 243 AS_CASE([$host_os], [cygwin*], [AC_MSG_RESULT([yes])], [ 244 AC_MSG_RESULT([no]) 245 AQUALUNG_MISSING([winmm], 246 [WinMM is only supported on Microsoft Windows]) 247 with_winmm="not supported on $host_os" 248 ]) 249 AS_CASE([$with_winmm], [yes|detect], 250 [AC_CHECK_HEADER([mmsystem.h], 251 [AQUALUNG_FOUND([winmm], [-lwinmm])], 252 [AQUALUNG_MISSING([winmm], [WinMM support requires mmsystem.h])], 253 [[#include <windows.h>]])]) 254]) 255 256 257# 258# Codec Library Options 259# 260AQUALUNG_DETECT([flac], [Free Lossless Audio Codec], 261 [PKG_CHECK_MODULES([flac], [flac], 262 [AQUALUNG_FOUND([flac])], 263 [AQUALUNG_MISSING([flac], [$flac_PKG_ERRORS])])]) 264AS_VAR_IF([enable_transcoding], [yes], 265 [with_flac_enc="$with_flac"], [with_flac_enc='no']) 266AS_CASE([$with_flac_enc], 267 [yes*], [AC_DEFINE([HAVE_FLAC_ENC], [1], 268 [Define to build with flac encoding support])]) 269 270AQUALUNG_DETECT([lame], [LAME MP3 Encoding], 271 [AC_CHECK_LIB([mp3lame], [lame_init], 272 [AQUALUNG_FOUND([lame], [-lmp3lame])], 273 [AQUALUNG_MISSING([lame], [LAME support requires libmp3lame])])]) 274 275AQUALUNG_DETECT([lavc], [Libav / FFmpeg], 276 [PKG_CHECK_MODULES([lavc], [libavcodec libavformat libavutil], 277 [AQUALUNG_FOUND([lavc])], 278 [AQUALUNG_MISSING([lavc], [$lavc_PKG_ERRORS])])]) 279 280AQUALUNG_DETECT([mac], [Monkey's Audio Codec], 281 [AC_CHECK_LIB([mac], [CreateIAPEDecompress], 282 [AQUALUNG_FOUND([mac], [-lmac -lstdc++])], 283 [AQUALUNG_MISSING([mac], 284 [Monkey's Audio Codec support requires libmac])], 285 [-lstdc++])]) 286 287AQUALUNG_DETECT([mod], [MOD Audio], 288 [PKG_CHECK_MODULES([mod], [libmodplug >= 0.8.4], 289 [AQUALUNG_FOUND([mod])], 290 [AQUALUNG_MISSING([mod], [$mod_PKG_ERRORS])])]) 291 292AQUALUNG_DETECT([mpc], [Musepack], [ 293 AC_CHECK_LIB([mpcdec], [mpc_demux_init], 294 [AQUALUNG_FOUND([mpc], [-lmpcdec])], 295 [AC_CHECK_LIB([mpcdec], [mpc_streaminfo_init], 296 [ 297 AQUALUNG_FOUND([mpc], [-lmpcdec]) 298 AC_DEFINE([MPC_OLD_API], [1], 299 [Defined if old Musepack API is used]) 300 ], 301 [AQUALUNG_MISSING([mpc], [Musepack support requires libmpcdec])])]) 302]) 303 304AQUALUNG_DETECT([mpeg], [MPEG Audio], 305 [PKG_CHECK_MODULES([mad], [mad], 306 [AQUALUNG_FOUND([mpeg])], 307 [AQUALUNG_MISSING([mpeg], [$mad_PKG_ERRORS])])]) 308 309AQUALUNG_DETECT([sndfile], [sndfile (WAV, AIFF, etc.)], [ 310 PKG_CHECK_MODULES([sndfile], [sndfile >= 1.0.17], 311 [AQUALUNG_FOUND([sndfile])], 312 [AQUALUNG_MISSING([sndfile], [$sndfile_PKG_ERRORS])]) 313 PKG_CHECK_EXISTS([sndfile >= 1.0.18], 314 [AC_DEFINE([HAVE_SNDFILE_1_0_18], [1], [Defined if sndfile >= 1.0.18])]) 315]) 316AS_VAR_IF([enable_transcoding], [yes], 317 [with_sndfile_enc="$with_sndfile"], [with_sndfile_enc='no']) 318AS_CASE([$with_sndfile_enc], 319 [yes*], [AC_DEFINE([HAVE_SNDFILE_ENC], [1], 320 [Define to build with sndfile encoding support])]) 321 322AQUALUNG_DETECT([speex], [Ogg Speex], 323 [PKG_CHECK_MODULES([speex], [oggz speex ogg], 324 [AQUALUNG_FOUND([speex])], 325 [AQUALUNG_MISSING([speex], [$speex_PKG_ERRORS])])]) 326 327AQUALUNG_DETECT([vorbis], [Ogg Vorbis], 328 [PKG_CHECK_MODULES([vorbis], [vorbis vorbisfile ogg], 329 [AQUALUNG_FOUND([vorbis])], 330 [AQUALUNG_MISSING([vorbis], [$vorbis_PKG_ERRORS])])]) 331 332AQUALUNG_DETECT([vorbisenc], [Ogg Vorbis Encoding], 333 [PKG_CHECK_MODULES([vorbisenc], [vorbisenc ogg], 334 [AQUALUNG_FOUND([vorbisenc])], 335 [AQUALUNG_MISSING([vorbisenc], [$vorbisenc_PKG_ERRORS])])]) 336AS_CASE([$with_flac_enc/$with_lame/$with_sndfile_enc/$with_vorbisenc], 337 [*yes*], [AC_DEFINE([HAVE_TRANSCODING], [1], 338 [Define to build with transcoding support])], 339 [enable_transcoding='no']) 340AM_CONDITIONAL([HAVE_TRANSCODING], [test "x$enable_transcoding" = 'xyes']) 341 342AQUALUNG_DETECT([wavpack], [WavPack], 343 [PKG_CHECK_MODULES([wavpack], [wavpack >= 4.40.0], 344 [AQUALUNG_FOUND([wavpack])], 345 [AQUALUNG_MISSING([wavpack], [$wavpack_PKG_ERRORS])])]) 346 347 348# 349# DSP Library Options 350# 351AQUALUNG_DETECT([ladspa], [LADSPA Plugin], [ 352 PKG_CHECK_MODULES([lrdf], [lrdf >= 0.4.0], 353 [AQUALUNG_FOUND([ladspa])], 354 [AQUALUNG_MISSING([ladspa], 355 [LADSPA support requires liblrdf >= 0.4.0])]) 356 AS_CASE([$with_ladspa], [yes*], 357 [AC_CHECK_FUNC([dlopen], [], 358 [AC_CHECK_LIB([dl], [dlopen], [lrdf_LIBS="$lrdf_LIBS -ldl"], [ 359 AQUALUNG_MISSING([ladspa], 360 [LADSPA support requires dynamic loading]) 361 with_ladspa='no (missing dlopen)' 362 ])])]) 363]) 364 365AQUALUNG_DETECT([src], [Sample Rate Converter], 366 [PKG_CHECK_MODULES([src], [samplerate], 367 [AQUALUNG_FOUND([src])], 368 [AQUALUNG_MISSING([src], [$src_PKG_ERRORS])])]) 369 370 371# 372# Hardware Library Options 373# 374AQUALUNG_DETECT([cdda], [Compact Disc Digital Audio], 375 [PKG_CHECK_MODULES([cdio], [libcdio >= 0.76 libcdio_paranoia], 376 [ 377 AQUALUNG_FOUND([cdda]) 378 AC_CHECK_HEADERS([cdio/paranoia/cdda.h cdio/paranoia/paranoia.h]) 379 ], 380 [AQUALUNG_MISSING([cdda], [$cdio_PKG_ERRORS])])]) 381 382AQUALUNG_DETECT([ifp], [iRiver iFP], 383 [AC_CHECK_LIB([usb], [usb_init], 384 [AC_CHECK_LIB([ifp], [ifp_find_device], 385 [AQUALUNG_FOUND([ifp], [-lusb -lifp])], 386 [AQUALUNG_MISSING([ifp], [iRiver iFP support requires libifp])])], 387 [AQUALUNG_MISSING([ifp], [iRiver iFP support requires libusb])])]) 388 389 390# 391# Miscellaneous Library Options 392# 393AQUALUNG_DETECT([cddb], [Compact Disc Database], [ 394 PKG_CHECK_MODULES([cddb], [libcddb >= 1.2.1], 395 [AQUALUNG_FOUND([cddb])], 396 [AQUALUNG_MISSING([cddb], [$cddb_PKG_ERRORS])]) 397 AC_CHECK_LIB([cddb], [cddb_disc_get_revision], 398 [AC_DEFINE([LIBCDDB_REVISION], [1], 399 [Define if libcddb has cddb_disc_get_revision function])]) 400]) 401 402AQUALUNG_DETECT([lua], [Lua Extension], 403 [PKG_CHECK_MODULES([lua], [lua5.2], 404 [AQUALUNG_FOUND([lua])], 405 [PKG_CHECK_MODULES([lua], [lua-5.2], 406 [AQUALUNG_FOUND([lua])], 407 [PKG_CHECK_MODULES([lua], [lua52], 408 [AQUALUNG_FOUND([lua])], 409 [PKG_CHECK_MODULES([lua], [lua5.1], 410 [AQUALUNG_FOUND([lua])], 411 [PKG_CHECK_MODULES([lua], [lua-5.1], 412 [AQUALUNG_FOUND([lua])], 413 [PKG_CHECK_MODULES([lua], [lua51], 414 [AQUALUNG_FOUND([lua])], 415 [PKG_CHECK_MODULES([lua], [lua >= 5.2], 416 [AQUALUNG_FOUND([lua])], 417 [PKG_CHECK_MODULES([lua], [lua >= 5.1], 418 [AQUALUNG_FOUND([lua])], 419 [AQUALUNG_MISSING([lua], [$lua_PKG_ERRORS])])])])])])])])])]) 420 421 422# Compiler and linker variables. 423AS_VAR_IF([GCC], [yes], [CFLAGS="-Wall $CFLAGS"]) 424AS_VAR_IF([GXX], [yes], [CXXFLAGS="-Wall $CXXFLAGS"]) 425 426 427AC_MSG_NOTICE([summary 428--------------------------------------------------------------------------- 429 430 Build type / target platform : $buildtype / $host_os 431 432 Optional features: 433 LADSPA plugin support : $with_ladspa 434 CDDA (Audio CD) support : $with_cdda 435 CDDB support : $with_cddb 436 Sample Rate Converter support : $with_src 437 iRiver iFP driver support : $with_ifp 438 JACK port management support : $enable_jack_mgmt 439 Loop playback support : $enable_loop 440 Systray support : $enable_systray 441 Podcast support : $enable_podcast 442 Lua extension support : $with_lua 443 444 Decoding support: 445 sndfile (WAV, AIFF, AU, etc.) : $with_sndfile 446 Free Lossless Audio Codec (FLAC) : $with_flac 447 Ogg Vorbis : $with_vorbis 448 Ogg Speex : $with_speex 449 MPEG Audio (MPEG 1-2.5 Layer I-III) : $with_mpeg 450 MOD Audio (MOD, S3M, XM, IT, etc.) : $with_mod 451 Musepack : $with_mpc 452 Monkey's Audio Codec : $with_mac 453 WavPack : $with_wavpack 454 LAVC (AC3, AAC, WavPack, WMA, etc.) : $with_lavc 455 456 Encoding support: 457 sndfile (WAV) : $with_sndfile_enc 458 Free Lossless Audio Codec (FLAC) : $with_flac_enc 459 Ogg Vorbis : $with_vorbisenc 460 LAME (MP3) : $with_lame 461 462 Output driver support: 463 sndio Audio : $with_sndio 464 OSS Audio : $with_oss 465 ALSA Audio : $with_alsa 466 JACK Audio Server : $with_jack 467 PulseAudio : $with_pulse 468 Win32 Sound API : $with_winmm 469 470---------------------------------------------------------------------------]) 471AC_OUTPUT 472