ref: 5bac4f26cbf1745ad6564c6ac43bc653e8772a45
parent: e83a365b74bd676a761d7d285451b0e2c68a18cf
author: Ron <[email protected]>
date: Fri Jun 28 22:06:53 EDT 2013
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).
--- a/Makefile.am
+++ b/Makefile.am
@@ -40,50 +40,50 @@
opus_demo_SOURCES = src/opus_demo.c
-opus_demo_LDADD = libopus.la -lm
+opus_demo_LDADD = libopus.la $(LIBM)
repacketizer_demo_SOURCES = src/repacketizer_demo.c
-repacketizer_demo_LDADD = libopus.la -lm
+repacketizer_demo_LDADD = libopus.la $(LIBM)
opus_compare_SOURCES = src/opus_compare.c
-opus_compare_LDADD = -lm
+opus_compare_LDADD = $(LIBM)
tests_test_opus_api_SOURCES = tests/test_opus_api.c tests/test_opus_common.h
-tests_test_opus_api_LDADD = libopus.la -lm
+tests_test_opus_api_LDADD = libopus.la $(LIBM)
tests_test_opus_encode_SOURCES = tests/test_opus_encode.c tests/test_opus_common.h
-tests_test_opus_encode_LDADD = libopus.la -lm
+tests_test_opus_encode_LDADD = libopus.la $(LIBM)
tests_test_opus_decode_SOURCES = tests/test_opus_decode.c tests/test_opus_common.h
-tests_test_opus_decode_LDADD = libopus.la -lm
+tests_test_opus_decode_LDADD = libopus.la $(LIBM)
tests_test_opus_padding_SOURCES = tests/test_opus_padding.c tests/test_opus_common.h
-tests_test_opus_padding_LDADD = libopus.la -lm
+tests_test_opus_padding_LDADD = libopus.la $(LIBM)
celt_tests_test_unit_cwrs32_SOURCES = celt/tests/test_unit_cwrs32.c
-celt_tests_test_unit_cwrs32_LDADD = -lm
+celt_tests_test_unit_cwrs32_LDADD = $(LIBM)
celt_tests_test_unit_dft_SOURCES = celt/tests/test_unit_dft.c
-celt_tests_test_unit_dft_LDADD = -lm
+celt_tests_test_unit_dft_LDADD = $(LIBM)
celt_tests_test_unit_entropy_SOURCES = celt/tests/test_unit_entropy.c
-celt_tests_test_unit_entropy_LDADD = -lm
+celt_tests_test_unit_entropy_LDADD = $(LIBM)
celt_tests_test_unit_laplace_SOURCES = celt/tests/test_unit_laplace.c
-celt_tests_test_unit_laplace_LDADD = -lm
+celt_tests_test_unit_laplace_LDADD = $(LIBM)
celt_tests_test_unit_mathops_SOURCES = celt/tests/test_unit_mathops.c
-celt_tests_test_unit_mathops_LDADD = -lm
+celt_tests_test_unit_mathops_LDADD = $(LIBM)
celt_tests_test_unit_mdct_SOURCES = celt/tests/test_unit_mdct.c
-celt_tests_test_unit_mdct_LDADD = -lm
+celt_tests_test_unit_mdct_LDADD = $(LIBM)
celt_tests_test_unit_rotation_SOURCES = celt/tests/test_unit_rotation.c
-celt_tests_test_unit_rotation_LDADD = -lm
+celt_tests_test_unit_rotation_LDADD = $(LIBM)
celt_tests_test_unit_types_SOURCES = celt/tests/test_unit_types.c
-celt_tests_test_unit_types_LDADD = -lm
+celt_tests_test_unit_types_LDADD = $(LIBM)
endif
if CUSTOM_MODES
@@ -91,7 +91,7 @@
if EXTRA_PROGRAMS
noinst_PROGRAMS += opus_custom_demo
opus_custom_demo_SOURCES = celt/opus_custom_demo.c
-opus_custom_demo_LDADD = libopus.la -lm
+opus_custom_demo_LDADD = libopus.la $(LIBM)
endif
endif
--- a/configure.ac
+++ b/configure.ac
@@ -41,8 +41,12 @@
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 @@
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,44 +79,77 @@
# 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
+esac
-AC_DEFINE([OPUS_BUILD], [], [This is a build of OPUS])
-
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_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])
-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)
+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])
+ ])
-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])
+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
#i[[3456]]86 | x86_64 | powerpc64 | powerpc32 | ia64)
@@ -119,48 +157,26 @@
# ;;
#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_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])
-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])
+AS_IF([test "$enable_float_approx" = "yes"],[
+ AC_DEFINE([FLOAT_APPROX], [1], [Float approximations])
+])
-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])
+AC_ARG_ENABLE([asm],
+ [AS_HELP_STRING([--disable-asm], [Disable assembly optimizations])],,
+ [enable_asm=yes])
-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
-
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*)
@@ -167,84 +183,90 @@
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_ARG_ENABLE([assertions],
+ [AS_HELP_STRING([--enable-assertions],[enable additional software error checking])],,
+ [enable_assertions=no])
-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])
+AS_IF([test "$enable_assertions" = "yes"], [
+ AC_DEFINE([ENABLE_ASSERTIONS], [1], [Assertions])
+])
-ac_enable_doc="yes"
+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])
+ [AS_HELP_STRING([--disable-doc], [Do not build API documentation])],,
+ [enable_doc=yes])
-ac_enable_extra_programs="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 @@
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])
+LIBS="$saved_LIBS"
+
AC_CHECK_FUNCS([__malloc_hook])
-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])
-
-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 @@
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