#!/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 PATH="$PATH":/usr/lib/ssh:/usr/lib/openssh # Ensure SSH paths # wine prints errors to stdout so stderr redirects do not work. # To avoid common problems with wine and $LANG/$LC_* we just reset them. LANG=C LC_CTYPE=C LC_NUMERIC=C LC_TIME=C LC_COLLATE=C LC_MONETARY=C #set -x # IDs officaly assigned DEV_VENDOR=0 DEV_VENDOR_NAME='RoarAudio' #-------- DISTRIBUTION_VERSION_STRING='' TF_C=testit.c TF_E=./testit LDPATH='' INCPATH='' OPTI_O=2 CROSS_COMPILE=false SYSNAME='unknown' SHARED='-shared' SHARED_CF='' SHARED_SUFFIX='.so' COMPBIN_SUFFIX='.r' fPIC=true Wextra=false MMCU='' LINK_DEPS=full PKG_CONFIG=false RUNTIME_DETECT=false NEED_GNU_SOURCE=false PREFIX='/usr/local' PREFIX_BIN='' PREFIX_LIB='' PREFIX_INC='' PREFIX_MAN='' PREFIX_PC='' PREFIX_COMP_LIBS='' PREFIX_COMP_BINS='' PREFIX_PLUGINS='' CDROM_IS_DEV=true CDROM="" OSS_DEV="" OSS_MIX_DEV="" PROC_NET_DECNET="/proc/net/decnet" PROC_NET_DECNET_NEIGH="" PROC_NET_ARP="" TTY_DEV="" ROOT_UID='' 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 SUPPORT_TRAP=false USE_MEMMGR=false WITHOUT_CF='cmd' WITHOUT_VIO='' WITHOUT_DCOMP='' HAVE_MAIN_ARGS=true MINIMAL=false BETA=true EXPERIMENTAL=true TARGET_WIN32=false TARGET_MICROCONTROLLER=false TARGET_CYGWIN=false EXEC_HELPER='' ROAR_DRIVER_DEFAULT='' ROAR_DRIVER_CODEC='' ROARD_BITS='' # Bits per sample used by roard. ROARD_CFREQ='' # cycle frequens for roard, normally 100Hz # Libs which are per default disabled: no_lib_ssl=true _CARGS="$@"; # other stuff we need to reset: infotext='' # some very basic string functions: to_upper() { tr 'a-z' 'A-Z' } to_escaped() { tr 'A-Z/.+-' 'a-z____' } echo -n "checking for version of this package... " VERSION=`head -n 1 ChangeLog | cut -d' ' -f2` echo "$VERSION" echo -n "checking for build stamp of this package... " BUILD_STAMP="`date -u +'%F %X'` (`id -un`@`uname -n`)" echo "$BUILD_STAMP" 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 'OPTIONS:' echo 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 '--cflags FLAGS - Sets additional compiler flags (default: '"$CFLAGS"')' echo '--ldflags FLAGS - Sets additional linker flags (default: '"$LDFLAGS"')' echo '--opti LEVEL - Sets optimizer level (default: '"$OPTI_O"')' echo '--link-deps MODE - Model for linking dependencys: full or indirect' echo echo '--cc CC - Set name of C compiler (CC) to CC' echo '--ranlib RANLIB - Set name of ranlib (RANLIB) to RANLIB' echo echo '--cdrom DEV - Set default CDRum device' echo '--tty DEV - Set default TTY' echo '--oss-dev DEV - Set default OSS device' echo '--oss-mixer-dev DEV - Set default OSS mixer device' echo '--proc-net-decnet FILE - Set DECnet file for DECnet support auto detecting' echo ' (ignore this on non-Linux)' echo '--proc-net-decnet-neigh FILE' echo ' - Set file for DECnet neighbour table' echo '--proc-net-arp FILE - Set file for IP neighbour (ARP) table' echo '--audio-group GROUP - Sets group of audio permitted users' echo '--root-uid UID - Sets User ID (UID) of the root user/superuser' echo echo '--no-LIB - disable library LIB' echo '--maybe-LIB - autodetect library LIB (default)' 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-pc DIR - Set prefix for pkg-config (default: $PREFIX_LIB/pkgconfig)' 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-dcomp-COMP - Disable build of roard'\''s component COMP' 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 '--with-trap-api - Build with Trap support' echo echo '--with-memory-api - Use internal memory API (memmgr)' echo '--without-memory-api - Do not use internal memory API (memmgr)' echo echo '--without-listen - Disable listening sockets in roard' echo ' This is the same as allways using --no-listen' echo echo '--without-beta - Disable beta code' echo '--without-experimental - Disable experimental code' echo echo '--distribution-version-string STRING' echo ' - Sets distribution part of version string' echo echo '--roard-cfreq FREQ - Sets the cycle frequency of roard in Hz' echo '--roard-bits BITS - Sets the number of bits per sample used by roard' 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' echo echo echo 'LIBRARY NAMES (to be used with --no-* and --maybe-*):' echo grep '^test_lib_defmake ROAR_' configure | awk '{print $5 == "c" ? $4 : $5}' | grep -v '\.h'\''*$' | \ cut -d/ -f1 | sort | uniq | grep -v ^c$ | \ while read lib do envlib=`echo "$lib" | to_escaped` eval _no="\$no_lib_$envlib"; if [ "$_no" != '' ] then echo -n "$lib (disabled) " else echo -n "$lib " fi done echo '' # print \n 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; ;; '--cflags') CFLAGS="$2" shift; ;; '--ldflags') LDFLAGS="$2" shift; ;; '--opti') OPTI_O="$2" shift; ;; '--link-deps') LINK_DEPS="$2" shift; ;; '--cc') CC="$2" shift; ;; '--ranlib') RANLIB="$2" shift; ;; '--cdrom') CDROM="$2" shift; ;; '--tty') TTY_DEV="$2" shift; ;; '--oss-dev') OSS_DEV="$2" shift; ;; '--oss-mixer-dev') OSS_MIX_DEV="$2" shift; ;; '--proc-net-decnet') PROC_NET_DECNET="$2" shift; ;; '--proc-net-decnet-neigh') PROC_NET_DECNET_NEIGH="$2" shift; ;; '--proc-net-arp') PROC_NET_ARP="$2" shift; ;; '--audio-group') DEFAULT_GRP="$2" shift; ;; '--root-uid') ROOT_UID="$2" shift; ;; '--no-'*) lib=$(echo "$1" | sed 's/^--no-//' | to_escaped) eval no_lib_$lib=true ;; '--maybe-'*) lib=$(echo "$1" | sed 's/^--maybe-//' | to_escaped) eval unset no_lib_$lib ;; '--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 ;; '--with-trap-api') SUPPORT_TRAP=true ;; '--with-memory-api'|'--use-memory-api') USE_MEMMGR=true ;; '--without-memory-api') USE_MEMMGR=false ;; '--without-listen') NO_LISTEN=true ;; '--distribution-version-string') DISTRIBUTION_VERSION_STRING="$2" shift; ;; '--roard-cfreq') ROARD_CFREQ="$2" shift; ;; '--roard-bits') ROARD_BITS="$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 SUPPORT_TRAP=false USE_MEMMGR=false WITHOUT_VIO="$WITHOUT_VIO"' cmd stdio' WITHOUT_CF="$WITHOUT_CF"' wave cmd cf au' WITHOUT_DCOMP="$WITHOUT_DCOMP"' sources ssynth cb midi light raw rdtcs cdriver emul_esd emul_simple emul_rsound emul_rplay emul_gopher mixer' ;; '--without-beta') BETA=false EXPERIMENTAL=false ;; '--without-experimental') EXPERIMENTAL=false ;; '--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; ;; '--prefix-pc') PREFIX_PC="$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; ;; '--prefix-plugins') PREFIX_PLUGINS="$2" shift; ;; #################################### # autof* options block: '--prefix='*) PREFIX=$(echo "$1" | cut -d= -f2) ;; '--prefix-bin='*) PREFIX_BIN=$(echo "$1" | cut -d= -f2) ;; '--prefix-lib='*) PREFIX_LIB=$(echo "$1" | cut -d= -f2) ;; '--prefix-inc='*) PREFIX_INC=$(echo "$1" | cut -d= -f2) ;; '--prefix-man='*) PREFIX_MAN=$(echo "$1" | cut -d= -f2) ;; '--prefix-pc='*) PREFIX_PC=$(echo "$1" | cut -d= -f2) ;; '--prefix-comp-libs='*) PREFIX_COMP_LIBS=$(echo "$1" | cut -d= -f2) ;; '--prefix-comp-bins='*) PREFIX_COMP_BINS=$(echo "$1" | cut -d= -f2) ;; '--prefix-plugins='*) PREFIX_PLUGINS=$(echo "$1" | cut -d= -f2) ;; #################################### '--mmcu') MMCU="$2" shift; ;; '--cross-compile') CROSS_COMPILE=true RUNTIME_DETECT=true ;; '--exec-helper') EXEC_HELPER="$2" shift; ;; '--target-microcontroller') TARGET_MICROCONTROLLER=true CROSS_COMPILE=true RUNTIME_DETECT=true HAVE_MAIN_ARGS=false XMMS=false AUDACIOUS=false LIBAO=false WITHOUT_VIO="$WITHOUT_VIO"' cmd' ;; '--target-win32') TARGET_WIN32=true ;; esac; shift; done [ "$no_lib_yiff" != '' ] && no_lib_y2=true if $BETA then : else WITHOUT_DCOMP="$WITHOUT_DCOMP"' rdtcs' no_lib_gcrypt=true no_lib_jack=true no_lib_dbus_1=true fi if $EXPERIMENTAL then : else : # Add list of experimental things here. fi CCTF="false" test_lib () { _have_libs=false _have_headers=false _defs='' echo > $TF_C $NEED_GNU_SOURCE && _defs="$_defs -D_GNU_SOURCE" name="$1" echo -n "checking for $name... " echo "TEST LIB: $name" >&5 shift; if [ "$infotext" = '' ] then _info='' else _info=" ($infotext)" fi LIBS='' while [ "$1" != '--' ] do echo "LIB($name) HAS LIB INFO: $1" >&5 case "$1" in 'c'|'-lc') :; # no need to do anything ;; '-'*) LIBS="$LIBS $1" _have_libs=true ;; *) LIBS="$LIBS -l$1" _have_libs=true ;; esac shift; done shift; echo "LIB($name) IS TESTED USING LIBS: $LIBS" >&5 while [ "$1" != '' ] do _h="$1"; shift; _envname=`echo "$_h" | to_escaped` eval "_t=\$libname_$_envname" echo "LIB($name) DEPENDS ON $_h($_envname) with state '$_t'" >&5 if [ "$_t" = 'false' ] then echo "// not including <$_h> as it was tested as not present" >> $TF_C else echo "#include <$_h>" >> $TF_C _have_headers=true fi done echo 'int main (void) { return 0; }' >> $TF_C if [ "$_have_libs" = 'false' -a "$_have_headers" = 'false' ] then echo "no (nothing left to test)$_info" echo "LIB($name) HAS NOTHING TO TEST" >&5 return 1 fi 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 $_defs $LIBS >&5 2>&5; R=$? echo "--- END OF CHILD OUTPUT BLOCK ---" >&5 if [ "$R" = '0' ] then echo "yes$_info" echo "LIB($name) WAS FOUND" >&5 else echo "no$_info" 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='' envlib=`echo "$lib" | cut -d/ -f1 | to_escaped` envname=`echo "$name" | to_escaped` if [ "$envlib" = 'c' ] then envlib="$envname" fi echo "LIB($name) HAS envlib='$envlib', envname='$envname'" >&5 if [ "$lib" != '--' ] then echo "EVAL: _no=\$no_lib_$envlib" >&5 eval _no="\$no_lib_$envlib"; $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_$envlib=" >&4 return; fi fi lib="$lib/" libn=`echo $lib | cut -d/ -f1` is_fatal=`echo $lib | cut -d/ -f2` lib="$libn" # echo "is_fatal(i)=$is_fatal" >&5 if [ "$is_fatal" = '' -o "$is_fatal" = 'no' -o "$is_fatal" = 'false' ] then is_fatal=false else is_fatal=true shift; # maybe we have a pkg name, not a lib fi echo "LIB($name) HAS FATAL FLAG SET TO $is_fatal" >&5 # echo "is_fatal(b)=$is_fatal" >&5 LIBS=$($PKG_CONFIG --silence-errors --cflags --libs $lib 2> /dev/null) if [ "$?" != '0' ] then if $is_fatal then echo "checking for $name... no (fatal config errors)" echo "LIB($name) HAS FATAL ERRORS" >&5 echo "LIB($name) NOT FOUND" >&5 [ "$subdir" != '' ] && \ echo "subdir_$subdir=" >&4 echo "lib_$envlib=" >&4 return fi LIBS="-l$lib" fi echo "LIB($name) HAS LIBS: $LIBS" >&5 if test_lib "$name" $LIBS "$@" then subdir_var='subdir_'"`echo $subdir | to_escaped`" echo "#define $def" >&3 [ "$subdir" != '' ] && \ echo "$subdir_var=$subdir" >&4 [ "$lib" != 'c' ] && \ echo "lib_$envlib=$LIBS" >&4 if [ "$lib" != 'c' ] then eval "lib_$envlib='$LIBS'" else echo "LIB($name) SETS libname_$envname=true" >&5 eval "libname_$envname=true" fi else [ "$subdir" != '' ] && \ echo "subdir_$subdir=" >&4 [ "$lib" != 'c' ] && \ echo "lib_$envlib=" >&4 echo "LIB($name) SETS libname_$envname=false" >&5 eval "libname_$envname=false" 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 () { _defs='' DEF="$1" NAME="$2" shift; shift; echo -n "checking for $NAME()... " CALL="$1" shift; $NEED_GNU_SOURCE && _defs="$_defs -D_GNU_SOURCE" if [ "$infotext" = '' ] then _info='' else _info=" ($infotext)" fi LIBS='' _funcname=`echo "$NAME" | to_escaped` while [ "$1" != '--' ] do case "$1" in 'c'|'-lc') :; # no need to do anything ;; '-'*) LIBS="$LIBS $1" ;; *) LIBS="-l$1" ;; esac shift; done shift; # skip '--' echo "TEST FUNCTION: $NAME" >&5 { while [ "$1" != '' ] do _h="$1"; shift; _envname=`echo "$_h" | to_escaped` eval "_t=\$libname_$_envname" echo "LIB($name) DEPENDS ON $_h($_envname) with state '$_t'" >&5 if [ "$_t" = 'false' ] then echo "// not including <$_h> as it was tested as not present" else echo "#include <$_h>" fi 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 $_defs $LIBS >&5 2>&5; R=$? echo "--- END OF CHILD OUTPUT BLOCK ---" >&5 if [ "$R" = '0' ] then eval funcname_$_funcname=true echo "#define $DEF" >&3 echo "FUNCTION($NAME) IS OK" >&5 echo "yes$_info" else eval funcname_$_funcname=false echo "FUNCTION($NAME) IS NOT OK" >&5 echo "no$_info" fi } test_const_defmake () { DEF="$1" NAME="$2" shift; shift; echo -n "checking for constant $NAME... " TYPE="$1" CONST="$2" shift; 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; # skip '--' echo "TEST CONST: $NAME" >&5 { while [ "$1" != '' ] do _h="$1"; shift; _envname=`echo "$_h" | to_escaped` eval "_t=\$libname_$_envname" echo "LIB($name) DEPENDS ON $_h($_envname) with state '$_t'" >&5 if [ "$_t" = 'false' ] then echo "// not including <$_h> as it was tested as not present" else echo "#include <$_h>" fi done case "$TYPE" in ':int') _type='int' ;; ':float') _type='float' ;; ':ptr') _type='void *' ;; *) _type="$TYPE" ;; esac echo 'int main (void) {' echo " $_type x;" echo " x = ($_type)$CONST;" echo ' return 0;' echo '}' } > $TF_C echo "--- BEGIN OF CODE BLOCK ---" >&5 cat $TF_C >&5 echo "--- END OF CODE BLOCK ---" >&5 echo "CONST($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 "#define $DEF" >&3 echo "CONST($NAME) IS OK" >&5 echo yes else echo "CONST($NAME) IS NOT OK" >&5 echo no fi } test_var_defmake () { DEF="$1" NAME="$2" shift; shift; echo -n "checking for global variable $NAME... " TYPE="$1" VAR="$2" shift; 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; # skip '--' echo "TEST VAR: $NAME" >&5 { while [ "$1" != '' ] do _h="$1"; shift; _envname=`echo "$_h" | to_escaped` eval "_t=\$libname_$_envname" echo "LIB($name) DEPENDS ON $_h($_envname) with state '$_t'" >&5 if [ "$_t" = 'false' ] then echo "// not including <$_h> as it was tested as not present" else echo "#include <$_h>" fi done case "$TYPE" in ':int') _type='int' ;; ':float') _type='float' ;; ':ptr') _type='void *' ;; *) _type="$TYPE" ;; esac echo 'int main (void) {' echo " $_type x;" echo " x = ($_type)$VAR;" echo " $VAR = x;" echo ' return 0;' echo '}' } > $TF_C echo "--- BEGIN OF CODE BLOCK ---" >&5 cat $TF_C >&5 echo "--- END OF CODE BLOCK ---" >&5 echo "VAR($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 "#define $DEF" >&3 echo "VAR($NAME) IS OK" >&5 echo yes else echo "VAR($NAME) IS NOT OK" >&5 echo no fi } test_version () { DEF="$1" NAME="$2" PKGNAME="$3" echo -n "checking for version of $NAME... " _ver=$($PKG_CONFIG --modversion $PKGNAME 2> /dev/null) if [ "$_ver" = '' ] then _ver=unknown fi echo $_ver _ver_def=$(echo $_ver | to_escaped | to_upper) echo "#define ${DEF}_$_ver_def" >&3 echo "$_ver" | if grep '^[0-9]*\.[0-9]*\.[0-9]*$' > /dev/null then _ver_vdef=$(echo "$_ver" | sed 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]\)*$/_ROAR_MKVERSION(\1, \2, \3)/') echo "#define ${DEF} $_ver_vdef" >&3 else echo "#define ${DEF} 0" >&3 fi } test_type () { DEF="$1" NAME="$2" INITVAL="$3" DASHDASH="$4" shift; shift; if [ "$#" -ge '2' ] then shift; shift; fi HEADERS="stdint.h string.h unistd.h sys/types.h $*" #including headers here let #them get checked for presence. [ "$INITVAL" = '' ] && INITVAL='0' echo -n "checking for type $NAME... " echo "TEST TYPE: $NAME" >&5 echo "// type test for type $NAME" > $TF_C # need a clean file, write something for _h in $HEADERS do _envname=`echo "$_h" | to_escaped` eval "_t=\$libname_$_envname" echo "TYPE($NAME) DEPENDS ON $_h($_envname) with state '$_t'" >&5 if [ "$_t" = 'false' ] then echo "// not including <$_h> as it was tested as not present" >> $TF_C else echo "#include <$_h>" >> $TF_C fi done echo "int main (void) { $NAME _var = $INITVAL; return 0; }" >> $TF_C echo "--- BEGIN OF CODE BLOCK ---" >&5 cat $TF_C >&5 echo "--- END OF CODE BLOCK ---" >&5 echo "TYPE($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 'ok' echo "TYPE($NAME) IS OK" >&5 else echo 'not found' echo "TYPE($NAME) NOT FOUND" >&5 fi } test_pa_type () { DEF="$1" NAME="$2" TYPE="$3" V0="$4" V1="$5" TEST="$6" shift; shift; shift; shift; shift; shift; HEADER="$*" RS='%s' case "$TYPE" in 'type') MSG="checking for type of $NAME()... " ;; 'args:'*) MSG="checking for argument types of $NAME()... " RS=`echo "$TYPE" | cut -d: -f2` ;; esac; echo -n "$MSG" echo '#include ' > $TF_C for _h in $HEADERS do echo "#include <$_h>" >> $TF_C done echo '#include ' >> $TF_C echo 'int main (void) { return 0; }' >> $TF_C echo "$TEST" >> $TF_C if $CCTF 2> /dev/null; then R="$V0" else R="$V1" fi echo "#define $DEF $R" >&3 printf "$RS\n" "$R" } 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' COMPBIN_SUFFIX='.bat' elif $TARGET_CYGWIN then echo "Adding cygwin build arguments..." fPIC=false SHARED_SUFFIX='.dll' COMPBIN_SUFFIX='.bat' 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_PC" = '' ] && PREFIX_PC="$PREFIX_LIB/pkgconfig/" [ "$PREFIX_COMP_LIBS" = '' ] && PREFIX_COMP_LIBS="$PREFIX_LIB/roaraudio/complibs/" [ "$PREFIX_COMP_BINS" = '' ] && PREFIX_COMP_BINS="$PREFIX_LIB/roaraudio/compbins/" [ "$PREFIX_PLUGINS" = '' ] && PREFIX_PLUGINS="$PREFIX_LIB/roaraudio/plugins/" [ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='audio' CCTF="$CC $CFLAGS $LDFLAGS $LDPATH $INCPATH -Iinclude/ -o $TF_E $TF_C" if [ "$MMCU" != '' ] then CC="$CC -mmcu=$MMCU" fi # Check for -Wextra #Wextra echo -n "checking if compiler supports -Wextra... " echo 'int main (void) { return 0; }' > $TF_C if $CCTF -Wextra 2> /dev/null; then echo yes Wextra=true else echo no Wextra=false fi # now write the cc name to Makefile.conf { echo "VERSION=$VERSION" echo "DEV_VENDOR=$DEV_VENDOR" echo "DEV_VENDOR_NAME=$DEV_VENDOR_NAME" echo "DEV_VENDOR_STRING=$DEV_VENDOR/$DEV_VENDOR_NAME" echo "DISTRIBUTION_VERSION_STRING=$DISTRIBUTION_VERSION_STRING" echo echo "SHARED=$SHARED" echo "SHARED_CF=$SHARED_CF" echo "SHARED_SUFFIX=$SHARED_SUFFIX" echo "COMPBIN_SUFFIX=$COMPBIN_SUFFIX" $fPIC && echo 'fPIC=-fPIC' $Wextra && echo 'Wextra=-Wextra' echo echo "CC=$CC" echo "RANLIB=$RANLIB" echo "LDPATH=$LDPATH" echo "INCPATH=$INCPATH" echo echo "OPTI_O=-O$OPTI_O" echo "LINK_DEPS=$LINK_DEPS" echo [ "$CFLAGS" != '' ] && echo "CFLAGS += $CFLAGS" [ "$LDFLAGS" != '' ] && echo "LDFLAGS += $LDFLAGS" echo echo "EXEC_HELPER=$EXEC_HELPER" echo "CROSS_COMPILE=$CROSS_COMPILE" 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_PC=$PREFIX_PC" echo "PREFIX_COMP_LIBS=$PREFIX_COMP_LIBS" echo "PREFIX_COMP_BINS=$PREFIX_COMP_BINS" echo "PREFIX_PLUGINS=$PREFIX_PLUGINS" 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 { 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 echo "#define ROAR_VERSION_STRING \"$VERSION\"" grep -E '^COMMON_V_(MAJOR|MINOR|REV) *= [0-9]*$' Makefile.inc | sed 's/^COMMON_V_/#define ROAR_VERSION_/; s/=//' echo "#define ROAR_BUILD_STAMP \"$BUILD_STAMP\"" 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" [ "$ROARD_BITS" = '' ] || echo "#define ROAR_ROARD_BITS $ROARD_BITS" echo "#define ROAR_VORBIS_BITS $VORBIS_BITS" echo echo "#define ROAR_PREFIX_PLUGINS \"$PREFIX_PLUGINS\"" echo $MINIMAL && echo '#define ROAR_MINIMAL' $BETA && echo '#define ROAR_BETA' $EXPERIMENTAL && echo '#define ROAR_EXPERIMENTAL' $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' $SUPPORT_TRAP && echo '#define ROAR_SUPPORT_TRAP' $USE_MEMMGR && echo '#define ROAR_USE_MEMMGR' $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 | to_upper); echo '#define ROAR_WITHOUT_CF_'$i done for i in $WITHOUT_VIO do i=$(echo $i | to_upper); echo '#define ROAR_WITHOUT_VIO_'$i done for i in $WITHOUT_DCOMP do i=$(echo $i | to_upper); 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 | to_escaped | to_upper) 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_GTK_LED_ASKPASS GTK-LED-AskPass gtk-led-askpass test_tool_defmake ROAR_HAVE_BIN_X11_SSH_ASKPASS X11-SSH-AskPass x11-ssh-askpass test_tool_defmake ROAR_HAVE_BIN_GNOME_SSH_ASKPASS GNOME-SSH-AskPass gnome-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 # Those tests should not be disabled as they do not reduce the lib size just # break --minimal on full systems OLD_MINIMAL=$MINIMAL MINIMAL=false # Test haders: test_lib_defmake ROAR_HAVE_H_STDINT % stdint.h c -- stdint.h test_lib_defmake ROAR_HAVE_H_STRING % string.h c -- string.h test_lib_defmake ROAR_HAVE_H_SYS_TYPES % sys/types.h c -- sys/types.h test_lib_defmake ROAR_HAVE_H_SYS_SOCKET % sys/socket.h c -- sys/types.h sys/socket.h test_lib_defmake ROAR_HAVE_H_SYS_TIME % sys/time.h c -- sys/time.h test_lib_defmake ROAR_HAVE_H_SYS_IOCTL % sys/ioctl.h c -- sys/ioctl.h test_lib_defmake ROAR_HAVE_H_SYS_STAT % sys/stat.h c -- sys/types.h sys/stat.h test_lib_defmake ROAR_HAVE_H_SYS_REBOOT % sys/reboot.h c -- sys/reboot.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_DIRENT % dirent.h c -- dirent.h test_lib_defmake ROAR_HAVE_H_STDLIB % stdlib.h c -- stdlib.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 test_lib_defmake ROAR_HAVE_H_ICONV % iconv.h c -- iconv.h test_lib_defmake ROAR_HAVE_H_NETINET_IN % 'netinet/in.h' c -- 'netinet/in.h' test_lib_defmake ROAR_HAVE_H_LINUX_REBOOT % linux/reboot.h c -- linux/reboot.h test_lib_defmake ROAR_HAVE_H_WINDOWS % windows.h c -- windows.h test_lib_defmake ROAR_HAVE_H_WINSOCK % winsock.h c -- winsock.h test_lib_defmake ROAR_HAVE_H_WINSOCK2 % winsock2.h c -- winsock2.h MINIMAL=$OLD_MINIMAL # #define subdir name -lxxx -- header test_lib_defmake ROAR_HAVE_LIBM % 'MathLibrary' m -- math.h rt='' libname_rt=false if test_lib 'realtime Library' rt -- sys/mman.h mqueue.h semaphore.h then { echo '#define ROAR_HAVE_LIBRT' echo '#define ROAR_NEED_LIBRT' libname_rt=true rt=rt } >&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_LIBCELT0 % libcelt0 celt0 -- 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_LIBFLAC % libFLAC FLAC -- FLAC/all.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_LIBPULSESIMPLE % libpulse-simple pulse-simple -- 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_LIBRSOUND libroarrsound librsound rsound -- rsound.h test_lib_defmake ROAR_HAVE_LIBPORTAUDIO % PortAudio portaudio -- portaudio.h test_lib_defmake ROAR_HAVE_LIBPABLIO % PABLIO pablio -- pablio/pablio.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_LIBPTHREAD % libpthread pthread -- pthread.h OLD_MINIMAL=$MINIMAL MINIMAL=false 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_IPV4 % IPv4 c -- sys/types.h sys/socket.h 'netinet/in.h' winsock2.h MINIMAL=$OLD_MINIMAL test_lib_defmake ROAR_HAVE_IPX % IPX c -- netipx/ipx.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_LIBZ % zlib z -- zlib.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 test_lib_defmake ROAR_HAVE_LIBX11 % X11 X11 -- X11/Xlib.h X11/Xatom.h test_lib_defmake ROAR_HAVE_GTK_P_2_0 % GTK+2.0 gtk+-2.0/t -- gtk/gtk.h gdk/gdkkeysyms.h test_lib_defmake ROAR_HAVE_LIBGCRYPT % libgcrypt gcrypt -- gcrypt.h test_lib_defmake ROAR_HAVE_LIBJACK % libjack jack/t -- jack/jack.h test_lib_defmake ROAR_HAVE_LIBDBUS % libdbus dbus-1/t -- dbus-1.0/dbus/dbus.h echo >&3 test_version ROAR_HAVE_CELT_VERSION libcelt celt test_version ROAR_HAVE_SPEEX_VERSION libspeex speex test_version ROAR_HAVE_PULSE_VERSION libpulse libpulse test_version ROAR_HAVE_GTK_P_2_0_VERSION GTK+2.0 gtk+-2.0 test_version ROAR_HAVE_FLAC_VERSION libflac flac test_version ROAR_HAVE_PA19_VERSION portaudio-19 portaudio-2.0 echo >&3 # Those tests should not be disabled as they do not reduce the lib size just # break --minimal on full systems OLD_MINIMAL=$MINIMAL MINIMAL=false # Test types: # DEF type/name init value -- headers test_type ROAR_HAVE_T_ID_T id_t test_type ROAR_HAVE_T_PID_T pid_t test_type ROAR_HAVE_T_UID_T uid_t test_type ROAR_HAVE_T_GID_T gid_t test_type ROAR_HAVE_T_SOCKLEN_T socklen_t 0 -- sys/socket.h test_type ROAR_HAVE_T_MODE_T mode_t test_type ROAR_HAVE_T_OFF_T off_t test_type ROAR_HAVE_T_SSIZE_T ssize_t test_type ROAR_HAVE_T_TIME_T time_t test_type ROAR_HAVE_T_SA_FAMILY_T sa_family_t 0 -- sys/socket.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_MALLOC malloc 'malloc(0)' -- stdlib.h test_func_defmake ROAR_HAVE_CALLOC calloc 'calloc(0, 0)' -- stdlib.h test_func_defmake ROAR_HAVE_REALLOC realloc 'realloc((void*)0, 0)' -- stdlib.h test_func_defmake ROAR_HAVE_FREE free 'free((void*)0)' -- stdlib.h test_func_defmake ROAR_HAVE_STRDUP strdup 'strdup((void*)0)' -- string.h test_func_defmake ROAR_HAVE_STRNDUP strndup 'strndup((void*)0)' -- string.h test_func_defmake ROAR_HAVE_STRLEN strlen 'strlen((void*)0)' -- string.h test_func_defmake ROAR_HAVE_STRNLEN strnlen 'strnlen((void*)0)' -- string.h 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_STRLCPY strlcpy 'strlcpy((char*)0, "", 0)' -- string.h test_func_defmake ROAR_HAVE_STRLCAT strlcat 'strlcat((char*)0, "", 0)' -- string.h test_func_defmake ROAR_HAVE_QSORT qsort 'qsort((void*)0, 0, 0, (int(*)(const void *, const void *))0)' -- stdlib.h test_func_defmake ROAR_HAVE_NICE nice 'nice(0)' -- unistd.h test_func_defmake ROAR_HAVE_GETHOSTID gethostid 'gethostid()' -- 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_GETPWNAM getpwnam 'getpwnam("")' -- sys/types.h pwd.h test_func_defmake ROAR_HAVE_GETGRNAM getgrnam 'getgrnam("")' -- sys/types.h grp.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_SLEEP sleep 'sleep(0)' -- unistd.h test_func_defmake ROAR_HAVE_NANOSLEEP nanosleep 'nanosleep((void*)0, (void*)0)' -- time.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_CTIME ctime 'ctime((void*)0)' -- time.h test_func_defmake ROAR_HAVE_CTIME_R ctime_r 'ctime_r((void*)0,(char*)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 test_func_defmake ROAR_HAVE_GETHOSTNAME gethostname 'gethostname((void*)0, 0)' -- unistd.h test_func_defmake ROAR_HAVE_SYSLOG syslog 'syslog(0, "")' -- syslog.h test_func_defmake ROAR_HAVE_OPENLOG openlog 'openlog("", 0, 0)' -- syslog.h test_func_defmake ROAR_HAVE_CLOSELOG closelog 'closelog()' -- syslog.h test_func_defmake ROAR_HAVE_FOPEN fopen 'fopen("","")' -- stdio.h test_func_defmake ROAR_HAVE_FDOPEN fdopen 'fdopen(0,"")' -- stdio.h test_func_defmake ROAR_HAVE_FREOPEN freopen 'freopen("","",(void*)0)' -- stdio.h test_func_defmake ROAR_HAVE_FCLOSE fclose 'fclose(0)' -- stdio.h test_func_defmake ROAR_HAVE_FILENO fileno 'fileno(0)' -- stdio.h test_func_defmake ROAR_HAVE_FTELL ftell 'ftell(0)' -- stdio.h test_func_defmake ROAR_HAVE_FSEEK fseek 'fseek(0, 0, 0)' -- stdio.h test_func_defmake ROAR_HAVE_POPEN popen 'popen("", "")' -- stdio.h test_func_defmake ROAR_HAVE_PCLOSE pclose 'pclose(0)' -- stdio.h test_func_defmake ROAR_HAVE_STAT stat 'stat((char*)0, (void*)0)' -- sys/types.h sys/stat.h unistd.h test_func_defmake ROAR_HAVE_SYSTEM system 'system("")' -- stdlib.h test_func_defmake ROAR_HAVE_GETSOCKNAME getsockname 'getsockname(0, 0, 0)' $lib_wsock32 -- sys/socket.h winsock.h test_func_defmake ROAR_HAVE_GETPEERNAME getpeername 'getpeername(0, 0, 0)' $lib_wsock32 -- sys/socket.h winsock.h test_func_defmake ROAR_HAVE_GETSOCKOPT getsockopt 'getsockopt(0, 0, 0, (void*)0, (void*)0)' -- sys/types.h sys/socket.h test_func_defmake ROAR_HAVE_SETSOCKOPT setsockopt 'setsockopt(0, 0, 0, (void*)0, (void*)0)' -- sys/types.h sys/socket.h test_func_defmake ROAR_HAVE_GETADDRINFO getaddrinfo 'getaddrinfo((void*)0, (void*)0, (void*)0, (void**)0)' -- sys/types.h sys/socket.h netdb.h test_func_defmake ROAR_HAVE_RAND rand 'rand()' -- stdlib.h test_func_defmake ROAR_HAVE_RAND_R rand_r 'rand_r((unsigned int*)0)' -- stdlib.h test_func_defmake ROAR_HAVE_SRAND srand 'srand((unsigned int)0)' -- stdlib.h test_func_defmake ROAR_HAVE_FCNTL fcntl 'fcntl(0, 0)' -- unistd.h fcntl.h test_func_defmake ROAR_HAVE_REBOOT reboot 'reboot(LINUX_REBOOT_CMD_RESTART|LINUX_REBOOT_CMD_HALT|LINUX_REBOOT_CMD_POWER_OFF|LINUX_REBOOT_CMD_CAD_ON|LINUX_REBOOT_CMD_CAD_OFF)' -- unistd.h linux/reboot.h sys/reboot.h test_func_defmake ROAR_HAVE_LINUX_SENDFILE sendfile 'sendfile(-1, -1, (void*)0, 0)' -- sys/sendfile.h test_func_defmake ROAR_HAVE_GETVERSIONEX GetVersionEx 'OSVERSIONINFO osinfo; osinfo.dwOSVersionInfoSize = sizeof(osinfo);GetVersionEx(&osinfo);' -- windows.h test_func_defmake ROAR_HAVE_AO_APPEND_GLOBAL_OPTION ao_append_global_option 'ao_append_global_option("","")' ao -- ao/ao.h test_func_defmake ROAR_HAVE_DLADDR dladdr 'dladdr((void*)0, (Dl_info*)0)' dl -- dlfcn.h echo "STATE: funcname_dladdr=$funcname_dladdr" >&5 if [ "$funcname_dladdr" = 'false' ] then infotext='retested with _GNU_SOURCE' _old="$NEED_GNU_SOURCE" NEED_GNU_SOURCE=true test_func_defmake ROAR_HAVE_DLADDR dladdr 'dladdr((void*)0, (Dl_info*)0)' dl -- dlfcn.h [ "$funcname_dladdr" = 'false' ] && NEED_GNU_SOURCE="$_old" infotext='' fi test_func_defmake ROAR_HAVE_CLOCK_GETRES clock_getres 'struct timespec ts; clock_getres((clockid_t)0, &ts)' -- time.h test_func_defmake ROAR_HAVE_CLOCK_GETTIME clock_gettime 'struct timespec ts; clock_gettime((clockid_t)0, &ts)' -- time.h test_func_defmake ROAR_HAVE_CLOCK_SETTIME clock_settime 'struct timespec ts; clock_settime((clockid_t)0, &ts)' -- time.h echo "STATE: funcname_clock_getres=$funcname_clock_getres" >&5 echo "STATE: libname_rt=$libname_rt" >&5 if [ "$funcname_clock_getres" = 'false' ] then if $libname_rt then infotext='retested using realtime library' test_func_defmake ROAR_HAVERT_CLOCK_GETRES clock_getres 'struct timespec ts; clock_getres((clockid_t)0, &ts)' $rt -- time.h test_func_defmake ROAR_HAVERT_CLOCK_GETTIME clock_gettime 'struct timespec ts; clock_gettime((clockid_t)0, &ts)' $rt -- time.h test_func_defmake ROAR_HAVERT_CLOCK_SETTIME clock_settime 'struct timespec ts; clock_settime((clockid_t)0, &ts)' $rt -- time.h infotext='' if $funcname_clock_getres then echo "clock_rt=-l$rt" >&4 fi fi fi test_const_defmake ROAR_HAVE_CONST_CLOCK_REALTIME CLOCK_REALTIME clockid_t CLOCK_REALTIME -- time.h test_const_defmake ROAR_HAVE_CONST_CLOCK_MONOTONIC CLOCK_MONOTONIC clockid_t CLOCK_MONOTONIC -- time.h test_const_defmake ROAR_HAVE_CONST_CLOCK_PROCESS_CPUTIME_ID CLOCK_PROCESS_CPUTIME_ID clockid_t CLOCK_PROCESS_CPUTIME_ID -- time.h test_const_defmake ROAR_HAVE_CONST_CLOCK_THREAD_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID clockid_t CLOCK_THREAD_CPUTIME_ID -- time.h test_const_defmake ROAR_HAVE_CONST_M_PI_2 M_PI_2 double M_PI_2 -- math.h test_var_defmake ROAR_HAVE_VAR_H_ERRNO h_errno int h_errno -- netdb.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_MUNLOCK munlock 'munlock((void*)0, 0)' -- sys/mman.h test_func_defmake ROAR_HAVE_MLOCKALL mlockall 'mlockall(MCL_CURRENT|MCL_FUTURE)' -- sys/mman.h test_func_defmake ROAR_HAVE_MUNLOCKALL munlockall 'munlockall()' -- 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 #test_func_defmake ROAR_HAVE_STRCASESTR strcasestr 'strcasestr("", "")' -- string.h echo -n 'checking for strcasestr()... ' echo '#define _GNU_SOURCE' > $TF_C echo '#include ' >> $TF_C echo 'int main (void) { strcasestr("", ""); return 0; }' >> $TF_C if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_STRCASESTR' >&3 NEED_GNU_SOURCE=true echo yes else 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 test_func_defmake ROAR_HAVE_SINF sinf 'sinf(0.)' m -- math.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 -pthread... ' echo '#include ' > $TF_C echo 'int main (void) { pthread_self(); return 0; }' >> $TF_C if $CCTF -pthread 2> /dev/null; then echo '#define ROAR_HAVE_CC_PTHREAD_OPTION' >&3 echo 'opt_pthread=-pthread' >&4 echo 'pthread=$(opt_pthread)' >&4 echo yes else echo 'opt_pthread=' >&4 echo 'pthread=$(lib_pthread)' >&4 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 echo -n 'checking for accept()... ' cat < $TF_C #include #ifndef WITHOUT_SYS_SOCKET_H #include #endif #ifdef WITH_WINSOCK_H #include #endif int main (void) { accept(0, 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_ACCEPT' >&3 echo '#define ROAR_ACCEPT accept' >&3 echo yes elif $CCTF -DWITHOUT_SYS_SOCKET_H -DWITH_WINSOCK_H $lib_wsock32 2> /dev/null; then echo '#define ROAR_HAVE_ACCEPT' >&3 echo '#define ROAR_ACCEPT accept' >&3 echo yes, WinSock else echo '#define ROAR_ACCEPT(x,y,z) (-1)' >&3 echo no fi test_func_defmake ROAR_HAVE_GETOBJECTBYNAME getobjectbyname 'getobjectbyname(NULL)' dnet -- stdlib.h netdnet/dn.h netdnet/dnetdb.h test_func_defmake ROAR_HAVE_GETSERVBYNAME getservbyname 'getservbyname((void*)0, (void*)0)' -- netdb.h # --- PulseAudio tests --- test_pa_type ROAR_HAVE_TYPE_PA_PATH_GET_FILENAME pa_path_get_filename type 'const char *' 'char *' 'const char *pa_path_get_filename(const char *p) { return NULL; }' pulse/simple.h test_pa_type ROAR_HAVE_TYPE_PA_UTF8_VALID pa_utf8_valid type 'const char *' 'char *' 'const char *pa_utf8_valid(const char *str) { return NULL; }' test_pa_type ROAR_HAVE_ARG_SINK_NAME_OF_PA_CONTEXT_MOVE_SINK_INPUT_BY_NAME pa_context_move_sink_input_by_name args:'pa_context *c, uint32_t idx, %s sink_name, pa_context_success_cb_t cb, void* userdata' 'const char *' 'char *' 'pa_operation* pa_context_move_sink_input_by_name(pa_context *c, uint32_t idx, const char *sink_name, pa_context_success_cb_t cb, void* userdata) { return NULL; }' test_pa_type ROAR_HAVE_ARG_SOURCE_NAME_OF_PA_CONTEXT_MOVE_SOURCE_OUTPUT_BY_NAME pa_context_move_source_output_by_name args:'pa_context *c, uint32_t idx, %s source_name, pa_context_success_cb_t cb, void* userdata)' 'const char *' 'char *' 'pa_operation* pa_context_move_source_output_by_name(pa_context *c, uint32_t idx, const char *source_name, pa_context_success_cb_t cb, void* userdata) { return NULL; }' test_pa_type ROAR_HAVE_ARG_VOLUME_OF_PA_STREAM_CONNECT_PLAYBACK pa_stream_connect_playback args:'pa_stream *s, const char *dev, const pa_buffer_attr *attr, pa_stream_flags_t flags, %s volume, pa_stream *sync_stream' 'const pa_cvolume *' 'pa_cvolume *' 'int pa_stream_connect_playback(pa_stream *s, const char *dev, const pa_buffer_attr *attr, pa_stream_flags_t flags, const pa_cvolume * volume, pa_stream *sync_stream) { return -1; }' # --- End of PulseAudio tests --- echo -n 'checking for struct rsound'\''s sample size member... ' cat > $TF_C << EOF #define RSD_EXPOSE_STRUCT #include int main (void) { rsound_t var; var.samplesize = 0; return 0; } EOF if $CCTF 2> /dev/null; then echo '#define ROAR_HAVE_RSOUND_SAMPLESIZE' >&3 echo '#define ROAR_HAVE_RSOUND_SAMPLESIZE_MEMBER samplesize' >&3 echo samplesize else echo '#define ROAR_HAVE_RSOUND_SAMPLESIZE_MEMBER framesize' >&3 echo framesize 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 'no 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 elif $CROSS_COMPILE then echo 'none (cross compiling, use --tty to set default device)' 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 elif $CROSS_COMPILE then echo 'none (cross compiling, use --oss-dev to set default device)' 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 -n 'checking for OSS mixer device... ' if [ -n "$OSS_MIX_DEV" ] then if [ "$OSS_MIX_DEV" = '(none)' ] then echo "none (disabled by user)" else if $CROSS_COMPILE then echo "$OSS_MIX_DEV (cross compile)" elif [ -e "$OSS_MIX_DEV" ] then echo "$OSS_MIX_DEV (forced by user)" else echo "$OSS_MIX_DEV (not existing, forced by user)" fi echo '#define ROAR_DEFAULT_OSS_MIX_DEV "'"$OSS_MIX_DEV"'"' >&3 fi elif $CROSS_COMPILE then echo 'none (cross compiling, use --oss-mixer-dev to set default device)' else OSS_MIX_DEV=$(ls /dev/mixer 2> /dev/null | head -n 1); if [ -e "$OSS_MIX_DEV" ] then echo "$OSS_MIX_DEV" echo '#define ROAR_DEFAULT_OSS_MIX_DEV "'"$OSS_MIX_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 DECnet neighbour file... ' if [ -n "$PROC_NET_DECNET_NEIGH" ] then if [ "$PROC_NET_DECNET_NEIGH" = '(none)' ] then echo "none (disabled by user)" else if $CROSS_COMPILE then echo "$PROC_NET_DECNET_NEIGH (cross compile)" elif [ -e "$PROC_NET_DECNET_NEIGH" ] then echo "$PROC_NET_DECNET_NEIGH (forced by user)" else echo "$PROC_NET_DECNET_NEIGH (not existing, forced by user)" fi echo '#define ROAR_PROC_NET_DECNET_NEIGH "'"$PROC_NET_DECNET_NEIGH"'"' >&3 fi elif $CROSS_COMPILE then echo 'none (cross compiling, use --proc-net-decnet-neigh to set default device)' else PROC_NET_DECNET_NEIGH=$(ls /proc/net/decnet_neigh 2> /dev/null | head -n 1); if [ -e "$PROC_NET_DECNET_NEIGH" ] then echo "$PROC_NET_DECNET_NEIGH" echo '#define ROAR_PROC_NET_DECNET_NEIGH "'"$PROC_NET_DECNET_NEIGH"'"' >&3 else echo 'none' fi fi echo -n 'checking for IP neighbour (ARP) file... ' if [ -n "$PROC_NET_ARP" ] then if [ "$PROC_NET_ARP" = '(none)' ] then echo "none (disabled by user)" else if $CROSS_COMPILE then echo "$PROC_NET_ARP (cross compile)" elif [ -e "$PROC_NET_ARP" ] then echo "$PROC_NET_ARP (forced by user)" else echo "$PROC_NET_ARP (not existing, forced by user)" fi echo '#define ROAR_PROC_NET_ARP "'"$PROC_NET_ARP"'"' >&3 fi elif $CROSS_COMPILE then echo 'none (cross compiling, use --proc-net-arp to set default device)' else PROC_NET_ARP=$(ls /proc/net/arp 2> /dev/null | head -n 1); if [ -e "$PROC_NET_ARP" ] then echo "$PROC_NET_ARP" echo '#define ROAR_PROC_NET_ARP "'"$PROC_NET_ARP"'"' >&3 else echo 'none' fi fi 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 echo -n 'checking for user id of root/superuser... ' if [ "$ROOT_UID" = '(none)' ] then echo "none (disabled by user)" elif [ "$ROOT_UID" = '' ] then ROOT_USER='root' ROOT_UID=`id -u $ROOT_USER` if [ "$ROOT_UID" = '' ] then echo "none (please report this)" else echo "$ROOT_UID($ROOT_USER)" echo '#define ROAR_ROOT_UID '"$ROOT_UID" >&3 fi else echo "$ROOT_UID" echo '#define ROAR_ROOT_UID '"$ROOT_UID" >&3 fi $NEED_GNU_SOURCE && echo '#define ROAR_NEED_GNU_SOURCE' >&3 cat >&3 << EOF #if defined(ROAR_HAVE_LIBCELT0) && !defined(ROAR_HAVE_LIBCELT) #define ROAR_HAVE_LIBCELT #endif #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