dnl Copyright (c) 1991-2012 Kawahara Lab., Kyoto University dnl Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology dnl Copyright (c) 2005-2012 Julius project team, Nagoya Institute of Technology dnl All rights reserved dnl dnl $Id: configure.in,v 1.30 2012/07/27 10:02:04 sumomo Exp $ dnl dnl Process this file with autoconf to produce a configure script. AC_INIT(src/phmm/outprob.c) AC_CONFIG_HEADER(include/sent/config.h) AC_CONFIG_AUX_DIR(../support) LIBSENT_VERSION=4.2.2 dnl Checks for options # specify mic type AC_ARG_WITH(mictype, [ --with-mictype=TYPE specify mic I/O (oss|alsa|freebsd|coreaudio|sol2|sun4|irix|esd|sp|portaudio|pa-oss|pa-alsa|pa-winmm|pa-dsound|pulseaudio)],,with_mictype=auto) # NetAudio support AC_ARG_WITH(netaudio-dir, [ --with-netaudio-dir=DIR DatLink/NetAudio include/lib are in DIR],,with_netaudio_dir=auto) dnl use addlog array function AC_ARG_ENABLE(addarray, [ --disable-addarray [debug] do not use addlog_array() function], want_addarray=$enableval ,want_addarray=yes) dnl extend to int AC_ARG_ENABLE(words-int, [ --enable-words-int use integer instead of unsigned short for word ID to extend vocabulary limit to 2^31=2G words], want_words_int=$enableval ,want_words_int=no) dnl class N-gram support AC_ARG_ENABLE(class-ngram, [ --disable-class-ngram disable class N-gram support], use_class_ngram=$enableval ,use_class_ngram=yes) dnl enable fork for adinnet AC_ARG_ENABLE(fork, [ --enable-fork enable process forking on adinnet], use_fork=$enableval ,use_fork=no) dnl sin/cos table for MFCC calc AC_ARG_ENABLE(mfcc-table, [ --disable-mfcc-table disable sin/cos table for MFCC calculation], use_mfcc_table=$enableval ,use_mfcc_table=yes) dnl MSD model support AC_ARG_ENABLE(msd, [ --enable-msd enable MSD model support], want_msd=$enableval ,want_msd=no) dnl enable/disable use of zlib library AC_ARG_ENABLE(zlib, [ --disable-zlib disable zlib library], use_zlib=$enableval ,use_zlib=yes) dnl libsndfile AC_ARG_WITH(sndfile, [ --without-sndfile does not link libsndfile library]) dnl multipath version dnl AC_ARG_ENABLE(multipath, dnl [ --enable-multipath Compile as multipath version], dnl want_multipath=$enableval dnl ,want_multipath=no) if test "$want_addarray" = yes; then AC_DEFINE(USE_ADDLOG_ARRAY) fi if test "$want_words_int" = yes; then AC_DEFINE(WORDS_INT) fi if test "$use_class_ngram" = yes; then AC_DEFINE(CLASS_NGRAM) fi if test "$use_fork" = yes; then AC_DEFINE(FORK_ADINNET) fi if test "$use_mfcc_table" = yes; then AC_DEFINE(MFCC_SINCOS_TABLE) fi if test "$want_msd" = yes; then AC_DEFINE(ENABLE_MSD) fi dnl Checks for system. AC_CANONICAL_HOST dnl Checks for optimization flag AC_MSG_CHECKING([host specific optimization flag]) if test -z "$CFLAGS" ; then OPTFLAG=../support/cflags.${host_cpu}-${host_vendor}-${host_os} if test -f "$OPTFLAG" ; then . $OPTFLAG AC_MSG_RESULT([$OPTFLAG]) else AC_MSG_RESULT([no]) fi else AC_MSG_RESULT([skipped]) fi dnl Checks for compiler. AC_PROG_CC AC_PROG_CPP dnl Checks for programs. AC_PROG_INSTALL AC_PATH_PROG(RM, rm) AC_PATH_PROG(AR, ar) AC_PROG_RANLIB AC_EXEEXT dnl Check for static link for cygwin / mingw libraries case "$host_os" in cygwin*|mingw*) EXTRALIB="-static $EXTRALIB" ;; esac dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(unistd.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN AC_C_CONST dnl AC_TYPE_SIZE_T AC_MSG_CHECKING([for socklen_t]) AC_TRY_COMPILE([#include #include ],[socklen_t dummy;], AC_DEFINE(HAVE_SOCKLEN_T) AC_MSG_RESULT([yes]), AC_MSG_RESULT([no])) dnl Checks for library functions. dnl AC_PROG_GCC_TRADITIONAL dnl AC_FUNC_VPRINTF dnl AC_CHECK_FUNCS(strdup strstr) AC_CHECK_FUNC(gethostbyname,,AC_CHECK_LIB(nsl,gethostbyname)) AC_CHECK_FUNC(connect,,AC_CHECK_LIB(socket, connect,, AC_MSG_CHECKING([for connect in -lws2_32]) xxxxLIBS=$LIBS LIBS="$LIBS -lws2_32" AC_TRY_LINK([#include int sd; struct sockaddr_in s; ], [connect(sd, (struct sockaddr *)&s, sizeof(s));], EXTRALIB="$EXTRALIB -lws2_32" AC_MSG_RESULT([yes]), LIBS=$xxxxLIBS AC_MSG_RESULT([no]) ) )) AC_CHECK_FUNCS(strcasecmp) AC_CHECK_FUNCS(sleep) dnl Check for avaiable common adin files case "$host_os" in cygwin*|mingw*) # avoid ALSA/OSS detection for Windows environment has_alsa=no has_oss=no ;; *) # ALSA has_alsa=yes AC_CHECK_HEADERS(alsa/asoundlib.h,, AC_CHECK_HEADERS(sys/asoundlib.h,, has_alsa=no )) # OSS has_oss=yes AC_CHECK_HEADERS(sys/soundcard.h,, AC_CHECK_HEADERS(machine/soundcard.h,, has_oss=no )) ;; esac # ESounD has_esd=yes AC_CHECK_HEADERS(esd.h,,has_esd=no) # PulseAudio has_pulseaudio=no AC_CHECK_LIB(pulse-simple,pa_simple_new,AC_CHECK_HEADERS(pulse/simple.h, has_pulseaudio=yes)) dnl Checks for default audio input API (order is important) if test "$with_mictype" = auto; then AC_MSG_CHECKING(for default input device type) altype=no case "$host_os" in linux*) # Linux - availability already checked, set default if test "$has_alsa" = yes; then altype=alsa elif test "$has_pulseaudio" = yes; then altype=pulseaudio elif test "$has_oss" = yes; then altype=oss elif test "$has_esd" = yes; then altype=esd else AC_MSG_ERROR([none of alsa/oss/pulseaudio/esd header/lib found!]) fi ;; freebsd*) # FreeBSD (snd driver) if test "$has_oss" = yes; then altype=freebsd elif test "$has_pulseaudio" = yes; then altype=pulseaudio else AC_MSG_ERROR([no soundcard.h or pulseaudio header/lib found!]) fi ;; darwin*) # MacOSX (CoreAudio) AC_TRY_CPP([#include ],altype=coreaudio) ;; solaris2*) # Solaris2.x Built-in Audio AC_TRY_CPP([#include ],altype=sol2) ;; sunos4*) # SunOS4 Audio AC_TRY_CPP([#include ],altype=sun4) ;; irix6*) # O2 (SGI IRIX6.3) AC_TRY_CPP([#include ],altype=irix) ;; # osf*) # # Digital Unix 4.0 --- not yet # AC_TRY_CPP([#include ],altype=osf1) # ;; cygwin*|mingw*) # minGW - portaudio (auto select winmm / dsound) altype=portaudio ;; esac AC_MSG_RESULT($altype) else altype=$with_mictype fi # If PortAudio library found at the system, use it. # if not, V19 codes included in this distribution will be compiled in. case $altype in portaudio) pa_system=no AC_CHECK_LIB(portaudio,Pa_Initialize,AC_CHECK_HEADERS(portaudio.h, pa_system=yes)) if test "$pa_system" = no; then case "$host_os" in linux*) if test "$has_alsa" = yes; then altype="pa-alsa" else altype="pa-oss" fi ;; solaris*) altype="pa-solaris" ;; cygwin*|mingw*) AC_CHECK_LIB(dsound,main, AC_CHECK_HEADERS(DSound.h, altype="pa-dsound", altype="pa-winmm"), altype="pa-winmm") ;; esac else altype="libportaudio" fi ;; esac # set appropritate parameters for the determined API SOUNDLIB="" ADINOBJ="" # when auto, several available interfaces will be enabled adinlist="" if test "$with_mictype" = auto; then # if PulseAudio exist, include it if test "$has_pulseaudio" = yes; then SOUNDLIB="$SOUNDLIB -lpulse-simple -lpulse" ADINOBJ="$ADINOBJ src/adin/adin_pulseaudio.o" AC_DEFINE(HAS_PULSEAUDIO) adinlist="$adinlist pulseaudio" fi # if alsa exist, include it if test "$has_alsa" = yes; then SOUNDLIB="$SOUNDLIB -lasound" ADINOBJ="$ADINOBJ src/adin/adin_mic_linux_alsa.o" AC_DEFINE(HAS_ALSA) adinlist="$adinlist alsa" fi # if oss exist, include it if test "$has_oss" = yes; then ADINOBJ="$ADINOBJ src/adin/adin_mic_linux_oss.o" AC_DEFINE(HAS_OSS) adinlist="$adinlist oss" fi # if esd exist, include it if test "$has_esd" = yes; then SOUNDLIB="$SOUNDLIB -lesd" ADINOBJ="$ADINOBJ src/adin/adin_esd.o" AC_DEFINE(HAS_ESD) adinlist="$adinlist esd" fi fi # altype-specific setup case $altype in sp) aldesc="spAudio" ADINOBJ="$ADINOBJ src/adin/adin_mic_sp.o" AC_DEFINE(USE_MIC) AC_DEFINE(USE_SPLIB) case "$host_os" in linux*) AC_CHECK_LIB(spa.linux, spInitAudio, SOUNDLIB="$SOUNDLIB -lspa.linux -lspb.linux", AC_CHECK_LIB(spa.linux-glibc, spInitAudio, SOUNDLIB="$SOUNDLIB -lspa.linux-glibc -lspb.linux-glibc", AC_MSG_ERROR([spAudio library not found!]), [-lspb.linux-glibc -lm]), [-lspb.linux -lm]) ;; solaris2*) SOUNDLIB="$SOUNDLIB -L/usr/local/lib -lspa.sun -lspb.sun" ;; sunos4*) SOUNDLIB="$SOUNDLIB -L/usr/local/lib -lspa.sun -lspb.sun -laudio" ;; irix6*) SOUNDLIB="$SOUNDLIB -L/usr/local/lib -lspa.sgi -lspb.sgi -laudio" ;; cygwin*) SOUNDLIB="$SOUNDLIB -L/usr/local/lib -lspa.win -lspb.win -lwinmm -liconv" ;; darwin*) SOUNDLIB="$SOUNDLIB -arch ppc -framework CoreAudio -framework Carbon -L/usr/local/lib -lspa.mac -lspb.mac" ;; esac ;; libportaudio) aldesc="PortAudio library (external)" ADINOBJ="$ADINOBJ src/adin/adin_portaudio.o" SOUNDLIB="$SOUNDLIB -lportaudio" AC_DEFINE(USE_MIC) ;; pa-*) aldesc="PortAudio library (internal)" ADINOBJ="$ADINOBJ src/adin/pa/common/pa_allocation.o src/adin/pa/common/pa_converters.o src/adin/pa/common/pa_cpuload.o src/adin/pa/common/pa_debugprint.o src/adin/pa/common/pa_dither.o src/adin/pa/common/pa_front.o src/adin/pa/common/pa_process.o src/adin/pa/common/pa_ringbuffer.o src/adin/pa/common/pa_skeleton.o src/adin/pa/common/pa_stream.o src/adin/pa/common/pa_trace.o" SOUNDINC="-Isrc/adin/pa/include -Isrc/adin/pa/common" AC_DEFINE(USE_MIC) case "$altype" in pa-winmm) aldesc="$aldesc (WinMM)" SOUNDINC="$SOUNDINC -DPA_NO_DS -DPA_NO_ASIO" ADINOBJ="$ADINOBJ src/adin/pa/os/win/pa_win_hostapis.o src/adin/pa/os/win/pa_win_util.o src/adin/pa/os/win/pa_win_waveformat.o" ADINOBJ="$ADINOBJ src/adin/pa/hostapi/wmme/pa_win_wmme.o" SOUNDLIB="$SOUNDLIB -lwinmm" ;; pa-dsound) aldesc="$aldesc (DirectSound)" SOUNDINC="$SOUNDINC -Isrc/adin/pa/os/win -DPA_NO_ASIO" ADINOBJ="$ADINOBJ src/adin/pa/os/win/pa_win_hostapis.o src/adin/pa/os/win/pa_win_util.o src/adin/pa/os/win/pa_win_waveformat.o" ADINOBJ="$ADINOBJ src/adin/pa/hostapi/wmme/pa_win_wmme.o" ADINOBJ="$ADINOBJ src/adin/pa/hostapi/dsound/pa_win_ds.o src/adin/pa/hostapi/dsound/pa_win_ds_dynlink.o" SOUNDLIB="$SOUNDLIB -lwinmm -ldsound -lole32" ;; pa-alsa) aldesc="$aldesc (Unix/ALSA)" SOUNDINC="$SOUNDINC -Isrc/adin/pa/os/unix -DPA_USE_ALSA" ADINOBJ="$ADINOBJ src/adin/pa/os/unix/pa_unix_hostapis.o src/adin/pa/os/unix/pa_unix_util.o" ADINOBJ="$ADINOBJ src/adin/pa/hostapi/alsa/pa_linux_alsa.o" SOUNDLIB="$SOUNDLIB -lpthread" ;; pa-oss) aldesc="$aldesc (Unix/OSS)" SOUNDINC="$SOUNDINC -Isrc/adin/pa/os/unix -DPA_USE_OSS" ADINOBJ="$ADINOBJ src/adin/pa/os/unix/pa_unix_hostapis.o src/adin/pa/os/unix/pa_unix_util.o" ADINOBJ="$ADINOBJ src/adin/pa/hostapi/oss/pa_unix_oss.o" SOUNDLIB="$SOUNDLIB -lpthread" ;; pa-solaris) aldesc="$aldesc (Solaris)" ADINOBJ="$ADINOBJ src/adin/pa/pa_unix.o src/adin/pa/pa_unix_solaris.o" SOUNDLIB="$SOUNDLIB -lpthread" ;; esac ADINOBJ="$ADINOBJ src/adin/adin_portaudio.o" ;; oss) if test "$has_oss" = no; then AC_MSG_ERROR([no OSS header!]) fi aldesc="Open Sound System compatible" AC_DEFINE(USE_MIC) ADINOBJ="$ADINOBJ src/adin/adin_mic_linux.o" if test "$with_mictype" != auto; then ADINOBJ="$ADINOBJ src/adin/adin_mic_linux_oss.o" AC_DEFINE(HAS_OSS) adinlist="$adinlist oss" fi ;; alsa) if test "$has_alsa" = no; then AC_MSG_ERROR([no ALSA header!]) fi aldesc="Advanced Linux Sound Architecture" AC_DEFINE(USE_MIC) ADINOBJ="$ADINOBJ src/adin/adin_mic_linux.o" if test "$with_mictype" != auto; then SOUNDLIB="$SOUNDLIB -lasound" ADINOBJ="$ADINOBJ src/adin/adin_mic_linux_alsa.o" AC_DEFINE(HAS_ALSA) adinlist="$adinlist alsa" fi ;; esd) if test "$has_esd" = no; then AC_MSG_ERROR([no ESounD header!]) fi aldesc="EsoundD - The Enlightened Sound Daemon" AC_DEFINE(USE_MIC) ADINOBJ="$ADINOBJ src/adin/adin_mic_linux.o" if test "$with_mictype" != auto; then SOUNDLIB="$SOUNDLIB -lesd" ADINOBJ="$ADINOBJ src/adin/adin_esd.o" AC_DEFINE(HAS_ESD) adinlist="$adinlist esd" fi ;; pulseaudio) if test "$has_pulseaudio" = no; then AC_MSG_ERROR([no PulseAudio header!]) fi aldesc="PulseAudio" AC_DEFINE(USE_MIC) ADINOBJ="$ADINOBJ src/adin/adin_mic_linux.o" if test "$with_mictype" != auto; then SOUNDLIB="$SOUNDLIB -lpulse-simple -lpulse" ADINOBJ="$ADINOBJ src/adin/adin_pulseaudio.o" AC_DEFINE(HAS_PULSEAUDIO) adinlist="$adinlist pulseaudio" fi ;; freebsd) if test "$has_oss" = no; then AC_MSG_ERROR([neither sys/soundcard.h nor machine/soundcard.h exist]) fi aldesc="FreeBSD snd driver" ADINOBJ="$ADINOBJ src/adin/adin_mic_freebsd.o" AC_DEFINE(USE_MIC) if test "$with_mictype" != auto; then ADINOBJ="$ADINOBJ src/adin/adin_mic_linux_oss.o" AC_DEFINE(HAS_OSS) adinlist="$adinlist oss" fi ;; coreaudio) aldesc="MacOSX CoreAudio" ADINOBJ="$ADINOBJ src/adin/adin_mic_darwin_coreaudio.o" AC_DEFINE(USE_MIC) SOUNDLIB="$SOUNDLIB -Wl,-framework -Wl,CoreServices -Wl,-framework -Wl,CoreAudio -Wl,-framework -Wl,AudioUnit -Wl,-framework -Wl,AudioToolbox" ;; sol2) aldesc="Solaris2.x audio interface" ADINOBJ="$ADINOBJ src/adin/adin_mic_sol2.o" AC_DEFINE(USE_MIC) ;; sun4) aldesc="SunOS4.x audio interface" ADINOBJ="$ADINOBJ src/adin/adin_mic_sun4.o" AC_DEFINE(USE_MIC) SOUNDLIB="$SOUNDLIB -laudio" ;; irix) aldesc="IRIX6.x audio interface" ADINOBJ="$ADINOBJ src/adin/adin_mic_o2.o" AC_DEFINE(USE_MIC) SOUNDLIB="$SOUNDLIB -laudio" ;; # osf1) # aldesc="Digital/Unix 4.0" # ADINOBJ=src/adin/adin_mic_osf1.o # AC_DEFINE(USE_MIC) # SOUNDLIB="-L/usr/opt/MME242/lib -lmme") # ;; *) aldesc="no support" AC_MSG_ERROR([mictype not supported, or specified type not exist]) ;; esac dnl check for NetAudio support if test "$with_netaudio_dir" = auto ; then AC_MSG_CHECKING([for DatLink/NetAudio support]) else AC_MSG_CHECKING([for DatLink/NetAudio support on ${with_netaudio_dir}]) fi TMPCPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I${with_netaudio_dir}/include" use_netaudio=no AC_TRY_CPP([#include ], use_netaudio=yes AC_DEFINE(USE_NETAUDIO) SOUNDINC="-I${with_netaudio_dir}/include" ADINOBJ="$ADINOBJ src/adin/adin_netaudio.o src/adin/adin_na.o " SOUNDLIB="$SOUNDLIB -L${with_netaudio_dir}/lib -lnetaudio -lsupport" adinlist="$adinlist netaudio") AC_MSG_RESULT($use_netaudio) CPPFLAGS="$TMPCPPFLAGS" EXTRAOBJ="$EXTRAOBJ $ADINOBJ" dnl check for file decompression using zlib have_zlib=no; if test "$use_zlib" = yes; then AC_CHECK_LIB(z, deflate, AC_CHECK_HEADERS(zlib.h, have_zlib=yes; gzdesc="zlib library"; EXTRALIB="$EXTRALIB -lz" AC_DEFINE(HAVE_ZLIB))) if test "$have_zlib" = no; then AC_MSG_WARN([not found]) use_zlib=no; fi fi dnl next, check for built-in file decompression using gzip if test "$use_zlib" = no; then AC_CHECK_PROG(GZIP, gzip, found, no) if test "$GZIP" = no; then gzdesc="none"; AC_MSG_WARN([not found, compressed file input disabled]) else gzdesc="gzip command"; AC_DEFINE(ZCAT, ["gzip -d -c"]) fi fi dnl check for iconv library dnl macro "AM_ICONV" will check for availability of iconv function, dnl and if found, define HAVE_ICONV. If the iconv function is defined dnl in libiconv, it defines LIBICONV="-liconv". dnl it also detects if function is const and set the result to ICONV_CONST. dnl it also adds "--with-libiconv-prefix=DIR" option. dnl check for libsndfile wavefile_support="RAW and WAV only" if test -z "$with_sndfile"; then with_sndfile=yes fi if test "$with_sndfile" = yes; then have_libsndfile=no AC_CHECK_LIB(sndfile, sf_open, AC_CHECK_HEADERS(sndfile.h, wavefile_support='various formats by libsndfile ver.1' AC_DEFINE(HAVE_LIBSNDFILE) AC_DEFINE(HAVE_LIBSNDFILE_VER1) EXTRALIB="$EXTRALIB -lsndfile" have_libsndfile=yes)) if test "$have_libsndfile" = no; then AC_CHECK_LIB(sndfile, sf_open_read, AC_CHECK_HEADERS(sndfile.h, wavefile_support='various formats by libsndfile ver.0' AC_DEFINE(HAVE_LIBSNDFILE) EXTRALIB="$EXTRALIB -lsndfile" have_libsndfile=yes)) fi if test "$have_libsndfile" = no; then AC_MSG_WARN([libsndfile enables AIFF AU SND NIST format for Julius. It's available at http://www.mega-nerd.com/libsndfile/]) fi fi dnl max os 10 needs extra iconv library case "$host_os" in darwin*) EXTRALIB="$EXTRALIB -liconv" ;; esac dnl substitute some definitions in libsent-config AC_SUBST(LIBSENT_VERSION) AC_SUBST(altype) AC_SUBST(aldesc) AC_SUBST(adinlist) AC_SUBST(use_netaudio) AC_SUBST(use_pthread) AC_SUBST(wavefile_support) AC_SUBST(use_class_ngram) AC_SUBST(use_fork) AC_SUBST(gzdesc) dnl define configuration descriptions AC_DEFINE_UNQUOTED(LIBSENT_VERSION, "$LIBSENT_VERSION") AC_DEFINE_UNQUOTED(AUDIO_API_NAME, "$altype") AC_DEFINE_UNQUOTED(AUDIO_API_DESC, "$aldesc") AC_DEFINE_UNQUOTED(AUDIO_FORMAT_DESC, "$wavefile_support") AC_DEFINE_UNQUOTED(GZIP_READING_DESC, "$gzdesc") dnl substitute in Makefile AC_SUBST(EXTRAOBJ) AC_SUBST(EXTRALIB) AC_SUBST(SOUNDINC) AC_SUBST(SOUNDLIB) AC_OUTPUT_COMMANDS( [chmod +x libsent-config libsent-config-dist ./libsent-config --info ], altype=$altype aldesc="$aldesc" adinlist="$adinlist" use_netaudio=$use_netaudio use_pthread=$use_pthread wavefile_support="$wavefile_support" gzdesc="$gzdesc" ) AC_OUTPUT(Makefile libsent-config libsent-config-dist)