Skip to content
Snippets Groups Projects
Commit 5bac4f26 authored by Ron's avatar Ron
Browse files

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).
parent e83a365b
No related branches found
No related tags found
No related merge requests found
......@@ -40,50 +40,50 @@ TESTS = celt/tests/test_unit_types celt/tests/test_unit_mathops celt/tests/test_
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 @@ pkginclude_HEADERS += include/opus_custom.h
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
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment