diff options
author | Ron <ron@debian.org> | 2013-06-28 20:36:53 +0400 |
---|---|---|
committer | Ron <ron@debian.org> | 2013-06-28 23:36:24 +0400 |
commit | 5bac4f26cbf1745ad6564c6ac43bc653e8772a45 (patch) | |
tree | ec03ddadbe511ae4a8b20579e1baca97c1c167f7 /configure.ac | |
parent | e83a365b74bd676a761d7d285451b0e2c68a18cf (diff) |
More autoconf housekeeping
Drop the test for getopt, it's not used anywhere anymore.
Switch the last uses of AC_TRY_COMPILE to AC_COMPILE_IFELSE now.
The former is marked as obsolete, and this will leave no confusion
about which to cut and paste if new tests are added.
Double quote all the parameters to AC_LANG_SOURCE and AC_LANG_PROGRAM.
This is actually required, even if you can get away with not doing it
sometimes, so again set a good example for future changes to follow,
to hopefully avoid people getting bitten harder than they need to be.
Don't bother checking for alloca if we're never going to use it
(ie. if we have C99 variable-size array support).
The test for this is a bit sketchy anyway ... we separately test for
HAVE_ALLOCA_H and USE_ALLOCA, but the test for USE_ALLOCA depends upon
having alloca.h present, yet the use of these macros in stack_alloc.h
only tests for HAVE_ALLOCA_H inside of a test for USE_ALLOCA.
I'm not going to change this logic right now, since I don't know what
crazy system it was attempting to cater for, though I suspect it was
one that was not using the autoconf build system ... since with the
current test that combination should not be possible to obtain.
Use LT_LIB_M instead of the song and dance with testing for exp().
This should also work for BeOS which is what the exp test was added for.
It also means we don't unconditionally add -lm to everything via LIBS.
Use LIBM now instead of hardcoding -lm everywhere.
Use AS_HELP_STRING to format all option descriptions.
Don't bother to test for doxygen if using it is --disable'd.
Drop the SYMBOL_VISIBILITY export, it isn't used anywhere (we add the
compiler flag to CFLAGS).
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 334 |
1 files changed, 171 insertions, 163 deletions
diff --git a/configure.ac b/configure.ac index 824d4429..13d04b09 100644 --- a/configure.ac +++ b/configure.ac @@ -41,8 +41,12 @@ AC_PROG_CC_C99 AC_C_CONST AC_C_INLINE +AC_DEFINE([OPUS_BUILD], [], [This is a build of OPUS]) + #Use a hacked up version of autoconf's AC_C_RESTRICT because it's not #strong enough a test to detect old buggy versions of GCC (e.g. 2.95.3) +#Note: Both this and the test for variable-size arrays below are also +# done by AC_PROG_CC_C99, but not thoroughly enough apparently. AC_CACHE_CHECK([for C/C++ restrict keyword], ac_cv_c_restrict, [ac_cv_c_restrict=no # The order here caters to the fact that C++ does not require restrict. @@ -60,7 +64,8 @@ AC_CACHE_CHECK([for C/C++ restrict keyword], ac_cv_c_restrict, test "$ac_cv_c_restrict" != no && break done ]) - AH_VERBATIM([restrict], + +AH_VERBATIM([restrict], [/* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ @@ -74,43 +79,76 @@ AC_CACHE_CHECK([for C/C++ restrict keyword], ac_cv_c_restrict, # define _Restrict # define __restrict__ #endif]) - case $ac_cv_c_restrict in + +case $ac_cv_c_restrict in restrict) ;; no) AC_DEFINE([restrict], []) ;; *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; - esac - -AC_DEFINE([OPUS_BUILD], [], [This is a build of OPUS]) +esac AC_MSG_CHECKING(for C99 variable-size arrays) -AC_TRY_COMPILE( [], [static int x; char a[++x]; a[sizeof a - 1] = 0; int N; return a[0];], -[has_var_arrays=yes;AC_DEFINE([VAR_ARRAYS], [], [Use C99 variable-size arrays]) -], -has_var_arrays=no -) -AC_MSG_RESULT($has_var_arrays) - -AC_CHECK_HEADERS([alloca.h getopt.h]) -AC_MSG_CHECKING(for alloca) -AC_TRY_COMPILE( [#include <alloca.h>], [ -int foo=10; -int *array = alloca(foo); -], -[ -has_alloca=yes; -if test x$has_var_arrays = "xno" ; then -AC_DEFINE([USE_ALLOCA], [], [Make use of alloca]) -fi -], -has_alloca=no -) -AC_MSG_RESULT($has_alloca) - -AC_CHECK_FUNC(exp,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno]) -if test x"$fp_libm_not_needed" = xdunno; then - AC_CHECK_LIB([m], [exp], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=]) -fi -AC_SUBST([LIBM]) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], + [[static int x; char a[++x]; a[sizeof a - 1] = 0; int N; return a[0];]])], + [ has_var_arrays=yes + use_alloca="no (using var arrays)" + AC_DEFINE([VAR_ARRAYS], [1], [Use C99 variable-size arrays]) + ],[ + has_var_arrays=no + ]) +AC_MSG_RESULT([$has_var_arrays]) + +AS_IF([test "$has_var_arrays" = "no"], + [ + AC_CHECK_HEADERS([alloca.h]) + AC_MSG_CHECKING(for alloca) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alloca.h>]], + [[int foo=10; int *array = alloca(foo);]])], + [ use_alloca=yes; + AC_DEFINE([USE_ALLOCA], [], [Make use of alloca]) + ],[ + use_alloca=no + ]) + AC_MSG_RESULT([$use_alloca]) + ]) + +LT_LIB_M + +AC_ARG_ENABLE([fixed-point], + [AS_HELP_STRING([--enable-fixed-point], + [compile without floating point (for machines without a fast enough FPU)])],, + [enable_fixed_point=no]) + +AS_IF([test "$enable_fixed_point" = "yes"],[ + enable_float="no" + AC_DEFINE([FIXED_POINT], [1], [Compile as fixed-point (for machines without a fast enough FPU)]) + PC_BUILD="fixed-point" +],[ + enable_float="yes"; + PC_BUILD="floating-point" + PC_LIBM="$LIBM" +]) + +AM_CONDITIONAL([FIXED_POINT], [test "$enable_fixed_point" = "yes"]) + +AC_ARG_ENABLE([fixed-point-debug], + [AS_HELP_STRING([--enable-fixed-point-debug], [debug fixed-point implementation])],, + [enable_fixed_point_debug=no]) + +AS_IF([test "$enable_fixed_point_debug" = "yes"],[ + AC_DEFINE([FIXED_DEBUG], [1], [Debug fixed-point implementation]) +]) + +AC_ARG_ENABLE([custom-modes], + [AS_HELP_STRING([--enable-custom-modes], [enable non-Opus modes, e.g. 44.1 kHz & 2^n frames])],, + [enable_custom_modes=no]) + +AS_IF([test "$enable_custom_modes" = "yes"],[ + AC_DEFINE([CUSTOM_MODES], [1], [Custom modes]) + PC_BUILD="$PC_BUILD, custom modes" + PC_LIBM="$LIBM" +]) + +AM_CONDITIONAL([CUSTOM_MODES], [test "$enable_custom_modes" = "yes"]) has_float_approx=no #case "$host_cpu" in @@ -119,132 +157,116 @@ has_float_approx=no # ;; #esac -ac_enable_fixed="no"; -ac_enable_float="yes"; -AC_ARG_ENABLE(fixed-point, [ --enable-fixed-point compile without floating point (for machines without a fast enough FPU)], -[if test "$enableval" = yes; then - ac_enable_fixed="yes"; - ac_enable_float="no"; - AC_DEFINE([FIXED_POINT], [1], [Compile as fixed-point (for machines without a fast enough FPU)]) -fi]) - -ac_enable_fixed_debug="no" -AC_ARG_ENABLE(fixed-point-debug, [ --enable-fixed-point-debug debug fixed-point implementation], -[if test "$enableval" = yes; then - ac_enable_fixed_debug="yes" - AC_DEFINE([FIXED_DEBUG], , [Debug fixed-point implementation]) -fi]) - -ac_enable_custom_modes="no" -AC_ARG_ENABLE(custom-modes, [ --enable-custom-modes enable non-Opus modes, e.g. 44.1 kHz & 2^n frames], -[if test "$enableval" = yes; then - ac_enable_custom_modes="yes" - AC_DEFINE([CUSTOM_MODES], , [Custom modes]) -fi]) - -float_approx=$has_float_approx -AC_ARG_ENABLE(float-approx, [ --enable-float-approx enable fast approximations for floating point], - [ if test "$enableval" = yes; then - AC_WARN([Floating point approximations are not supported on all platforms.]) - float_approx=yes - else - float_approx=no - fi], [ float_approx=$has_float_approx ]) - -if test "x${float_approx}" = "xyes"; then - AC_DEFINE([FLOAT_APPROX], , [Float approximations]) -fi +AC_ARG_ENABLE([float-approx], + [AS_HELP_STRING([--enable-float-approx], [enable fast approximations for floating point])], + [if test "$enable_float_approx" = "yes"; then + AC_WARN([Floating point approximations are not supported on all platforms.]) + fi + ], + [enable_float_approx=$has_float_approx]) + +AS_IF([test "$enable_float_approx" = "yes"],[ + AC_DEFINE([FLOAT_APPROX], [1], [Float approximations]) +]) + +AC_ARG_ENABLE([asm], + [AS_HELP_STRING([--disable-asm], [Disable assembly optimizations])],, + [enable_asm=yes]) rtcd_support=no cpu_arm=no -AC_ARG_ENABLE(asm, - AS_HELP_STRING([--disable-asm], [Disable assembly optimizations]), - [ ac_enable_asm=$enableval ], [ ac_enable_asm=yes] ) -if test "x${ac_enable_asm}" = xyes ; then + +AS_IF([test "$enable_asm" = "yes"],[ asm_optimization="no asm for your platform, please send patches" case $host_cpu in arm*) cpu_arm=yes AS_GCC_INLINE_ASSEMBLY([asm_optimization="ARM"], [asm_optimization="disabled"]) - if test "x${asm_optimization}" = "xARM" ; then + if test "$asm_optimization" = "ARM" ; then rtcd_support=yes AC_DEFINE([ARMv4_ASM], 1, [Use generic ARMv4 asm optimizations]) AS_ASM_ARM_EDSP([ARMv5E_ASM=1],[ARMv5E_ASM=0]) - if test "x${ARMv5E_ASM}" = "x1" ; then - AC_DEFINE(ARMv5E_ASM, 1, [Use ARMv5E asm optimizations]) - asm_optimization="${asm_optimization} (EDSP)" + if test "$ARMv5E_ASM" = "1" ; then + AC_DEFINE([ARMv5E_ASM], [1], [Use ARMv5E asm optimizations]) + asm_optimization="$asm_optimization (EDSP)" fi AS_ASM_ARM_MEDIA([ARMv6_ASM=1],[ARMv6_ASM=0]) - if test "x${ARMv6_ASM}" = "x1" ; then - AC_DEFINE(ARMv6_ASM, 1, [Use ARMv6 asm optimizations]) - asm_optimization="${asm_optimization} (Media)" + if test "$ARMv6_ASM" = "1" ; then + AC_DEFINE([ARMv6_ASM], [1], [Use ARMv6 asm optimizations]) + asm_optimization="$asm_optimization (Media)" fi AS_ASM_ARM_NEON([ARM_HAVE_NEON=1],[ARM_HAVE_NEON=0]) - if test "x${ARM_HAVE_NEON}" = "x1" ; then + if test "$ARM_HAVE_NEON" = "1" ; then AC_DEFINE([ARM_HAVE_NEON], 1, [Use ARM NEON optimizations]) - asm_optimization="${asm_optimization} (NEON)" + asm_optimization="$asm_optimization (NEON)" fi fi ;; esac -else +],[ asm_optimization="disabled" -fi - -AC_ARG_ENABLE(rtcd, - AS_HELP_STRING([--disable-rtcd], [Disable run-time CPU capabilities detection]), - [ ac_enable_rtcd=$enableval ], [ ac_enable_rtcd=yes] ) -if test "x${ac_enable_rtcd}" = xyes -a "x${rtcd_support}" = xyes ; then - AC_DEFINE([OPUS_HAVE_RTCD], 1, [Use run-time CPU capabilities detection]) -elif test "x${rtcd_support}" = xno ; then - rtcd_support="no rtcd for your platform, please send patches" -else +]) + +AM_CONDITIONAL([CPU_ARM], [test "$cpu_arm" = "yes"]) + +AC_ARG_ENABLE([rtcd], + [AS_HELP_STRING([--disable-rtcd], [Disable run-time CPU capabilities detection])],, + [enable_rtcd=yes]) + +AS_IF([test "$enable_rtcd" = "yes"],[ + AS_IF([test "$rtcd_support" = "yes"],[ + AC_DEFINE([OPUS_HAVE_RTCD], [1], [Use run-time CPU capabilities detection]) + ],[ + rtcd_support="no rtcd for your platform, please send patches" + ]) +],[ rtcd_support="no" -fi - -ac_enable_assertions="no" -AC_ARG_ENABLE(assertions, [ --enable-assertions enable additional software error checking], -[if test "$enableval" = yes; then - ac_enable_assertions="yes" - AC_DEFINE([ENABLE_ASSERTIONS], , [Assertions]) -fi]) - -ac_enable_fuzzing="no" -AC_ARG_ENABLE(fuzzing, [ --enable-fuzzing causes the encoder to make random decisions], -[if test "$enableval" = yes; then - ac_enable_fuzzing="yes" - AC_DEFINE([FUZZING], , [Fuzzing]) -fi]) - -ac_enable_doc="yes" +]) + +AC_ARG_ENABLE([assertions], + [AS_HELP_STRING([--enable-assertions],[enable additional software error checking])],, + [enable_assertions=no]) + +AS_IF([test "$enable_assertions" = "yes"], [ + AC_DEFINE([ENABLE_ASSERTIONS], [1], [Assertions]) +]) + +AC_ARG_ENABLE([fuzzing], + [AS_HELP_STRING([--enable-fuzzing],[causes the encoder to make random decisions])],, + [enable_fuzzing=no]) + +AS_IF([test "$enable_fuzzing" = "yes"], [ + AC_DEFINE([FUZZING], [1], [Fuzzing]) +]) + AC_ARG_ENABLE([doc], - AS_HELP_STRING([--disable-doc], [Do not build API documentation]), - [ac_enable_doc=$enableval]) -AC_CHECK_PROG(HAVE_DOXYGEN, [doxygen], [yes], [no]) -if test "$HAVE_DOXYGEN" != "yes" -o "$ac_enable_doc" != "yes"; then - HAVE_DOXYGEN="false" - ac_enable_doc="no" -fi -AM_CONDITIONAL(HAVE_DOXYGEN, [test $HAVE_DOXYGEN = yes]) - -ac_enable_extra_programs="yes" + [AS_HELP_STRING([--disable-doc], [Do not build API documentation])],, + [enable_doc=yes]) + +AS_IF([test "$enable_doc" = "yes"], [ + AC_CHECK_PROG(HAVE_DOXYGEN, [doxygen], [yes], [no]) +],[ + HAVE_DOXYGEN=no +]) + +AM_CONDITIONAL([HAVE_DOXYGEN], [test "$HAVE_DOXYGEN" = "yes"]) + AC_ARG_ENABLE([extra-programs], - AS_HELP_STRING([--disable-extra-programs], [Do not build extra programs (demo and tests)]), - [ac_enable_extra_programs=$enableval]) -if test "$ac_enable_extra_programs" != "yes"; then - ac_enable_extra_progs="no" -fi + [AS_HELP_STRING([--disable-extra-programs], [Do not build extra programs (demo and tests)])],, + [enable_extra_programs=yes]) + +AM_CONDITIONAL([EXTRA_PROGRAMS], [test "$enable_extra_programs" = "yes"]) + saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" AC_MSG_CHECKING([if ${CC} supports -fvisibility=hidden]) -AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])], - [ AC_MSG_RESULT([yes]) - SYMBOL_VISIBILITY="-fvisibility=hidden" ], - AC_MSG_RESULT([no])) -CFLAGS="$saved_CFLAGS $SYMBOL_VISIBILITY" -AC_SUBST(SYMBOL_VISIBILITY) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[char foo;]])], + [ AC_MSG_RESULT([yes]) ], + [ AC_MSG_RESULT([no]) + CFLAGS="$saved_CFLAGS" + ]) CFLAGS="$CFLAGS -W" @@ -252,34 +274,20 @@ warn_CFLAGS="-Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-proto saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $warn_CFLAGS" AC_MSG_CHECKING([if ${CC} supports ${warn_CFLAGS}]) -AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])], - [ AC_MSG_RESULT([yes]) - EXTRA_WARNS=$warn_CFLAGS ], - AC_MSG_RESULT([no])) -CFLAGS="$saved_CFLAGS $EXTRA_WARNS" - +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[char foo;]])], + [ AC_MSG_RESULT([yes]) ], + [ AC_MSG_RESULT([no]) + CFLAGS="$saved_CFLAGS" + ]) + +saved_LIBS="$LIBS" +LIBS="$LIBS $LIBM" AC_CHECK_FUNCS([lrintf]) AC_CHECK_FUNCS([lrint]) -AC_CHECK_FUNCS([__malloc_hook]) +LIBS="$saved_LIBS" -AM_CONDITIONAL([FIXED_POINT], [test x$ac_enable_fixed = xyes]) -AM_CONDITIONAL([CUSTOM_MODES], [test x$ac_enable_custom_modes = xyes]) -AM_CONDITIONAL([EXTRA_PROGRAMS], [test x$ac_enable_extra_programs = xyes]) -AM_CONDITIONAL([CPU_ARM], [test x$cpu_arm = xyes]) +AC_CHECK_FUNCS([__malloc_hook]) -dnl subsitutions for the pkg-config files -if test x$ac_enable_float = xyes; then - PC_BUILD="floating-point" - PC_LIBM=$LIBM -else - PC_BUILD="fixed-point" - PC_LIBM= -fi -dnl opus_custom requires libm as well -if test x$ac_enable_custom_modes = xyes; then - PC_BUILD="${PC_BUILD}, custom modes" - PC_LIBM=$LIBM -fi AC_SUBST([PC_BUILD]) AC_SUBST([PC_LIBM]) @@ -298,21 +306,21 @@ AC_MSG_NOTICE([ C99 var arrays: ................ ${has_var_arrays} C99 lrintf: .................... ${ac_cv_func_lrintf} - Alloca: ........................ ${has_alloca} + Use alloca: .................... ${use_alloca} General configuration: - Floating point support: ........ ${ac_enable_float} - Fast float approximations: ..... ${float_approx} - Fixed point debugging: ......... ${ac_enable_fixed_debug} + Floating point support: ........ ${enable_float} + Fast float approximations: ..... ${enable_float_approx} + Fixed point debugging: ......... ${enable_fixed_point_debug} Assembly optimization: ......... ${asm_optimization} Run-time CPU detection: ........ ${rtcd_support} - Custom modes: .................. ${ac_enable_custom_modes} - Assertion checking: ............ ${ac_enable_assertions} - Fuzzing: ....................... ${ac_enable_fuzzing} + Custom modes: .................. ${enable_custom_modes} + Assertion checking: ............ ${enable_assertions} + Fuzzing: ....................... ${enable_fuzzing} - API documentation: ............. ${ac_enable_doc} - Extra programs: ................ ${ac_enable_extra_programs} + API documentation: ............. ${enable_doc} + Extra programs: ................ ${enable_extra_programs} ------------------------------------------------------------------------ Type "make; make install" to compile and install |