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