Home | History | Annotate | Download | only in libvorbis
      1 dnl Process this file with autoconf to produce a configure script
      2 
      3 dnl ------------------------------------------------
      4 dnl Initialization and Versioning
      5 dnl ------------------------------------------------
      6 
      7 
      8 AC_INIT([libvorbis],[1.3.1],[vorbis-dev (a] xiph.org])
      9 
     10 AC_CONFIG_SRCDIR([lib/mdct.c])
     11 
     12 AC_CANONICAL_TARGET([])
     13 
     14 AM_INIT_AUTOMAKE($PACKAGE_NAME,$PACKAGE_VERSION)
     15 AM_MAINTAINER_MODE
     16 AM_CONFIG_HEADER([config.h])
     17 
     18 dnl Add parameters for aclocal
     19 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4")
     20 
     21 dnl Library versioning
     22 dnl - library source changed -> increment REVISION
     23 dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
     24 dnl - interfaces added -> increment AGE
     25 dnl - interfaces removed -> AGE = 0
     26 
     27 V_LIB_CURRENT=4
     28 V_LIB_REVISION=4
     29 V_LIB_AGE=4
     30 
     31 VF_LIB_CURRENT=6
     32 VF_LIB_REVISION=2
     33 VF_LIB_AGE=3
     34 
     35 VE_LIB_CURRENT=2
     36 VE_LIB_REVISION=7
     37 VE_LIB_AGE=0
     38 
     39 AC_SUBST(V_LIB_CURRENT)
     40 AC_SUBST(V_LIB_REVISION)
     41 AC_SUBST(V_LIB_AGE)
     42 AC_SUBST(VF_LIB_CURRENT)
     43 AC_SUBST(VF_LIB_REVISION)
     44 AC_SUBST(VF_LIB_AGE)
     45 AC_SUBST(VE_LIB_CURRENT)
     46 AC_SUBST(VE_LIB_REVISION)
     47 AC_SUBST(VE_LIB_AGE)
     48 
     49 dnl --------------------------------------------------  
     50 dnl Check for programs
     51 dnl --------------------------------------------------  
     52 
     53 dnl save $CFLAGS since AC_PROG_CC likes to insert "-g -O2"
     54 dnl if $CFLAGS is blank
     55 cflags_save="$CFLAGS"
     56 AC_PROG_CC
     57 AC_PROG_CPP
     58 CFLAGS="$cflags_save"
     59 
     60 AC_C_INLINE
     61 
     62 AC_LIBTOOL_WIN32_DLL
     63 AC_PROG_LIBTOOL
     64 AM_PROG_CC_C_O
     65 
     66 dnl Check for doxygen
     67 if test "x$enable_docs" = xyes; then
     68   AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, true, false)
     69   if test $HAVE_DOXYGEN = "false"; then
     70     AC_MSG_WARN([*** doxygen not found, API documentation will not be built])
     71   fi
     72 else
     73   HAVE_DOXYGEN=false
     74 fi
     75 AM_CONDITIONAL(HAVE_DOXYGEN,$HAVE_DOXYGEN)
     76 
     77 dnl latex tools for the specification document
     78 AC_ARG_ENABLE(docs,
     79 	AC_HELP_STRING([--enable-docs], [build the documentation]))
     80 
     81 if test "x$enable_docs" = xyes; then
     82   AC_CHECK_PROGS([PDFLATEX], pdflatex, [/bin/false])
     83   AC_CHECK_PROGS([HTLATEX], htlatex, [/bin/false])
     84   if test "x$PDFLATEX" = x/bin/false || test "x$HTLATEX" = x/bin/false; then
     85     enable_docs=no
     86     AC_MSG_WARN([Documentation will not be built!])
     87   fi
     88 fi
     89 
     90 AM_CONDITIONAL(BUILD_DOCS, [test "x$enable_docs" = xyes])
     91 
     92 AC_ARG_ENABLE(examples, 
     93   AS_HELP_STRING([--enable-examples], [build the examples])) 
     94  	
     95 AM_CONDITIONAL(BUILD_EXAMPLES, [test "x$enable_examples" = xyes]) 
     96 
     97 dnl --------------------------------------------------
     98 dnl Set build flags based on environment
     99 dnl --------------------------------------------------
    100 
    101 dnl Set some target options
    102 
    103 cflags_save="$CFLAGS"
    104 if test -z "$GCC"; then
    105 	case $host in 
    106 	*-*-irix*)
    107 		dnl If we're on IRIX, we wanna use cc even if gcc 
    108 		dnl is there (unless the user has overriden us)...
    109 		if test -z "$CC"; then
    110 			CC=cc
    111 		fi
    112 		DEBUG="-g -signed" 
    113 		CFLAGS="-O2 -w -signed"
    114 		PROFILE="-p -g3 -O2 -signed" ;;
    115 	sparc-sun-solaris*)
    116 		DEBUG="-v -g"
    117 		CFLAGS="-xO4 -fast -w -fsimple -native -xcg92"
    118 		PROFILE="-v -xpg -g -xO4 -fast -native -fsimple -xcg92 -Dsuncc" ;;
    119 	*)
    120 		DEBUG="-g"
    121 		CFLAGS="-O"
    122 		PROFILE="-g -p" ;;
    123         esac
    124 else
    125 
    126 	AC_MSG_CHECKING([GCC version])
    127 	GCC_VERSION=`$CC -dumpversion`
    128 	AC_MSG_RESULT([$GCC_VERSION])
    129 	case $host in 
    130 	*86-*-linux*)
    131 		DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
    132 		CFLAGS="-O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char"
    133 #              	PROFILE="-Wall -Wextra -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char -fno-inline -static"
    134 		PROFILE="-Wall -Wextra -pg -g -O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char -fno-inline"
    135 
    136 		# glibc < 2.1.3 has a serious FP bug in the math inline header
    137 		# that will cripple Vorbis.  Look to see if the magic FP stack
    138 		# clobber is missing in the mathinline header, thus indicating
    139 		# the buggy version
    140 
    141 		AC_EGREP_CPP(log10.*fldlg2.*fxch,[
    142 				#define __LIBC_INTERNAL_MATH_INLINES 1
    143 			     	#define __OPTIMIZE__
    144 				#include <math.h>
    145 				],bad=maybe,bad=no)
    146 		if test ${bad} = "maybe" ;then
    147 		      AC_EGREP_CPP(log10.*fldlg2.*fxch.*st\([[0123456789]]*\),
    148 					[
    149 					#define __LIBC_INTERNAL_MATH_INLINES 1
    150 				     	#define __OPTIMIZE__
    151 					#include <math.h>
    152 					],bad=no,bad=yes)
    153 		fi
    154  		if test ${bad} = "yes" ;then
    155  AC_MSG_WARN([                                                        ])
    156  AC_MSG_WARN([********************************************************])
    157  AC_MSG_WARN([* The glibc headers on this machine have a serious bug *])
    158  AC_MSG_WARN([* in /usr/include/bits/mathinline.h  This bug affects  *])
    159  AC_MSG_WARN([* all floating point code, not just Ogg, built on this *])
    160  AC_MSG_WARN([* machine.  Upgrading to glibc 2.1.3 is strongly urged *])
    161  AC_MSG_WARN([* to correct the problem.  Note that upgrading glibc   *])
    162  AC_MSG_WARN([* will not fix any previously built programs; this is  *])
    163  AC_MSG_WARN([* a compile-time time bug.                             *])
    164  AC_MSG_WARN([* To work around the problem for this build of Ogg,    *])
    165  AC_MSG_WARN([* autoconf is disabling all math inlining.  This will  *])
    166  AC_MSG_WARN([* hurt Ogg performace but is necessary for an Ogg that *])
    167  AC_MSG_WARN([* will actually work.  Once glibc is upgraded, rerun   *])
    168  AC_MSG_WARN([* configure and make to build with inlining.           *])
    169  AC_MSG_WARN([********************************************************])
    170  AC_MSG_WARN([                                                        ])
    171 
    172   		CFLAGS=${OPT}" -D__NO_MATH_INLINES"
    173   		PROFILE=${PROFILE}" -D__NO_MATH_INLINES"
    174   		fi;;
    175         powerpc-*-linux*spe) 
    176  	        DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES" 
    177  	        CFLAGS="-O3 -Wall -Wextra -ffast-math -mfused-madd -D_REENTRANT" 
    178  	        PROFILE="-pg -g -O3 -ffast-math -mfused-madd -D_REENTRANT";; 
    179 	powerpc-*-linux*)
    180 		DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES"
    181 		CFLAGS="-O3 -Wall -Wextra -ffast-math -mfused-madd -mcpu=750 -D_REENTRANT"
    182 		PROFILE="-pg -g -O3 -ffast-math -mfused-madd -mcpu=750 -D_REENTRANT";;
    183 	*-*-linux*)
    184 		DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
    185 		CFLAGS="-O20 -Wall -Wextra -ffast-math -D_REENTRANT -fsigned-char"
    186 		PROFILE="-pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char";;
    187 	sparc-sun-*)
    188 		sparc_cpu=""
    189 		AC_MSG_CHECKING([if gcc supports -mv8])
    190 		old_cflags="$CFLAGS"
    191 		CFLAGS="$CFLAGS -mv8"
    192 		AC_TRY_COMPILE(, [return 0;], [
    193 			AC_MSG_RESULT([yes])
    194 			sparc_cpu="-mv8"
    195 		])
    196 		CFLAGS="$old_cflags"
    197 		DEBUG="-g -Wall -Wextra -D__NO_MATH_INLINES -fsigned-char $sparc_cpu"
    198 		CFLAGS="-O20 -Wall -Wextra -ffast-math -D__NO_MATH_INLINES -fsigned-char $sparc_cpu"
    199 		PROFILE="-pg -g -O20 -D__NO_MATH_INLINES -fsigned-char $sparc_cpu" ;;
    200 	*-*-darwin*)
    201 		DEBUG="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O0 -fsigned-char"
    202 		CFLAGS="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O4 -ffast-math -fsigned-char"
    203 		PROFILE="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -pg -O4 -ffast-math -fsigned-char";;
    204 	*-*-os2*)
    205 		# Use -W instead of -Wextra because gcc on OS/2 is an old version.
    206 		DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
    207 		CFLAGS="-O20 -Wall -W -ffast-math -D_REENTRANT -fsigned-char"
    208 		PROFILE="-pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char";;
    209  	*)
    210 		DEBUG="-g -Wall -Wextra -D__NO_MATH_INLINES -fsigned-char"
    211 		CFLAGS="-O20 -Wall -Wextra -D__NO_MATH_INLINES -fsigned-char"
    212 		PROFILE="-O20 -g -pg -D__NO_MATH_INLINES -fsigned-char" ;;
    213         esac
    214 
    215         AC_ADD_CFLAGS([-Wdeclaration-after-statement])
    216 fi
    217 CFLAGS="$CFLAGS $cflags_save"
    218 
    219 dnl --------------------------------------------------
    220 dnl Check for headers
    221 dnl --------------------------------------------------
    222 
    223 AC_CHECK_HEADER(memory.h,CFLAGS="$CFLAGS -DUSE_MEMORY_H",:)
    224 
    225 dnl --------------------------------------------------
    226 dnl Check for typedefs, structures, etc
    227 dnl --------------------------------------------------
    228 
    229 dnl none
    230 
    231 dnl --------------------------------------------------
    232 dnl Check for libraries
    233 dnl --------------------------------------------------
    234 
    235 AC_CHECK_LIB(m, cos, VORBIS_LIBS="-lm", VORBIS_LIBS="")
    236 AC_CHECK_LIB(pthread, pthread_create, pthread_lib="-lpthread", :)
    237 
    238 PKG_PROG_PKG_CONFIG
    239 
    240 HAVE_OGG=no
    241 if test "x$PKG_CONFIG" != "x"
    242 then
    243   PKG_CHECK_MODULES(OGG, ogg >= 1.0, HAVE_OGG=yes, HAVE_OGG=no)
    244 fi
    245 if test "x$HAVE_OGG" = "xno"
    246 then
    247   dnl fall back to the old school test
    248   XIPH_PATH_OGG(, AC_MSG_ERROR(must have Ogg installed!))
    249   libs_save=$LIBS
    250   LIBS="$OGG_LIBS $VORBIS_LIBS"
    251   AC_CHECK_FUNC(oggpack_writealign, , AC_MSG_ERROR(Ogg >= 1.0 required !))
    252   LIBS=$libs_save
    253 fi
    254 
    255 dnl --------------------------------------------------
    256 dnl Check for library functions
    257 dnl --------------------------------------------------
    258 
    259 AC_FUNC_ALLOCA
    260 AC_FUNC_MEMCMP
    261 
    262 dnl --------------------------------------------------
    263 dnl Do substitutions
    264 dnl --------------------------------------------------
    265 
    266 AC_SUBST(VORBIS_LIBS)
    267 AC_SUBST(DEBUG)
    268 AC_SUBST(PROFILE)
    269 AC_SUBST(pthread_lib)
    270 
    271 dnl The following line causes the libtool distributed with the source
    272 dnl to be replaced if the build system has a more recent version.
    273 AC_SUBST(LIBTOOL_DEPS)
    274 
    275 AC_OUTPUT([
    276 Makefile
    277 m4/Makefile
    278 lib/Makefile
    279 lib/modes/Makefile
    280 lib/books/Makefile
    281 lib/books/coupled/Makefile
    282 lib/books/uncoupled/Makefile
    283 lib/books/floor/Makefile
    284 doc/Makefile doc/vorbisfile/Makefile doc/vorbisenc/Makefile
    285 doc/Doxyfile
    286 include/Makefile include/vorbis/Makefile
    287 examples/Makefile
    288 test/Makefile
    289 vq/Makefile
    290 libvorbis.spec
    291 vorbis.pc
    292 vorbisenc.pc
    293 vorbisfile.pc
    294 vorbis-uninstalled.pc
    295 vorbisenc-uninstalled.pc
    296 vorbisfile-uninstalled.pc
    297 ])
    298