1dnl Copyright (c) 1991-2007 Kawahara Lab., Kyoto University 2dnl Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology 3dnl Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology 4dnl All rights reserved 5dnl 6dnl $Id: configure.in,v 1.14 2009/02/11 07:22:45 sumomo Exp $ 7dnl 8 9dnl Process this file with autoconf to produce a configure script. 10AC_INIT(src/phmm/outprob.c) 11AC_CONFIG_HEADER(include/sent/config.h) 12AC_CONFIG_AUX_DIR(../support) 13 14LIBSENT_VERSION=4.1.2 15 16dnl Checks for options 17# specify mic type 18AC_ARG_WITH(mictype, 19[ --with-mictype=TYPE specify mic I/O (oss|alsa|freebsd|coreaudio|sol2|sun4|irix|esd|sp|portaudio|pa-oss|pa-winmm|pa-dsound)],,with_mictype=auto) 20 21# NetAudio support 22AC_ARG_WITH(netaudio-dir, 23[ --with-netaudio-dir=DIR DatLink/NetAudio include/lib are in DIR],,with_netaudio_dir=auto) 24 25dnl use addlog array function 26AC_ARG_ENABLE(addarray, 27[ --disable-addarray [debug] do not use addlog_array() function], 28want_addarray=$enableval 29,want_addarray=yes) 30 31dnl extend to int 32AC_ARG_ENABLE(words-int, 33[ --enable-words-int use integer instead of unsigned short for word ID 34 to extend vocabulary limit to 2^31=2G words], 35want_words_int=$enableval 36,want_words_int=no) 37 38dnl class N-gram support 39AC_ARG_ENABLE(class-ngram, 40[ --disable-class-ngram disable class N-gram support], 41use_class_ngram=$enableval 42,use_class_ngram=yes) 43 44dnl enable fork for adinnet 45AC_ARG_ENABLE(fork, 46[ --enable-fork enable process forking on adinnet], 47use_fork=$enableval 48,use_fork=no) 49 50dnl sin/cos table for MFCC calc 51AC_ARG_ENABLE(mfcc-table, 52[ --disable-mfcc-table disable sin/cos table for MFCC calculation], 53use_mfcc_table=$enableval 54,use_mfcc_table=yes) 55 56dnl MSD model support 57AC_ARG_ENABLE(msd, 58[ --enable-msd enable MSD model support], 59want_msd=$enableval 60,want_msd=no) 61 62 63 64dnl enable/disable use of zlib library 65AC_ARG_ENABLE(zlib, 66[ --disable-zlib disable zlib library], 67use_zlib=$enableval 68,use_zlib=yes) 69 70dnl libsndfile 71AC_ARG_WITH(sndfile, 72[ --without-sndfile does not link libsndfile library]) 73 74dnl multipath version 75dnl AC_ARG_ENABLE(multipath, 76dnl [ --enable-multipath Compile as multipath version], 77dnl want_multipath=$enableval 78dnl ,want_multipath=no) 79 80if test "$want_addarray" = yes; then 81 AC_DEFINE(USE_ADDLOG_ARRAY) 82fi 83if test "$want_words_int" = yes; then 84 AC_DEFINE(WORDS_INT) 85fi 86if test "$use_class_ngram" = yes; then 87 AC_DEFINE(CLASS_NGRAM) 88fi 89if test "$use_fork" = yes; then 90 AC_DEFINE(FORK_ADINNET) 91fi 92if test "$use_mfcc_table" = yes; then 93 AC_DEFINE(MFCC_SINCOS_TABLE) 94fi 95if test "$want_msd" = yes; then 96 AC_DEFINE(ENABLE_MSD) 97fi 98 99dnl Checks for system. 100AC_CANONICAL_HOST 101 102dnl Checks for optimization flag 103AC_MSG_CHECKING([host specific optimization flag]) 104if test -z "$CFLAGS" ; then 105 OPTFLAG=../support/cflags.${host_cpu}-${host_vendor}-${host_os} 106 if test -f "$OPTFLAG" ; then 107 . $OPTFLAG 108 AC_MSG_RESULT([$OPTFLAG]) 109 else 110 AC_MSG_RESULT([no]) 111 fi 112else 113 AC_MSG_RESULT([skipped]) 114fi 115 116dnl Checks for compiler. 117AC_PROG_CC 118AC_PROG_CPP 119 120dnl Checks for programs. 121AC_PROG_INSTALL 122AC_PATH_PROG(RM, rm) 123AC_PATH_PROG(AR, ar) 124AC_PROG_RANLIB 125 126dnl Checks for header files. 127AC_HEADER_STDC 128AC_CHECK_HEADERS(unistd.h) 129 130dnl Checks for typedefs, structures, and compiler characteristics. 131AC_C_BIGENDIAN 132AC_C_CONST 133dnl AC_TYPE_SIZE_T 134AC_MSG_CHECKING([for socklen_t]) 135AC_TRY_COMPILE([#include <sys/types.h> 136#include <sys/socket.h> 137],[socklen_t dummy;], 138AC_DEFINE(HAVE_SOCKLEN_T) 139AC_MSG_RESULT([yes]), 140AC_MSG_RESULT([no])) 141 142dnl Checks for library functions. 143dnl AC_PROG_GCC_TRADITIONAL 144dnl AC_FUNC_VPRINTF 145dnl AC_CHECK_FUNCS(strdup strstr) 146AC_CHECK_FUNC(gethostbyname,,AC_CHECK_LIB(nsl,gethostbyname)) 147AC_CHECK_FUNC(connect,,AC_CHECK_LIB(socket, connect)) 148AC_CHECK_FUNCS(strcasecmp) 149AC_CHECK_FUNCS(sleep) 150case "$host_os" in 151mingw*) 152 EXTRALIB="$EXTRALIB -lws2_32" 153 ;; 154esac 155 156dnl Check for avaiable common adin files 157# ALSA 158has_alsa=yes 159AC_CHECK_HEADERS(alsa/asoundlib.h,, 160 AC_CHECK_HEADERS(sys/asoundlib.h,, 161 has_alsa=no 162)) 163# OSS 164has_oss=yes 165AC_CHECK_HEADERS(sys/soundcard.h,, 166 AC_CHECK_HEADERS(machine/soundcard.h,, 167 has_oss=no 168)) 169# ESounD 170has_esd=yes 171AC_CHECK_HEADERS(esd.h,,has_esd=no) 172 173dnl Checks for default audio input API (order is important) 174if test "$with_mictype" = auto; then 175 AC_MSG_CHECKING(for input device type) 176 altype=no 177 case "$host_os" in 178 linux*) 179 # Linux - availability already checked, set default 180 if test "$has_alsa" = yes; then 181 altype=alsa 182 elif test "$has_oss" = yes; then 183 altype=oss 184 elif test "$has_esd" = yes; then 185 altype=esd 186 else 187 AC_MSG_ERROR([no audio io avaiable!]) 188 fi 189 ;; 190 freebsd*) 191 # FreeBSD (snd driver) 192 if test "$has_oss" = yes; then 193 altype=freebsd 194 else 195 AC_MSG_ERROR([no soundcard.h found]) 196 fi 197 ;; 198 darwin*) 199 # MacOSX (CoreAudio) 200 AC_TRY_CPP([#include <CoreAudio/CoreAudio.h>],altype=coreaudio) 201 ;; 202 solaris2*) 203 # Solaris2.x Built-in Audio 204 AC_TRY_CPP([#include <sys/audioio.h>],altype=sol2) 205 ;; 206 sunos4*) 207 # SunOS4 Audio 208 AC_TRY_CPP([#include <multimedia/libaudio.h>],altype=sun4) 209 ;; 210 irix6*) 211 # O2 (SGI IRIX6.3) 212 AC_TRY_CPP([#include <audio.h>],altype=irix) 213 ;; 214# osf*) 215# # Digital Unix 4.0 --- not yet 216# AC_TRY_CPP([#include <mme/mme_api.h>],altype=osf1) 217# ;; 218 cygwin*|mingw*) 219 # minGW - portaudio (auto select winmm / dsound) 220 altype=portaudio 221 ;; 222 esac 223 AC_MSG_RESULT($altype) 224else 225 altype=$with_mictype 226fi 227 228# if default is portaudio, guess WinMM / DirectSound / OSS / Solaris 229case $altype in 230 portaudio) 231 case "$host_os" in 232 linux*) 233 altype="pa-oss" 234 ;; 235 solaris*) 236 altype="pa-solaris" 237 ;; 238 cygwin*|mingw*) 239 AC_CHECK_LIB(dsound,main, 240 AC_CHECK_HEADERS(DSound.h, 241 altype="pa-dsound", 242 altype="pa-winmm"), 243 altype="pa-winmm") 244 ;; 245 esac 246 ;; 247esac 248 249# set appropritate parameters for the determined API 250SOUNDLIB="" 251ADINOBJ="" 252# if esd exist, include it 253if test "$has_esd" = yes; then 254 SOUNDLIB="$SOUNDLIB -lesd" 255 ADINOBJ="$ADINOBJ src/adin/adin_esd.o" 256fi 257# if alsa exist, include it 258if test "$has_alsa" = yes; then 259 SOUNDLIB="$SOUNDLIB -lasound" 260 ADINOBJ="$ADINOBJ src/adin/adin_mic_linux_alsa.o" 261fi 262# if oss exist, include it 263if test "$has_oss" = yes; then 264 ADINOBJ="$ADINOBJ src/adin/adin_mic_linux_oss.o" 265fi 266 267# altype-specific setup 268case $altype in 269 sp) 270 aldesc="spAudio" 271 ADINOBJ="$ADINOBJ src/adin/adin_mic_sp.o" 272 AC_DEFINE(USE_MIC) 273 AC_DEFINE(USE_SPLIB) 274 case "$host_os" in 275 linux*) 276 AC_CHECK_LIB(spa.linux, spInitAudio, 277 SOUNDLIB="$SOUNDLIB -lspa.linux -lspb.linux", 278 AC_CHECK_LIB(spa.linux-glibc, spInitAudio, 279 SOUNDLIB="$SOUNDLIB -lspa.linux-glibc -lspb.linux-glibc", 280 AC_MSG_ERROR([spAudio library not found!]), 281 [-lspb.linux-glibc -lm]), 282 [-lspb.linux -lm]) 283 ;; 284 solaris2*) 285 SOUNDLIB="$SOUNDLIB -L/usr/local/lib -lspa.sun -lspb.sun" 286 ;; 287 sunos4*) 288 SOUNDLIB="$SOUNDLIB -L/usr/local/lib -lspa.sun -lspb.sun -laudio" 289 ;; 290 irix6*) 291 SOUNDLIB="$SOUNDLIB -L/usr/local/lib -lspa.sgi -lspb.sgi -laudio" 292 ;; 293 cygwin*) 294 SOUNDLIB="$SOUNDLIB -L/usr/local/lib -lspa.win -lspb.win -lwinmm -liconv" 295 ;; 296 darwin*) 297 SOUNDLIB="$SOUNDLIB -arch ppc -framework CoreAudio -framework Carbon -L/usr/local/lib -lspa.mac -lspb.mac" 298 ;; 299 esac 300 ;; 301 pa-*) 302 aldesc="PortAudio library" 303 ADINOBJ="$ADINOBJ src/adin/pa/pa_lib.o src/adin/pa/pa_convert.o src/adin/pa/pa_trace.o src/adin/pa/pablio.o src/adin/pa/ringbuffer.o" 304 AC_DEFINE(USE_MIC) 305 case "$altype" in 306 pa-winmm) 307 aldesc="$aldesc (WinMM)" 308 ADINOBJ="$ADINOBJ src/adin/pa/pa_win_wmme.o" 309 SOUNDLIB="$SOUNDLIB -lwinmm" 310 ;; 311 pa-dsound) 312 aldesc="$aldesc (DirectSound)" 313 ADINOBJ="$ADINOBJ src/adin/pa/dsound_wrapper.o src/adin/pa/pa_dsound.o" 314 SOUNDLIB="$SOUNDLIB -lwinmm -ldsound" 315 ;; 316 pa-oss) 317 aldesc="$aldesc (Unix/OSS)" 318 ADINOBJ="$ADINOBJ src/adin/pa/pa_unix.o src/adin/pa/pa_unix_oss.o" 319 SOUNDLIB="$SOUNDLIB -lpthread" 320 ;; 321 pa-solaris) 322 aldesc="$aldesc (Solaris)" 323 ADINOBJ="$ADINOBJ src/adin/pa/pa_unix.o src/adin/pa/pa_unix_solaris.o" 324 SOUNDLIB="$SOUNDLIB -lpthread" 325 ;; 326 esac 327 ADINOBJ="$ADINOBJ src/adin/adin_portaudio.o" 328 ;; 329 oss) 330 if test "$has_oss" = no; then 331 AC_MSG_ERROR([no OSS header!]) 332 fi 333 aldesc="Open Sound System compatible" 334 AC_DEFINE(USE_MIC) 335 ADINOBJ="$ADINOBJ src/adin/adin_mic_linux.o" 336 ;; 337 alsa) 338 if test "$has_alsa" = no; then 339 AC_MSG_ERROR([no ALSA header!]) 340 fi 341 aldesc="Advanced Linux Sound Architecture" 342 AC_DEFINE(USE_MIC) 343 ADINOBJ="$ADINOBJ src/adin/adin_mic_linux.o" 344 ;; 345 esd) 346 if test "$has_esd" = no; then 347 AC_MSG_ERROR([no ESounD header!]) 348 fi 349 aldesc="EsoundD - The Enlightened Sound Daemon" 350 AC_DEFINE(USE_MIC) 351 ADINOBJ="$ADINOBJ src/adin/adin_mic_linux.o" 352 ;; 353 354 freebsd) 355 if test "$has_oss" = no; then 356 AC_MSG_ERROR([neither sys/soundcard.h nor machine/soundcard.h exist]) 357 fi 358 aldesc="FreeBSD snd driver" 359 ADINOBJ="$ADINOBJ src/adin/adin_mic_freebsd.o" 360 AC_DEFINE(USE_MIC) 361 ;; 362 coreaudio) 363 aldesc="MacOSX CoreAudio" 364 ADINOBJ="$ADINOBJ src/adin/adin_mic_darwin_coreaudio.o" 365 AC_DEFINE(USE_MIC) 366 SOUNDLIB="$SOUNDLIB -Wl,-framework -Wl,CoreServices -Wl,-framework -Wl,CoreAudio -Wl,-framework -Wl,AudioUnit -Wl,-framework -Wl,AudioToolbox" 367 ;; 368 sol2) 369 aldesc="Solaris2.x audio interface" 370 ADINOBJ="$ADINOBJ src/adin/adin_mic_sol2.o" 371 AC_DEFINE(USE_MIC) 372 ;; 373 sun4) 374 aldesc="SunOS4.x audio interface" 375 ADINOBJ="$ADINOBJ src/adin/adin_mic_sun4.o" 376 AC_DEFINE(USE_MIC) 377 SOUNDLIB="$SOUNDLIB -laudio" 378 ;; 379 irix) 380 aldesc="IRIX6.x audio interface" 381 ADINOBJ="$ADINOBJ src/adin/adin_mic_o2.o" 382 AC_DEFINE(USE_MIC) 383 SOUNDLIB="$SOUNDLIB -laudio" 384 ;; 385# osf1) 386# aldesc="Digital/Unix 4.0" 387# ADINOBJ=src/adin/adin_mic_osf1.o 388# AC_DEFINE(USE_MIC) 389# SOUNDLIB="-L/usr/opt/MME242/lib -lmme") 390# ;; 391 *) 392 aldesc="no support" 393 AC_MSG_ERROR([mictype not supported, or specified type not exist]) 394 ;; 395esac 396 397dnl check for NetAudio support 398if test "$with_netaudio_dir" = auto ; then 399 AC_MSG_CHECKING([for DatLink/NetAudio support]) 400else 401 AC_MSG_CHECKING([for DatLink/NetAudio support on ${with_netaudio_dir}]) 402fi 403TMPCPPFLAGS="$CPPFLAGS" 404CPPFLAGS="$CPPFLAGS -I${with_netaudio_dir}/include" 405use_netaudio=no 406AC_TRY_CPP([#include <netaudio.h>], 407 use_netaudio=yes 408 AC_DEFINE(USE_NETAUDIO) 409 SOUNDINC="-I${with_netaudio_dir}/include" 410 ADINOBJ="$ADINOBJ src/adin/adin_netaudio.o src/adin/adin_na.o " 411 SOUNDLIB="$SOUNDLIB -L${with_netaudio_dir}/lib -lnetaudio -lsupport") 412AC_MSG_RESULT($use_netaudio) 413CPPFLAGS="$TMPCPPFLAGS" 414EXTRAOBJ="$EXTRAOBJ $ADINOBJ" 415 416dnl check for file decompression using zlib 417have_zlib=no; 418if test "$use_zlib" = yes; then 419 AC_CHECK_LIB(z, deflate, 420 AC_CHECK_HEADERS(zlib.h, 421 have_zlib=yes; 422 gzdesc="zlib library"; 423 EXTRALIB="$EXTRALIB -lz" 424 AC_DEFINE(HAVE_ZLIB))) 425 if test "$have_zlib" = no; then 426 AC_MSG_WARN([not found]) 427 use_zlib=no; 428 fi 429fi 430dnl next, check for built-in file decompression using gzip 431if test "$use_zlib" = no; then 432 AC_CHECK_PROG(GZIP, gzip, found, no) 433 if test "$GZIP" = no; then 434 gzdesc="none"; 435 AC_MSG_WARN([not found, compressed file input disabled]) 436 else 437 gzdesc="gzip command"; 438 AC_DEFINE(ZCAT, ["gzip -d -c"]) 439 fi 440fi 441 442dnl check for iconv library 443dnl macro "AM_ICONV" will check for availability of iconv function, 444dnl and if found, define HAVE_ICONV. If the iconv function is defined 445dnl in libiconv, it defines LIBICONV="-liconv". 446dnl it also detects if function is const and set the result to ICONV_CONST. 447dnl it also adds "--with-libiconv-prefix=DIR" option. 448 449dnl check for libsndfile 450wavefile_support="RAW and WAV only" 451if test -z "$with_sndfile"; then 452 with_sndfile=yes 453fi 454if test "$with_sndfile" = yes; then 455 have_libsndfile=no 456 AC_CHECK_LIB(sndfile, sf_open, 457 AC_CHECK_HEADERS(sndfile.h, 458 wavefile_support='various formats by libsndfile ver.1' 459 AC_DEFINE(HAVE_LIBSNDFILE) 460 AC_DEFINE(HAVE_LIBSNDFILE_VER1) 461 EXTRALIB="$EXTRALIB -lsndfile" 462 have_libsndfile=yes)) 463 if test "$have_libsndfile" = no; then 464 AC_CHECK_LIB(sndfile, sf_open_read, 465 AC_CHECK_HEADERS(sndfile.h, 466 wavefile_support='various formats by libsndfile ver.0' 467 AC_DEFINE(HAVE_LIBSNDFILE) 468 EXTRALIB="$EXTRALIB -lsndfile" 469 have_libsndfile=yes)) 470 fi 471 if test "$have_libsndfile" = no; then 472 AC_MSG_WARN([libsndfile enables AIFF AU SND NIST format for Julius. 473It's available at http://www.mega-nerd.com/libsndfile/]) 474 fi 475fi 476 477dnl cygwin and max os 10 needs extra iconv library 478case "$host_os" in 479 cygwin*|darwin*) 480 EXTRALIB="$EXTRALIB -liconv" 481 ;; 482esac 483 484dnl substitute some definitions in libsent-config 485AC_SUBST(LIBSENT_VERSION) 486AC_SUBST(altype) 487AC_SUBST(aldesc) 488AC_SUBST(use_netaudio) 489AC_SUBST(use_pthread) 490AC_SUBST(wavefile_support) 491AC_SUBST(use_class_ngram) 492AC_SUBST(use_fork) 493AC_SUBST(gzdesc) 494 495dnl define configuration descriptions 496AC_DEFINE_UNQUOTED(LIBSENT_VERSION, "$LIBSENT_VERSION") 497AC_DEFINE_UNQUOTED(AUDIO_API_NAME, "$altype") 498AC_DEFINE_UNQUOTED(AUDIO_API_DESC, "$aldesc") 499AC_DEFINE_UNQUOTED(AUDIO_FORMAT_DESC, "$wavefile_support") 500AC_DEFINE_UNQUOTED(GZIP_READING_DESC, "$gzdesc") 501 502dnl substitute in Makefile 503AC_SUBST(EXTRAOBJ) 504AC_SUBST(EXTRALIB) 505AC_SUBST(SOUNDINC) 506AC_SUBST(SOUNDLIB) 507 508AC_OUTPUT_COMMANDS( 509[chmod +x libsent-config libsent-config-dist 510./libsent-config --info 511], 512altype=$altype 513aldesc="$aldesc" 514use_netaudio=$use_netaudio 515use_pthread=$use_pthread 516wavefile_support="$wavefile_support" 517gzdesc="$gzdesc" 518) 519AC_OUTPUT(Makefile libsent-config libsent-config-dist) 520