1dnl Process this file with autoconf to produce a configure script. -*-m4-*- 2 3dnl The package_version file will be automatically synced to the git revision 4dnl by the update_version script when configured in the repository, but will 5dnl remain constant in tarball releases unless it is manually edited. 6m4_define([CURRENT_VERSION], 7 m4_esyscmd([ ./update_version 2>/dev/null || true 8 if test -e package_version; then 9 . ./package_version 10 printf "$PACKAGE_VERSION" 11 else 12 printf "unknown" 13 fi ])) 14 15AC_INIT([opus],[CURRENT_VERSION],[opus@xiph.org]) 16 17AC_CONFIG_SRCDIR(src/opus_encoder.c) 18AC_CONFIG_MACRO_DIR([m4]) 19 20dnl enable silent rules on automake 1.11 and later 21m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 22 23# For libtool. 24dnl Please update these for releases. 25OPUS_LT_CURRENT=4 26OPUS_LT_REVISION=0 27OPUS_LT_AGE=4 28 29AC_SUBST(OPUS_LT_CURRENT) 30AC_SUBST(OPUS_LT_REVISION) 31AC_SUBST(OPUS_LT_AGE) 32 33AM_INIT_AUTOMAKE([no-define]) 34AM_MAINTAINER_MODE([enable]) 35 36AC_CANONICAL_HOST 37AC_MINGW32 38AM_PROG_LIBTOOL 39AM_PROG_CC_C_O 40 41AC_PROG_CC_C99 42AC_C_CONST 43AC_C_INLINE 44 45AC_DEFINE([OPUS_BUILD], [], [This is a build of OPUS]) 46 47#Use a hacked up version of autoconf's AC_C_RESTRICT because it's not 48#strong enough a test to detect old buggy versions of GCC (e.g. 2.95.3) 49#Note: Both this and the test for variable-size arrays below are also 50# done by AC_PROG_CC_C99, but not thoroughly enough apparently. 51AC_CACHE_CHECK([for C/C++ restrict keyword], ac_cv_c_restrict, 52 [ac_cv_c_restrict=no 53 # The order here caters to the fact that C++ does not require restrict. 54 for ac_kw in __restrict __restrict__ _Restrict restrict; do 55 AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 56 [[typedef int * int_ptr; 57 int foo (int_ptr $ac_kw ip, int * $ac_kw baz[]) { 58 return ip[0]; 59 }]], 60 [[int s[1]; 61 int * $ac_kw t = s; 62 t[0] = 0; 63 return foo(t, (void *)0)]])], 64 [ac_cv_c_restrict=$ac_kw]) 65 test "$ac_cv_c_restrict" != no && break 66 done 67 ]) 68 69AH_VERBATIM([restrict], 70[/* Define to the equivalent of the C99 'restrict' keyword, or to 71 nothing if this is not supported. Do not define if restrict is 72 supported directly. */ 73#undef restrict 74/* Work around a bug in Sun C++: it does not support _Restrict or 75 __restrict__, even though the corresponding Sun C compiler ends up with 76 "#define restrict _Restrict" or "#define restrict __restrict__" in the 77 previous line. Perhaps some future version of Sun C++ will work with 78 restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ 79#if defined __SUNPRO_CC && !defined __RESTRICT 80# define _Restrict 81# define __restrict__ 82#endif]) 83 84case $ac_cv_c_restrict in 85 restrict) ;; 86 no) AC_DEFINE([restrict], []) ;; 87 *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; 88esac 89 90AC_MSG_CHECKING(for C99 variable-size arrays) 91AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], 92 [[static int x; char a[++x]; a[sizeof a - 1] = 0; int N; return a[0];]])], 93 [ has_var_arrays=yes 94 use_alloca="no (using var arrays)" 95 AC_DEFINE([VAR_ARRAYS], [1], [Use C99 variable-size arrays]) 96 ],[ 97 has_var_arrays=no 98 ]) 99AC_MSG_RESULT([$has_var_arrays]) 100 101AS_IF([test "$has_var_arrays" = "no"], 102 [ 103 AC_CHECK_HEADERS([alloca.h]) 104 AC_MSG_CHECKING(for alloca) 105 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alloca.h>]], 106 [[int foo=10; int *array = alloca(foo);]])], 107 [ use_alloca=yes; 108 AC_DEFINE([USE_ALLOCA], [], [Make use of alloca]) 109 ],[ 110 use_alloca=no 111 ]) 112 AC_MSG_RESULT([$use_alloca]) 113 ]) 114 115LT_LIB_M 116 117AC_ARG_ENABLE([fixed-point], 118 [AS_HELP_STRING([--enable-fixed-point], 119 [compile without floating point (for machines without a fast enough FPU)])],, 120 [enable_fixed_point=no]) 121 122AS_IF([test "$enable_fixed_point" = "yes"],[ 123 enable_float="no" 124 AC_DEFINE([FIXED_POINT], [1], [Compile as fixed-point (for machines without a fast enough FPU)]) 125 PC_BUILD="fixed-point" 126],[ 127 enable_float="yes"; 128 PC_BUILD="floating-point" 129]) 130 131AM_CONDITIONAL([FIXED_POINT], [test "$enable_fixed_point" = "yes"]) 132 133AC_ARG_ENABLE([fixed-point-debug], 134 [AS_HELP_STRING([--enable-fixed-point-debug], [debug fixed-point implementation])],, 135 [enable_fixed_point_debug=no]) 136 137AS_IF([test "$enable_fixed_point_debug" = "yes"],[ 138 AC_DEFINE([FIXED_DEBUG], [1], [Debug fixed-point implementation]) 139]) 140 141AC_ARG_ENABLE([custom-modes], 142 [AS_HELP_STRING([--enable-custom-modes], [enable non-Opus modes, e.g. 44.1 kHz & 2^n frames])],, 143 [enable_custom_modes=no]) 144 145AS_IF([test "$enable_custom_modes" = "yes"],[ 146 AC_DEFINE([CUSTOM_MODES], [1], [Custom modes]) 147 PC_BUILD="$PC_BUILD, custom modes" 148]) 149 150AM_CONDITIONAL([CUSTOM_MODES], [test "$enable_custom_modes" = "yes"]) 151 152has_float_approx=no 153#case "$host_cpu" in 154#i[[3456]]86 | x86_64 | powerpc64 | powerpc32 | ia64) 155# has_float_approx=yes 156# ;; 157#esac 158 159AC_ARG_ENABLE([float-approx], 160 [AS_HELP_STRING([--enable-float-approx], [enable fast approximations for floating point])], 161 [if test "$enable_float_approx" = "yes"; then 162 AC_WARN([Floating point approximations are not supported on all platforms.]) 163 fi 164 ], 165 [enable_float_approx=$has_float_approx]) 166 167AS_IF([test "$enable_float_approx" = "yes"],[ 168 AC_DEFINE([FLOAT_APPROX], [1], [Float approximations]) 169]) 170 171AC_ARG_ENABLE([asm], 172 [AS_HELP_STRING([--disable-asm], [Disable assembly optimizations])],, 173 [enable_asm=yes]) 174 175rtcd_support=no 176cpu_arm=no 177 178AS_IF([test "$enable_asm" = "yes"],[ 179 asm_optimization="no asm for your platform, please send patches" 180 case $host_cpu in 181 arm*) 182 cpu_arm=yes 183 AS_GCC_INLINE_ASSEMBLY([asm_optimization="ARM"], 184 [asm_optimization="disabled"]) 185 if test "$asm_optimization" = "ARM" ; then 186 rtcd_support=yes 187 AC_DEFINE([ARMv4_ASM], 1, [Use generic ARMv4 asm optimizations]) 188 AS_ASM_ARM_EDSP([ARMv5E_ASM=1],[ARMv5E_ASM=0]) 189 if test "$ARMv5E_ASM" = "1" ; then 190 AC_DEFINE([ARMv5E_ASM], [1], [Use ARMv5E asm optimizations]) 191 asm_optimization="$asm_optimization (EDSP)" 192 fi 193 AS_ASM_ARM_MEDIA([ARMv6_ASM=1],[ARMv6_ASM=0]) 194 if test "$ARMv6_ASM" = "1" ; then 195 AC_DEFINE([ARMv6_ASM], [1], [Use ARMv6 asm optimizations]) 196 asm_optimization="$asm_optimization (Media)" 197 fi 198 AS_ASM_ARM_NEON([ARM_HAVE_NEON=1],[ARM_HAVE_NEON=0]) 199 if test "$ARM_HAVE_NEON" = "1" ; then 200 AC_DEFINE([ARM_HAVE_NEON], 1, [Use ARM NEON optimizations]) 201 asm_optimization="$asm_optimization (NEON)" 202 fi 203 fi 204 ;; 205 esac 206],[ 207 asm_optimization="disabled" 208]) 209 210AM_CONDITIONAL([CPU_ARM], [test "$cpu_arm" = "yes"]) 211 212AC_ARG_ENABLE([rtcd], 213 [AS_HELP_STRING([--disable-rtcd], [Disable run-time CPU capabilities detection])],, 214 [enable_rtcd=yes]) 215 216AS_IF([test "$enable_rtcd" = "yes"],[ 217 AS_IF([test "$rtcd_support" = "yes"],[ 218 AC_DEFINE([OPUS_HAVE_RTCD], [1], [Use run-time CPU capabilities detection]) 219 ],[ 220 rtcd_support="no rtcd for your platform, please send patches" 221 ]) 222],[ 223 rtcd_support="no" 224]) 225 226AC_ARG_ENABLE([assertions], 227 [AS_HELP_STRING([--enable-assertions],[enable additional software error checking])],, 228 [enable_assertions=no]) 229 230AS_IF([test "$enable_assertions" = "yes"], [ 231 AC_DEFINE([ENABLE_ASSERTIONS], [1], [Assertions]) 232]) 233 234AC_ARG_ENABLE([fuzzing], 235 [AS_HELP_STRING([--enable-fuzzing],[causes the encoder to make random decisions])],, 236 [enable_fuzzing=no]) 237 238AS_IF([test "$enable_fuzzing" = "yes"], [ 239 AC_DEFINE([FUZZING], [1], [Fuzzing]) 240]) 241 242AC_ARG_ENABLE([doc], 243 [AS_HELP_STRING([--disable-doc], [Do not build API documentation])],, 244 [enable_doc=yes]) 245 246AS_IF([test "$enable_doc" = "yes"], [ 247 AC_CHECK_PROG(HAVE_DOXYGEN, [doxygen], [yes], [no]) 248],[ 249 HAVE_DOXYGEN=no 250]) 251 252AM_CONDITIONAL([HAVE_DOXYGEN], [test "$HAVE_DOXYGEN" = "yes"]) 253 254AC_ARG_ENABLE([extra-programs], 255 [AS_HELP_STRING([--disable-extra-programs], [Do not build extra programs (demo and tests)])],, 256 [enable_extra_programs=yes]) 257 258AM_CONDITIONAL([EXTRA_PROGRAMS], [test "$enable_extra_programs" = "yes"]) 259 260 261saved_CFLAGS="$CFLAGS" 262CFLAGS="$CFLAGS -fvisibility=hidden" 263AC_MSG_CHECKING([if ${CC} supports -fvisibility=hidden]) 264AC_COMPILE_IFELSE([AC_LANG_SOURCE([[char foo;]])], 265 [ AC_MSG_RESULT([yes]) ], 266 [ AC_MSG_RESULT([no]) 267 CFLAGS="$saved_CFLAGS" 268 ]) 269 270CFLAGS="$CFLAGS -W" 271 272warn_CFLAGS="-Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes" 273saved_CFLAGS="$CFLAGS" 274CFLAGS="$CFLAGS $warn_CFLAGS" 275AC_MSG_CHECKING([if ${CC} supports ${warn_CFLAGS}]) 276AC_COMPILE_IFELSE([AC_LANG_SOURCE([[char foo;]])], 277 [ AC_MSG_RESULT([yes]) ], 278 [ AC_MSG_RESULT([no]) 279 CFLAGS="$saved_CFLAGS" 280 ]) 281 282saved_LIBS="$LIBS" 283LIBS="$LIBS $LIBM" 284AC_CHECK_FUNCS([lrintf]) 285AC_CHECK_FUNCS([lrint]) 286LIBS="$saved_LIBS" 287 288AC_CHECK_FUNCS([__malloc_hook]) 289 290AC_SUBST([PC_BUILD]) 291 292 293AC_CONFIG_FILES([Makefile opus.pc opus-uninstalled.pc 294 doc/Makefile doc/Doxyfile]) 295AC_CONFIG_HEADERS([config.h]) 296 297AC_OUTPUT 298 299AC_MSG_NOTICE([ 300------------------------------------------------------------------------ 301 $PACKAGE_NAME $PACKAGE_VERSION: Automatic configuration OK. 302 303 Compiler support: 304 305 C99 var arrays: ................ ${has_var_arrays} 306 C99 lrintf: .................... ${ac_cv_func_lrintf} 307 Use alloca: .................... ${use_alloca} 308 309 General configuration: 310 311 Floating point support: ........ ${enable_float} 312 Fast float approximations: ..... ${enable_float_approx} 313 Fixed point debugging: ......... ${enable_fixed_point_debug} 314 Assembly optimization: ......... ${asm_optimization} 315 Run-time CPU detection: ........ ${rtcd_support} 316 Custom modes: .................. ${enable_custom_modes} 317 Assertion checking: ............ ${enable_assertions} 318 Fuzzing: ....................... ${enable_fuzzing} 319 320 API documentation: ............. ${enable_doc} 321 Extra programs: ................ ${enable_extra_programs} 322------------------------------------------------------------------------ 323 324 Type "make; make install" to compile and install 325 Type "make check" to run the test suite 326]) 327 328