diff options
Diffstat (limited to 'vorbis/configure.ac')
-rw-r--r-- | vorbis/configure.ac | 304 |
1 files changed, 304 insertions, 0 deletions
diff --git a/vorbis/configure.ac b/vorbis/configure.ac new file mode 100644 index 0000000..28b0a14 --- /dev/null +++ b/vorbis/configure.ac @@ -0,0 +1,304 @@ +dnl Process this file with autoconf to produce a configure script + +dnl ------------------------------------------------ +dnl Initialization and Versioning +dnl ------------------------------------------------ + + +AC_INIT([libvorbis],[1.3.6],[vorbis-dev@xiph.org]) + +AC_CONFIG_MACRO_DIR([m4]) + +AC_CONFIG_SRCDIR([lib/mdct.c]) + +AC_CANONICAL_TARGET([]) + +AM_INIT_AUTOMAKE +AM_MAINTAINER_MODE + +dnl Add parameters for aclocal +AC_SUBST(ACLOCAL_AMFLAGS, "-I m4") + +dnl enable silent rules on automake 1.11 and later +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +dnl Library versioning +dnl - library source changed -> increment REVISION +dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0 +dnl - interfaces added -> increment AGE +dnl - interfaces removed -> AGE = 0 + +V_LIB_CURRENT=4 +V_LIB_REVISION=8 +V_LIB_AGE=4 + +VF_LIB_CURRENT=6 +VF_LIB_REVISION=7 +VF_LIB_AGE=3 + +VE_LIB_CURRENT=2 +VE_LIB_REVISION=11 +VE_LIB_AGE=0 + +AC_SUBST(V_LIB_CURRENT) +AC_SUBST(V_LIB_REVISION) +AC_SUBST(V_LIB_AGE) +AC_SUBST(VF_LIB_CURRENT) +AC_SUBST(VF_LIB_REVISION) +AC_SUBST(VF_LIB_AGE) +AC_SUBST(VE_LIB_CURRENT) +AC_SUBST(VE_LIB_REVISION) +AC_SUBST(VE_LIB_AGE) + +dnl -------------------------------------------------- +dnl Check for programs +dnl -------------------------------------------------- + +dnl save $CFLAGS since AC_PROG_CC likes to insert "-g -O2" +dnl if $CFLAGS is blank +cflags_save="$CFLAGS" +AC_PROG_CC +AC_PROG_CPP +CFLAGS="$cflags_save" + +AC_C_INLINE + +AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL +AM_PROG_CC_C_O + +dnl Check for doxygen +if test "x$enable_docs" = xyes; then + AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, true, false) + if test $HAVE_DOXYGEN = "false"; then + AC_MSG_WARN([*** doxygen not found, API documentation will not be built]) + fi +else + HAVE_DOXYGEN=false +fi +AM_CONDITIONAL(HAVE_DOXYGEN,$HAVE_DOXYGEN) + +dnl latex tools for the specification document +AC_ARG_ENABLE(docs, + AC_HELP_STRING([--enable-docs], [build the documentation])) + +if test "x$enable_docs" = xyes; then + AC_CHECK_PROGS([PDFLATEX], pdflatex, [/bin/false]) + AC_CHECK_PROGS([HTLATEX], htlatex, [/bin/false]) + if test "x$PDFLATEX" = x/bin/false || test "x$HTLATEX" = x/bin/false; then + enable_docs=no + AC_MSG_WARN([Documentation will not be built!]) + fi +fi + +AM_CONDITIONAL(BUILD_DOCS, [test "x$enable_docs" = xyes]) + +AC_ARG_ENABLE(examples, + AS_HELP_STRING([--enable-examples], [build the examples])) + +AM_CONDITIONAL(BUILD_EXAMPLES, [test "x$enable_examples" = xyes]) + +dnl -------------------------------------------------- +dnl Set build flags based on environment +dnl -------------------------------------------------- + +dnl Set some target options + +cflags_save="$CFLAGS" +if test -z "$GCC"; then + case $host in + *-*-irix*) + dnl If we're on IRIX, we wanna use cc even if gcc + dnl is there (unless the user has overriden us)... + if test -z "$CC"; then + CC=cc + fi + DEBUG="-g -signed" + CFLAGS="-O2 -w -signed" + PROFILE="-p -g3 -O2 -signed" ;; + sparc-sun-solaris*) + DEBUG="-v -g" + CFLAGS="-xO4 -fast -w -fsimple -native -xcg92" + PROFILE="-v -xpg -g -xO4 -fast -native -fsimple -xcg92 -Dsuncc" ;; + *) + DEBUG="-g" + CFLAGS="-O" + PROFILE="-g -p" ;; + esac +else + + AC_MSG_CHECKING([GCC version]) + GCC_VERSION=`$CC -dumpversion` + AC_MSG_RESULT([$GCC_VERSION]) + case $host in + *86-*-linux*) + DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char" + CFLAGS="-O3 -Wall -Wextra -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char" +# PROFILE="-Wall -Wextra -pg -g -O3 -ffast-math -D_REENTRANT -fsigned-char -fno-inline -static" + PROFILE="-Wall -Wextra -pg -g -O3 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char -fno-inline" + + # 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) + 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 + 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 just Ogg, built on this *]) + AC_MSG_WARN([* machine. Upgrading to glibc 2.1.3 is strongly urged *]) + AC_MSG_WARN([* to correct the problem. Note that upgrading glibc *]) + AC_MSG_WARN([* will not fix any previously built programs; this is *]) + AC_MSG_WARN([* a compile-time bug. *]) + AC_MSG_WARN([* To work around the problem for this build of Ogg, *]) + AC_MSG_WARN([* autoconf is disabling all math inlining. This will *]) + AC_MSG_WARN([* hurt Ogg performace but is necessary for an Ogg that *]) + AC_MSG_WARN([* will actually work. Once glibc is upgraded, rerun *]) + AC_MSG_WARN([* configure and make to build with inlining. *]) + AC_MSG_WARN([********************************************************]) + AC_MSG_WARN([ ]) + + CFLAGS=${OPT}" -D__NO_MATH_INLINES" + PROFILE=${PROFILE}" -D__NO_MATH_INLINES" + fi;; + powerpc-*-linux*spe) + DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES" + CFLAGS="-O3 -Wall -Wextra -ffast-math -mfused-madd -D_REENTRANT" + PROFILE="-pg -g -O3 -ffast-math -mfused-madd -D_REENTRANT";; + powerpc-*-linux*) + DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES" + CFLAGS="-O3 -Wall -Wextra -ffast-math -mfused-madd -mcpu=750 -D_REENTRANT" + PROFILE="-pg -g -O3 -ffast-math -mfused-madd -mcpu=750 -D_REENTRANT";; + *-*-linux*) + DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char" + CFLAGS="-O3 -Wall -Wextra -ffast-math -D_REENTRANT -fsigned-char" + PROFILE="-pg -g -O3 -ffast-math -D_REENTRANT -fsigned-char";; + sparc-sun-*) + sparc_cpu="" + AC_MSG_CHECKING([if gcc supports -mv8]) + old_cflags="$CFLAGS" + CFLAGS="$CFLAGS -mv8" + AC_TRY_COMPILE(, [return 0;], [ + AC_MSG_RESULT([yes]) + sparc_cpu="-mv8" + ]) + CFLAGS="$old_cflags" + DEBUG="-g -Wall -Wextra -D__NO_MATH_INLINES -fsigned-char $sparc_cpu" + CFLAGS="-O3 -Wall -Wextra -ffast-math -D__NO_MATH_INLINES -fsigned-char $sparc_cpu" + PROFILE="-pg -g -O3 -D__NO_MATH_INLINES -fsigned-char $sparc_cpu" ;; + *-*-darwin*) + DEBUG="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O0 -fsigned-char" + CFLAGS="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O3 -ffast-math -fsigned-char" + PROFILE="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -pg -O3 -ffast-math -fsigned-char";; + *-*-os2*) + # Use -W instead of -Wextra because gcc on OS/2 is an old version. + DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char" + CFLAGS="-O3 -Wall -W -ffast-math -D_REENTRANT -fsigned-char" + PROFILE="-pg -g -O3 -ffast-math -D_REENTRANT -fsigned-char";; + *) + DEBUG="-g -Wall -Wextra -D__NO_MATH_INLINES -fsigned-char" + CFLAGS="-O3 -Wall -Wextra -D__NO_MATH_INLINES -fsigned-char" + PROFILE="-O3 -g -pg -D__NO_MATH_INLINES -fsigned-char" ;; + esac + + AC_ADD_CFLAGS([-Wdeclaration-after-statement]) +fi +CFLAGS="$CFLAGS $cflags_save" + +dnl -------------------------------------------------- +dnl Check for headers +dnl -------------------------------------------------- + +AC_CHECK_HEADER(memory.h,CFLAGS="$CFLAGS -DUSE_MEMORY_H",:) + +dnl -------------------------------------------------- +dnl Check for typedefs, structures, etc +dnl -------------------------------------------------- + +dnl none + +dnl -------------------------------------------------- +dnl Check for libraries +dnl -------------------------------------------------- + +AC_CHECK_LIB(m, cos, VORBIS_LIBS="-lm", VORBIS_LIBS="") +AC_CHECK_LIB(pthread, pthread_create, pthread_lib="-lpthread", :) + +PKG_PROG_PKG_CONFIG + +HAVE_OGG=no +if test "x$PKG_CONFIG" != "x" +then + PKG_CHECK_MODULES(OGG, ogg >= 1.0, HAVE_OGG=yes, HAVE_OGG=no) +fi +if test "x$HAVE_OGG" = "xno" +then + dnl fall back to the old school test + XIPH_PATH_OGG(, AC_MSG_ERROR(must have Ogg installed!)) + libs_save=$LIBS + LIBS="$OGG_LIBS $VORBIS_LIBS" + AC_CHECK_FUNC(oggpack_writealign, , AC_MSG_ERROR(Ogg >= 1.0 required !)) + LIBS=$libs_save +fi + +dnl -------------------------------------------------- +dnl Check for library functions +dnl -------------------------------------------------- + +AC_FUNC_ALLOCA +AC_FUNC_MEMCMP + +dnl -------------------------------------------------- +dnl Do substitutions +dnl -------------------------------------------------- + +AC_SUBST(VORBIS_LIBS) +AC_SUBST(DEBUG) +AC_SUBST(PROFILE) +AC_SUBST(pthread_lib) + +dnl The following line causes the libtool distributed with the source +dnl to be replaced if the build system has a more recent version. +AC_SUBST(LIBTOOL_DEPS) + +AC_CONFIG_FILES([ +Makefile +m4/Makefile +lib/Makefile +lib/modes/Makefile +lib/books/Makefile +lib/books/coupled/Makefile +lib/books/uncoupled/Makefile +lib/books/floor/Makefile +doc/Makefile doc/vorbisfile/Makefile doc/vorbisenc/Makefile doc/libvorbis/Makefile +doc/Doxyfile +include/Makefile include/vorbis/Makefile +examples/Makefile +test/Makefile +vq/Makefile +libvorbis.spec +vorbis.pc +vorbisenc.pc +vorbisfile.pc +vorbis-uninstalled.pc +vorbisenc-uninstalled.pc +vorbisfile-uninstalled.pc +]) +AC_CONFIG_HEADERS([config.h]) + +AC_OUTPUT |