configure.ac 9.6 KB
Newer Older
jm's avatar
jm committed
1 2 3 4
dnl Process this file with autoconf to produce a configure script. -*-m4-*-

AC_INIT(libspeex/speex.c)

5
AC_CONFIG_HEADERS([config.h])
jm's avatar
jm committed
6 7 8

SPEEX_MAJOR_VERSION=1
SPEEX_MINOR_VERSION=1
jm's avatar
jm committed
9
SPEEX_MICRO_VERSION=16
10
SPEEX_EXTRA_VERSION=
jm's avatar
jm committed
11
#SPEEX_VERSION=
12
#SPEEX_VERSION=$SPEEX_MAJOR_VERSION.$SPEEX_MINOR_VERSION.$SPEEX_MICRO_VERSION$SPEEX_EXTRA_VERSION
jm's avatar
jm committed
13
SPEEX_VERSION="1.2rc1"
jm's avatar
jm committed
14

15
SPEEX_LT_CURRENT=6
jm's avatar
jm committed
16
SPEEX_LT_REVISION=0
17
SPEEX_LT_AGE=5
jm's avatar
jm committed
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

AC_SUBST(SPEEX_LT_CURRENT)
AC_SUBST(SPEEX_LT_REVISION)
AC_SUBST(SPEEX_LT_AGE)

# For automake.
VERSION=$SPEEX_VERSION
PACKAGE=speex

AC_SUBST(SPEEX_VERSION)

AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
AM_MAINTAINER_MODE

AC_CANONICAL_HOST
33
AC_LIBTOOL_WIN32_DLL
jm's avatar
jm committed
34 35 36 37 38 39 40 41 42 43
AM_PROG_LIBTOOL

AC_C_BIGENDIAN
AC_C_CONST
AC_C_INLINE
AC_C_RESTRICT


AC_MSG_CHECKING(for C99 variable-size arrays)
AC_TRY_COMPILE( , [
44 45
int foo;
foo = 10;
jm's avatar
jm committed
46 47 48 49 50 51 52 53
int array[foo];
],
[has_var_arrays=yes;AC_DEFINE([VAR_ARRAYS], [], [Use C99 variable-size arrays])
],
has_var_arrays=no
)
AC_MSG_RESULT($has_var_arrays)

54
AC_CHECK_HEADERS([alloca.h getopt.h])
jm's avatar
jm committed
55
AC_MSG_CHECKING(for alloca)
56 57 58 59 60 61
AC_TRY_COMPILE( [
#ifdef HAVE_ALLOCA_H
# include <alloca.h>
#endif
#include <stdlib.h>
], [
jm's avatar
jm committed
62 63 64 65 66 67 68 69 70 71 72 73 74
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)

75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
AC_MSG_CHECKING(for SSE in current arch/CFLAGS)
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
#include <xmmintrin.h>
__m128 testfunc(float *a, float *b) {
  return _mm_add_ps(_mm_loadu_ps(a), _mm_loadu_ps(b));
}
]])],
[
has_sse=yes
],
[
has_sse=no
]
)
90
AC_MSG_RESULT($has_sse)
91

92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fvisibility=hidden"
AC_MSG_CHECKING(for ELF visibility)
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#pragma GCC visibility push(hidden)
__attribute__((visibility("default")))
int var=10;
]])],
[
has_visibility=yes
AC_DEFINE([EXPORT], [__attribute__((visibility("default")))], [Symbol visibility prefix])
],
[
has_visibility=no
AC_DEFINE([EXPORT], [], [Symbol visibility prefix])
CFLAGS="$SAVE_CFLAGS"
]
)
AC_MSG_RESULT($has_visibility)

jm's avatar
jm committed
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
AC_CHECK_HEADERS(sys/soundcard.h sys/audioio.h)

XIPH_PATH_OGG([src="src"], [src=""])
AC_SUBST(src)

AC_CHECK_LIB(m, sin)

# Check for getopt_long; if not found, use included source.
AC_CHECK_FUNCS([getopt_long],,
[# FreeBSD has a gnugetopt library.
  AC_CHECK_LIB([gnugetopt],[getopt_long],
[AC_DEFINE([HAVE_GETOPT_LONG])],
[# Use the GNU replacement.
AC_LIBOBJ(getopt)
AC_LIBOBJ(getopt1)])])

AC_CHECK_LIB(winmm, main)

AC_DEFINE_UNQUOTED(SPEEX_VERSION, "${SPEEX_VERSION}", [Complete version string])
AC_DEFINE_UNQUOTED(SPEEX_MAJOR_VERSION, ${SPEEX_MAJOR_VERSION}, [Version major])
AC_DEFINE_UNQUOTED(SPEEX_MINOR_VERSION, ${SPEEX_MINOR_VERSION}, [Version minor])
AC_DEFINE_UNQUOTED(SPEEX_MICRO_VERSION, ${SPEEX_MICRO_VERSION}, [Version micro])
AC_DEFINE_UNQUOTED(SPEEX_EXTRA_VERSION, "${SPEEX_EXTRA_VERSION}", [Version extra])

