#!/bin/sh # check for bash... if [ "$(echo -n)" = '-n' ] then SHELL=$(which bash ksh sh 2> /dev/null | grep ^/ | head -n 1) exec $SHELL $0 "$@" fi PATH="$PATH":/sbin:/usr/sbin:/usr/local/sbin:/usr/pkg/sbin # Ensure superuser paths #set -x TF_C=testit.c TF_E=./testit LDPATH='' INCPATH='' CROSS_COMPILE=false SYSNAME='unknown' SHARED='-shared' SHARED_CF='' SHARED_SUFFIX='.so' fPIC=true MMCU='' PKG_CONFIG=false RUNTIME_DETECT=false NEED_GNU_SOURCE=false PREFIX='/usr/local' PREFIX_BIN='' PREFIX_LIB='' PREFIX_INC='' PREFIX_MAN='' PREFIX_COMP_LIBS='' PREFIX_COMP_BINS='' CDROM_IS_DEV=true CDROM="" OSS_DEV="" PROC_NET_DECNET="/proc/net/decnet" TTY_DEV="" VORBIS_BITS=32 FSYNC=false DEFAULT_GRP='' AO_INST_DIR='' XMMS_INST_DIR='' AUDACIOUS_INST_DIR='' SNDIO_EMUL=true LIBAO=true XMMS=true AUDACIOUS=true DEFAULT_RATE='' DEFAULT_CHANNELS='' DEFAULT_BITS='' COMP_LIBS=true COMP_ROARD=true COMP_CLIENTS=true COMP_DOC=true COMP_COMP_BINS=true ALAW=true MULAW=true ALAW_RW=true MULAW_RW=true PROXY=true PASSWORD_API=true NO_LISTEN=false META_DATA=true WITHOUT_CF='' WITHOUT_VIO='' WITHOUT_DCOMP='' HAVE_MAIN_ARGS=true MINIMAL=false TARGET_WIN32=false TARGET_MICROCONTROLLER=false TARGET_CYGWIN=false EXEC_HELPER='' ROAR_DRIVER_DEFAULT='' ROAR_DRIVER_CODEC='' ROARD_CFREQ='' # cycle frequens for roard, normaly 100Hz _CARGS="$@"; echo -n "checking for C compiler... " if [ "$CC" != '' ] then echo $CC else CC=$(which gcc cc 2> /dev/null | grep ^/ | head -n 1) if [ "$CC" = '' ] then echo 'none' exit 1; fi echo $CC fi echo -n "checking for ranlib... " if [ "$RANLIB" != '' ] then echo $RANLIB else _guess=`echo $CC | sed 's/[gp]*cc\(-.*\)*//'` RANLIB=$(which ${_guess}ranlib ranlib 2> /dev/null | grep ^/ | head -n 1) if [ "$RANLIB" = '' ] then echo 'none' fi echo $RANLIB fi echo -n "checking for pkg-config... " PKG_CONFIG=$(which pkg-config false 2> /dev/null | grep ^/ | head -n 1) if $PKG_CONFIG --help > /dev/null 2> /dev/null then echo $PKG_CONFIG else echo no fi #Makefile.conf not yet open, write it later echo -n "checking for sysname... " SYSNAME=$(uname -s) echo "$SYSNAME" while [ "$1" != '' ] do case "$1" in '--help') echo '--help - This Help' echo echo '--ldpath DIR - Add DIR to (compile time) search list for libs' echo '--incpath DIR - Add DIR to search list for headers' echo '--addpath DIR - Add DIR/lib to lib, DIR/include to header search list' echo echo '--cdrom DEV - Set default CDRum device' echo '--tty DEV - Set default TTY' echo '--oss-dev DEV - Set default OSS device' echo '--proc-net-decnet FILE - Set DECnet file for DECnet support auto detecting' echo ' (ignore this on non-Linux)' echo '--audio-group GROUP - Sets group of audio permitted users' echo echo '--no-LIB - disable library LIB' echo '--runtime-detect - do as much as posible auto detecting on runtime (for distributors)' echo echo '--ao-install-dir DIR - Set install dir for libao plugin' echo '--xmms-install-dir DIR - Set install dir for XMMS plugin' echo '--audacious-install-dir DIR - Set install dir for Audacious plugin' echo echo '--prefix DIR - Set general prefix (default: '"$PREFIX"')' echo '--prefix-bin DIR - Set prefix for binarys (default: $PREFIX/bin)' echo '--prefix-lib DIR - Set prefix for librarys (default: $PREFIX/libs)' echo '--prefix-inc DIR - Set prefix for include files (default: $PREFIX/include)' echo '--prefix-man DIR - Set prefix for manpages (default: $PREFIX/man)' echo '--prefix-comp-libs DIR - Set prefix for compatibility librarys (default: $PREFIX_LIB/roaraudio/complibs)' echo '--prefix-comp-bins DIR - Set prefix for compatibility binarys (default: $PREFIX_LIB/roaraudio/compbins)' echo echo '--default-rate RATE - Set default sample rate for roard and roarclients' echo '--default-channels CHANNELS - Set default number of channels for roard and roarclients' echo '--default-bits BITS - Set default number of bits per sample for roard and roarclients' echo '--default-driver DRIVER - Set default driver for roard' echo '--default-codec CODEC - Set default codec used for the default driver' echo echo '--without-alaw - Disable support of A-Law codec (de- and encoding)' echo '--without-alaw-rw - Disable support for writing A-Law (saves 8KB)' echo '--without-mulaw - Disable support of mu-Law codec (de- and encoding)' echo '--without-mulaw-rw - Disable support for writing mu-Law (saves 16KB)' echo '--without-proxy - Disable support for proxys' echo echo '--without-comp-libs - Disable build of librarys' echo '--without-comp-roard - Disable build of roard' echo '--without-comp-clients - Disable build of clients' echo '--without-comp-doc - Disable build of documentation' echo '--without-comp-comp-bins - Disable build of compatibility binarys' echo echo '--without-meta-data - Disable support for Meta Data' echo echo '--without-cf-cmd - Disable support for command codecfilter' echo echo '--without-vio-MODULE - Disable support for VIO module MODULE' echo echo '--without-password-api - Disable build of Password API' echo echo '--without-listen - Disable listening sockets in roard' echo ' This is the same as allways using --no-listen' echo echo '--roard-cfreq FREQ - Sets the cycle frequency of roard in Hz.' echo '--vorbis-bits BITS - Sets bits per sample used by Vorbis code' echo echo '--without-libao - Disable build of libao plugin' echo '--without-xmms - Disable build of XMMS plugin' echo '--without-audacious - Disable build of Audacious plugin' echo echo '--mmcu MMCU - Sets -mmcu compiler/linker option' echo '--minimal - Disable all optional components' echo '--cross-compile - Enable cross compiler workarounds' echo '--target-microcontroller - Set Options for mircocontrollers without a OS' echo ' Implys --cross-compile' echo '--target-win32 - Disable everything useful' echo '--exec-helper HELPER - Exec all test programms using this command (HELPER $cmd $args)' echo ' use '\''--exec-helper wine'\'' when building win32 binarys' exit 0; ;; '--ldpath') LDPATH="$LDPATH -L$2" shift; ;; '--incpath') INCPATH="$INCPATH -I$2" shift; ;; '--addpath') LDPATH="$LDPATH -L$2/lib/" INCPATH="$INCPATH -I$2/include/" shift; ;; '--cc') CC="$2" shift; ;; '--ranlib') RANLIB="$2" shift; ;; '--cdrom') CDROM="$2" shift; ;; '--tty') TTY_DEV="$2" shift; ;; '--oss-dev') OSS_DEV="$2" shift; ;; '--audio-group') DEFAULT_GRP="$2" shift; ;; '--no-'*) lib=$(echo "$1" | sed 's/^--no-//') eval no_lib_$lib=true ;; '--runtime-detect') RUNTIME_DETECT=true ;; '--ao-install-dir') AO_INST_DIR="$2" shift; ;; '--xmms-install-dir') XMMS_INST_DIR="$2" shift; ;; '--audacious-install-dir') AUDACIOUS_INST_DIR="$2" shift; ;; '--default-rate') DEFAULT_RATE="$2" shift; ;; '--default-channels') DEFAULT_CHANNELS="$2" shift; ;; '--default-bits') DEFAULT_BITS="$2" shift; ;; '--default-driver') ROAR_DRIVER_DEFAULT="$2" shift; ;; '--default-codec') ROAR_DRIVER_CODEC="$2" shift; ;; '--without-alaw') ALAW=false ALAW_RW=false ;; '--without-alaw-rw') ALAW_RW=false ;; '--without-mulaw') MULAW=false MULAW_RW=false ;; '--without-mulaw-rw') MULAW_RW=false ;; '--without-proxy') PROXY=false ;; '--without-comp-libs') COMP_LIBS=false ;; '--without-comp-roard') COMP_ROARD=false ;; '--without-comp-clients') COMP_CLIENTS=false ;; '--without-comp-doc') COMP_DOC=false ;; '--without-comp-comp-bins') COMP_COMP_BINS=false ;; '--without-meta-data') META_DATA=false ;; '--without-cf-'*) WITHOUT_CF="$WITHOUT_CF"' '$(echo "$1" | cut -d- -f5) ;; '--without-vio-'*) WITHOUT_VIO="$WITHOUT_VIO"' '$(echo "$1" | cut -d- -f5) ;; '--without-dcomp-'*) WITHOUT_DCOMP="$WITHOUT_DCOMP"' '$(echo "$1" | cut -d- -f5) ;; '--without-password-api') PASSWORD_API=false ;; '--without-listen') NO_LISTEN=true ;; '--roard-cfreq') ROARD_CFREQ="$2" shift; ;; '--vorbis-bits') VORBIS_BITS="$2" shift; ;; '--without-libao') LIBAO=false no_lib_ao=true ;; '--without-xmms') XMMS=false ;; '--without-audacious') AUDACIOUS=false ;; '--minimal') MINIMAL=true RUNTIME_DETECT=false XMMS=false AUDACIOUS=false LIBAO=false PROXY=false MULAW=false MULAW_RW=false ALAW=false ALAW_RW=false META_DATA=false PASSWORD_API=false WITHOUT_VIO="$WITHOUT_VIO"' dstr cmd stdio' WITHOUT_CF="$WITHOUT_CF"' wave' WITHOUT_DCOMP="$WITHOUT_DCOMP"' sources ssynth cb midi light raw cdriver emul_esd' ;; '--prefix') PREFIX="$2" shift; ;; '--prefix-bin') PREFIX_BIN="$2" shift; ;; '--prefix-lib') PREFIX_LIB="$2" shift; ;; '--prefix-inc') PREFIX_INC="$2" shift; ;; '--prefix-man') PREFIX_MAN="$2" shift; ;; # we should remove --prefix-comp soon '--prefix-comp'|'--prefix-comp-libs') PREFIX_COMP_LIBS="$2" shift; ;; '--prefix-comp-bins') PREFIX_COMP_BINS="$2" shift; ;; '--mmcu') MMCU="$2" shift; ;; '--cross-compile') CROSS_COMPILE=true ;; '--exec-helper') EXEC_HELPER="$2" shift; ;; '--target-microcontroller') TARGET_MICROCONTROLLER=true CROSS_COMPILE=true HAVE_MAIN_ARGS=false ;; '--target-win32') TARGET_WIN32=true ;; esac; shift; done CCTF="false" test_lib () { echo > $TF_C name="$1" echo -n "checking for $name... " echo "TEST LIB: $name" >&5 shift; LIBS='' while [ "$1" != '--' ] do case "$1" in 'c'|'-lc') :; # no need to do anything ;; '-'*) LIBS="$LIBS $1" ;; *) LIBS="-l$1" ;; esac shift; done shift; echo "LIB($name) IS TESTED USING LIBS: $LIBS" >&5 while [ "$1" != '' ] do echo "#include <$1>" >> $TF_C shift; done echo 'int main (void) { return 0; }' >> $TF_C echo "LIB($name) IS TESTED USING TEST CODE:" >&5 echo "--- BEGIN OF CODE BLOCK ---" >&5 cat $TF_C >&5 echo "--- END OF CODE BLOCK ---" >&5 echo "LIB($name) HAS COMPILER/LINKER OUTPUT:" >&5 echo "--- BEGIN OF CHILD OUTPUT BLOCK ---" >&5 $CCTF $LIBS >&5 2>&5; R=$? echo "--- END OF CHILD OUTPUT BLOCK ---" >&5 if [ "$R" = '0' ] then echo 'yes' echo "LIB($name) WAS FOUND" >&5 else echo 'no' echo "LIB($name) NOT FOUND" >&5 fi return $R } test_lib_defmake () { def="$1" subdir="$2" shift shift name="$1" lib="$2" shift echo "TEST LIB: $name" >&5 [ "$subdir" = '%' ] && subdir='' if [ "$lib" != '--' ] then eval _no="\$no_lib_$lib"; $MINIMAL && _no='XXX' if [ "$_no" != '' ] then echo "checking for $name... disabled by user" echo "LIB($name) IS DISABLED BY USER" >&5 [ "$subdir" != '' ] && \ echo "subdir_$subdir=" >&4 echo "lib_$lib=" >&4 return; fi fi LIBS=$($PKG_CONFIG --silence-errors --libs $lib 2> /dev/null) if [ "$?" != '0' ] then LIBS="-l$lib" fi echo "LIB($name) HAS LIBS: $LIBS" >&5 if test_lib "$name" $LIBS "$@" then subdir_var='subdir_'"`echo $subdir | tr / _`" echo "#define $def" >&3 [ "$subdir" != '' ] && \ echo "$subdir_var=$subdir" >&4 [ "$lib" != 'c' ] && \ echo "lib_$lib=$LIBS" >&4 [ "$lib" != 'c' ] && \ eval "lib_$lib='$LIBS'" else [ "$subdir" != '' ] && \ echo "subdir_$subdir=" >&4 [ "$lib" != 'c' ] && \ echo "lib_$lib=" >&4 fi echo >&5 echo >&5 } test_tool_defmake () { DEF="$1" NAME="$2" shift; shift; echo -n "checking for $NAME... " echo "TEST TOOL: $NAME" >&5 if $RUNTIME_DETECT then echo "$1 (runtime detect)" echo "TOOL($NAME) WILL BE RUNTIME DETECTED" >&5 echo "#define $DEF "\""$1"\" >&3 elif $MINIMAL then echo "disabled by user (minimalstic build)" echo "TOOL($NAME) IS DISABLED BY USER" >&5 else LIST=$(which "$@" 2> /dev/null | grep ^/ | head -n 1) if [ "$LIST" = '' ] then echo 'no' echo "TOOL($NAME) NOT FOUND" >&5 else echo $LIST echo "#define $DEF "\""$LIST"\" >&3 echo "TOOL($NAME) IS AT $LIST" >&5 fi fi } test_func_defmake () { DEF="$1" NAME="$2" shift; shift; echo -n "checking for $NAME()... " CALL="$1" shift; shift; # skip '--' echo "TEST FUNCTION: $NAME" >&5 { while [ "$1" != '' ] do echo "#include <$1>" shift; done echo 'int main (void) {' echo " $CALL;" echo ' return 0;' echo '}' } > $TF_C echo "--- BEGIN OF CODE BLOCK ---" >&5 cat $TF_C >&5 echo "--- END OF CODE BLOCK ---" >&5 echo "FUNCTION($NAME) HAS COMPILER/LINKER OUTPUT:" >&5 echo "--- BEGIN OF CHILD OUTPUT BLOCK ---" >&5 $CCTF >&5 2>&5; R=$? echo "--- END OF CHILD OUTPUT BLOCK ---" >&5 if [ "$R" = '0' ] then echo "#define $DEF" >&3 echo "FUNCTION($NAME) IS OK" >&5 echo yes else echo "FUNCTION($NAME) IS NOT OK" >&5 echo no fi } exec 3> config.h 4> Makefile.conf 5> config.log TARGET_CYGWIN=`echo "$SYSNAME" | if grep CYGWIN > /dev/null; then echo true; else echo false; fi` TARGET_WIN32=`echo "$SYSNAME" | if grep MINGW32 > /dev/null; then echo true; else echo $TARGET_WIN32; fi` if $TARGET_WIN32 then CROSS_COMPILE=true RUNTIME_DETECT=true no_lib_dnet=true PROXY=false LIBAO=false XMMS=false AUDACIOUS=false WITHOUT_VIO="$WITHOUT_VIO"' pipe cmd' # hope that with buffered pipes we can remove this soon WITHOUT_DCOMP="$WITHOUT_DCOMP"' cb' # [ "$ROARD_CFREQ" = '' ] && ROARD_CFREQ=20 fi if [ "$SYSNAME" = 'Darwin' ] then echo "Adding $SYSNAME shared lib arguments..." SHARED="$SHARED -fno-common -dynamiclib -compatibility_version 0.1 -current_version 0.1.0" SHARED_CF="$SHARED_CF -fno-common" elif [ "$SYSNAME" = 'NetBSD' ] then echo "Adding $SYSNAME libpath arguments..." LDPATH="$LDPATH -L/usr/local/lib/" elif [ "$SYSNAME" = 'OpenBSD' ] then echo "Adding $SYSNAME search path arguments..." LDPATH="$LDPATH -L/usr/local/lib/" INCPATH="$INCPATH -I/usr/local/include/" # echo "Adding $SYSNAME build arguments..." # SNDIO_EMUL=false elif [ "$SYSNAME" = 'FreeBSD' ] then echo "Adding $SYSNAME search path arguments..." LDPATH="$LDPATH -L/usr/local/lib/" INCPATH="$INCPATH -I/usr/local/include/" [ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='wheel' elif $TARGET_WIN32 then echo "Adding win32 build arguments..." fPIC=false SHARED_SUFFIX='.dll' elif $TARGET_CYGWIN then echo "Adding cygwin build arguments..." fPIC=false SHARED_SUFFIX='.dll' fi echo -n 'checking if we cross compile... ' if $CROSS_COMPILE then echo yes echo -n "checking for exec helper... " if [ "$EXEC_HELPER" = '' ] then if $TARGET_WIN32 then EXEC_HELPER=$(which wine 2> /dev/null | grep ^/ | head -n 1) if [ "$EXEC_HELPER" = '' ] then echo 'none (please install wine)' else echo "$EXEC_HELPER" fi else echo 'none (unknown)' fi else echo "$EXEC_HELPER" fi echo -n "checking for sysname... " if $TARGET_CYGWIN then SYSNAME=cygwin elif $TARGET_WIN32 then SYSNAME=win32 else SYSNAME=unknown fi echo "$SYSNAME" else echo no fi [ "$PREFIX_BIN" = '' ] && PREFIX_BIN="$PREFIX/bin/" [ "$PREFIX_LIB" = '' ] && PREFIX_LIB="$PREFIX/lib/" [ "$PREFIX_INC" = '' ] && PREFIX_INC="$PREFIX/include/" [ "$PREFIX_MAN" = '' ] && PREFIX_MAN="$PREFIX/share/man/" [ "$PREFIX_COMP_LIBS" = '' ] && PREFIX_COMP_LIBS="$PREFIX_LIB/roaraudio/complibs/" [ "$PREFIX_COMP_BINS" = '' ] && PREFIX_COMP_BINS="$PREFIX_LIB/roaraudio/compbins/" [ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='audio' if [ "$MMCU" != '' ] then CC="$CC -mmcu=$MMCU" fi # now write the cc name to Makefile.conf { echo "SHARED=$SHARED" echo "SHARED_CF=$SHARED_CF" echo "SHARED_SUFFIX=$SHARED_SUFFIX" $fPIC && echo 'fPIC=-fPIC' echo echo "CC=$CC" echo "RANLIB=$RANLIB" echo "LDPATH=$LDPATH" echo "INCPATH=$INCPATH" echo echo "EXEC_HELPER=$EXEC_HELPER" echo echo "PREFIX=$PREFIX" echo "PREFIX_BIN=$PREFIX_BIN" echo "PREFIX_LIB=$PREFIX_LIB" echo "PREFIX_INC=$PREFIX_INC" echo "PREFIX_MAN=$PREFIX_MAN" echo "PREFIX_COMP_LIBS=$PREFIX_COMP_LIBS" echo "PREFIX_COMP_BINS=$PREFIX_COMP_BINS" echo $COMP_LIBS && echo "comp_libs=libroar libroardsp libroarmidi libroarlight libroareio" $COMP_ROARD && echo "comp_roard=roard" $COMP_CLIENTS && echo "comp_clients=roarclients" $COMP_DOC && echo "comp_doc=doc" $COMP_COMP_BINS && echo "comp_comp_bins=compbins" echo $SNDIO_EMUL && echo "subdir_libroarsndio=libroarsndio" echo "subdir_libroaross=libroaross" # this builds an empty file in case of not supported } >&4 CCTF="$CC $LDPATH $INCPATH -Iinclude/ -o $TF_E $TF_C" { cat <<'EOF' //config.log: /* * Logfile for configure script $Revision$ of RoarAudio */ EOF echo '/* uname: ' $(uname -a) '*/' echo '/* Date : ' $(date) '*/' echo echo echo echo "ARGS(): $_CARGS" for i in PATH SHELL CC RANLIB PKG_CONFIG SYSNAME \ TARGET_CYGWIN TARGET_WIN32 TARGET_MICROCONTROLLER CROSS_COMPILE \ RUNTIME_DETECT MINIMAL EXEC_HELPER do eval echo "BASICCONF\($i\): \$$i"; done echo echo } >&5 cat >&3 << EOF //config.h: #ifndef _ROARAUDIO_CONFIG_H_ #define _ROARAUDIO_CONFIG_H_ EOF { echo '/* uname: ' $(uname -a) '*/' echo '/* Date : ' $(date) '*/' echo [ "$DEFAULT_RATE" = '' ] || echo "#define ROAR_RATE_DEFAULT $DEFAULT_RATE" [ "$DEFAULT_CHANNELS" = '' ] || echo "#define ROAR_CHANNELS_DEFAULT $DEFAULT_CHANNELS" [ "$DEFAULT_BITS" = '' ] || echo "#define ROAR_BITS_DEFAULT $DEFAULT_BITS" [ "$ROAR_DRIVER_DEFAULT" = '' ] || echo "#define ROAR_DRIVER_DEFAULT \"$ROAR_DRIVER_DEFAULT\"" [ "$ROAR_DRIVER_CODEC" = '' ] || echo "#define ROAR_DRIVER_CODEC \"$ROAR_DRIVER_CODEC\"" echo [ "$ROARD_CFREQ" = '' ] || echo "#define ROAR_OUTPUT_CFREQ $ROARD_CFREQ" echo "#define ROAR_VORBIS_BITS $VORBIS_BITS" echo $MINIMAL && echo '#define ROAR_MINIMAL' $ALAW && echo '#define ROAR_SUPPORT_ALAW' $ALAW_RW && echo '#define ROAR_SUPPORT_ALAW_RW' $MULAW && echo '#define ROAR_SUPPORT_MULAW' $MULAW_RW && echo '#define ROAR_SUPPORT_MULAW_RW' $PROXY && echo '#define ROAR_SUPPORT_PROXY' $PASSWORD_API && echo '#define ROAR_SUPPORT_PASSWORD_API' $NO_LISTEN || echo '#define ROAR_SUPPORT_LISTEN' $META_DATA && echo '#define ROAR_SUPPORT_META' echo $HAVE_MAIN_ARGS && echo '#define ROAR_HAVE_MAIN_ARGS' echo for i in $WITHOUT_CF do i=$(echo $i | tr /a-z/ /A-Z/); echo '#define ROAR_WITHOUT_CF_'$i done for i in $WITHOUT_VIO do i=$(echo $i | tr /a-z/ /A-Z/); echo '#define ROAR_WITHOUT_VIO_'$i done for i in $WITHOUT_DCOMP do i=$(echo $i | tr /a-z/ /A-Z/); echo '#define ROAR_WITHOUT_DCOMP_'$i done echo $TARGET_MICROCONTROLLER && echo '#define ROAR_TARGET_MICROCONTROLLER' $TARGET_WIN32 && echo '#define ROAR_TARGET_WIN32' $TARGET_CYGWIN && echo '#define ROAR_TARGET_CYGWIN' echo '#define ROAR_OS_'$(echo $SYSNAME | tr a-z-. A-Z__) echo } >&3 # #define name cmds... test_tool_defmake ROAR_HAVE_BIN_OGG123 ogg123 ogg123 test_tool_defmake ROAR_HAVE_BIN_FLAC flac flac test_tool_defmake ROAR_HAVE_BIN_TIMIDITY TiMidity++ timidity test_tool_defmake ROAR_HAVE_BIN_CDPARANOIA cdparanoia cdparanoia test_tool_defmake ROAR_HAVE_BIN_WGET Wget wget test_tool_defmake ROAR_HAVE_BIN_GNUPLOT gnuplot gnuplot test_tool_defmake ROAR_HAVE_BIN_SSH OpenSSH ssh test_tool_defmake ROAR_HAVE_BIN_PINENTRY PIN-Entry pinentry test_tool_defmake ROAR_HAVE_BIN_SSH_ASKPASS SSH-AskPass ssh-askpass test_tool_defmake ROAR_HAVE_BIN_GZIP Gzip gzip test_tool_defmake ROAR_HAVE_BIN_BZIP2 bzip2 bzip2 test_tool_defmake ROAR_HAVE_BIN_GPG GnuPG gpg test_tool_defmake ROAR_HAVE_BIN_CHAT chat chat test_tool_defmake ROAR_HAVE_BIN_EJECT eject eject echo >&3 echo >&5 echo >&5 echo >&5 # #define subdir name -lxxx -- header test_lib_defmake ROAR_HAVE_LIBM % 'Math Library' m -- math.h if test_lib 'realtime Library' rt -- sys/mman.h mqueue.h semaphore.h then { echo '#define ROAR_HAVE_LIBRT' echo '#define ROAR_NEED_LIBRT' } >&3 fi echo >&3 # #define subdir name -lxxx -- header test_lib_defmake ROAR_HAVE_ESD % EsounD esd -- esd.h test_lib_defmake ROAR_HAVE_LIBAO % libao ao -- ao/ao.h ao/plugin.h test_lib_defmake ROAR_HAVE_LIBRAUM % RAUM raum -- raum.h test_lib_defmake ROAR_HAVE_LIBOGG % libogg ogg -- ogg/ogg.h test_lib_defmake ROAR_HAVE_LIBVORBIS % libvorbis vorbis -- vorbis/codec.h test_lib_defmake ROAR_HAVE_LIBVORBISFILE % libvorbisfile vorbisfile -- vorbis/vorbisfile.h test_lib_defmake ROAR_HAVE_LIBVORBISENC % libvorbisenc vorbisenc -- vorbis/vorbisenc.h test_lib_defmake ROAR_HAVE_LIBSPEEX % libspeex speex -- speex/speex.h speex/speex_stereo.h test_lib_defmake ROAR_HAVE_LIBSPEEXDSP % libspeexdsp speexdsp -- speex/speex.h speex/speex_echo.h test_lib_defmake ROAR_HAVE_LIBCELT % libcelt celt -- celt/celt.h celt/celt_header.h test_lib_defmake ROAR_HAVE_LIBOGGZ % liboggz oggz -- oggz/oggz.h test_lib_defmake ROAR_HAVE_LIBSNDFILE % libsndfile sndfile -- sndfile.h test_lib_defmake ROAR_HAVE_LIBFISHSOUND roarfish libfishsound fishsound -- fishsound/fishsound.h test_lib_defmake ROAR_HAVE_LIBSAMPLERATE % libsamplerate samplerate -- samplerate.h test_lib_defmake ROAR_HAVE_LIBSHOUT % libshout shout -- shout/shout.h test_lib_defmake ROAR_HAVE_LIBPULSE libroarpulse libpulse pulse -- pulse/pulseaudio.h pulse/simple.h test_lib_defmake ROAR_HAVE_LIBY2 libroaryiff libyiff Y2 -- Y2/Y.h Y2/Ylib.h test_lib_defmake ROAR_HAVE_LIBARTSC % libartsc artsc -- kde/artsc/artsc.h test_lib_defmake ROAR_HAVE_LIBOSSAUDIO % libossaudio ossaudio -- sys/ioctl.h test_lib_defmake ROAR_HAVE_LIBSNDIO % libsndio sndio -- sndio.h test_lib_defmake ROAR_HAVE_LIBSSL % OpenSSL ssl -- openssl/bio.h openssl/evp.h test_lib_defmake ROAR_HAVE_LIBSLP % OpenSLP slp -- slp.h test_lib_defmake ROAR_HAVE_LIBUUID % libuuid uuid -- uuid/uuid.h test_lib_defmake ROAR_HAVE_LIBDNET % libdnet dnet -- sys/socket.h netdnet/dn.h netdnet/dnetdb.h test_lib_defmake ROAR_HAVE_BSDSOCKETS % BSDSockets c -- sys/types.h sys/socket.h test_lib_defmake ROAR_HAVE_UNIX % UNIX c -- sys/types.h sys/socket.h sys/un.h test_lib_defmake ROAR_HAVE_IPX % IPX c -- netipx/ipx.h test_lib_defmake ROAR_HAVE_IPV4 % IPv4 c -- sys/types.h sys/socket.h 'netinet/in.h' test_lib_defmake ROAR_HAVE_OSS % OSS c -- sys/ioctl.h sys/soundcard.h test_lib_defmake ROAR_HAVE_OSS_BSD % BSDOSS c -- sys/ioctl.h soundcard.h test_lib_defmake ROAR_HAVE_LIBWINMM % WinMM winmm -- windows.h mmsystem.h test_lib_defmake ROAR_HAVE_LIBASOUND % ALSA asound -- alsa/asoundlib.h alsa/pcm_external.h alsa/control_external.h test_lib_defmake ROAR_HAVE_LIBDL % DynLinkerLib dl -- dlfcn.h test_lib_defmake ROAR_HAVE_LIBSENDFILE % sendfile sendfile -- sys/sendfile.h test_lib_defmake ROAR_HAVE_LIBSOCKET % libsocket socket -- sys/socket.h test_lib_defmake ROAR_HAVE_LIBWSOCK32 % WinSockP0 wsock32 -- winsock2.h test_lib_defmake ROAR_HAVE_LIBWS2_32 % WinSockP1 ws2_32 -- winsock2.h echo >&3 # Those tests should not be disbaled as they do not reduce the lib size just # break --minimal on full systems OLD_MINIMAL=$MINIMAL MINIMAL=false test_lib_defmake ROAR_HAVE_H_SYS_TYPES % sys/types.h c -- sys/types.h test_lib_defmake ROAR_HAVE_H_SYS_TIME % sys/time.h c -- sys/time.h test_lib_defmake ROAR_HAVE_H_TIME % time.h c -- time.h test_lib_defmake ROAR_HAVE_H_FCNTL % fcntl.h c -- fcntl.h test_lib_defmake ROAR_HAVE_H_UNISTD % unistd.h c -- unistd.h test_lib_defmake ROAR_HAVE_H_SIGNAL % signal.h c -- signal.h test_lib_defmake ROAR_HAVE_H_POLL % poll.h c -- poll.h test_lib_defmake ROAR_HAVE_H_MMSYSTEM % mmsystem.h c -- windows.h mmsystem.h test_lib_defmake ROAR_HAVE_H_ESD libroaresd esd.h c -- esd.h test_lib_defmake ROAR_HAVE_H_ARTSC libroararts artsc.h c -- kde/artsc/artsc.h MINIMAL=$OLD_MINIMAL echo >&3 # add a better test here test_lib 'linux sendfile()' -- sys/sendfile.h && echo '#define ROAR_HAVE_LINUX_SENDFILE' >&3 echo -n 'checking for IPv6... ' if $MINIMAL then echo "disabled by user (minimalstic build)" else echo '#include ' > $TF_C echo '#include ' >> $TF_C echo 'int main (void) { struct sockaddr_in6 in6; return 0; }' >> $TF_C if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_IPV6' >&3 echo yes else echo no fi fi echo -n 'checking for _exit()... ' echo '#include ' > $TF_C echo 'int main (void) { _exit(0); return 0; }' >> $TF_C if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_U_EXIT' >&3 echo '#define ROAR_U_EXIT _exit' >&3 echo yes else echo '#define ROAR_U_EXIT exit' >&3 echo no fi # def name call -- header test_func_defmake ROAR_HAVE_SETENV setenv 'setenv("", "", 0)' -- stdlib.h test_func_defmake ROAR_HAVE_PUTENV putenv 'putenv("")' -- stdlib.h test_func_defmake ROAR_HAVE_STRTOK_R strtok_r 'strtok_r("","",(char**)0)' -- string.h test_func_defmake ROAR_HAVE_NICE nice 'nice(0)' -- unistd.h test_func_defmake ROAR_HAVE_GETGID getgid 'getgid()' -- sys/types.h unistd.h test_func_defmake ROAR_HAVE_GETUID getuid 'getuid()' -- sys/types.h unistd.h test_func_defmake ROAR_HAVE_SETGID setgid 'setgid(0)' -- sys/types.h unistd.h test_func_defmake ROAR_HAVE_SETUID setuid 'setuid(0)' -- sys/types.h unistd.h test_func_defmake ROAR_HAVE_SETSID setsid 'setsid()' -- sys/types.h unistd.h test_func_defmake ROAR_HAVE_GETTIMEOFDAY gettimeofday 'struct timeval tv; gettimeofday(&tv, NULL)' -- sys/time.h time.h test_func_defmake ROAR_HAVE_USLEEP usleep 'usleep(0)' -- sys/types.h unistd.h test_func_defmake ROAR_HAVE_ALARM alarm 'alarm(0)' -- sys/types.h unistd.h test_func_defmake ROAR_HAVE_TIME time 'time((void*)0)' -- time.h test_func_defmake ROAR_HAVE_KILL kill 'kill(0,0)' -- sys/types.h signal.h test_func_defmake ROAR_HAVE_UNAME uname 'uname((void*)0)' -- sys/utsname.h echo -n 'checking for basic IO calls... ' cat < $TF_C #include #include #include #include #include int main(void) { open(NULL, 0, 0); close(0); read(0, NULL, 0); write(0, NULL, 0); lseek(0, 0, 0); return 0; } EOF if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_IO_POSIX' >&3 echo posix else echo none fi echo -n 'checking for basic FS calls... ' cat < $TF_C #include #include int main(void) { chdir(NULL); unlink(NULL); return 0; } EOF if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_FS_POSIX' >&3 echo posix else echo none fi test_func_defmake ROAR_HAVE_CHROOT chroot 'chroot((void*)0)' -- unistd.h test_func_defmake ROAR_HAVE_MLOCK mlock 'mlock((void*)0, 0)' -- sys/mman.h test_func_defmake ROAR_HAVE_MMAP mmap 'mmap((void*)0,0,0,0,0,0)' -- sys/mman.h echo -n 'checking for fsync()... ' echo '#include ' > $TF_C echo 'int main (void) { fsync(0); return 0; }' >> $TF_C if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_FSYNC' >&3 FSYNC=true echo yes else FSYNC=false echo no fi echo -n 'checking for fdatasync()... ' echo '#include ' > $TF_C echo 'int main (void) { fdatasync(0); return 0; }' >> $TF_C if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_FDATASYNC' >&3 echo '#define ROAR_FDATASYNC fdatasync' >&3 echo yes else $FSYNC && echo '#define ROAR_FDATASYNC fsync' >&3 echo no fi echo -n 'checking for fopencookie()... ' echo '#define _GNU_SOURCE' > $TF_C echo '#include ' >> $TF_C echo 'int main (void) { cookie_io_functions_t f; fopencookie(NULL, "", f); return 0; }' >> $TF_C if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_FOPENCOOKIE' >&3 NEED_GNU_SOURCE=true echo yes else echo no fi echo -n 'checking for funopen()... ' echo '#define __BSD_VISIBLE 1' > $TF_C echo '#include ' >> $TF_C echo 'int main (void) { funopen(NULL, NULL, NULL, NULL, NULL); return 0; }' >> $TF_C if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_FUNOPEN' >&3 echo '#define ROAR_NEED_BSD_VISIBLE' >&3 echo yes else echo no fi test_func_defmake ROAR_HAVE_PIPE pipe 'pipe(NULL)' -- unistd.h test_func_defmake ROAR_HAVE_FORK fork 'fork()' -- unistd.h test_func_defmake ROAR_HAVE_WAIT wait 'wait(NULL)' -- string.h sys/wait.h echo -n 'checking for square root func... ' if $TARGET_CYGWIN then echo 'sqrt() (cygwin)' elif [ "$SYSNAME" = 'FreeBSD' ] then echo 'sqrt() (FreeBSD, fix your gcc)' elif [ "$SYSNAME" = 'Linux' ] then echo '#include ' > $TF_C echo 'int main (void) { sqrtl(0); return 0; }' >> $TF_C if $CCTF -lm 2> /dev/null; then echo '#define ROAR_HAVE_SQRTL' >&3 echo 'sqrtl()' else echo 'sqrt()' fi else echo 'sqrt()' fi echo -n 'checking for inline funcs... ' echo 'inline int test (void) { return 0; }' > $TF_C echo 'int main (void) { return test(); }' >> $TF_C if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_INLINE' >&3 echo yes else echo no fi echo -n 'checking for broken peercred... ' echo '#include ' > $TF_C echo '#include ' >> $TF_C echo '#include ' >> $TF_C echo 'int main (void) { struct ucred cred; return 0; }' >> $TF_C if $CCTF 2> /dev/null; then echo working else if $CCTF -D_GNU_SOURCE 2> /dev/null; then NEED_GNU_SOURCE=true echo need to set _GNU_SOURCE else echo '#define ROAR_BROKEN_PEERCRED' >&3 echo broken fi fi test_func_defmake ROAR_HAVE_GETPEEREID getpeereid 'getpeereid(0, NULL, NULL)' -- sys/types.h sys/socket.h echo -n 'checking for select()... ' cat < $TF_C #ifndef WITHOUT_SYS_SELECT_H #include #endif #ifdef WITH_WINSOCK_H #include #endif #include #include #include int main (void) { fd_set rfds; struct timeval tv; FD_ZERO(&rfds); FD_SET(0, &rfds); tv.tv_sec = 0; tv.tv_usec = 0; select(1, &rfds, NULL, NULL, &tv); return 0; } EOF if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_SELECT' >&3 echo '#define ROAR_HAVE_H_SYS_SELECT' >&3 echo yes, POSIX.1-2001 elif $CCTF -DWITHOUT_SYS_SELECT_H 2> /dev/null; then echo '#define ROAR_HAVE_SELECT' >&3 echo yes, old style elif $CCTF -DWITHOUT_SYS_SELECT_H -DWITH_WINSOCK_H $lib_wsock32 >&5 2>&5; then echo '#define ROAR_HAVE_SELECT' >&3 echo yes, WinSock else echo no fi echo -n 'checking for shutdown()... ' cat < $TF_C #include #ifndef WITHOUT_SYS_SOCKET_H #include #endif #ifdef WITH_WINSOCK_H #include #endif int main (void) { shutdown(0, 0); return 0; } EOF if [ "$SYSNAME" = 'SunOS' ] then _l='-lsocket' else _l='' fi if $CCTF $_l 2> /dev/null; then echo '#define ROAR_HAVE_SHUTDOWN' >&3 echo '#define ROAR_SHUTDOWN shutdown' >&3 echo yes elif $CCTF -DWITHOUT_SYS_SOCKET_H -DWITH_WINSOCK_H $lib_wsock32 2> /dev/null; then echo '#define ROAR_HAVE_SHUTDOWN' >&3 echo '#define ROAR_SHUTDOWN shutdown' >&3 echo yes, WinSock else echo '#define ROAR_SHUTDOWN(x,y) (-1)' >&3 echo no fi test_func_defmake ROAR_HAVE_GETOBJECTBYNAME getobjectbyname 'getobjectbyname(NULL)' -- stdlib.h netdnet/dn.h netdnet/dnetdb.h test_func_defmake ROAR_HAVE_GETSERVBYNAME getservbyname 'getservbyname((void*)0, (void*)0)' -- netdb.h echo -n 'checking for type of pa_path_get_filename()... ' echo '#include ' > $TF_C echo '#include ' >> $TF_C echo '#include ' >> $TF_C echo 'int main (void) { return 0; } const char *pa_path_get_filename(const char *p) { return NULL; }' >> $TF_C if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_TYPE_PA_PATH_GET_FILENAME const char *' >&3 echo 'const char *' else echo '#define ROAR_HAVE_TYPE_PA_PATH_GET_FILENAME char *' >&3 echo 'char *' fi echo -n 'checking for safe 32 bit integer overflow... ' cat > $TF_C << EOF #include #include #define TYPE uint32_t #define MAX ((TYPE)4294967295U) int main (void) { TYPE a = MAX; a += 2; if ( a == 1 ) { printf("#define ROAR_HAVE_SAFE_OVERFLOW\n"); return 0; } return 1; } EOF if $CCTF 2> /dev/null; then $EXEC_HELPER $TF_E >&3 2> /dev/null if [ "$?" = '0' ] then echo yes else echo no fi else echo 'no (can not compile!, no stdint.h?)' fi echo -n 'checking for __LP64__... ' if $TARGET_WIN32 then echo 'need to set (win32 build)' else cat > $TF_C << EOF #include int main (void) { #ifdef __LP64__ fprintf(stderr, "set by compiler\n"); #else if ( sizeof(int) == sizeof(void*) ) { fprintf(stderr, "no need to set\n"); } else { fprintf(stderr, "need to set\n"); printf("\n#ifndef __LP64__\n#define __LP64__\n#endif\n\n"); } #endif return 0; } EOF if $CCTF 2> /dev/null; then $EXEC_HELPER $TF_E >&3 else echo 'error, can not compile' exit 1 fi fi echo -n 'checking for 64 bit types... ' if $TARGET_WIN32 then echo 'int64_t, uint64_t (win32 build)' echo '#define ROAR_NATIVE_INT64 int64_t' >&3 echo '#define ROAR_NATIVE_UINT64 uint64_t' >&3 else cat > $TF_C << EOF #include #include int main (void) { char * i64 = NULL, * ui64 = NULL; if ( sizeof(int) == 8 ) { i64 = "int"; ui64 = "unsigned int"; } else if ( sizeof(long int) == 8 ) { i64 = "long int"; ui64 = "unsigned long int"; } else if ( sizeof(long long int) == 8 ) { i64 = "long long int"; ui64 = "unsigned long long int"; } else if ( sizeof(int64_t) == 8 ) { i64 = "int64_t"; ui64 = "uint64_t"; } else { fprintf(stderr, "none\n"); return 0; } fprintf(stderr, "%s, %s\n", i64, ui64); printf("#define ROAR_NATIVE_INT64 %s\n#define ROAR_NATIVE_UINT64 %s\n", i64, ui64); return 0; } EOF if $CCTF 2> /dev/null; then $EXEC_HELPER $TF_E >&3 else echo 'error, can not compile' exit 1 fi fi echo -n 'checking if cp supports -v... ' if cp -v --help > /dev/null 2> /dev/null then echo "cp_v=-v" >&4 echo yes else echo "cp_v=" >&4 echo no fi echo -n 'checking for cdrom device... ' if [ -n "$CDROM" ] then if [ "$CDROM" = '(none)' ] then echo "none (disabled by user)" else if $CROSS_COMPILE then echo "$CDROM (cross compile)" elif [ -e "$CDROM" ] then echo "$CDROM (forced by user)" else echo "$CDROM (not existing, forced by user)" fi echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3 echo '#define ROAR_HAVE_CDROM' >&3 fi elif $CROSS_COMPILE then echo 'none (cross compiling, use --cdrom to enable CDROM support)' else CDROM=$(ls /dev/cdrom /dev/rcd0c 2> /dev/null | head -n 1); if [ -e "$CDROM" ] then echo "$CDROM" echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3 echo '#define ROAR_HAVE_CDROM' >&3 else echo 'none' echo '#define ROAR_HAVE_CDROM' >&3 fi fi echo -n 'checking for default tty device... ' if [ -n "$TTY_DEV" ] then if [ "$TTY_DEV" = '(none)' ] then echo "none (disabled by user)" else if $CROSS_COMPILE then echo "$TTY_DEV (cross compile)" elif [ -e "$TTY_DEV" ] then echo "$TTY_DEV (forced by user)" else echo "$TTY_DEV (not existing, forced by user)" fi echo '#define ROAR_DEFAULT_TTY "'"$TTY_DEV"'"' >&3 fi else TTY_DEV=$(ls /dev/tty 2> /dev/null | head -n 1); if [ -e "$TTY_DEV" ] then echo "$TTY_DEV" echo '#define ROAR_DEFAULT_TTY "'"$TTY_DEV"'"' >&3 else echo 'none' fi fi echo -n 'checking for OSS device... ' if [ -n "$OSS_DEV" ] then if [ "$OSS_DEV" = '(none)' ] then echo "none (disabled by user)" else if $CROSS_COMPILE then echo "$OSS_DEV (cross compile)" elif [ -e "$OSS_DEV" ] then echo "$OSS_DEV (forced by user)" else echo "$OSS_DEV (not existing, forced by user)" fi echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3 fi else OSS_DEV=$(ls /dev/dsp /dev/audio 2> /dev/null | head -n 1); if [ -e "$OSS_DEV" ] then echo "$OSS_DEV" echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3 else echo 'none' fi fi echo 'checking for decnet status file... '"$PROC_NET_DECNET" echo '#define ROAR_PROC_NET_DECNET "'"$PROC_NET_DECNET"'"' >&3 echo -n 'checking for default audio group... ' if [ "$DEFAULT_GRP" = '(none)' ] then echo "none (disabled by user)" else echo "$DEFAULT_GRP" echo '#define ROAR_DEFAULT_SOCKGRP "'"$DEFAULT_GRP"'"' >&3 fi $NEED_GNU_SOURCE && echo '#define ROAR_NEED_GNU_SOURCE' >&3 cat >&3 << EOF #endif //ll EOF echo >&5 echo '//ll' >&5 echo >&4 echo >&4 cd plugins if $LIBAO then echo 'running libao plugin configure...' cd ao/ if [ "$AO_INST_DIR" = '' ] then ./configure --force-have-roar --pkg-config "$PKG_CONFIG" && \ echo "subdir_plugins_ao=plugins/ao" >&4 else ./configure --force-have-roar --pkg-config "$PKG_CONFIG" --inst-dir "$AO_INST_DIR" && \ echo "subdir_plugins_ao=plugins/ao" >&4 fi cd .. else echo "running libao plugin configure... disabled by user" fi if $XMMS then echo 'running xmms plugin configure...' cd xmms/ ./configure --force-have-roar --pkg-config "$PKG_CONFIG" --inst-dir "$XMMS_INST_DIR" && \ echo "subdir_plugins_xmms=plugins/xmms" >&4 cd .. else echo "running xmms plugin configure... disabled by user" fi if $AUDACIOUS then echo 'running Audacious plugin configure...' cd audacious/ ./configure --force-have-roar --pkg-config "$PKG_CONFIG" --inst-dir "$AUDACIOUS_INST_DIR" && \ echo "subdir_plugins_audacious=plugins/audacious" >&4 cd .. else echo "running Audacious plugin configure... disabled by user" fi cd .. rm -f $TF_C $TF_E mv config.h include/roaraudio/ echo 'config.h created and moved into include/roaraudio/' if $TARGET_CYGWIN then rm -f $TF_E.exe echo 'patching Makefiles for cygwin...' find . -name Makefile -print0 | xargs -0 sed 's/\.so/.dll'/g -i fi #ll