| dnl $Id: configure.in,v 1.134.2.3 2010/03/22 20:25:26 robert Exp $ |
| dnl |
| dnl |
| dnl don't forget to set ASM_FOR_ARCH to a space delimited list of |
| dnl processor architectures, for which assembler routines exist |
| dnl |
| dnl |
| dnl Exported and configured variables: |
| dnl CC |
| dnl CFLAGS |
| dnl LDFLAGS |
| dnl LDADD |
| dnl NASM |
| |
| dnl extra vars for frontend: |
| dnl FRONTEND_LDFLAGS |
| dnl FRONTEND_CFLAGS |
| dnl FRONTEND_LDADD |
| |
| AC_PREREQ(2.59) |
| AC_INIT([lame],[3.98.4],[lame-dev@lists.sf.net]) |
| AC_CONFIG_SRCDIR([libmp3lame/lame.c]) |
| |
| dnl check system |
| AC_CANONICAL_HOST |
| |
| dnl automake |
| AM_INIT_AUTOMAKE |
| AC_CONFIG_HEADERS([config.h]) |
| AM_MAINTAINER_MODE |
| AM_MAKE_INCLUDE |
| |
| dnl check environment |
| AC_AIX |
| AC_ISC_POSIX |
| AC_MINIX |
| case $host_os in |
| *cygwin* ) CYGWIN=yes;; |
| * ) CYGWIN=no;; |
| esac |
| |
| dnl libtool |
| # AC_DISABLE_SHARED |
| AC_PROG_LIBTOOL |
| AC_SUBST(LIBTOOL_DEPS) |
| CFLAGS="${ac_save_CFLAGS}" |
| |
| # increase this when the shared lib becomes totally incompatible |
| LIB_MAJOR_VERSION=0 |
| |
| # increase this when changes are made, but they are upward compatible |
| # to previous versions |
| LIB_MINOR_VERSION=0 |
| |
| dnl # work around for a bug, don't know where it is exactly |
| if test "${ac_cv_cygwin}" = "yes"; then |
| if test "${CC}" != "gcc"; then |
| AC_MSG_ERROR([Please use] |
| [ CC=gcc ./configure] |
| [Abort this configure run and add "CC=gcc" or you will] |
| [see errors and no lame.exe will be build.]) |
| fi |
| fi |
| |
| dnl check programs |
| AC_PROG_CC() |
| |
| if test "${GCC}" = "yes"; then |
| AC_MSG_CHECKING(version of GCC) |
| GCC_version=`${CC} --version | sed -n '1s/^[[^ ]]* (.*) //;s/ .*$//;1p'` |
| AC_MSG_RESULT(${GCC_version}) |
| fi |
| |
| dnl more automake stuff |
| AM_C_PROTOTYPES |
| |
| AC_CHECK_HEADER(dmalloc.h) |
| if test "${ac_cv_header_dmalloc_h}" = "yes"; then |
| AM_WITH_DMALLOC |
| fi |
| |
| dnl Checks for header files. |
| AC_HEADER_STDC |
| AC_CHECK_HEADERS( \ |
| errno.h \ |
| fcntl.h \ |
| limits.h \ |
| stdint.h \ |
| string.h \ |
| sys/soundcard.h \ |
| sys/time.h \ |
| unistd.h \ |
| xmmintrin.h \ |
| linux/soundcard.h) |
| |
| dnl Checks for typedefs, structures, and compiler characteristics. |
| AC_C_CONST |
| AC_C_INLINE |
| if test ${cross_compiling} = "no"; then |
| AC_C_BIGENDIAN |
| fi |
| |
| AC_SYS_LARGEFILE |
| |
| AC_CHECK_SIZEOF(short) |
| AC_CHECK_SIZEOF(unsigned short) |
| AC_CHECK_SIZEOF(int) |
| AC_CHECK_SIZEOF(unsigned int) |
| AC_CHECK_SIZEOF(long) |
| AC_CHECK_SIZEOF(unsigned long) |
| AC_CHECK_SIZEOF(long long) |
| AC_CHECK_SIZEOF(unsigned long long) |
| AC_CHECK_SIZEOF(float) |
| AC_CHECK_SIZEOF(double) |
| |
| if test $ac_cv_sizeof_short -eq 0 \ |
| -o $ac_cv_sizeof_unsigned_short -eq 0 \ |
| -o $ac_cv_sizeof_int -eq 0 \ |
| -o $ac_cv_sizeof_unsigned_int -eq 0 \ |
| -o $ac_cv_sizeof_long -eq 0 \ |
| -o $ac_cv_sizeof_unsigned_long -eq 0 \ |
| -o $ac_cv_sizeof_long_long -eq 0 \ |
| -o $ac_cv_sizeof_unsigned_long_long -eq 0 \ |
| -o $ac_cv_sizeof_float -eq 0 \ |
| -o $ac_cv_sizeof_double -eq 0; then |
| echo '*** I have a problem determining the size of some variable types. Either' |
| echo '*** you compiler is broken, or your system+compiler combination is not' |
| echo '*** supportet by the "autoconf" framework we use to generate this' |
| echo '*** configure script.' |
| exit 1 |
| fi |
| |
| AC_C_LONG_DOUBLE |
| if test "${ac_cv_c_have_long_double}" = "yes" ; then |
| AC_CHECK_SIZEOF(long double) |
| fi |
| |
| AC_CHECK_TYPES([uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t]) |
| |
| AH_VERBATIM([HAVE_UINT8_T], |
| [/* add uint8_t type */ |
| #undef HAVE_UINT8_T |
| #ifndef HAVE_UINT8_T |
| typedef unsigned char uint8_t; |
| #endif]) |
| |
| AH_VERBATIM([HAVE_INT8_T], |
| [/* add int8_t type */ |
| #undef HAVE_INT8_T |
| #ifndef HAVE_INT8_T |
| typedef char int8_t; |
| #endif]) |
| |
| AH_VERBATIM([HAVE_UINT16_T], |
| [/* add uint16_t type */ |
| #undef HAVE_UINT16_T |
| #ifndef HAVE_UINT16_T |
| typedef unsigned short uint16_t; |
| #endif]) |
| |
| AH_VERBATIM([HAVE_INT16_T], |
| [/* add int16_t type */ |
| #undef HAVE_INT16_T |
| #ifndef HAVE_INT16_T |
| typedef short int16_t; |
| #endif]) |
| |
| if test "${HAVE_INT32_T}" = yes; then |
| AC_DEFINE(A_UINT32_T,unsigned int32_t) |
| else |
| if test "${ac_cv_sizeof_unsigned_short}" = "4"; then |
| AC_DEFINE(A_UINT32_T,unsigned short) |
| else |
| if test "${ac_cv_sizeof_unsigned_int}" = "4"; then |
| AC_DEFINE(A_UINT32_T,unsigned int) |
| else |
| if test "${ac_cv_sizeof_unsigned_long}" = "4"; then |
| AC_DEFINE(A_UINT32_T,unsigned long) |
| else |
| AC_MSG_ERROR([CHECK_TYPE_uint32_t - please report to lame-dev@lists.sourceforge.net]) |
| fi |
| fi |
| fi |
| fi |
| |
| AH_VERBATIM([HAVE_UINT32_T], |
| [/* add uint32_t type */ |
| #undef HAVE_UINT32_T |
| #ifndef HAVE_UINT32_T |
| #undef A_UINT32_T |
| typedef A_UINT32_T uint32_t; |
| #endif]) |
| |
| if test "${ac_cv_sizeof_short}" = "4"; then |
| AC_DEFINE(A_INT32_T,short) |
| else |
| if test "${ac_cv_sizeof_int}" = "4"; then |
| AC_DEFINE(A_INT32_T,int) |
| else |
| if test "${ac_cv_sizeof_long}" = "4"; then |
| AC_DEFINE(A_INT32_T,long) |
| else |
| AC_MSG_ERROR([CHECK_TYPE_int32_t - please report to lame-dev@lists.sourceforge.net]) |
| fi |
| fi |
| fi |
| |
| AH_VERBATIM([HAVE_INT32_T], |
| [/* add int32_t type */ |
| #undef HAVE_INT32_T |
| #ifndef HAVE_INT32_T |
| #undef A_INT32_T |
| typedef A_INT32_T int32_t; |
| #endif]) |
| |
| if test "${HAVE_INT64_T}" = yes; then |
| AC_DEFINE(A_UINT64_T,unsigned int64_t) |
| else |
| if test "${ac_cv_sizeof_unsigned_int}" = "8"; then |
| AC_DEFINE(A_UINT64_T,unsigned int) |
| else |
| if test "${ac_cv_sizeof_unsigned_long}" = "8"; then |
| AC_DEFINE(A_UINT64_T,unsigned long) |
| else |
| if test "${ac_cv_sizeof_unsigned_long_long}" = "8"; then |
| AC_DEFINE(A_UINT64_T,unsigned long long) |
| else |
| AC_MSG_ERROR([CHECK_TYPE_uint64_t - please report to lame-dev@lists.sourceforge.net]) |
| fi |
| fi |
| fi |
| fi |
| |
| AH_VERBATIM([HAVE_UINT64_T], |
| [/* add uint64_t type */ |
| #undef HAVE_UINT64_T |
| #ifndef HAVE_UINT64_T |
| #undef A_UINT64_T |
| typedef A_UINT64_T uint64_t; |
| #endif]) |
| |
| if test "${ac_cv_sizeof_int}" = "8"; then |
| AC_DEFINE(A_INT64_T,int) |
| else |
| if test "${ac_cv_sizeof_long}" = "8"; then |
| AC_DEFINE(A_INT64_T,long) |
| else |
| if test "${ac_cv_sizeof_long_long}" = "8"; then |
| AC_DEFINE(A_INT64_T,long long) |
| else |
| AC_MSG_ERROR([CHECK_TYPE_int64_t - please report to lame-dev@lists.sourceforge.net]) |
| fi |
| fi |
| fi |
| |
| AH_VERBATIM([HAVE_INT64_T], |
| [/* add int64_t type */ |
| #undef HAVE_INT64_T |
| #ifndef HAVE_INT64_T |
| #undef A_INT64_T |
| typedef A_INT64_T int64_t; |
| #endif]) |
| |
| alex_IEEE854_FLOAT80 |
| if test "${alex_cv_ieee854_float80}" = "yes" ; then |
| if test "${ac_cv_c_long_double}" = "yes" ; then |
| AC_CHECK_TYPES(ieee854_float80_t, long double) |
| AH_VERBATIM([HAVE_IEEE854_FLOAT80_T], |
| [/* add ieee854_float80_t type */ |
| #undef HAVE_IEEE854_FLOAT80_T |
| #ifndef HAVE_IEEE854_FLOAT80_T |
| typedef long double ieee854_float80_t; |
| #endif]) |
| |
| AC_DEFINE(HAVE_IEEE854_FLOAT80, 1, [system has 80 bit floats]) |
| fi |
| fi |
| AC_CHECK_TYPES([ieee754_float64_t, ieee754_float32_t]) |
| |
| AH_VERBATIM([HAVE_IEEE754_FLOAT64_T], |
| [/* add ieee754_float64_t type */ |
| #undef HAVE_IEEE754_FLOAT64_T |
| #ifndef HAVE_IEEE754_FLOAT64_T |
| typedef double ieee754_float64_t; |
| #endif]) |
| |
| AH_VERBATIM([HAVE_IEEE754_FLOAT32_T], |
| [/* add ieee754_float32_t type */ |
| #undef HAVE_IEEE754_FLOAT32_T |
| #ifndef HAVE_IEEE754_FLOAT32_T |
| typedef float ieee754_float32_t; |
| #endif]) |
| |
| AC_DEFINE(LAME_LIBRARY_BUILD, 1, [requested by Frank, seems to be temporary needed for a smooth transition]) |
| |
| |
| if test ${cross_compiling} = "yes"; then |
| AC_MSG_WARN([] |
| [**************************************************************************] |
| [* *] |
| [* You are cross compiling: *] |
| [* - I did not have a change to determine *] |
| [* + the size of: *] |
| [* - short *] |
| [* - unsigned short *] |
| [* - int *] |
| [* - unsigned int *] |
| [* - long *] |
| [* - unsigned long *] |
| [* - float *] |
| [* - double *] |
| [* - long double *] |
| [* + the endianess of the system *] |
| [* - You have to provide appropriate defines for them in config.h, e.g. *] |
| [* + define SIZEOF_SHORT to 2 if the size of a short is 2 *] |
| [* + define WORDS_BIGENDIAN if your system is a big endian system *] |
| [* *] |
| [**************************************************************************]) |
| fi |
| |
| AC_TYPE_SIZE_T |
| AC_HEADER_TIME |
| |
| dnl Checks for library functions. |
| AC_FUNC_ALLOCA |
| AC_CHECK_FUNCS(gettimeofday strtol) |
| |
| if test "X${ac_cv_func_strtol}" != "Xyes"; then |
| AC_MSG_ERROR([function strtol is mandatory]) |
| fi |
| |
| dnl Check if we are on a mingw system, which needs libwsock32 |
| SOCKETFUNCTION=unknown |
| AC_CHECK_FUNCS(socket) |
| if test $ac_cv_func_socket = no; then |
| # maybe it is in libsocket |
| AC_CHECK_LIB(socket, socket, [AC_DEFINE(HAVE_SOCKET) |
| LIBS="$LIBS -lsocket"]) |
| if test "X${ac_cv_lib_socket_socket}" != "Xyes"; then |
| SOCKETFUNCTION=NO |
| else |
| case ${host_os} in |
| *solaris*) |
| LIBS="$LIBS -lnsl" |
| ;; |
| esac |
| fi |
| fi |
| |
| dnl Initialize configuration variables for the Makefile |
| CFLAGS=${CFLAGS} |
| CONFIG_DEFS=${CONFIG_DEFS} |
| NASM= |
| INCLUDES="-I\$(top_srcdir)/include -I\$(srcdir)" |
| FRONTEND_LDFLAGS= |
| FRONTEND_CFLAGS= |
| LIB_SOURCES= |
| MAKEDEP="-M" |
| RM_F="rm -f" |
| |
| AC_ARG_ENABLE(nasm, |
| [ --enable-nasm Allow the use of nasm if available], |
| ASM_FOR_ARCH="i386", ASM_FOR_ARCH="") |
| |
| dnl Checks for libraries. |
| |
| AC_CHECK_HEADERS(termcap.h) |
| AC_CHECK_HEADERS(ncurses/termcap.h) |
| AC_CHECK_LIB(termcap, initscr, HAVE_TERMCAP="termcap") |
| AC_CHECK_LIB(curses, initscr, HAVE_TERMCAP="curses") |
| AC_CHECK_LIB(ncurses, initscr, HAVE_TERMCAP="ncurses") |
| |
| dnl math lib |
| AC_CHECK_LIB(m, cos, USE_LIBM="-lm") |
| dnl free fast math library |
| AC_CHECK_LIB(ffm, cos, USE_LIBM="-lffm -lm") |
| dnl Compaq fast math library. |
| AC_ARG_ENABLE(cpml, |
| [ --disable-cpml Do not use Compaq's fast Math Library], |
| CONFIG_CPML="no", CONFIG_CPML="yes") |
| if test "${CONFIG_CPML}" = yes; then |
| AC_CHECK_LIB(cpml, cos, USE_LIBM="-lcpml") |
| fi |
| CONFIG_MATH_LIB="${USE_LIBM}" |
| |
| dnl configure use of features |
| |
| AM_PATH_GTK(1.2.0, HAVE_GTK="yes", HAVE_GTK="no") |
| |
| dnl ElectricFence malloc debugging |
| AC_MSG_CHECKING(use of ElectricFence malloc debugging) |
| AC_ARG_ENABLE(efence, |
| [ --enable-efence Use ElectricFence for malloc debugging], |
| CONFIG_EFENCE="${enableval}", CONFIG_EFENCE="no") |
| |
| case "${CONFIG_EFENCE}" in |
| yes) |
| AC_CHECK_LIB(efence, EF_Print, HAVE_EFENCE="-lefence") |
| if test "x${HAVE_EFENCE}" != "x-lefence"; then |
| AC_MSG_RESULT(yes, but libefence not found) |
| else |
| LDADD="${LDADD} ${HAVE_EFENCE}" |
| AC_DEFINE(HAVE_EFENCE, 1, we link against libefence) |
| AC_MSG_RESULT(${CONFIG_EFENCE}) |
| fi |
| ;; |
| no) |
| AC_MSG_RESULT(${CONFIG_EFENCE}) |
| ;; |
| *) |
| AC_MSG_ERROR(bad value �${CONFIG_EFENCE}� for efence option) |
| ;; |
| esac |
| |
| |
| dnl libsndfile |
| WARNING= |
| AC_ARG_WITH(fileio, |
| [ --with-fileio=lame Use lame's internal file io routines [default]] |
| [ =sndfile Use Erik de Castro Lopo's libsndfile] |
| [ (no stdin possible currently)], |
| CONFIG_FILEIO="${withval}", CONFIG_FILEIO="lame") |
| |
| if test "${CONFIG_FILEIO}" = "sndfile" ; then |
| PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.2, HAVE_SNDFILE="yes", HAVE_SNDFILE="no") |
| fi |
| |
| AC_MSG_CHECKING(use of file io) |
| |
| if test "${CONFIG_FILEIO}" = "sndfile" ; then |
| if test "${HAVE_SNDFILE}" = "yes" -o "x${SNDFILE_LIBS}" != "x" \ |
| -o "x${SNDFILE_CFLAGS}" != "x"; then |
| SNDFILE_LIBS=`echo ${SNDFILE_LIBS}` |
| SNDFILE_CFLAGS=`echo ${SNDFILE_CFLAGS}` |
| |
| if test -n "${SNDFILE_LIBS}" ; then |
| FRONTEND_LDFLAGS="${SNDFILE_LIBS} ${FRONTEND_LDFLAGS}" |
| fi |
| FRONTEND_LDADD="-lsndfile ${FRONTEND_LDADD}" |
| |
| if test -n "${SNDFILE_CFLAGS}" ; then |
| INCLUDES="${SNDFILE_CFLAGS} ${INCLUDES}" |
| fi |
| |
| AC_DEFINE(LIBSNDFILE, 1, set to 1 if you have libsndfile) |
| else |
| # default |
| CONFIG_FILEIO="lame" |
| WARNING="${WARNING} Could not find any sndfile lib on system." |
| fi |
| else |
| CONFIG_FILEIO="lame" |
| fi |
| AC_MSG_RESULT(${CONFIG_FILEIO}) |
| if test "x${WARNING}" != "x" ; then |
| AC_MSG_WARN($WARNING) |
| fi |
| |
| |
| dnl check if we should remove hooks for analyzer code in library |
| dnl default library must include these hooks |
| AC_MSG_CHECKING(use of analyzer hooks) |
| AC_ARG_ENABLE(analyzer-hooks, |
| [ --disable-analyzer-hooks Exclude analyzer hooks], |
| CONFIG_ANALYZER="${enableval}", CONFIG_ANALYZER="yes") |
| |
| case "${CONFIG_ANALYZER}" in |
| yes) |
| ;; |
| no) |
| AC_DEFINE(NOANALYSIS, 1, build without hooks for analyzer) |
| ;; |
| *) |
| AC_MSG_ERROR(bad value �${CONFIG_ANALYZER}� for analyzer-hooks option) |
| ;; |
| esac |
| AC_MSG_RESULT($CONFIG_ANALYZER) |
| |
| |
| dnl mpg123 decoder |
| AC_MSG_CHECKING(use of mpg123 decoder) |
| AC_ARG_ENABLE(decoder, |
| [ --disable-decoder Exclude mpg123 decoder], |
| CONFIG_DECODER="${enableval}", CONFIG_DECODER="yes") |
| AC_ARG_ENABLE(decode-layer1, |
| [ --enable-decode-layer1 Include layer1 decoding [default=no]], |
| CONFIG_DECODER_L1="${enableval}", CONFIG_DECODER_L1="no") |
| AC_ARG_ENABLE(decode-layer2, |
| [ --disable-decode-layer2 Exclude layer2 decoding], |
| CONFIG_DECODER_L2="${enableval}", CONFIG_DECODER_L2="yes") |
| |
| AM_CONDITIONAL(LIB_WITH_DECODER, test "x${CONFIG_DECODER}" = "xyes") |
| |
| if test "${CONFIG_DECODER}" != "no" ; then |
| CONFIG_DECODER="yes (Layer" |
| AC_DEFINE(HAVE_MPGLIB, 1, build with mpglib support) |
| AC_DEFINE(DECODE_ON_THE_FLY, 1, allow to compute a more accurate replaygain value) |
| |
| if test "${CONFIG_DECODER_L1}" != "no"; then |
| CONFIG_DECODER="${CONFIG_DECODER} 1," |
| AC_DEFINE(USE_LAYER_1, 1, build with layer 1 decoding) |
| fi |
| if test "${CONFIG_DECODER_L2}" != "no"; then |
| CONFIG_DECODER="${CONFIG_DECODER} 2," |
| AC_DEFINE(USE_LAYER_2, 1, build with layer 2 decoding) |
| fi |
| CONFIG_DECODER="${CONFIG_DECODER} 3)" |
| fi |
| AC_MSG_RESULT($CONFIG_DECODER) |
| |
| |
| AC_MSG_CHECKING(if the lame frontend should be build) |
| AC_ARG_ENABLE(frontend, |
| [ --disable-frontend Do not build the lame executable [default=build]], |
| WITH_FRONTEND="${enableval}", WITH_FRONTEND=yes) |
| if test "x${WITH_FRONTEND}" = "xyes"; then |
| WITH_FRONTEND=lame${ac_exeext} |
| AC_MSG_RESULT(yes) |
| else |
| WITH_FRONTEND= |
| AC_MSG_RESULT(no) |
| fi |
| |
| |
| |
| AC_MSG_CHECKING(if mp3x is requested) |
| AC_ARG_ENABLE(mp3x, |
| [ --enable-mp3x Build GTK frame analyzer [default=no]], |
| WITH_MP3X="${enableval}", WITH_MP3X=no) |
| if test "x${WITH_MP3X}" = "xyes"; then |
| WITH_MP3X=mp3x${ac_exeext} |
| AC_MSG_RESULT(yes) |
| else |
| WITH_MP3X= |
| AC_MSG_RESULT(no) |
| fi |
| |
| if test "${HAVE_GTK}" = "no"; then |
| if test "x${WITH_MP3X}" = "xmp3x"; then |
| AC_MSG_WARN(can't build mp3x, no GTK installed) |
| WITH_MP3X= |
| fi |
| if test "x${CONFIG_ANALYZER}" != "xyes"; then |
| AC_MSG_WARN(can't build mp3x because of disabled analyzer hooks) |
| WITH_MP3X= |
| fi |
| fi |
| |
| AC_MSG_CHECKING(if mp3rtp is requested) |
| AC_ARG_ENABLE(mp3rtp, |
| [ --enable-mp3rtp Build mp3rtp [default=no]], |
| WITH_MP3RTP="${enableval}", WITH_MP3RTP=no) |
| if test "x${WITH_MP3RTP}" = "xyes"; then |
| if test ${SOCKETFUNCTION} = NO; then |
| AC_MSG_ERROR([function socket is mandatory for mp3rtp]) |
| fi |
| WITH_MP3RTP=mp3rtp${ac_exeext} |
| AC_MSG_RESULT(yes) |
| else |
| WITH_MP3RTP= |
| AC_MSG_RESULT(no) |
| fi |
| |
| |
| # |
| # this is from vorbis |
| # |
| dnl check GLIBC |
| case $host in |
| *86-*-linux*) |
| # glibc < 2.1.3 has a serious FP bug in the math inline header |
| # that will cripple Vorbis. Look to see if the magic FP stack |
| # clobber is missing in the mathinline header, thus indicating |
| # the buggy version |
| |
| AC_EGREP_CPP(log10.*fldlg2.*fxch,[ |
| #define __LIBC_INTERNAL_MATH_INLINES 1 |
| #define __OPTIMIZE__ |
| #include <math.h> |
| ],bad=maybe,bad=no) |
| |
| AC_MSG_CHECKING(glibc mathinline bug) |
| if test ${bad} = "maybe" ;then |
| AC_EGREP_CPP(log10.*fldlg2.*fxch.*st\([[0123456789]]*\), |
| [ |
| #define __LIBC_INTERNAL_MATH_INLINES 1 |
| #define __OPTIMIZE__ |
| #include <math.h> |
| ],bad=no,bad=yes) |
| fi |
| AC_MSG_RESULT(${bad}) |
| if test ${bad} = "yes" ;then |
| AC_MSG_WARN([ ]) |
| AC_MSG_WARN([********************************************************]) |
| AC_MSG_WARN([* The glibc headers on this machine have a serious bug *]) |
| AC_MSG_WARN([* in /usr/include/bits/mathinline.h This bug affects *]) |
| AC_MSG_WARN([* all floating point code, not only LAME, but all code *]) |
| AC_MSG_WARN([* built on this machine. Upgrading to glibc 2.1.3 is *]) |
| AC_MSG_WARN([* strongly urged to correct the problem. *]) |
| AC_MSG_WARN([*Note: that upgrading glibc will not fix any previously*]) |
| AC_MSG_WARN([* built programs; this is a compile-time bug. *]) |
| AC_MSG_WARN([* To work around the problem for this build of LAME, *]) |
| AC_MSG_WARN([* autoconf is disabling all math inlining. This will *]) |
| AC_MSG_WARN([* hurt LAME performace but is necessary for LAME to *]) |
| AC_MSG_WARN([* work correctly. Once glibc is upgraded, rerun *]) |
| AC_MSG_WARN([* configure and make to build with inlining. *]) |
| AC_MSG_WARN([********************************************************]) |
| AC_MSG_WARN([ ]) |
| |
| AC_DEFINE(__NO_MATH_INLINES, 1, work around a glibc bug) |
| fi;; |
| esac |
| |
| |
| dnl configure use of VBR bitrate histogram |
| dnl todo: always use yes as default, use simulation instead ? |
| AC_MSG_CHECKING(use of VBR bitrate histogram) |
| if test "x${HAVE_TERMCAP}" != "x"; then |
| TERMCAP_DEFAULT="yes" |
| else |
| TERMCAP_DEFAULT="no" |
| fi |
| AC_ARG_ENABLE(brhist, |
| [ --disable-brhist Include the VBR bitrate histogram feature] |
| [ [default=yes]], |
| CONFIG_BRHIST="${enableval}", CONFIG_BRHIST="yes") |
| if test "${CONFIG_BRHIST}" != "no" ; then |
| AC_DEFINE(BRHIST, 1, enable VBR bitrate histogram) |
| |
| if test "${TERMCAP_DEFAULT}" = "yes" ; then |
| FRONTEND_LDADD="-l${HAVE_TERMCAP} ${FRONTEND_LDADD}" |
| CONFIG_BRHIST="yes, with ${HAVE_TERMCAP}" |
| AC_DEFINE(HAVE_TERMCAP, 1, have termcap) |
| else |
| CONFIG_BRHIST="yes, simulated termcap" |
| fi |
| fi |
| AC_MSG_RESULT(${CONFIG_BRHIST}) |
| AM_CONDITIONAL(WITH_BRHIST, test "${CONFIG_BRHIST}" != "no") |
| |
| |
| |
| dnl ### processor specific options ### |
| WITH_VECTOR=no |
| case $host_cpu in |
| x86_64|amd64) |
| CPUTYPE="no" |
| if test $ac_cv_header_xmmintrin_h = yes ; then |
| WITH_XMM=yes |
| WITH_VECTOR=yes |
| fi |
| |
| AC_DEFINE(TAKEHIRO_IEEE754_HACK, 1, IEEE754 compatible machine) |
| AC_DEFINE(USE_FAST_LOG, 1, faster log implementation with less but enoug |
| h precission) |
| ;; |
| *86) |
| CPUTYPE="i386" |
| if test $ac_cv_header_xmmintrin_h = yes ; then |
| WITH_XMM=yes |
| WITH_VECTOR=yes |
| fi |
| |
| # use internal knowledge of the IEEE 754 layout |
| AC_DEFINE(TAKEHIRO_IEEE754_HACK, 1, IEEE754 compatible machine) |
| AC_DEFINE(USE_FAST_LOG, 1, faster log implementation with less but enough precission) |
| ;; |
| powerpc) |
| CPUTYPE="no" |
| |
| # use internal knowledge of the IEEE 754 layout |
| AC_DEFINE(TAKEHIRO_IEEE754_HACK, 1, IEEE754 compatible machine) |
| |
| # The following should not get enabled on a G5. HOWTO check for a G5? |
| AC_DEFINE(USE_FAST_LOG, 1, faster log implementation with less but enough precission) |
| ;; |
| *) |
| CPUTYPE="no" |
| ;; |
| esac |
| |
| # which vector code do we support to build on this machine? |
| AM_CONDITIONAL(WITH_XMM, test "x${WITH_XMM}" = "xyes") |
| |
| # needs to be defined to link in the internal vector lib |
| AM_CONDITIONAL(WITH_VECTOR, test "x${WITH_VECTOR}" = "xyes") |
| AC_MSG_CHECKING(if I have to build the internal vector lib) |
| AC_MSG_RESULT(${WITH_VECTOR}) |
| |
| AC_MSG_CHECKING(for FLOAT8 as float) |
| AC_ARG_ENABLE(all-float, |
| [ --enable-all-float Whether to make all floting point variables as float, not double] |
| [ [default=no]], |
| CONFIG_ALLFLOAT="${enableval}", CONFIG_ALLFLOAT="no") |
| case "${CONFIG_ALLFLOAT}" in |
| no) |
| ;; |
| yes) |
| AC_DEFINE(FLOAT8, float, float instead of double) |
| ;; |
| *) |
| AC_MSG_ERROR(bad value �${CONFIG_ALLFLOAT}� for all-float option) |
| ;; |
| esac |
| AC_MSG_RESULT(${CONFIG_ALLFLOAT}) |
| |
| |
| |
| AC_PATH_PROG(NASM, nasm, no) |
| case "${NASM}" in |
| no) |
| ;; |
| *) |
| AC_MSG_CHECKING(for assembler routines for this processor type) |
| for recurse_over in ${ASM_FOR_ARCH} |
| do |
| if test "${CPUTYPE}" = "${recurse_over}"; then |
| include_asm_routines="yes" |
| fi |
| |
| case $host_os in |
| *darwin*) |
| # currently we have problems because of a wrong |
| # libtool hack in the darwin case (for nasm code) |
| include_asm_routines="no" |
| ;; |
| esac |
| done |
| if test "x${include_asm_routines}" = "xyes"; then |
| AC_DEFINE(HAVE_NASM, 1, have nasm) |
| AC_DEFINE(MMX_choose_table, 1, use MMX version of choose_table) |
| else |
| include_asm_routines="no" |
| NASM="no" |
| fi |
| AC_MSG_RESULT(${include_asm_routines}) |
| ;; |
| esac |
| AM_CONDITIONAL(HAVE_NASM, test "${NASM}" != "no") |
| |
| case $host_os in |
| *cygwin*|*mingw32*) |
| CYGWIN=yes |
| NASM_FORMAT="-f win32 -DWIN32" |
| ;; |
| *darwin*) |
| NASM_FORMAT="-f macho" |
| ;; |
| *) |
| CYGWIN=no |
| NASM_FORMAT="-f elf" |
| ;; |
| esac |
| |
| # |
| # 'expopt' is used for "additional optimizations", not for optimizations which |
| # are marked as "experimental" in the guide for the compiler. |
| # They are "experimental" here in the LAME project (at least |
| # "--enable-expopt=full"). |
| # |
| AC_MSG_CHECKING(for additional optimizations) |
| AC_ARG_ENABLE(expopt, |
| [ --enable-expopt=full,norm Whether to enable experimental optimizations] |
| [ [default=no]], |
| CONFIG_EXPOPT="${enableval}", CONFIG_EXPOPT="no") |
| |
| if test "x$GCC" = "xyes"; then |
| # gcc defaults. OS specific options go in versious sections below |
| # from the gcc man pages: "there is no reason to use -pedantic" |
| if test "x${with_gnu_ld}" = "xyes"; then |
| CFLAGS="-Wall -pipe ${CFLAGS}" |
| else |
| # some vendor ld's don't like '-pipe' |
| CFLAGS="-Wall ${CFLAGS}" |
| fi |
| |
| # GCC version specific generic options |
| case "${GCC_version}" in |
| 2.96*) |
| # for buggy version of gcc shipped with RH7.1, back of on some |
| # optimizations |
| OPTIMIZATION="-O -fomit-frame-pointer -ffast-math \ |
| -funroll-loops" |
| OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ |
| -fsched-interblock -fbranch-count-reg -fforce-addr \ |
| -fforce-mem" |
| ;; |
| 3.0*) |
| # -funroll-loops seems to produce buggy code with gcc 3.0.3 |
| OPTIMIZATION="-O -fomit-frame-pointer -ffast-math" |
| OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ |
| -fbranch-count-reg -fforce-addr -fforce-mem" |
| ;; |
| 3.*|4.0.*|4.1.*) |
| # -fomit-frame-pointer seems to be buggy on cygwin |
| case ${host_os} in |
| *cygwin*) |
| OMIT_FRAME_POINTER= |
| ;; |
| *) |
| OMIT_FRAME_POINTER=-fomit-frame-pointer |
| ;; |
| esac |
| |
| OPTIMIZATION="-O3 ${OMIT_FRAME_POINTER} -ffast-math" |
| OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ |
| -fbranch-count-reg -fforce-addr -fforce-mem" |
| ;; |
| 4.*) |
| OPTIMIZATION="-O3 -fomit-frame-pointer -ffast-math" |
| OPTIMIZATION_FULL="-fbranch-count-reg -fforce-addr" |
| ;; |
| *) |
| # default |
| OPTIMIZATION="-O3 ${OMIT_FRAME_POINTER} -ffast-math \ |
| -funroll-loops" |
| OPTIMIZATION_FULL="-fbranch-count-reg -fforce-addr" |
| ;; |
| esac |
| |
| |
| # GCC version independend generic options |
| OPTIMIZATION_NORM="-fschedule-insns2" |
| |
| |
| # generic CPU specific options |
| case ${host_cpu} in |
| sparc) |
| case "${GCC_version}" in |
| 3.0*) |
| ;; |
| 3.*|4.*) |
| # doesn't work on 3.0.x, but on 3.[12] and |
| # hopefully on every other release after that too |
| if test -x /usr/bin/isalist; then |
| /usr/bin/isalist | grep sparcv8plus \ |
| >/dev/null 2>&1 && \ |
| OPTIMIZATION="${OPTIMIZATION} \ |
| -mcpu=ultrasparc \ |
| -mtune=ultrasparc" |
| fi |
| ;; |
| esac |
| ;; |
| *86) |
| case "${GCC_version}" in |
| 3.*|4.*) |
| OPTIMIZATION="${OPTIMIZATION} \ |
| -maccumulate-outgoing-args" |
| ;; |
| esac |
| ;; |
| esac |
| |
| expopt_msg_result_printed=no |
| case "${CONFIG_EXPOPT}" in |
| no) |
| # if someone supplies own CFLAGS, we don't add our own |
| if test "x${ac_save_CFLAGS}" != "x"; then |
| OPTIMIZATION="" |
| fi |
| ;; |
| norm|yes) |
| OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM}" |
| ;; |
| full) |
| OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM} \ |
| ${OPTIMIZATION_FULL}" |
| |
| # some hardware dependend options |
| case "${GCC_version}" in |
| 2.9*|3.*|4.0.*|4.1.*) |
| # "new" GCC, use some "new" CPU specific optimizations |
| # use -mtune instead of -m486 or -mcpu= etc, since they are |
| # deprecated by GCC <rbrito> |
| case ${host_cpu} in |
| *486) |
| OPTIMIZATION="${OPTIMIZATION} -mcpu=i486 \ |
| -mfancy-math-387" |
| ;; |
| *586) |
| OPTIMIZATION="${OPTIMIZATION} -mcpu=pentium \ |
| -march=pentium -mfancy-math-387" |
| ;; |
| *686) |
| OPTIMIZATION="${OPTIMIZATION} -mcpu=pentiumpro \ |
| -march=pentiumpro -mfancy-math-387 \ |
| -malign-double" |
| ;; |
| *86) |
| OPTIMIZATION="${OPTIMIZATION} -mfancy-math-387" |
| ;; |
| alpha*) |
| OPTIMIZATION="${OPTIMIZATION} -mfp-regs" |
| AC_DEFINE(FLOAT, double, double is faster than float on Alpha) |
| # add "-mcpu=21164a -Wa,-m21164a" to optimize |
| # for 21164a (ev56) CPU |
| ;; |
| *) |
| OPTIMIZATION="${OPTIMIZATION} -fdelayed-branch" |
| ;; |
| esac |
| ;; |
| 4.*) |
| case ${host_cpu} in |
| *486) |
| OPTIMIZATION="${OPTIMIZATION} -march=i486" |
| ;; |
| *586) |
| OPTIMIZATION="${OPTIMIZATION} -march=i586 \ |
| -mtune=native" |
| ;; |
| *686) |
| OPTIMIZATION="${OPTIMIZATION} -march=i686 \ |
| -mtune=native" |
| ;; |
| *86) |
| OPTIMIZATION="${OPTIMIZATION} -march=generic \ |
| -mtune=native" |
| ;; |
| esac |
| ;; |
| *) |
| # no special optimization for other versions |
| AC_MSG_RESULT(no) |
| expopt_msg_result_printed=yes |
| AC_MSG_WARN(LAME doesn't know about your version (${GCC_version}) of gcc, please report it to lame-dev@lists.sourceforge.net. Please make sure you try the latest LAME version first!) |
| ;; |
| esac |
| ;; |
| *) |
| AC_MSG_ERROR(bad value �${CONFIG_EXPOPT}� for expopt option) |
| ;; |
| esac |
| |
| if test "${expopt_msg_result_printed}" = "no" ; then |
| AC_MSG_RESULT(${CONFIG_EXPOPT}) |
| fi |
| else |
| AC_MSG_RESULT(no) |
| fi |
| |
| |
| |
| |
| |
| AC_MSG_CHECKING(for debug options) |
| AC_ARG_ENABLE(debug, |
| [ --enable-debug=alot,norm Enable debugging (disables optimizations)] |
| [ [default=no]], |
| CONFIG_DEBUG="${enableval}", CONFIG_DEBUG="no") |
| |
| if test "x$GCC" = "xyes"; then |
| DEBUG_NORM_OPT="-O -g -Wall" |
| DEBUG_ANOYING="-Wbad-function-cast -Wcast-align \ |
| -Wcast-qual -Wchar-subscripts -Wconversion \ |
| -Wmissing-prototypes -Wnested-externs -Wpointer-arith \ |
| -Wredundant-decls -Wshadow -Wstrict-prototypes \ |
| -Wwrite-strings -Winline \ |
| -Wformat -Wswitch -Waggregate-return -Wmissing-noreturn \ |
| -Wimplicit-int -fno-builtin" |
| |
| case "${CONFIG_DEBUG}" in |
| no) |
| AC_DEFINE(NDEBUG, 1, no debug build) |
| ;; |
| norm|yes) |
| AC_DEFINE(ABORTFP, 1, debug define) |
| OPTIMIZATION="${DEBUG_NORM_OPT}" |
| ;; |
| anoying) |
| AC_DEFINE(ABORTFP, 1, debug define) |
| OPTIMIZATION="${DEBUG_NORM_OPT} ${DEBUG_ANOYING}" |
| ;; |
| alot) |
| AC_DEFINE(ABORTFP, 1, debug define) |
| AC_DEFINE(DEBUG, 1, alot of debug output) |
| OPTIMIZATION="${DEBUG_NORM_OPT}" |
| ;; |
| *) |
| AC_MSG_ERROR(bad value �${CONFIG_DEBUG}� for debug option) |
| esac |
| |
| AC_MSG_RESULT(${CONFIG_DEBUG}) |
| else |
| AC_MSG_RESULT(no) |
| fi |
| |
| |
| |
| dnl ### system specific options ### |
| |
| ########################################################################## |
| # LINUX on Digital/Compaq Alpha CPUs |
| ########################################################################## |
| case $host in |
| alpha*-*-linux*) |
| |
| ################################################################ |
| #### Check if 'ccc' is in our path |
| ################################################################ |
| if test "`which ccc 2>/dev/null | grep -c ccc`" != "0" ; then |
| # Compaq's C Compiler |
| CC=ccc |
| |
| ################################################################ |
| #### set 'OPTIMIZATION = -arch host -tune host' |
| #### to generate/tune instructions for this machine |
| #### 'OPTIMIZATION += -migrate -fast -inline speed -unroll 0' |
| #### tweak to run as fast as possible :) |
| #### 'OPTIMIZATION += -w0' |
| #### set warning and linking flags |
| ################################################################ |
| OPTIMIZATION="-arch host -tune host" |
| OPTIMIZATION="-migrate -fast -inline speed -unroll 0 $OPTIMIZATION" |
| OPTIMIZATION="-w0 $OPTIMIZATION" |
| |
| |
| ################################################################ |
| #### to debug, uncomment |
| ################################################################ |
| # For Debugging |
| #OPTIMIZATION="-g3 $OPTIMIZATION" |
| |
| ################################################################ |
| #### define __DECALPHA__ (i was getting re-declaration warnings |
| #### in machine.h |
| ################################################################ |
| # Define DEC Alpha |
| AC_DEFINE(__DECALPHA__, 1, we're on DEC Alpha) |
| fi # gcc or ccc? |
| ;; # alpha |
| |
| |
| ########################################################################## |
| # SunOS |
| ########################################################################## |
| sparc-*-sunos4*) |
| if test CC = "cc"; then |
| OPTIMIZATION="-O -xCC" |
| MAKEDEP="-xM" |
| # for gcc, use instead: |
| # CC="gcc" |
| # OPTIMIZATION="-O" |
| # MAKEDEP="-M" |
| AC_MSG_WARN([Please contact lame@lists.sourceforge.net with the output of the configure run and the file config.cache. Thank you for your cooperation.]) |
| fi |
| ;; #SunOS |
| |
| ########################################################################## |
| # SGI |
| ########################################################################## |
| *-sgi-irix*) |
| if test CC = "cc"; then |
| OPTIMIZATION="-O3 -woff all" |
| fi |
| ;; # SGI |
| |
| ########################################################################## |
| # Compaq Alpha running Dec Unix (OSF) |
| ########################################################################## |
| alpha*-dec-osf*) |
| if test CC = "cc"; then |
| OPTIMIZATION="-fast -O3 -std -g3 -non_shared" |
| fi |
| ;; #OSF |
| esac |
| |
| # todo: include the following tests in the case-list |
| UNAME=`uname` |
| ARCH=`uname -m` |
| |
| ########################################################################### |
| # MOSXS (Rhapsody PPC) |
| ########################################################################### |
| if test "$UNAME" = "Rhapsody"; then |
| # CC="cc" # should be handled already by autoconf |
| MAKEDEP="-make" |
| fi |
| |
| ########################################################################### |
| # MAC OSX Darwin PPC |
| ########################################################################### |
| if test "$UNAME" = "Darwin"; then |
| MAKEDEP="-make" |
| CFLAGS="$CFLAGS -fno-common" |
| fi |
| |
| |
| ########################################################################## |
| # OS/2 |
| ########################################################################## |
| # Properly installed EMX runtime & development package is a prerequisite. |
| # tools I used: make 3.76.1, uname 1.12, sed 2.05, PD-ksh 5.2.13 |
| # |
| ########################################################################## |
| if test "$UNAME" = "OS/2"; then |
| SHELL=sh |
| #CC=gcc # should already be handled by configure |
| |
| # file extension should already be handled by automake (I don't know, |
| # please give feedback! |
| #FILE_EXTENSION=".exe" |
| |
| # Uncomment & inspect the GTK lines to use MP3x GTK frame analyzer. |
| # Properly installed XFree86/devlibs & GTK+ is a prerequisite. |
| # The following works for me using Xfree86/OS2 3.3.5 and GTK+ 1.2.3: |
| # AC_DEFINE(HAVE_GTK, 1, have GTK) |
| # AC_DEFINE(__ST_MT_ERRNO__, 1) |
| # INCLUDES="-IC:/XFree86/include/gtk12 -IC:/XFree86/include/glib12 \ |
| # -IC:/XFree86/include $INCLUDES" |
| # FRONTEND_LDFLAGS="-LC:/XFree86/lib -lgtk12 -lgdk12 -lgmodule -lglib12 \ |
| # -lXext -lX11 -lshm -lbsd -lsocket -lm $FRONTEND_LDFLAGS" |
| # FRONTEND_CFLAGS="-Zmtd -Zsysv-signals -Zbin-files $FRONTEND_CFLAGS" |
| fi |
| |
| ########################################################################### |
| # AmigaOS |
| ########################################################################### |
| # Type 'Make ARCH=PPC' for PowerUP and 'Make ARCH=WOS' for WarpOS |
| # |
| ########################################################################### |
| if test "$UNAME" = "AmigaOS" ; then |
| CC="gcc -noixemul" |
| OPTIMIZATION="$OPTIMIZATION -m68020-60 -m68881" |
| MAKEDEP="-MM" |
| if test "$ARCH" = "WOS"; then |
| CC="ppc-amigaos-gcc -warpup" |
| OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" |
| AR="ppc-amigaos-ar" |
| RANLIB="ppc-amigaos-ranlib" |
| fi |
| if test "$ARCH",PPC; then |
| CC="ppc-amigaos-gcc" |
| OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" |
| AR="ppc-amigaos-ar" |
| RANLIB="ppc-amigaos-ranlib" |
| fi |
| fi |
| |
| |
| CFLAGS="${OPTIMIZATION} ${CFLAGS}" |
| LDADD="${LDADD}" |
| FRONTEND_LDADD="${FRONTEND_LDADD} ${CONFIG_MATH_LIB}" |
| |
| |
| AC_SUBST(INCLUDES) |
| |
| AC_SUBST(FRONTEND_LDFLAGS) |
| AC_SUBST(FRONTEND_CFLAGS) |
| AC_SUBST(FRONTEND_LDADD) |
| AC_SUBST(CONFIG_MATH_LIB) |
| AC_SUBST(LDADD) |
| |
| AC_SUBST(LIB_MAJOR_VERSION) |
| AC_SUBST(LIB_MINOR_VERSION) |
| |
| AC_SUBST(NASM) |
| AC_SUBST(NASM_FORMAT) |
| |
| AC_SUBST(MAKEDEP) |
| AC_SUBST(RM_F) |
| |
| AC_SUBST(LIBTOOL_DEPS) |
| |
| AC_SUBST(WITH_FRONTEND) |
| AC_SUBST(WITH_MP3X) |
| AC_SUBST(WITH_MP3RTP) |
| |
| AC_SUBST(CPUTYPE) |
| AC_SUBST(CPUCCODE) |
| |
| AC_SUBST(CONFIG_DEFS) |
| |
| AC_CONFIG_FILES([Makefile libmp3lame/Makefile libmp3lame/i386/Makefile libmp3lame/vector/Makefile frontend/Makefile mpglib/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile include/Makefile Dll/Makefile misc/Makefile debian/Makefile dshow/Makefile ACM/Makefile ACM/ADbg/Makefile ACM/ddk/Makefile ACM/tinyxml/Makefile lame.spec mac/Makefile macosx/Makefile macosx/English.lproj/Makefile macosx/LAME.xcodeproj/Makefile] vc_solution/Makefile) |
| |
| AC_OUTPUT |