AC_ARG_ENABLE(valgrind, [  --enable-valgrind       Enable valgrind extra checks],
[if test "$enableval" = yes; then
  AC_DEFINE([ENABLE_VALGRIND], , [Enable valgrind extra checks])
fi])

142 143 144
AC_ARG_ENABLE(sse, [  --enable-sse            Enable SSE support], [
if test "x$enableval" != xno; then
has_sse=yes
jm's avatar
jm committed
145
CFLAGS="$CFLAGS -O3 -msse"
146 147
else
has_sse=no
jm's avatar
jm committed
148 149 150
fi
])

151 152

FFT=smallft
153

jm's avatar
jm committed
154 155
AC_ARG_ENABLE(fixed-point, [  --enable-fixed-point    Compile as fixed-point],
[if test "$enableval" = yes; then
156 157
  FFT=kiss
  has_sse=no
jm's avatar
jm committed
158
  AC_DEFINE([FIXED_POINT], , [Compile as fixed-point])
159 160 161 162
else
  AC_DEFINE([FLOATING_POINT], , [Compile as floating-point])
fi],
AC_DEFINE([FLOATING_POINT], , [Compile as floating-point]))
jm's avatar
jm committed
163

164 165 166 167
if test "$has_sse" = yes; then
  AC_DEFINE([_USE_SSE], , [Enable SSE support])
fi

168 169 170 171 172 173 174 175 176 177
AC_ARG_ENABLE(float-api, [  --disable-float-api     Disable the floating-point API],
[if test "$enableval" = no; then
  AC_DEFINE([DISABLE_FLOAT_API], , [Disable all parts of the API that are using floats])
fi])

AC_ARG_ENABLE(vbr, [  --disable-vbr           Disable VBR and VAD from the codec],
[if test "$enableval" = no; then
  AC_DEFINE([DISABLE_VBR], , [Disable VBR and VAD from the codec])
fi])

jm's avatar
jm committed
178 179 180 181 182 183 184 185 186 187
AC_ARG_ENABLE(arm4-asm, [  --enable-arm4-asm       Make use of ARM4 assembly optimizations],
[if test "$enableval" = yes; then
  AC_DEFINE([ARM4_ASM], , [Make use of ARM4 assembly optimizations])
fi])

AC_ARG_ENABLE(arm5e-asm, [  --enable-arm5e-asm      Make use of ARM5E assembly optimizations],
[if test "$enableval" = yes; then
  AC_DEFINE([ARM5E_ASM], , [Make use of ARM5E assembly optimizations])
fi])

188 189
# this was the old name for armneon-intrinsics option but we are keeping the old name for backward compatibility
AC_ARG_ENABLE(armv7neon-asm, [  --enable-armv7neon-asm      Make use of NEON intrinsics optimizations],
190
[if test "$enableval" = yes; then
191 192 193 194 195 196
  AC_DEFINE([ARM_NEON_INTRINSICS], , [Make use of NEON intrinsics optimizations])
  CFLAGS="$CFLAGS -marm -DSHORTCUTS"
fi])
AC_ARG_ENABLE(arm-neon-intrinsics, [  --enable-arm-neon-intrinsics      Make use of NEON intrinsics optimizations],
[if test "$enableval" = yes; then
  AC_DEFINE([ARM_NEON_INTRINSICS], , [Make use of NEON intrinsics optimizations])
197
  CFLAGS="$CFLAGS -marm -DSHORTCUTS"
198 199
fi])

200
AC_ARG_ENABLE(blackfin-asm, [  --enable-blackfin-asm   Make use of Blackfin assembly optimizations],
jm's avatar
jm committed
201 202 203
[if test "$enableval" = yes; then
  AC_DEFINE([BFIN_ASM], , [Make use of Blackfin assembly optimizations])
fi])
204 205 206
case $host_os in
  uclinux) LDFLAGS="-Wl,-elf2flt=-s100000 $LDFLAGS";;
esac
jm's avatar
jm committed
207 208 209 210 211 212 213 214 215 216 217 218

AC_ARG_ENABLE(fixed-point-debug, [  --enable-fixed-point-debug  Debug fixed-point implementation],
[if test "$enableval" = yes; then
  AC_DEFINE([FIXED_DEBUG], , [Debug fixed-point implementation])
fi])

AC_ARG_ENABLE(ti-c55x, [  --enable-ti-c55x        Enable support for TI C55X DSP],
[if test "$enableval" = yes; then
  has_char16=yes;
  AC_DEFINE([TI_C55X], , [Enable support for TI C55X DSP])
fi])

219 220 221 222 223 224
AC_ARG_ENABLE(vorbis-psy, [  --enable-psy    Enable the Vorbis psy model],
[if test "$enableval" = yes; then
  vorbis_psy=yes;
  AC_DEFINE([VORBIS_PSYCHO], , [Enable support for the Vorbis psy model])
fi])

225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
AC_ARG_WITH([fft], [AS_HELP_STRING([--with-fft=choice],[use an alternate FFT implementation. The available choices are
kiss (default fixed point), smallft (default floating point), gpl-fftw3 and proprietary-intel-mkl])],
[FFT=$withval]
)

