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