Chris@69: dnl Process this file with autoconf to produce a configure script. -*-m4-*- Chris@69: Chris@69: dnl The package_version file will be automatically synced to the git revision Chris@69: dnl by the update_version script when configured in the repository, but will Chris@69: dnl remain constant in tarball releases unless it is manually edited. Chris@69: m4_define([CURRENT_VERSION], Chris@69: m4_esyscmd([ ./update_version 2>/dev/null || true Chris@69: if test -e package_version; then Chris@69: . ./package_version Chris@69: printf "$PACKAGE_VERSION" Chris@69: else Chris@69: printf "unknown" Chris@69: fi ])) Chris@69: Chris@69: AC_INIT([opus],[CURRENT_VERSION],[opus@xiph.org]) Chris@69: Chris@69: AC_CONFIG_SRCDIR(src/opus_encoder.c) Chris@69: AC_CONFIG_MACRO_DIR([m4]) Chris@69: Chris@69: dnl enable silent rules on automake 1.11 and later Chris@69: m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) Chris@69: Chris@69: # For libtool. Chris@69: dnl Please update these for releases. Chris@69: OPUS_LT_CURRENT=7 Chris@69: OPUS_LT_REVISION=0 Chris@69: OPUS_LT_AGE=7 Chris@69: Chris@69: AC_SUBST(OPUS_LT_CURRENT) Chris@69: AC_SUBST(OPUS_LT_REVISION) Chris@69: AC_SUBST(OPUS_LT_AGE) Chris@69: Chris@69: AM_INIT_AUTOMAKE([no-define]) Chris@69: AM_MAINTAINER_MODE([enable]) Chris@69: Chris@69: AC_CANONICAL_HOST Chris@69: AC_MINGW32 Chris@69: AM_PROG_LIBTOOL Chris@69: AM_PROG_CC_C_O Chris@69: Chris@69: AC_PROG_CC_C99 Chris@69: AC_C_CONST Chris@69: AC_C_INLINE Chris@69: Chris@69: AM_PROG_AS Chris@69: Chris@69: AC_DEFINE([OPUS_BUILD], [], [This is a build of OPUS]) Chris@69: Chris@69: #Use a hacked up version of autoconf's AC_C_RESTRICT because it's not Chris@69: #strong enough a test to detect old buggy versions of GCC (e.g. 2.95.3) Chris@69: #Note: Both this and the test for variable-size arrays below are also Chris@69: # done by AC_PROG_CC_C99, but not thoroughly enough apparently. Chris@69: AC_CACHE_CHECK([for C/C++ restrict keyword], ac_cv_c_restrict, Chris@69: [ac_cv_c_restrict=no Chris@69: # The order here caters to the fact that C++ does not require restrict. Chris@69: for ac_kw in __restrict __restrict__ _Restrict restrict; do Chris@69: AC_COMPILE_IFELSE([AC_LANG_PROGRAM( Chris@69: [[typedef int * int_ptr; Chris@69: int foo (int_ptr $ac_kw ip, int * $ac_kw baz[]) { Chris@69: return ip[0]; Chris@69: }]], Chris@69: [[int s[1]; Chris@69: int * $ac_kw t = s; Chris@69: t[0] = 0; Chris@69: return foo(t, (void *)0)]])], Chris@69: [ac_cv_c_restrict=$ac_kw]) Chris@69: test "$ac_cv_c_restrict" != no && break Chris@69: done Chris@69: ]) Chris@69: Chris@69: AH_VERBATIM([restrict], Chris@69: [/* Define to the equivalent of the C99 'restrict' keyword, or to Chris@69: nothing if this is not supported. Do not define if restrict is Chris@69: supported directly. */ Chris@69: #undef restrict Chris@69: /* Work around a bug in Sun C++: it does not support _Restrict or Chris@69: __restrict__, even though the corresponding Sun C compiler ends up with Chris@69: "#define restrict _Restrict" or "#define restrict __restrict__" in the Chris@69: previous line. Perhaps some future version of Sun C++ will work with Chris@69: restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ Chris@69: #if defined __SUNPRO_CC && !defined __RESTRICT Chris@69: # define _Restrict Chris@69: # define __restrict__ Chris@69: #endif]) Chris@69: Chris@69: case $ac_cv_c_restrict in Chris@69: restrict) ;; Chris@69: no) AC_DEFINE([restrict], []) ;; Chris@69: *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; Chris@69: esac Chris@69: Chris@69: AC_MSG_CHECKING(for C99 variable-size arrays) Chris@69: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], Chris@69: [[static int x; char a[++x]; a[sizeof a - 1] = 0; int N; return a[0];]])], Chris@69: [ has_var_arrays=yes Chris@69: use_alloca="no (using var arrays)" Chris@69: AC_DEFINE([VAR_ARRAYS], [1], [Use C99 variable-size arrays]) Chris@69: ],[ Chris@69: has_var_arrays=no Chris@69: ]) Chris@69: AC_MSG_RESULT([$has_var_arrays]) Chris@69: Chris@69: AS_IF([test "$has_var_arrays" = "no"], Chris@69: [ Chris@69: AC_CHECK_HEADERS([alloca.h]) Chris@69: AC_MSG_CHECKING(for alloca) Chris@69: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], Chris@69: [[int foo=10; int *array = alloca(foo);]])], Chris@69: [ use_alloca=yes; Chris@69: AC_DEFINE([USE_ALLOCA], [], [Make use of alloca]) Chris@69: ],[ Chris@69: use_alloca=no Chris@69: ]) Chris@69: AC_MSG_RESULT([$use_alloca]) Chris@69: ]) Chris@69: Chris@69: LT_LIB_M Chris@69: Chris@69: AC_ARG_ENABLE([fixed-point], Chris@69: [AS_HELP_STRING([--enable-fixed-point], Chris@69: [compile without floating point (for machines without a fast enough FPU)])],, Chris@69: [enable_fixed_point=no]) Chris@69: Chris@69: AS_IF([test "$enable_fixed_point" = "yes"],[ Chris@69: enable_float="no" Chris@69: AC_DEFINE([FIXED_POINT], [1], [Compile as fixed-point (for machines without a fast enough FPU)]) Chris@69: PC_BUILD="fixed-point" Chris@69: ],[ Chris@69: enable_float="yes"; Chris@69: PC_BUILD="floating-point" Chris@69: ]) Chris@69: Chris@69: AM_CONDITIONAL([FIXED_POINT], [test "$enable_fixed_point" = "yes"]) Chris@69: Chris@69: AC_ARG_ENABLE([fixed-point-debug], Chris@69: [AS_HELP_STRING([--enable-fixed-point-debug], [debug fixed-point implementation])],, Chris@69: [enable_fixed_point_debug=no]) Chris@69: Chris@69: AS_IF([test "$enable_fixed_point_debug" = "yes"],[ Chris@69: AC_DEFINE([FIXED_DEBUG], [1], [Debug fixed-point implementation]) Chris@69: ]) Chris@69: Chris@69: AC_ARG_ENABLE([float_api], Chris@69: [AS_HELP_STRING([--disable-float-api], Chris@69: [compile without the floating point API (for machines with no float library)])],, Chris@69: [enable_float_api=yes]) Chris@69: Chris@69: AM_CONDITIONAL([DISABLE_FLOAT_API], [test "$enable_float_api" = "no"]) Chris@69: Chris@69: AS_IF([test "$enable_float_api" = "no"],[ Chris@69: AC_DEFINE([DISABLE_FLOAT_API], [1], [Do not build the float API]) Chris@69: ]) Chris@69: Chris@69: AC_ARG_ENABLE([custom-modes], Chris@69: [AS_HELP_STRING([--enable-custom-modes], [enable non-Opus modes, e.g. 44.1 kHz & 2^n frames])],, Chris@69: [enable_custom_modes=no]) Chris@69: Chris@69: AS_IF([test "$enable_custom_modes" = "yes"],[ Chris@69: AC_DEFINE([CUSTOM_MODES], [1], [Custom modes]) Chris@69: PC_BUILD="$PC_BUILD, custom modes" Chris@69: ]) Chris@69: Chris@69: AM_CONDITIONAL([CUSTOM_MODES], [test "$enable_custom_modes" = "yes"]) Chris@69: Chris@69: has_float_approx=no Chris@69: #case "$host_cpu" in Chris@69: #i[[3456]]86 | x86_64 | powerpc64 | powerpc32 | ia64) Chris@69: # has_float_approx=yes Chris@69: # ;; Chris@69: #esac Chris@69: Chris@69: AC_ARG_ENABLE([float-approx], Chris@69: [AS_HELP_STRING([--enable-float-approx], [enable fast approximations for floating point])], Chris@69: [if test "$enable_float_approx" = "yes"; then Chris@69: AC_WARN([Floating point approximations are not supported on all platforms.]) Chris@69: fi Chris@69: ], Chris@69: [enable_float_approx=$has_float_approx]) Chris@69: Chris@69: AS_IF([test "$enable_float_approx" = "yes"],[ Chris@69: AC_DEFINE([FLOAT_APPROX], [1], [Float approximations]) Chris@69: ]) Chris@69: Chris@69: AC_ARG_ENABLE([asm], Chris@69: [AS_HELP_STRING([--disable-asm], [Disable assembly optimizations])],, Chris@69: [enable_asm=yes]) Chris@69: Chris@69: AC_ARG_ENABLE([rtcd], Chris@69: [AS_HELP_STRING([--disable-rtcd], [Disable run-time CPU capabilities detection])],, Chris@69: [enable_rtcd=yes]) Chris@69: Chris@69: AC_ARG_ENABLE([intrinsics], Chris@69: [AS_HELP_STRING([--disable-intrinsics], [Disable intrinsics optimizations])],, Chris@69: [enable_intrinsics=yes]) Chris@69: Chris@69: rtcd_support=no Chris@69: cpu_arm=no Chris@69: Chris@69: AS_IF([test x"${enable_asm}" = x"yes"],[ Chris@69: inline_optimization="No inline ASM for your platform, please send patches" Chris@69: case $host_cpu in Chris@69: arm*) Chris@69: dnl Currently we only have asm for fixed-point Chris@69: AS_IF([test "$enable_float" != "yes"],[ Chris@69: cpu_arm=yes Chris@69: AC_DEFINE([OPUS_ARM_ASM], [], [Make use of ARM asm optimization]) Chris@69: AS_GCC_INLINE_ASSEMBLY( Chris@69: [inline_optimization="ARM"], Chris@69: [inline_optimization="disabled"] Chris@69: ) Chris@69: AS_ASM_ARM_EDSP([OPUS_ARM_INLINE_EDSP=1],[OPUS_ARM_INLINE_EDSP=0]) Chris@69: AS_ASM_ARM_MEDIA([OPUS_ARM_INLINE_MEDIA=1], Chris@69: [OPUS_ARM_INLINE_MEDIA=0]) Chris@69: AS_ASM_ARM_NEON([OPUS_ARM_INLINE_NEON=1],[OPUS_ARM_INLINE_NEON=0]) Chris@69: AS_IF([test x"$inline_optimization" = x"ARM"],[ Chris@69: AM_CONDITIONAL([OPUS_ARM_INLINE_ASM],[true]) Chris@69: AC_DEFINE([OPUS_ARM_INLINE_ASM], 1, Chris@69: [Use generic ARMv4 inline asm optimizations]) Chris@69: AS_IF([test x"$OPUS_ARM_INLINE_EDSP" = x"1"],[ Chris@69: AC_DEFINE([OPUS_ARM_INLINE_EDSP], [1], Chris@69: [Use ARMv5E inline asm optimizations]) Chris@69: inline_optimization="$inline_optimization (EDSP)" Chris@69: ]) Chris@69: AS_IF([test x"$OPUS_ARM_INLINE_MEDIA" = x"1"],[ Chris@69: AC_DEFINE([OPUS_ARM_INLINE_MEDIA], [1], Chris@69: [Use ARMv6 inline asm optimizations]) Chris@69: inline_optimization="$inline_optimization (Media)" Chris@69: ]) Chris@69: AS_IF([test x"$OPUS_ARM_INLINE_NEON" = x"1"],[ Chris@69: AC_DEFINE([OPUS_ARM_INLINE_NEON], 1, Chris@69: [Use ARM NEON inline asm optimizations]) Chris@69: inline_optimization="$inline_optimization (NEON)" Chris@69: ]) Chris@69: ]) Chris@69: dnl We need Perl to translate RVCT-syntax asm to gas syntax. Chris@69: AC_CHECK_PROG([HAVE_PERL], perl, yes, no) Chris@69: AS_IF([test x"$HAVE_PERL" = x"yes"],[ Chris@69: AM_CONDITIONAL([OPUS_ARM_EXTERNAL_ASM],[true]) Chris@69: asm_optimization="ARM" Chris@69: AS_IF([test x"$OPUS_ARM_INLINE_EDSP" = x"1"], [ Chris@69: OPUS_ARM_PRESUME_EDSP=1 Chris@69: OPUS_ARM_MAY_HAVE_EDSP=1 Chris@69: ], Chris@69: [ Chris@69: OPUS_ARM_PRESUME_EDSP=0 Chris@69: OPUS_ARM_MAY_HAVE_EDSP=0 Chris@69: ]) Chris@69: AS_IF([test x"$OPUS_ARM_INLINE_MEDIA" = x"1"], [ Chris@69: OPUS_ARM_PRESUME_MEDIA=1 Chris@69: OPUS_ARM_MAY_HAVE_MEDIA=1 Chris@69: ], Chris@69: [ Chris@69: OPUS_ARM_PRESUME_MEDIA=0 Chris@69: OPUS_ARM_MAY_HAVE_MEDIA=0 Chris@69: ]) Chris@69: AS_IF([test x"$OPUS_ARM_INLINE_NEON" = x"1"], [ Chris@69: OPUS_ARM_PRESUME_NEON=1 Chris@69: OPUS_ARM_MAY_HAVE_NEON=1 Chris@69: ], Chris@69: [ Chris@69: OPUS_ARM_PRESUME_NEON=0 Chris@69: OPUS_ARM_MAY_HAVE_NEON=0 Chris@69: ]) Chris@69: AS_IF([test x"$enable_rtcd" = x"yes"],[ Chris@69: AS_IF([test x"$OPUS_ARM_MAY_HAVE_EDSP" != x"1"],[ Chris@69: AC_MSG_NOTICE( Chris@69: [Trying to force-enable armv5e EDSP instructions...]) Chris@69: AS_ASM_ARM_EDSP_FORCE([OPUS_ARM_MAY_HAVE_EDSP=1]) Chris@69: ]) Chris@69: AS_IF([test x"$OPUS_ARM_MAY_HAVE_MEDIA" != x"1"],[ Chris@69: AC_MSG_NOTICE( Chris@69: [Trying to force-enable ARMv6 media instructions...]) Chris@69: AS_ASM_ARM_MEDIA_FORCE([OPUS_ARM_MAY_HAVE_MEDIA=1]) Chris@69: ]) Chris@69: AS_IF([test x"$OPUS_ARM_MAY_HAVE_NEON" != x"1"],[ Chris@69: AC_MSG_NOTICE( Chris@69: [Trying to force-enable NEON instructions...]) Chris@69: AS_ASM_ARM_NEON_FORCE([OPUS_ARM_MAY_HAVE_NEON=1]) Chris@69: ]) Chris@69: ]) Chris@69: rtcd_support= Chris@69: AS_IF([test x"$OPUS_ARM_MAY_HAVE_EDSP" = x"1"],[ Chris@69: AC_DEFINE(OPUS_ARM_MAY_HAVE_EDSP, 1, Chris@69: [Define if assembler supports EDSP instructions]) Chris@69: AS_IF([test x"$OPUS_ARM_PRESUME_EDSP" = x"1"],[ Chris@69: AC_DEFINE(OPUS_ARM_PRESUME_EDSP, 1, Chris@69: [Define if binary requires EDSP instruction support]) Chris@69: asm_optimization="$asm_optimization (EDSP)" Chris@69: ], Chris@69: [rtcd_support="$rtcd_support (EDSP)"] Chris@69: ) Chris@69: ]) Chris@69: AC_SUBST(OPUS_ARM_MAY_HAVE_EDSP) Chris@69: AS_IF([test x"$OPUS_ARM_MAY_HAVE_MEDIA" = x"1"],[ Chris@69: AC_DEFINE(OPUS_ARM_MAY_HAVE_MEDIA, 1, Chris@69: [Define if assembler supports ARMv6 media instructions]) Chris@69: AS_IF([test x"$OPUS_ARM_PRESUME_MEDIA" = x"1"],[ Chris@69: AC_DEFINE(OPUS_ARM_PRESUME_MEDIA, 1, Chris@69: [Define if binary requires ARMv6 media instruction support]) Chris@69: asm_optimization="$asm_optimization (Media)" Chris@69: ], Chris@69: [rtcd_support="$rtcd_support (Media)"] Chris@69: ) Chris@69: ]) Chris@69: AC_SUBST(OPUS_ARM_MAY_HAVE_MEDIA) Chris@69: AS_IF([test x"$OPUS_ARM_MAY_HAVE_NEON" = x"1"],[ Chris@69: AC_DEFINE(OPUS_ARM_MAY_HAVE_NEON, 1, Chris@69: [Define if compiler supports NEON instructions]) Chris@69: AS_IF([test x"$OPUS_ARM_PRESUME_NEON" = x"1"], [ Chris@69: AC_DEFINE(OPUS_ARM_PRESUME_NEON, 1, Chris@69: [Define if binary requires NEON instruction support]) Chris@69: asm_optimization="$asm_optimization (NEON)" Chris@69: ], Chris@69: [rtcd_support="$rtcd_support (NEON)"] Chris@69: ) Chris@69: ]) Chris@69: AC_SUBST(OPUS_ARM_MAY_HAVE_NEON) Chris@69: dnl Make sure turning on RTCD gets us at least one Chris@69: dnl instruction set. Chris@69: AS_IF([test x"$rtcd_support" != x""], Chris@69: [rtcd_support=ARM"$rtcd_support"], Chris@69: [rtcd_support="no"] Chris@69: ) Chris@69: AC_MSG_CHECKING([for apple style tools]) Chris@69: AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ Chris@69: #ifndef __APPLE__ Chris@69: #error 1 Chris@69: #endif],[])], Chris@69: [AC_MSG_RESULT([yes]); ARM2GNU_PARAMS="--apple"], Chris@69: [AC_MSG_RESULT([no]); ARM2GNU_PARAMS=""]) Chris@69: AC_SUBST(ARM2GNU_PARAMS) Chris@69: ], Chris@69: [ Chris@69: AC_MSG_WARN( Chris@69: [*** ARM assembly requires perl -- disabling optimizations]) Chris@69: asm_optimization="(missing perl dependency for ARM)" Chris@69: ]) Chris@69: ]) Chris@69: ;; Chris@69: esac Chris@69: ],[ Chris@69: inline_optimization="disabled" Chris@69: asm_optimization="disabled" Chris@69: ]) Chris@69: Chris@69: AM_CONDITIONAL([OPUS_ARM_INLINE_ASM], Chris@69: [test x"${inline_optimization%% *}" = x"ARM"]) Chris@69: AM_CONDITIONAL([OPUS_ARM_EXTERNAL_ASM], Chris@69: [test x"${asm_optimization%% *}" = x"ARM"]) Chris@69: Chris@69: AM_CONDITIONAL([HAVE_SSE], [false]) Chris@69: AM_CONDITIONAL([HAVE_SSE2], [false]) Chris@69: AM_CONDITIONAL([HAVE_SSE4_1], [false]) Chris@69: AM_CONDITIONAL([HAVE_AVX], [false]) Chris@69: Chris@69: m4_define([DEFAULT_X86_SSE_CFLAGS], [-msse]) Chris@69: m4_define([DEFAULT_X86_SSE2_CFLAGS], [-msse2]) Chris@69: m4_define([DEFAULT_X86_SSE4_1_CFLAGS], [-msse4.1]) Chris@69: m4_define([DEFAULT_X86_AVX_CFLAGS], [-mavx]) Chris@69: m4_define([DEFAULT_ARM_NEON_INTR_CFLAGS], [-mfpu=neon]) Chris@69: # With GCC on ARM32 softfp architectures (e.g. Android, or older Ubuntu) you need to specify Chris@69: # -mfloat-abi=softfp for -mfpu=neon to work. However, on ARM32 hardfp architectures (e.g. newer Ubuntu), Chris@69: # this option will break things. Chris@69: Chris@69: # As a heuristic, if host matches arm*eabi* but not arm*hf*, it's probably soft-float. Chris@69: m4_define([DEFAULT_ARM_NEON_SOFTFP_INTR_CFLAGS], [-mfpu=neon -mfloat-abi=softfp]) Chris@69: Chris@69: AS_CASE([$host], Chris@69: [arm*hf*], [AS_VAR_SET([RESOLVED_DEFAULT_ARM_NEON_INTR_CFLAGS], "DEFAULT_ARM_NEON_INTR_CFLAGS")], Chris@69: [arm*eabi*], [AS_VAR_SET([RESOLVED_DEFAULT_ARM_NEON_INTR_CFLAGS], "DEFAULT_ARM_NEON_SOFTFP_INTR_CFLAGS")], Chris@69: [AS_VAR_SET([RESOLVED_DEFAULT_ARM_NEON_INTR_CFLAGS], "DEFAULT_ARM_NEON_INTR_CFLAGS")]) Chris@69: Chris@69: AC_ARG_VAR([X86_SSE_CFLAGS], [C compiler flags to compile SSE intrinsics @<:@default=]DEFAULT_X86_SSE_CFLAGS[@:>@]) Chris@69: AC_ARG_VAR([X86_SSE2_CFLAGS], [C compiler flags to compile SSE2 intrinsics @<:@default=]DEFAULT_X86_SSE2_CFLAGS[@:>@]) Chris@69: AC_ARG_VAR([X86_SSE4_1_CFLAGS], [C compiler flags to compile SSE4.1 intrinsics @<:@default=]DEFAULT_X86_SSE4_1_CFLAGS[@:>@]) Chris@69: AC_ARG_VAR([X86_AVX_CFLAGS], [C compiler flags to compile AVX intrinsics @<:@default=]DEFAULT_X86_AVX_CFLAGS[@:>@]) Chris@69: AC_ARG_VAR([ARM_NEON_INTR_CFLAGS], [C compiler flags to compile ARM NEON intrinsics @<:@default=]DEFAULT_ARM_NEON_INTR_CFLAGS / DEFAULT_ARM_NEON_SOFTFP_INTR_CFLAGS[@:>@]) Chris@69: Chris@69: AS_VAR_SET_IF([X86_SSE_CFLAGS], [], [AS_VAR_SET([X86_SSE_CFLAGS], "DEFAULT_X86_SSE_CFLAGS")]) Chris@69: AS_VAR_SET_IF([X86_SSE2_CFLAGS], [], [AS_VAR_SET([X86_SSE2_CFLAGS], "DEFAULT_X86_SSE2_CFLAGS")]) Chris@69: AS_VAR_SET_IF([X86_SSE4_1_CFLAGS], [], [AS_VAR_SET([X86_SSE4_1_CFLAGS], "DEFAULT_X86_SSE4_1_CFLAGS")]) Chris@69: AS_VAR_SET_IF([X86_AVX_CFLAGS], [], [AS_VAR_SET([X86_AVX_CFLAGS], "DEFAULT_X86_AVX_CFLAGS")]) Chris@69: AS_VAR_SET_IF([ARM_NEON_INTR_CFLAGS], [], [AS_VAR_SET([ARM_NEON_INTR_CFLAGS], ["$RESOLVED_DEFAULT_ARM_NEON_INTR_CFLAGS"])]) Chris@69: Chris@69: AC_DEFUN([OPUS_PATH_NE10], Chris@69: [ Chris@69: AC_ARG_WITH(NE10, Chris@69: AC_HELP_STRING([--with-NE10=PFX],[Prefix where libNE10 is installed (optional)]), Chris@69: NE10_prefix="$withval", NE10_prefix="") Chris@69: AC_ARG_WITH(NE10-libraries, Chris@69: AC_HELP_STRING([--with-NE10-libraries=DIR], Chris@69: [Directory where libNE10 library is installed (optional)]), Chris@69: NE10_libraries="$withval", NE10_libraries="") Chris@69: AC_ARG_WITH(NE10-includes, Chris@69: AC_HELP_STRING([--with-NE10-includes=DIR], Chris@69: [Directory where libNE10 header files are installed (optional)]), Chris@69: NE10_includes="$withval", NE10_includes="") Chris@69: Chris@69: if test "x$NE10_libraries" != "x" ; then Chris@69: NE10_LIBS="-L$NE10_libraries" Chris@69: elif test "x$NE10_prefix" = "xno" || test "x$NE10_prefix" = "xyes" ; then Chris@69: NE10_LIBS="" Chris@69: elif test "x$NE10_prefix" != "x" ; then Chris@69: NE10_LIBS="-L$NE10_prefix/lib" Chris@69: elif test "x$prefix" != "xNONE" ; then Chris@69: NE10_LIBS="-L$prefix/lib" Chris@69: fi Chris@69: Chris@69: if test "x$NE10_prefix" != "xno" ; then Chris@69: NE10_LIBS="$NE10_LIBS -lNE10" Chris@69: fi Chris@69: Chris@69: if test "x$NE10_includes" != "x" ; then Chris@69: NE10_CFLAGS="-I$NE10_includes" Chris@69: elif test "x$NE10_prefix" = "xno" || test "x$NE10_prefix" = "xyes" ; then Chris@69: NE10_CFLAGS="" Chris@69: elif test "x$NE10_prefix" != "x" ; then Chris@69: NE10_CFLAGS="-I$NE10_prefix/include" Chris@69: elif test "x$prefix" != "xNONE"; then Chris@69: NE10_CFLAGS="-I$prefix/include" Chris@69: fi Chris@69: Chris@69: AC_MSG_CHECKING(for NE10) Chris@69: save_CFLAGS="$CFLAGS"; CFLAGS="$CFLAGS $NE10_CFLAGS" Chris@69: save_LIBS="$LIBS"; LIBS="$LIBS $NE10_LIBS $LIBM" Chris@69: AC_LINK_IFELSE( Chris@69: [ Chris@69: AC_LANG_PROGRAM( Chris@69: [[#include Chris@69: ]], Chris@69: [[ Chris@69: ne10_fft_cfg_float32_t cfg; Chris@69: cfg = ne10_fft_alloc_c2c_float32_neon(480); Chris@69: ]] Chris@69: ) Chris@69: ],[ Chris@69: HAVE_ARM_NE10=1 Chris@69: AC_MSG_RESULT([yes]) Chris@69: ],[ Chris@69: HAVE_ARM_NE10=0 Chris@69: AC_MSG_RESULT([no]) Chris@69: NE10_CFLAGS="" Chris@69: NE10_LIBS="" Chris@69: ] Chris@69: ) Chris@69: CFLAGS="$save_CFLAGS"; LIBS="$save_LIBS" Chris@69: #Now we know if libNE10 is installed or not Chris@69: AS_IF([test x"$HAVE_ARM_NE10" = x"1"], Chris@69: [ Chris@69: AC_DEFINE([HAVE_ARM_NE10], 1, [NE10 library is installed on host. Make sure it is on target!]) Chris@69: AC_SUBST(HAVE_ARM_NE10) Chris@69: AC_SUBST(NE10_CFLAGS) Chris@69: AC_SUBST(NE10_LIBS) Chris@69: ] Chris@69: ) Chris@69: ] Chris@69: ) Chris@69: Chris@69: AS_IF([test x"$enable_intrinsics" = x"yes"],[ Chris@69: intrinsics_support="" Chris@69: AS_CASE([$host_cpu], Chris@69: [arm*|aarch64*], Chris@69: [ Chris@69: cpu_arm=yes Chris@69: OPUS_CHECK_INTRINSICS( Chris@69: [ARM Neon], Chris@69: [$ARM_NEON_INTR_CFLAGS], Chris@69: [OPUS_ARM_MAY_HAVE_NEON_INTR], Chris@69: [OPUS_ARM_PRESUME_NEON_INTR], Chris@69: [[#include Chris@69: ]], Chris@69: [[ Chris@69: static float32x4_t A0, A1, SUMM; Chris@69: SUMM = vmlaq_f32(SUMM, A0, A1); Chris@69: return (int)vgetq_lane_f32(SUMM, 0); Chris@69: ]] Chris@69: ) Chris@69: AS_IF([test x"$OPUS_ARM_MAY_HAVE_NEON_INTR" = x"1" && test x"$OPUS_ARM_PRESUME_NEON_INTR" != x"1"], Chris@69: [ Chris@69: OPUS_ARM_NEON_INTR_CFLAGS="$ARM_NEON_INTR_CFLAGS" Chris@69: AC_SUBST([OPUS_ARM_NEON_INTR_CFLAGS]) Chris@69: ] Chris@69: ) Chris@69: Chris@69: AS_IF([test x"$OPUS_ARM_MAY_HAVE_NEON_INTR" = x"1"], Chris@69: [ Chris@69: AC_DEFINE([OPUS_ARM_MAY_HAVE_NEON_INTR], 1, [Compiler supports ARMv7/Aarch64 Neon Intrinsics]) Chris@69: intrinsics_support="$intrinsics_support (NEON)" Chris@69: Chris@69: AS_IF([test x"$enable_rtcd" != x"no" && test x"$OPUS_ARM_PRESUME_NEON_INTR" != x"1"], Chris@69: [AS_IF([test x"$rtcd_support" = x"no"], Chris@69: [rtcd_support="ARM (NEON Intrinsics)"], Chris@69: [rtcd_support="$rtcd_support (NEON Intrinsics)"])]) Chris@69: Chris@69: AS_IF([test x"$OPUS_ARM_PRESUME_NEON_INTR" = x"1"], Chris@69: [AC_DEFINE([OPUS_ARM_PRESUME_NEON_INTR], 1, [Define if binary requires NEON intrinsics support])]) Chris@69: Chris@69: OPUS_PATH_NE10() Chris@69: AS_IF([test x"$NE10_LIBS" != x""], Chris@69: [ Chris@69: intrinsics_support="$intrinsics_support (NE10)" Chris@69: AS_IF([test x"enable_rtcd" != x"" \ Chris@69: && test x"$OPUS_ARM_PRESUME_NEON_INTR" != x"1"], Chris@69: [rtcd_support="$rtcd_support (NE10)"]) Chris@69: ]) Chris@69: Chris@69: OPUS_CHECK_INTRINSICS( Chris@69: [Aarch64 Neon], Chris@69: [$ARM_NEON_INTR_CFLAGS], Chris@69: [OPUS_ARM_MAY_HAVE_AARCH64_NEON_INTR], Chris@69: [OPUS_ARM_PRESUME_AARCH64_NEON_INTR], Chris@69: [[#include Chris@69: ]], Chris@69: [[ Chris@69: static int32_t IN; Chris@69: static int16_t OUT; Chris@69: OUT = vqmovns_s32(IN); Chris@69: ]] Chris@69: ) Chris@69: Chris@69: AS_IF([test x"$OPUS_ARM_PRESUME_AARCH64_NEON_INTR" = x"1"], Chris@69: [ Chris@69: AC_DEFINE([OPUS_ARM_PRESUME_AARCH64_NEON_INTR], 1, [Define if binary requires Aarch64 Neon Intrinsics]) Chris@69: intrinsics_support="$intrinsics_support (NEON [Aarch64])" Chris@69: ]) Chris@69: Chris@69: AS_IF([test x"$intrinsics_support" = x""], Chris@69: [intrinsics_support=no], Chris@69: [intrinsics_support="ARM$intrinsics_support"]) Chris@69: ], Chris@69: [ Chris@69: AC_MSG_WARN([Compiler does not support ARM intrinsics]) Chris@69: intrinsics_support=no Chris@69: ]) Chris@69: ], Chris@69: [i?86|x86_64], Chris@69: [ Chris@69: OPUS_CHECK_INTRINSICS( Chris@69: [SSE], Chris@69: [$X86_SSE_CFLAGS], Chris@69: [OPUS_X86_MAY_HAVE_SSE], Chris@69: [OPUS_X86_PRESUME_SSE], Chris@69: [[#include Chris@69: #include Chris@69: ]], Chris@69: [[ Chris@69: __m128 mtest; Chris@69: mtest = _mm_set1_ps((float)time(NULL)); Chris@69: mtest = _mm_mul_ps(mtest, mtest); Chris@69: return _mm_cvtss_si32(mtest); Chris@69: ]] Chris@69: ) Chris@69: AS_IF([test x"$OPUS_X86_MAY_HAVE_SSE" = x"1" && test x"$OPUS_X86_PRESUME_SSE" != x"1"], Chris@69: [ Chris@69: OPUS_X86_SSE_CFLAGS="$X86_SSE_CFLAGS" Chris@69: AC_SUBST([OPUS_X86_SSE_CFLAGS]) Chris@69: ] Chris@69: ) Chris@69: OPUS_CHECK_INTRINSICS( Chris@69: [SSE2], Chris@69: [$X86_SSE2_CFLAGS], Chris@69: [OPUS_X86_MAY_HAVE_SSE2], Chris@69: [OPUS_X86_PRESUME_SSE2], Chris@69: [[#include Chris@69: #include Chris@69: ]], Chris@69: [[ Chris@69: __m128i mtest; Chris@69: mtest = _mm_set1_epi32((int)time(NULL)); Chris@69: mtest = _mm_mul_epu32(mtest, mtest); Chris@69: return _mm_cvtsi128_si32(mtest); Chris@69: ]] Chris@69: ) Chris@69: AS_IF([test x"$OPUS_X86_MAY_HAVE_SSE2" = x"1" && test x"$OPUS_X86_PRESUME_SSE2" != x"1"], Chris@69: [ Chris@69: OPUS_X86_SSE2_CFLAGS="$X86_SSE2_CFLAGS" Chris@69: AC_SUBST([OPUS_X86_SSE2_CFLAGS]) Chris@69: ] Chris@69: ) Chris@69: OPUS_CHECK_INTRINSICS( Chris@69: [SSE4.1], Chris@69: [$X86_SSE4_1_CFLAGS], Chris@69: [OPUS_X86_MAY_HAVE_SSE4_1], Chris@69: [OPUS_X86_PRESUME_SSE4_1], Chris@69: [[#include Chris@69: #include Chris@69: ]], Chris@69: [[ Chris@69: __m128i mtest; Chris@69: mtest = _mm_set1_epi32((int)time(NULL)); Chris@69: mtest = _mm_mul_epi32(mtest, mtest); Chris@69: return _mm_cvtsi128_si32(mtest); Chris@69: ]] Chris@69: ) Chris@69: AS_IF([test x"$OPUS_X86_MAY_HAVE_SSE4_1" = x"1" && test x"$OPUS_X86_PRESUME_SSE4_1" != x"1"], Chris@69: [ Chris@69: OPUS_X86_SSE4_1_CFLAGS="$X86_SSE4_1_CFLAGS" Chris@69: AC_SUBST([OPUS_X86_SSE4_1_CFLAGS]) Chris@69: ] Chris@69: ) Chris@69: OPUS_CHECK_INTRINSICS( Chris@69: [AVX], Chris@69: [$X86_AVX_CFLAGS], Chris@69: [OPUS_X86_MAY_HAVE_AVX], Chris@69: [OPUS_X86_PRESUME_AVX], Chris@69: [[#include Chris@69: #include Chris@69: ]], Chris@69: [[ Chris@69: __m256 mtest; Chris@69: mtest = _mm256_set1_ps((float)time(NULL)); Chris@69: mtest = _mm256_addsub_ps(mtest, mtest); Chris@69: return _mm_cvtss_si32(_mm256_extractf128_ps(mtest, 0)); Chris@69: ]] Chris@69: ) Chris@69: AS_IF([test x"$OPUS_X86_MAY_HAVE_AVX" = x"1" && test x"$OPUS_X86_PRESUME_AVX" != x"1"], Chris@69: [ Chris@69: OPUS_X86_AVX_CFLAGS="$X86_AVX_CFLAGS" Chris@69: AC_SUBST([OPUS_X86_AVX_CFLAGS]) Chris@69: ] Chris@69: ) Chris@69: AS_IF([test x"$rtcd_support" = x"no"], [rtcd_support=""]) Chris@69: AS_IF([test x"$OPUS_X86_MAY_HAVE_SSE" = x"1"], Chris@69: [ Chris@69: AC_DEFINE([OPUS_X86_MAY_HAVE_SSE], 1, [Compiler supports X86 SSE Intrinsics]) Chris@69: intrinsics_support="$intrinsics_support SSE" Chris@69: Chris@69: AS_IF([test x"$OPUS_X86_PRESUME_SSE" = x"1"], Chris@69: [AC_DEFINE([OPUS_X86_PRESUME_SSE], 1, [Define if binary requires SSE intrinsics support])], Chris@69: [rtcd_support="$rtcd_support SSE"]) Chris@69: ], Chris@69: [ Chris@69: AC_MSG_WARN([Compiler does not support SSE intrinsics]) Chris@69: ]) Chris@69: Chris@69: AS_IF([test x"$OPUS_X86_MAY_HAVE_SSE2" = x"1"], Chris@69: [ Chris@69: AC_DEFINE([OPUS_X86_MAY_HAVE_SSE2], 1, [Compiler supports X86 SSE2 Intrinsics]) Chris@69: intrinsics_support="$intrinsics_support SSE2" Chris@69: Chris@69: AS_IF([test x"$OPUS_X86_PRESUME_SSE2" = x"1"], Chris@69: [AC_DEFINE([OPUS_X86_PRESUME_SSE2], 1, [Define if binary requires SSE2 intrinsics support])], Chris@69: [rtcd_support="$rtcd_support SSE2"]) Chris@69: ], Chris@69: [ Chris@69: AC_MSG_WARN([Compiler does not support SSE2 intrinsics]) Chris@69: ]) Chris@69: Chris@69: AS_IF([test x"$OPUS_X86_MAY_HAVE_SSE4_1" = x"1"], Chris@69: [ Chris@69: AC_DEFINE([OPUS_X86_MAY_HAVE_SSE4_1], 1, [Compiler supports X86 SSE4.1 Intrinsics]) Chris@69: intrinsics_support="$intrinsics_support SSE4.1" Chris@69: Chris@69: AS_IF([test x"$OPUS_X86_PRESUME_SSE4_1" = x"1"], Chris@69: [AC_DEFINE([OPUS_X86_PRESUME_SSE4_1], 1, [Define if binary requires SSE4.1 intrinsics support])], Chris@69: [rtcd_support="$rtcd_support SSE4.1"]) Chris@69: ], Chris@69: [ Chris@69: AC_MSG_WARN([Compiler does not support SSE4.1 intrinsics]) Chris@69: ]) Chris@69: AS_IF([test x"$OPUS_X86_MAY_HAVE_AVX" = x"1"], Chris@69: [ Chris@69: AC_DEFINE([OPUS_X86_MAY_HAVE_AVX], 1, [Compiler supports X86 AVX Intrinsics]) Chris@69: intrinsics_support="$intrinsics_support AVX" Chris@69: Chris@69: AS_IF([test x"$OPUS_X86_PRESUME_AVX" = x"1"], Chris@69: [AC_DEFINE([OPUS_X86_PRESUME_AVX], 1, [Define if binary requires AVX intrinsics support])], Chris@69: [rtcd_support="$rtcd_support AVX"]) Chris@69: ], Chris@69: [ Chris@69: AC_MSG_WARN([Compiler does not support AVX intrinsics]) Chris@69: ]) Chris@69: Chris@69: AS_IF([test x"$intrinsics_support" = x""], Chris@69: [intrinsics_support=no], Chris@69: [intrinsics_support="x86$intrinsics_support"] Chris@69: ) Chris@69: AS_IF([test x"$rtcd_support" = x""], Chris@69: [rtcd_support=no], Chris@69: [rtcd_support="x86$rtcd_support"], Chris@69: ) Chris@69: Chris@69: AS_IF([test x"$enable_rtcd" = x"yes" && test x"$rtcd_support" != x""],[ Chris@69: get_cpuid_by_asm="no" Chris@69: AC_MSG_CHECKING([How to get X86 CPU Info]) Chris@69: AC_LINK_IFELSE([AC_LANG_PROGRAM([[ Chris@69: #include Chris@69: ]],[[ Chris@69: unsigned int CPUInfo0; Chris@69: unsigned int CPUInfo1; Chris@69: unsigned int CPUInfo2; Chris@69: unsigned int CPUInfo3; Chris@69: unsigned int InfoType; Chris@69: __asm__ __volatile__ ( Chris@69: "cpuid": Chris@69: "=a" (CPUInfo0), Chris@69: "=b" (CPUInfo1), Chris@69: "=c" (CPUInfo2), Chris@69: "=d" (CPUInfo3) : Chris@69: "a" (InfoType), "c" (0) Chris@69: ); Chris@69: ]])], Chris@69: [get_cpuid_by_asm="yes" Chris@69: AC_MSG_RESULT([Inline Assembly]) Chris@69: AC_DEFINE([CPU_INFO_BY_ASM], [1], [Get CPU Info by asm method])], Chris@69: [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ Chris@69: #include Chris@69: ]],[[ Chris@69: unsigned int CPUInfo0; Chris@69: unsigned int CPUInfo1; Chris@69: unsigned int CPUInfo2; Chris@69: unsigned int CPUInfo3; Chris@69: unsigned int InfoType; Chris@69: __get_cpuid(InfoType, &CPUInfo0, &CPUInfo1, &CPUInfo2, &CPUInfo3); Chris@69: ]])], Chris@69: [AC_MSG_RESULT([C method]) Chris@69: AC_DEFINE([CPU_INFO_BY_C], [1], [Get CPU Info by c method])], Chris@69: [AC_MSG_ERROR([no supported Get CPU Info method, please disable run-time CPU capabilities detection or intrinsics])])])]) Chris@69: ], Chris@69: [ Chris@69: AC_MSG_WARN([No intrinsics support for your architecture]) Chris@69: intrinsics_support="no" Chris@69: ]) Chris@69: ], Chris@69: [ Chris@69: intrinsics_support="no" Chris@69: ]) Chris@69: Chris@69: AM_CONDITIONAL([CPU_ARM], [test "$cpu_arm" = "yes"]) Chris@69: AM_CONDITIONAL([HAVE_ARM_NEON_INTR], Chris@69: [test x"$OPUS_ARM_MAY_HAVE_NEON_INTR" = x"1"]) Chris@69: AM_CONDITIONAL([HAVE_ARM_NE10], Chris@69: [test x"$HAVE_ARM_NE10" = x"1"]) Chris@69: AM_CONDITIONAL([HAVE_SSE], Chris@69: [test x"$OPUS_X86_MAY_HAVE_SSE" = x"1"]) Chris@69: AM_CONDITIONAL([HAVE_SSE2], Chris@69: [test x"$OPUS_X86_MAY_HAVE_SSE2" = x"1"]) Chris@69: AM_CONDITIONAL([HAVE_SSE4_1], Chris@69: [test x"$OPUS_X86_MAY_HAVE_SSE4_1" = x"1"]) Chris@69: AM_CONDITIONAL([HAVE_AVX], Chris@69: [test x"$OPUS_X86_MAY_HAVE_AVX" = x"1"]) Chris@69: Chris@69: AS_IF([test x"$enable_rtcd" = x"yes"],[ Chris@69: AS_IF([test x"$rtcd_support" != x"no"],[ Chris@69: AC_DEFINE([OPUS_HAVE_RTCD], [1], Chris@69: [Use run-time CPU capabilities detection]) Chris@69: OPUS_HAVE_RTCD=1 Chris@69: AC_SUBST(OPUS_HAVE_RTCD) Chris@69: ]) Chris@69: ],[ Chris@69: rtcd_support="disabled" Chris@69: ]) Chris@69: Chris@69: AC_ARG_ENABLE([assertions], Chris@69: [AS_HELP_STRING([--enable-assertions],[enable additional software error checking])],, Chris@69: [enable_assertions=no]) Chris@69: Chris@69: AS_IF([test "$enable_assertions" = "yes"], [ Chris@69: AC_DEFINE([ENABLE_ASSERTIONS], [1], [Assertions]) Chris@69: ]) Chris@69: Chris@69: AC_ARG_ENABLE([hardening], Chris@69: [AS_HELP_STRING([--disable-hardening],[disable run-time checks that are cheap and safe for use in production])],, Chris@69: [enable_hardening=yes]) Chris@69: Chris@69: AS_IF([test "$enable_hardening" = "yes"], [ Chris@69: AC_DEFINE([ENABLE_HARDENING], [1], [Hardening]) Chris@69: ]) Chris@69: Chris@69: AC_ARG_ENABLE([fuzzing], Chris@69: [AS_HELP_STRING([--enable-fuzzing],[causes the encoder to make random decisions (do not use in production)])],, Chris@69: [enable_fuzzing=no]) Chris@69: Chris@69: AS_IF([test "$enable_fuzzing" = "yes"], [ Chris@69: AC_DEFINE([FUZZING], [1], [Fuzzing]) Chris@69: ]) Chris@69: Chris@69: AC_ARG_ENABLE([check-asm], Chris@69: [AS_HELP_STRING([--enable-check-asm], Chris@69: [enable bit-exactness checks between optimized and c implementations])],, Chris@69: [enable_check_asm=no]) Chris@69: Chris@69: AS_IF([test "$enable_check_asm" = "yes"], [ Chris@69: AC_DEFINE([OPUS_CHECK_ASM], [1], [Run bit-exactness checks between optimized and c implementations]) Chris@69: ]) Chris@69: Chris@69: AC_ARG_ENABLE([doc], Chris@69: [AS_HELP_STRING([--disable-doc], [Do not build API documentation])],, Chris@69: [enable_doc=yes]) Chris@69: Chris@69: AS_IF([test "$enable_doc" = "yes"], [ Chris@69: AC_CHECK_PROG(HAVE_DOXYGEN, [doxygen], [yes], [no]) Chris@69: AC_CHECK_PROG(HAVE_DOT, [dot], [yes], [no]) Chris@69: ],[ Chris@69: HAVE_DOXYGEN=no Chris@69: ]) Chris@69: Chris@69: AM_CONDITIONAL([HAVE_DOXYGEN], [test "$HAVE_DOXYGEN" = "yes"]) Chris@69: Chris@69: AC_ARG_ENABLE([extra-programs], Chris@69: [AS_HELP_STRING([--disable-extra-programs], [Do not build extra programs (demo and tests)])],, Chris@69: [enable_extra_programs=yes]) Chris@69: Chris@69: AM_CONDITIONAL([EXTRA_PROGRAMS], [test "$enable_extra_programs" = "yes"]) Chris@69: Chris@69: Chris@69: AC_ARG_ENABLE([rfc8251], Chris@69: AS_HELP_STRING([--disable-rfc8251], [Disable bitstream fixes from RFC 8251]),, Chris@69: [enable_rfc8251=yes]) Chris@69: Chris@69: AS_IF([test "$enable_rfc8251" = "no"], [ Chris@69: AC_DEFINE([DISABLE_UPDATE_DRAFT], [1], [Disable bitstream fixes from RFC 8251]) Chris@69: ]) Chris@69: Chris@69: Chris@69: saved_CFLAGS="$CFLAGS" Chris@69: CFLAGS="$CFLAGS -fvisibility=hidden" Chris@69: AC_MSG_CHECKING([if ${CC} supports -fvisibility=hidden]) Chris@69: AC_COMPILE_IFELSE([AC_LANG_SOURCE([[char foo;]])], Chris@69: [ AC_MSG_RESULT([yes]) ], Chris@69: [ AC_MSG_RESULT([no]) Chris@69: CFLAGS="$saved_CFLAGS" Chris@69: ]) Chris@69: Chris@69: on_x86=no Chris@69: case "$host_cpu" in Chris@69: i[[3456]]86 | x86_64) Chris@69: on_x86=yes Chris@69: ;; Chris@69: esac Chris@69: Chris@69: on_windows=no Chris@69: case $host in Chris@69: *cygwin*|*mingw*) Chris@69: on_windows=yes Chris@69: ;; Chris@69: esac Chris@69: Chris@69: dnl Enable stack-protector-all only on x86 where it's well supported. Chris@69: dnl on some platforms it causes crashes. Hopefully the OS's default's Chris@69: dnl include this on platforms that work but have been missed here. Chris@69: AC_ARG_ENABLE([stack-protector], Chris@69: [AS_HELP_STRING([--disable-stack-protector],[Disable compiler stack hardening])],, Chris@69: [ Chris@69: AS_IF([test "$ac_cv_c_compiler_gnu" = "yes" && test "$on_x86" = "yes" && test "$on_windows" = "no"], Chris@69: [enable_stack_protector=yes],[enable_stack_protector=no]) Chris@69: ]) Chris@69: Chris@69: AS_IF([test "$enable_stack_protector" = "yes"], Chris@69: [ Chris@69: saved_CFLAGS="$CFLAGS" Chris@69: CFLAGS="$CFLAGS -fstack-protector-strong" Chris@69: AC_MSG_CHECKING([if ${CC} supports -fstack-protector-strong]) Chris@69: AC_LINK_IFELSE([AC_LANG_PROGRAM([],[[char foo;]])], Chris@69: [ AC_MSG_RESULT([yes]) ], Chris@69: [ Chris@69: AC_MSG_RESULT([no]) Chris@69: enable_stack_protector=no Chris@69: CFLAGS="$saved_CFLAGS" Chris@69: ]) Chris@69: ]) Chris@69: Chris@69: AS_IF([test x$ac_cv_c_compiler_gnu = xyes], Chris@69: [AX_ADD_FORTIFY_SOURCE] Chris@69: ) Chris@69: Chris@69: CFLAGS="$CFLAGS -W" Chris@69: Chris@69: warn_CFLAGS="-Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes" Chris@69: saved_CFLAGS="$CFLAGS" Chris@69: CFLAGS="$CFLAGS $warn_CFLAGS" Chris@69: AC_MSG_CHECKING([if ${CC} supports ${warn_CFLAGS}]) Chris@69: AC_COMPILE_IFELSE([AC_LANG_SOURCE([[char foo;]])], Chris@69: [ AC_MSG_RESULT([yes]) ], Chris@69: [ AC_MSG_RESULT([no]) Chris@69: CFLAGS="$saved_CFLAGS" Chris@69: ]) Chris@69: Chris@69: saved_LIBS="$LIBS" Chris@69: LIBS="$LIBS $LIBM" Chris@69: AC_CHECK_FUNCS([lrintf]) Chris@69: AC_CHECK_FUNCS([lrint]) Chris@69: LIBS="$saved_LIBS" Chris@69: Chris@69: AC_CHECK_FUNCS([__malloc_hook]) Chris@69: Chris@69: AC_SUBST([PC_BUILD]) Chris@69: Chris@69: AC_CONFIG_FILES([ Chris@69: Makefile Chris@69: opus.pc Chris@69: opus-uninstalled.pc Chris@69: celt/arm/armopts.s Chris@69: doc/Makefile Chris@69: doc/Doxyfile Chris@69: ]) Chris@69: AC_CONFIG_HEADERS([config.h]) Chris@69: Chris@69: AC_OUTPUT Chris@69: Chris@69: AC_MSG_NOTICE([ Chris@69: ------------------------------------------------------------------------ Chris@69: $PACKAGE_NAME $PACKAGE_VERSION: Automatic configuration OK. Chris@69: Chris@69: Compiler support: Chris@69: Chris@69: C99 var arrays: ................ ${has_var_arrays} Chris@69: C99 lrintf: .................... ${ac_cv_func_lrintf} Chris@69: Use alloca: .................... ${use_alloca} Chris@69: Chris@69: General configuration: Chris@69: Chris@69: Floating point support: ........ ${enable_float} Chris@69: Fast float approximations: ..... ${enable_float_approx} Chris@69: Fixed point debugging: ......... ${enable_fixed_point_debug} Chris@69: Inline Assembly Optimizations: . ${inline_optimization} Chris@69: External Assembly Optimizations: ${asm_optimization} Chris@69: Intrinsics Optimizations: ...... ${intrinsics_support} Chris@69: Run-time CPU detection: ........ ${rtcd_support} Chris@69: Custom modes: .................. ${enable_custom_modes} Chris@69: Assertion checking: ............ ${enable_assertions} Chris@69: Hardening: ..................... ${enable_hardening} Chris@69: Fuzzing: ....................... ${enable_fuzzing} Chris@69: Check ASM: ..................... ${enable_check_asm} Chris@69: Chris@69: API documentation: ............. ${enable_doc} Chris@69: Extra programs: ................ ${enable_extra_programs} Chris@69: ------------------------------------------------------------------------ Chris@69: Chris@69: Type "make; make install" to compile and install Chris@69: Type "make check" to run the test suite Chris@69: ]) Chris@69: