811 lines
19 KiB
Plaintext
Executable File
811 lines
19 KiB
Plaintext
Executable File
dnl Process this file with autoconf to produce a configure script.
|
|
dnl
|
|
dnl $Id: configure.in,v 1.20 2004/02/20 22:08:30 raph Exp $
|
|
|
|
AC_INIT(include/mikmod.h.in)
|
|
|
|
LIBMIKMOD_MAJOR_VERSION=3
|
|
LIBMIKMOD_MINOR_VERSION=2
|
|
LIBMIKMOD_MICRO_VERSION=0
|
|
|
|
# bn where n is the beta
|
|
BETA=b2
|
|
# used for #if in header files
|
|
IS_BETA=1
|
|
# used when a numeric beta number is required.
|
|
BETA_RELEASE=2 # beta 1
|
|
|
|
LIBMIKMOD_VERSION=$LIBMIKMOD_MAJOR_VERSION.$LIBMIKMOD_MINOR_VERSION.$LIBMIKMOD_MICRO_VERSION$BETA
|
|
|
|
# stuff for autogenerating the spec file.
|
|
|
|
# should be 1 for final releases
|
|
SPEC_RELEASE=0.2beta2
|
|
# should be empty for final releases
|
|
SPEC_PRERELEASE=-beta2
|
|
|
|
|
|
AM_INIT_AUTOMAKE(libmikmod,$LIBMIKMOD_VERSION)
|
|
AM_CONFIG_HEADER(config.h)
|
|
AM_MAINTAINER_MODE
|
|
|
|
# ==============================================================
|
|
# libmikmod specific control variables and their default values.
|
|
# ==============================================================
|
|
|
|
libmikmod_driver_af=yes
|
|
libmikmod_driver_aix=no
|
|
libmikmod_driver_alsa=yes
|
|
libmikmod_driver_esd=yes
|
|
libmikmod_driver_hp=no
|
|
libmikmod_driver_oss=yes
|
|
libmikmod_driver_sam9407=yes
|
|
libmikmod_driver_sgi=no
|
|
libmikmod_driver_sun=no
|
|
libmikmod_driver_osx=yes
|
|
libmikmod_driver_mac=no
|
|
libmikmod_driver_ultra=yes
|
|
|
|
libmikmod_driverlist=
|
|
libmikmod_dynload=yes
|
|
libmikmod_dynload_underscores=no
|
|
libmikmod_debug=no
|
|
libmikmod_threads=yes
|
|
|
|
DLOBJS=""
|
|
|
|
# =========================
|
|
# Configure script options.
|
|
# =========================
|
|
|
|
AC_ARG_ENABLE(af,
|
|
[ --enable-af include AudioFile driver [guessed]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_driver_af=yes
|
|
else
|
|
libmikmod_driver_af=no
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(alsa,
|
|
[ --enable-alsa Linux only: include Advanced Linux Sound Architecture
|
|
driver [guessed]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_driver_alsa=yes
|
|
else
|
|
libmikmod_driver_alsa=no
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(esd,
|
|
[ --enable-esd include Enlightened sound daemon driver [guessed]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_driver_esd=yes
|
|
else
|
|
libmikmod_driver_esd=no
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(oss,
|
|
[ --enable-oss include OSS driver [guessed]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_driver_oss=yes
|
|
else
|
|
libmikmod_driver_oss=no
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(osx,
|
|
[ --enable-osx include OSX driver [guessed]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_driver_osx=yes
|
|
else
|
|
libmikmod_driver_osx=no
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(mac,
|
|
[ --enable-mac include MAC carbon driver [default=no]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_driver_mac=yes
|
|
else
|
|
libmikmod_driver_mac=no
|
|
fi])
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(sam9407,
|
|
[ --enable-sam9407 Linux only: include sam9407 driver [guessed]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_driver_sam9407=yes
|
|
else
|
|
libmikmod_driver_sam9407=no
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(ultra,
|
|
[ --enable-ultra Linux only: include Ultra driver [guessed]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_driver_ultra=yes
|
|
else
|
|
libmikmod_driver_ultra=no
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(dl,
|
|
[ --enable-dl load alsa, esound and ultra drivers at runtime
|
|
[default=yes]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_dynload=yes
|
|
else
|
|
libmikmod_dynload=no
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(debug,
|
|
[ --enable-debug build a debug version of libmikmod [default=no]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_debug=yes
|
|
else
|
|
libmikmod_debug=no
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(threads,
|
|
[ --enable-threads build a thread-safe version of libmikmod [default=guessed]],
|
|
[if test "$enableval" = "yes"
|
|
then
|
|
libmikmod_threads=yes
|
|
else
|
|
libmikmod_threads=no
|
|
fi])
|
|
|
|
# ===================
|
|
# Check for programs.
|
|
# ===================
|
|
|
|
AC_PROG_CC
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AM_PROG_LIBTOOL
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_LIBTOOL
|
|
|
|
# Check if makeinfo support html output. If it doesn't, pretend it's missing
|
|
# rather than failing rebuilding the documentation.
|
|
AC_CACHE_CHECK([if makeinfo supports html output],libmikmod_cv_makeinfo_html,
|
|
if (makeinfo --help 2>&1 | grep html > /dev/null) 2>/dev/null
|
|
then
|
|
libmikmod_cv_makeinfo_html=yes
|
|
else
|
|
libmikmod_cv_makeinfo_html=no
|
|
fi)
|
|
if test $libmikmod_cv_makeinfo_html = no
|
|
then
|
|
MAKEINFO="$missing_dir/missing makeinfo"
|
|
else
|
|
MAKEINFO="$MAKEINFO --no-split"
|
|
fi
|
|
|
|
# ====================
|
|
# Check for libraries.
|
|
# ====================
|
|
|
|
# dl functions
|
|
# ------------
|
|
if test $libmikmod_dynload = yes
|
|
then
|
|
libmikmod_dynload=no
|
|
libmikmod_dllib=
|
|
# SunOS-style shared libraries
|
|
AC_CHECK_HEADERS(dlfcn.h)
|
|
if test $ac_cv_header_dlfcn_h = yes
|
|
then
|
|
AC_CHECK_LIB(c,dlopen,libmikmod_dynload=sun,
|
|
[AC_CHECK_LIB(dl,dlopen,[libmikmod_dynload=sun
|
|
libmikmod_dllib="-ldl"],libmikmod_dynload=no)])
|
|
else
|
|
# HP-UX-style shared libraries
|
|
AC_CHECK_HEADERS(dl.h)
|
|
if test $ac_cv_header_dl_h = yes
|
|
then
|
|
AC_CHECK_LIB(dld,shl_load,[libmikmod_dynload=hp
|
|
libmikmod_dllib="-ldld"
|
|
DLOBJS="dl_hpux.lo"
|
|
CFLAGS="${CFLAGS} -I${srcdir}/dlapi"],libmikmod_dynload=no)
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if test $libmikmod_dynload = sun
|
|
then
|
|
AC_CACHE_CHECK(
|
|
[wherever dynamically loaded symbols need underscores],
|
|
libmikmod_cv_dynload_underscores,
|
|
libmikmod_oldlibs=$LIBS
|
|
LIBS="$LIBS $libmikmod_dllib"
|
|
AC_LANG_SAVE
|
|
AC_LANG_C
|
|
AC_TRY_RUN([#include <dlfcn.h>
|
|
#ifndef RTLD_GLOBAL
|
|
#define RTLD_GLOBAL 0
|
|
#endif
|
|
|
|
int main(void)
|
|
{
|
|
void *libc, *printfptr;
|
|
libc = dlopen("libc.so", RTLD_LAZY | RTLD_GLOBAL);
|
|
if (!libc)
|
|
exit(1);
|
|
|
|
printfptr = dlsym(libc, "_printf");
|
|
dlclose(libc);
|
|
exit(!printfptr);
|
|
}],
|
|
libmikmod_cv_dynload_underscores=yes,
|
|
libmikmod_cv_dynload_underscores=no,
|
|
libmikmod_cv_dynload_underscores=no)
|
|
AC_LANG_RESTORE
|
|
LIBS=$libmikmod_oldlibs
|
|
)
|
|
if test $libmikmod_cv_dynload_underscores = yes
|
|
then
|
|
AC_DEFINE(DLSYM_NEEDS_UNDERSCORE)
|
|
fi
|
|
fi
|
|
|
|
# POSIX.4 threads
|
|
# ---------------
|
|
if test $libmikmod_threads = yes
|
|
then
|
|
libmikmod_threads=no
|
|
AC_CACHE_CHECK(
|
|
[if compiler recognizes -pthread],
|
|
libmikmod_cv_gcc_pthread,
|
|
ac_save_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS -pthread"
|
|
AC_LANG_SAVE
|
|
AC_LANG_C
|
|
AC_TRY_LINK([#include <pthread.h>],
|
|
[int p = pthread_create(NULL,NULL,NULL,NULL);],
|
|
libmikmod_cv_gcc_pthread=yes,
|
|
libmikmod_cv_gcc_pthread=no
|
|
)
|
|
AC_LANG_RESTORE
|
|
CFLAGS=$ac_save_CFLAGS
|
|
)
|
|
if test $libmikmod_cv_gcc_pthread = yes
|
|
then
|
|
dnl There is no need for -pthread on darwin, and gcc
|
|
dnl complains about unrecognized option -pthread
|
|
if test "`uname`" != "Darwin"
|
|
then
|
|
libmikmod_threads=""
|
|
CFLAGS="$CFLAGS -pthread"
|
|
fi
|
|
else
|
|
dnl AC_CHECK_HEADERS(pthread.h) unreliable
|
|
AC_CHECK_LIB(pthread,pthread_create,libmikmod_threads=-lpthread,
|
|
[AC_CHECK_LIB(c_r,pthread_create,libmikmod_threads=-lc_r)])
|
|
fi
|
|
fi
|
|
|
|
# ALSA - Linux only
|
|
# -----------------
|
|
if test "`uname`" = "Linux" && test $libmikmod_driver_alsa = yes
|
|
then
|
|
libmikmod_driver_alsa=no
|
|
AC_CHECK_HEADERS(sys/asoundlib.h)
|
|
if test $ac_cv_header_sys_asoundlib_h = yes
|
|
then
|
|
AC_CHECK_LIB(asound,snd_cards,libmikmod_driver_alsa=yes)
|
|
fi
|
|
else
|
|
libmikmod_driver_alsa=no
|
|
fi
|
|
|
|
# esd
|
|
# ---
|
|
if test $libmikmod_driver_esd = yes
|
|
then
|
|
libmikmod_driver_esd=no
|
|
AM_PATH_ESD(0.2.6,libmikmod_driver_esd=yes)
|
|
# We also need to know if esd is compiled with alsa support
|
|
if test $libmikmod_driver_esd = yes
|
|
then
|
|
AC_CACHE_CHECK([if esd requires alsa],libmikmod_cv_esd_needs_alsa,
|
|
if (esd-config --libs 2>&1 |grep asound >/dev/null) 2>/dev/null
|
|
then
|
|
libmikmod_cv_esd_needs_alsa=yes
|
|
else
|
|
libmikmod_cv_esd_needs_alsa=no
|
|
fi)
|
|
else
|
|
libmikmod_cv_esd_needs_alsa=no
|
|
fi
|
|
fi
|
|
|
|
# sgi audio - IRIX only
|
|
# ---------------------
|
|
case `uname` in
|
|
IRIX*)
|
|
AC_CHECK_HEADERS(dmedia/audio.h)
|
|
if test $ac_cv_header_dmedia_audio_h = yes
|
|
then
|
|
AC_CHECK_LIB(audio,ALseterrorhandler,libmikmod_driver_sgi=yes)
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# audiofile
|
|
# ---------
|
|
if test $libmikmod_driver_af = yes
|
|
then
|
|
libmikmod_driver_af=no
|
|
AC_CHECK_HEADERS(AF/AFlib.h)
|
|
if test $ac_cv_header_AF_AFlib_h = yes
|
|
then
|
|
AC_CHECK_LIB(AF,AFOpenAudioConn,libmikmod_driver_af=yes)
|
|
fi
|
|
fi
|
|
|
|
# libgus - Linux only
|
|
# -------------------
|
|
if test "`uname`" = "Linux" && test $libmikmod_driver_ultra = yes
|
|
then
|
|
libmikmod_driver_ultra=no
|
|
AC_CHECK_HEADERS(libgus.h)
|
|
if test $ac_cv_header_libgus_h = yes
|
|
then
|
|
AC_CHECK_LIB(gus,gus_cards,libmikmod_driver_ultra=yes)
|
|
fi
|
|
else
|
|
libmikmod_driver_ultra=no
|
|
fi
|
|
|
|
# sam9407 - Linux only
|
|
# --------------------
|
|
if test "`uname`" = "Linux" && test $libmikmod_driver_sam9407 = yes
|
|
then
|
|
libmikmod_driver_sam9407=no
|
|
AC_CHECK_HEADERS(sys/sam9407.h)
|
|
if test $ac_cv_header_sys_sam9407_h = yes
|
|
then
|
|
libmikmod_driver_sam9407=yes
|
|
fi
|
|
else
|
|
libmikmod_driver_sam9407=no
|
|
fi
|
|
|
|
# =======================
|
|
# Check for header files.
|
|
# =======================
|
|
|
|
AC_HEADER_STDC
|
|
AC_HEADER_SYS_WAIT
|
|
AC_CHECK_HEADERS(fcntl.h malloc.h memory.h strings.h sys/ioctl.h unistd.h)
|
|
|
|
# =============================================================
|
|
# Check for typedefs, structures, and compiler characteristics.
|
|
# =============================================================
|
|
|
|
AC_PROG_GCC_TRADITIONAL
|
|
AC_C_CONST
|
|
AC_TYPE_PID_T
|
|
AC_TYPE_SIZE_T
|
|
|
|
AC_CACHE_CHECK([if compiler understands the signed keyword],
|
|
libmikmod_cv_gcc_signed,
|
|
AC_LANG_SAVE
|
|
AC_LANG_C
|
|
AC_TRY_COMPILE(,[signed int t = 0;],
|
|
libmikmod_cv_gcc_signed=yes,libmikmod_cv_gcc_signed=no)
|
|
AC_LANG_RESTORE)
|
|
if test $libmikmod_cv_gcc_signed = yes
|
|
then
|
|
DOES_NOT_HAVE_SIGNED=""
|
|
else
|
|
DOES_NOT_HAVE_SIGNED="#define signed"
|
|
fi
|
|
|
|
# ============================
|
|
# Check for library functions.
|
|
# ============================
|
|
|
|
AC_CHECK_FUNCS(setenv snprintf srandom)
|
|
AC_REPLACE_FUNCS(strcasecmp strdup strstr)
|
|
# Change extension, as we use libtool
|
|
LIBOBJS="`echo $LIBOBJS|sed -e 's/\.o/\.lo/g'`"
|
|
|
|
AC_HEADER_EGREP(srandom,math.h,AC_DEFINE(SRANDOM_IN_MATH_H))
|
|
|
|
# ================
|
|
# Choose settings.
|
|
# ================
|
|
|
|
AC_DEFINE(DRV_PIPE)
|
|
AC_DEFINE(DRV_AIFF)
|
|
|
|
# If we can guess the drivers needed from the system, no need to ask the user
|
|
# to specify it manually
|
|
case `uname` in
|
|
AIX)
|
|
AC_DEFINE(AIX)
|
|
AC_CHECK_HEADERS(sys/audio.h sys/acpa.h)
|
|
if test $ac_cv_header_sys_audio_h = yes && \
|
|
test $ac_cv_header_sys_acpa_h = yes
|
|
then
|
|
libmikmod_driver_aix=yes
|
|
fi
|
|
;;
|
|
HP-UX)
|
|
AC_CHECK_HEADERS(sys/audio.h)
|
|
if test $ac_cv_header_sys_audio_h = yes
|
|
then
|
|
libmikmod_driver_hp=yes
|
|
fi
|
|
;;
|
|
NetBSD|OpenBSD)
|
|
AC_CHECK_HEADERS(sys/audioio.h)
|
|
if test $ac_cv_header_sys_audioio_h = yes
|
|
then
|
|
libmikmod_driver_sun=yes
|
|
if test "`uname`" = "NetBSD"
|
|
then
|
|
libmikmod_driverlist="netbsd $libmikmod_driverlist"
|
|
else
|
|
libmikmod_driverlist="openbsd $libmikmod_driverlist"
|
|
fi
|
|
fi
|
|
;;
|
|
SunOS)
|
|
AC_CHECK_HEADERS(sun/audioio.h sys/audioio.h)
|
|
if test $ac_cv_header_sun_audioio_h = yes || \
|
|
test $ac_cv_header_sys_audioio_h = yes
|
|
then
|
|
libmikmod_driver_sun=yes
|
|
libmikmod_driverlist="sun $libmikmod_driverlist"
|
|
case `uname -r` in
|
|
4*) AC_DEFINE(SUNOS) ;;
|
|
esac
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if test $libmikmod_driver_af = yes
|
|
then
|
|
libmikmod_driverlist="$libmikmod_driverlist audiofile"
|
|
AC_DEFINE(DRV_AF)
|
|
LIBRARY_LIB="-lAF $LIBRARY_LIB"
|
|
fi
|
|
|
|
if test $libmikmod_driver_aix = yes
|
|
then
|
|
libmikmod_driverlist="aix $libmikmod_driverlist"
|
|
AC_DEFINE(DRV_AIX)
|
|
fi
|
|
|
|
if test $libmikmod_driver_alsa = yes
|
|
then
|
|
libmikmod_driverlist="alsa $libmikmod_driverlist"
|
|
AC_DEFINE(DRV_ALSA)
|
|
if test $libmikmod_dynload = no
|
|
then
|
|
LIBRARY_LIB="-lasound $LIBRARY_LIB"
|
|
fi
|
|
fi
|
|
|
|
if test $libmikmod_driver_esd = yes
|
|
then
|
|
libmikmod_driverlist="$libmikmod_driverlist esd"
|
|
AC_DEFINE(DRV_ESD)
|
|
CFLAGS="$CFLAGS $ESD_CFLAGS"
|
|
|
|
# Under Solaris and perhaps other systems, we have to forward esd
|
|
# dependencies to libmikmod's dependency list.
|
|
# However, no need to keep libraries we won't require (libossaudio on BSD
|
|
# systems, libaudiofile, libasound on Linux)
|
|
if test $libmikmod_dynload != no
|
|
then
|
|
ESD_LIBS="`echo $ESD_LIBS|sed -e 's/-lesd//'|sed -e 's/-lasound//'|sed -e 's/-laudiofile//'|sed -e 's/-lossaudio//'`"
|
|
fi
|
|
LIBRARY_LIB="$ESD_LIBS $LIBRARY_LIB"
|
|
fi
|
|
|
|
if test $libmikmod_driver_hp = yes
|
|
then
|
|
libmikmod_driverlist="hp $libmikmod_driverlist"
|
|
AC_DEFINE(DRV_HP)
|
|
fi
|
|
|
|
if test $libmikmod_driver_oss = yes
|
|
then
|
|
# under Linux, /dev/sndstat is deprecated, never check for OSS as the
|
|
# headers are always found.
|
|
if test "`uname`" != "Linux"
|
|
then
|
|
AC_CACHE_CHECK([for OSS (/dev/sndstat)],libmikmod_cv_oss_dev_sndstat,
|
|
if test -c /dev/sndstat
|
|
then
|
|
libmikmod_cv_oss_dev_sndstat=yes
|
|
else
|
|
libmikmod_cv_oss_dev_sndstat=no
|
|
fi)
|
|
else
|
|
libmikmod_cv_oss_dev_sndstat=yes
|
|
fi
|
|
if test $libmikmod_cv_oss_dev_sndstat = yes
|
|
then
|
|
AC_CHECK_HEADERS(machine/soundcard.h)
|
|
AC_CHECK_HEADERS(sys/soundcard.h)
|
|
if test $ac_cv_header_machine_soundcard_h = yes || \
|
|
test $ac_cv_header_sys_soundcard_h = yes
|
|
then
|
|
libmikmod_driverlist="oss $libmikmod_driverlist"
|
|
AC_DEFINE(DRV_OSS)
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if test "`uname`" = "Darwin"
|
|
then
|
|
if test $libmikmod_driver_osx = yes
|
|
then
|
|
libmikmod_driverlist="osx $libmikmod_driverlist"
|
|
AC_DEFINE(DRV_OSX)
|
|
LIBRARY_LIB="-framework CoreAudio $LIBRARY_LIB"
|
|
fi
|
|
fi
|
|
|
|
if test "`uname`" = "Darwin"
|
|
then
|
|
if test $libmikmod_driver_mac = yes
|
|
then
|
|
libmikmod_driverlist="mac $libmikmod_driverlist"
|
|
AC_DEFINE(DRV_MAC)
|
|
LIBRARY_LIB="-framework Carbon $LIBRARY_LIB"
|
|
fi
|
|
fi
|
|
|
|
if test $libmikmod_driver_sam9407 = yes
|
|
then
|
|
libmikmod_driverlist="sam9407 $libmikmod_driverlist"
|
|
AC_DEFINE(DRV_SAM9407)
|
|
fi
|
|
|
|
if test $libmikmod_driver_sgi = yes
|
|
then
|
|
libmikmod_driverlist="sgi $libmikmod_driverlist"
|
|
AC_DEFINE(DRV_SGI)
|
|
LIBRARY_LIB="-laudio $LIBRARY_LIB"
|
|
fi
|
|
|
|
if test $libmikmod_driver_sun = yes
|
|
then
|
|
AC_DEFINE(DRV_SUN)
|
|
fi
|
|
|
|
if test $libmikmod_driver_ultra = yes
|
|
then
|
|
libmikmod_driverlist="ultra $libmikmod_driverlist"
|
|
AC_DEFINE(DRV_ULTRA)
|
|
if test $libmikmod_dynload = no
|
|
then
|
|
LIBRARY_LIB="-lgus $LIBRARY_LIB"
|
|
fi
|
|
fi
|
|
|
|
if test $libmikmod_debug = yes
|
|
then
|
|
AC_DEFINE(MIKMOD_DEBUG)
|
|
CC="$CC -g"
|
|
fi
|
|
|
|
if test $libmikmod_dynload != no
|
|
then
|
|
AC_DEFINE(MIKMOD_DYNAMIC)
|
|
if test "`uname`" = "Linux" && \
|
|
test $libmikmod_cv_esd_needs_alsa = yes && \
|
|
test $libmikmod_driver_esd = yes
|
|
then
|
|
# @#!$ libmikmod_dynloading esd requires us to define and make visible
|
|
# extra symbols (at least for 0.2.6 to 0.2.8)
|
|
AC_CACHE_CHECK([if libmikmod_dynloading esd causes problems],
|
|
libmikmod_cv_esd_broken,
|
|
libmikmod_oldlibs=$LIBS
|
|
LIBS="$LIBS $ESD_LIBS"
|
|
AC_TRY_LINK([
|
|
#include <esd.h>
|
|
extern void *handle;],
|
|
[void *p = handle;],
|
|
libmikmod_cv_esd_broken=no,libmikmod_cv_esd_broken=yes)
|
|
LIBS=$libmikmod_oldlibs)
|
|
if test $libmikmod_cv_esd_broken = yes
|
|
then
|
|
AC_DEFINE(MIKMOD_DYNAMIC_ESD_NEEDS_ALSA)
|
|
LIB_LDADD="$LIB_LDADD -rdynamic"
|
|
echo "
|
|
*** This means your version of EsounD defines some public symbols,
|
|
*** which should have been defined static or weak. The compiled
|
|
*** libmikmod will try to take care of the problem, but you'll have to
|
|
*** use the '-rdynamic' option when linking an application which uses
|
|
*** libmikmod with gcc. If you use another compiler, or -rdynamic is not
|
|
*** available on your platform, you might not be able to use libmikmod's
|
|
*** EsounD driver.
|
|
*** In this case, consider recompiling libmikmod specifying
|
|
*** '--disable-dl' in the configure script options.
|
|
" >&2
|
|
fi
|
|
fi
|
|
|
|
LIBRARY_LIB="$libmikmod_dllib $LIBRARY_LIB"
|
|
if test $libmikmod_dynload = sun
|
|
then
|
|
# RTLD_GLOBAL is not defined under every system
|
|
AC_CACHE_CHECK([if RTLD_GLOBAL is defined],libmikmod_cv_decl_rtld_global,
|
|
AC_TRY_COMPILE([#include <dlfcn.h>],[int flag=RTLD_GLOBAL;],
|
|
libmikmod_cv_decl_rtld_global=yes,
|
|
libmikmod_cv_decl_rtld_global=no))
|
|
if test $libmikmod_cv_decl_rtld_global = yes
|
|
then
|
|
AC_DEFINE(HAVE_RTLD_GLOBAL)
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# If compiling with gcc, use adequate optimization flags
|
|
if test $ac_cv_prog_gcc = yes
|
|
then
|
|
# On at least x86 platforms, gcc 2.7.2.1 and earlier won't work if -O3 (or
|
|
# -finline-functions) are used. Versions 2.7.2.3, 2.8.x and egcs are ok
|
|
# (didn't test 2.7.2.2).
|
|
# Until there's an easy way to catch broken inlining, we choose flags known
|
|
# to work correctly depending of the compiler version.
|
|
AC_CACHE_CHECK([if inlining functions is safe],
|
|
libmikmod_cv_gcc_inline_safe,
|
|
AC_TRY_RUN([
|
|
int main()
|
|
{
|
|
#if defined __GNUC__ && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ > 7)
|
|
exit(0);
|
|
#else
|
|
exit(1);
|
|
#endif
|
|
}],
|
|
libmikmod_cv_gcc_inline_safe=yes,
|
|
libmikmod_cv_gcc_inline_safe=no,
|
|
libmikmod_cv_gcc_inline_safe=no))
|
|
if test $libmikmod_cv_gcc_inline_safe = yes
|
|
then
|
|
CFLAGS="$CFLAGS -finline-functions"
|
|
else
|
|
CFLAGS="$CFLAGS -fno-strength-reduce"
|
|
fi
|
|
CFLAGS="$CFLAGS -funroll-loops -ffast-math"
|
|
if test $libmikmod_debug = yes
|
|
then
|
|
CFLAGS="$CFLAGS -Wall -Werror"
|
|
else
|
|
CFLAGS="$CFLAGS -Wall"
|
|
fi
|
|
|
|
# pgcc 2.95.2 appears not to be able to compile libmikmod, although regular
|
|
# gcc works fine. Issue a warning if the compiler is pgcc, until a reliable
|
|
# way to detect flawed version (or, better, a reliable workaround) is
|
|
# found.
|
|
dnl do not cache this test - better rechecking every time
|
|
AC_MSG_CHECKING(if compiler is pgcc)
|
|
if ($CC -v 2>&1 | grep ^pgcc > /dev/null) 2>/dev/null
|
|
then
|
|
libmikmod_gcc_is_pgcc=yes
|
|
else
|
|
libmikmod_gcc_is_pgcc=no
|
|
fi
|
|
AC_MSG_RESULT($libmikmod_gcc_is_pgcc)
|
|
if test $libmikmod_gcc_is_pgcc = yes
|
|
then
|
|
echo "
|
|
*** Version 2.95.2 of this compiler, and perhaps others, are unable to
|
|
*** compile libmikmod. If compilation fails for playercode/virtch.c
|
|
*** around line 650, with the error ``internal error--insn does not
|
|
*** satisfy its constraints'', then you'll have to use another compiler.
|
|
" >&2
|
|
fi
|
|
fi
|
|
|
|
if test x$libmikmod_threads != xno
|
|
then
|
|
AC_DEFINE(HAVE_PTHREAD)
|
|
CFLAGS="$CFLAGS -D_REENTRANT"
|
|
LIBRARY_LIB="$libmikmod_threads $LIBRARY_LIB"
|
|
REENTRANT="-D_REENTRANT"
|
|
if test $libmikmod_cv_gcc_pthread = yes
|
|
then
|
|
dnl There is no need for -pthread on darwin, and gcc
|
|
dnl complains about unrecognized option -pthread
|
|
if test "`uname`" != "Darwin"
|
|
then
|
|
REENTRANT="-pthread $REENTRANT"
|
|
LIB_LDADD="-pthread"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# =================
|
|
# Create Makefiles.
|
|
# =================
|
|
|
|
AC_SUBST(REENTRANT)
|
|
AC_SUBST(DOES_NOT_HAVE_SIGNED)
|
|
|
|
AC_SUBST(DLOBJS)
|
|
AC_SUBST(LIBRARY_LIB)
|
|
AC_SUBST(PLAYER_LIB)
|
|
|
|
AC_SUBST(LIBMIKMOD_MAJOR_VERSION)
|
|
AC_SUBST(LIBMIKMOD_MINOR_VERSION)
|
|
AC_SUBST(LIBMIKMOD_MICRO_VERSION)
|
|
AC_SUBST(LIBMIKMOD_VERSION)
|
|
AC_SUBST(BETA_RELEASE)
|
|
AC_SUBST(IS_BETA)
|
|
|
|
AC_SUBST(SPEC_RELEASE)
|
|
AC_SUBST(SPEC_PRERELEASE)
|
|
|
|
AC_SUBST(LIB_LDADD)
|
|
|
|
AC_OUTPUT(
|
|
libmikmod-config
|
|
libmikmod.spec
|
|
Makefile
|
|
docs/Makefile
|
|
docs/libmikmod-config.1
|
|
dlapi/Makefile
|
|
drivers/Makefile
|
|
include/Makefile
|
|
include/mikmod.h
|
|
include/mikmod_build.h:include/mikmod.h.in
|
|
libmikmod/Makefile
|
|
loaders/Makefile
|
|
mmio/Makefile
|
|
playercode/Makefile
|
|
posix/Makefile
|
|
macintosh/Makefile
|
|
macintosh/mikmod.h
|
|
macintosh/_libmikmodversion.r
|
|
macosx/mikmod.h
|
|
macosx/Info-Carbon_Framework.plist
|
|
macosx/Info-CoreAudio_Framework.plist
|
|
os2/Makefile
|
|
dos/Makefile
|
|
dos/include/Makefile
|
|
dos/src/Makefile
|
|
win32/Makefile,
|
|
|
|
chmod +x libmikmod-config,
|
|
cat macintosh/_libmikmodversion.r | tr '\n' '\r' > macintosh/libmikmodversion.r )
|
|
|
|
# ====================
|
|
# Print configuration.
|
|
# ====================
|
|
|
|
libmikmod_driverlist=`echo $libmikmod_driverlist raw wav aiff pipe stdout nosound|sed -e 's, , ,g'`
|
|
if test $libmikmod_dynload != no
|
|
then
|
|
libmikmod_dynload="yes, ${libmikmod_dynload} style"
|
|
fi
|
|
|
|
echo "
|
|
Library configuration:
|
|
|
|
Source code location: $srcdir
|
|
Compiler: $CC
|
|
Compiler flags: $CFLAGS
|
|
Debug version: $libmikmod_debug
|
|
Dynamically loaded drivers whenever possible: $libmikmod_dynload
|
|
Drivers to be compiled: $libmikmod_driverlist
|
|
Install path: $prefix/lib, $prefix/include
|
|
"
|
|
|