FFT_PKGCONFIG=
AS_CASE([$FFT],
 [kiss], [
  AC_DEFINE([USE_KISS_FFT], [], [Use KISS Fast Fourier Transform])
 ],
 [smallft], [
  AC_DEFINE([USE_SMALLFT], [], [Use FFT from OggVorbis])
 ],
 [gpl-fftw3], [
  AC_DEFINE([USE_GPL_FFTW3], [], [Use FFTW3 for FFT])
  PKG_CHECK_MODULES(FFT, fftw3f)
 ],
 [proprietary-intel-mkl], [
  AC_DEFINE([USE_INTEL_MKL], [], [Use Intel Math Kernel Library for FFT])
  AC_MSG_CHECKING(for valid MKL)
  AC_LINK_IFELSE([
   AC_LANG_PROGRAM([[
#include <mkl.h>
void func() {
  DFTI_DESCRIPTOR_HANDLE h;
  MKL_LONG result=DftiCreateDescriptor(&h, DFTI_SINGLE, DFTI_REAL, 0);
}]])],
   [AC_MSG_RESULT(yes)],
   [AC_MSG_FAILURE([Failed to compile MKL test program. Make sure you set CFLAGS to include the include directory and set LDFLAGS to include the library directory and all necesarry libraries.])]
  )
 ],
 [AC_MSG_FAILURE([Unknown FFT $FFT specified for --with-fft])]
)
AM_CONDITIONAL(BUILD_KISS_FFT, [test "$FFT" = "kiss"])
AM_CONDITIONAL(BUILD_SMALLFT, [test "$FFT" = "smallft"])
AC_SUBST(FFT_PKGCONFIG)

262
AM_CONDITIONAL(BUILD_VORBIS_PSY, [test "x$vorbis_psy" = "xyes"])
263

jm's avatar
jm committed
264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)

if test x$has_char16 = "xyes" ; then
        case 1 in
                $ac_cv_sizeof_short) SIZE16="short";;
                $ac_cv_sizeof_int) SIZE16="int";;
        esac
else
        case 2 in
                $ac_cv_sizeof_short) SIZE16="short";;
                $ac_cv_sizeof_int) SIZE16="int";;
        esac
fi

if test x$has_char16 = "xyes" ; then
        case 2 in
                $ac_cv_sizeof_int) SIZE32="int";;
                $ac_cv_sizeof_long) SIZE32="long";;
                $ac_cv_sizeof_short) SIZE32="short";;
        esac
else
        case 4 in
                $ac_cv_sizeof_int) SIZE32="int";;
                $ac_cv_sizeof_long) SIZE32="long";;
                $ac_cv_sizeof_short) SIZE32="short";;
        esac
fi

AC_SUBST(SIZE16)
AC_SUBST(SIZE32)

297 298
AC_DEFINE([_BUILD_SPEEX], [], [Defined only when Speex itself is build built])

jm's avatar
jm committed
299
AC_OUTPUT([Makefile libspeex/Makefile src/Makefile doc/Makefile Speex.spec
300
           include/Makefile include/speex/Makefile speex.pc speexdsp.pc
jm's avatar
jm committed
301
           win32/Makefile win32/libspeex/Makefile win32/speexenc/Makefile
302
           win32/speexdec/Makefile symbian/Makefile
jm's avatar
jm committed
303 304
           win32/VS2003/Makefile
           win32/VS2003/tests/Makefile
jm's avatar
jm committed
305
           win32/VS2003/libspeex/Makefile
306
           win32/VS2003/libspeexdsp/Makefile
jm's avatar
jm committed
307 308
           win32/VS2003/speexdec/Makefile
           win32/VS2003/speexenc/Makefile
jm's avatar
jm committed
309
           win32/VS2005/Makefile
jm's avatar
jm committed
310 311 312
           win32/VS2005/libspeex/Makefile
           win32/VS2005/speexdec/Makefile
           win32/VS2005/speexenc/Makefile
jm's avatar
jm committed
313
           win32/VS2005/libspeexdsp/Makefile
314
           win32/VS2005/tests/Makefile
315 316 317 318 319 320
           win32/VS2008/libspeexdsp/Makefile
           win32/VS2008/Makefile
           win32/VS2008/speexdec/Makefile
           win32/VS2008/tests/Makefile
           win32/VS2008/libspeex/Makefile
           win32/VS2008/speexenc/Makefile
321
           include/speex/speex_config_types.h ti/Makefile
jm's avatar
jm committed
322 323 324
	   ti/speex_C54_test/Makefile ti/speex_C55_test/Makefile
	   ti/speex_C64_test/Makefile ])

325
if test "x$src" = "x"; then
jm's avatar
jm committed
326 327 328 329 330 331
echo "**IMPORTANT**"
echo "You don't seem to have the development package for libogg (libogg-devel) installed. Only the Speex library (libspeex) will be built (no encoder/decoder executable)"
echo "You can download libogg from http://downloads.xiph.org/releases/ogg/"
fi

echo "Type \"make; make install\" to compile and install Speex";