source: roaraudio/configure @ 1607:a400220f1564

Last change on this file since 1607:a400220f1564 was 1607:a400220f1564, checked in by phi, 15 years ago

don't write useless lib_c= lions, don't build libroarsndio on OpenBSD for the moment, added some empty lions to Makefile.conf to make it a bit better readable, use new xmms's --pkg-config

  • Property exe set to *
File size: 29.4 KB
RevLine 
[353]1#!/bin/sh
2
[693]3# check for bash...
4
5if [ "$(echo -n)" = '-n' ]
6then
[1230]7 SHELL=$(which bash ksh sh 2> /dev/null | grep ^/ | head -n 1)
[693]8 exec $SHELL $0 "$@"
9fi
10
[1357]11PATH="$PATH":/sbin:/usr/sbin:/usr/local/sbin:/usr/pkg/sbin # Ensure superuser paths
[693]12
[353]13#set -x
14
15TF_C=testit.c
[354]16TF_E=./testit
[484]17LDPATH=''
[553]18INCPATH=''
[484]19
[1394]20CROSS_COMPILE=false
21
[691]22SYSNAME='unknown'
23SHARED='-shared'
[730]24SHARED_CF=''
[1389]25fPIC=true
[1468]26MMCU=''
[725]27PKG_CONFIG=false
[750]28RUNTIME_DETECT=false
[691]29
[863]30PREFIX='/usr/local'
31PREFIX_BIN=''
32PREFIX_LIB=''
33PREFIX_INC=''
34PREFIX_MAN=''
35
[1394]36CDROM_IS_DEV=true
[804]37CDROM="none"
[913]38OSS_DEV="none"
[827]39PROC_NET_DECNET="/proc/net/decnet"
[1237]40TTY_DEV="none"
[804]41
[1397]42FSYNC=false
43
[927]44DEFAULT_GRP=''
45
[872]46AO_INST_DIR=''
[1062]47XMMS_INST_DIR=''
48
[1607]49SNDIO_EMUL=true
50
[1092]51LIBAO=true
52XMMS=true
53
[1062]54DEFAULT_RATE=''
55DEFAULT_CHANNELS=''
56DEFAULT_BITS=''
[872]57
[1065]58ALAW=true
59MULAW=true
60ALAW_RW=true
61MULAW_RW=true
62
[1086]63PROXY=true
64
[1398]65PASSWORD_API=true
66
[1491]67NO_LISTEN=false
68
69META_DATA=true
70
[1199]71WITHOUT_CF=''
72
[1363]73WITHOUT_VIO=''
74
[1503]75HAVE_MAIN_ARGS=true
76
[1109]77MINIMAL=false
78
[1072]79TARGET_WIN32=false
[1420]80TARGET_MICROCONTROLLER=false
[1519]81TARGET_CYGWIN=false
[1072]82
[1092]83EXEC_HELPER=''
84
[1175]85ROAR_DRIVER_DEFAULT=''
[1208]86ROAR_DRIVER_CODEC=''
[1175]87
[484]88echo -n "checking for C compiler... "
[899]89if [ "$CC" != '' ]
[484]90then
[899]91 echo $CC
92else
93 CC=$(which gcc cc 2> /dev/null | grep ^/ | head -n 1)
94 if [ "$CC" = '' ]
95 then
96  echo 'none'
97  exit 1;
98 fi
99 echo $CC
[484]100fi
101
[725]102echo -n "checking for pkg-config... "
[727]103PKG_CONFIG=$(which pkg-config false 2> /dev/null | grep ^/ | head -n 1)
[725]104if $PKG_CONFIG --help > /dev/null 2> /dev/null
105then
106 echo $PKG_CONFIG
107else
108 echo no
109fi
110
[484]111#Makefile.conf not yet open, write it later
112
[691]113echo -n "checking for sysname... "
114SYSNAME=$(uname -s)
115echo "$SYSNAME"
[353]116
[484]117while [ "$1" != '' ]
118do
119 case "$1" in
120  '--help')
[862]121   echo '--help                      - This Help'
[1109]122   echo
[862]123   echo '--ldpath DIR                - Add DIR to (compile time) search list for libs'
124   echo '--incpath DIR               - Add DIR to search list for headers'
125   echo '--addpath DIR               - Add DIR/lib to lib, DIR/include to header search list'
[1109]126   echo
[862]127   echo '--cdrom DEV                 - Set default CDRum device'
[1237]128   echo '--tty DEV                   - Set default TTY'
[862]129   echo '--proc-net-decnet FILE      - Set DECnet file for DECnet support auto detecting'
130   echo '                              (ignore this on non-Linux)'
[1109]131   echo
132   echo '--no-LIB                    - disable library LIB'
[862]133   echo '--runtime-detect            - do as much as posible auto detecting on runtime (for distributors)'
[1109]134   echo
135   echo '--ao-install-dir DIR        - Set install dir for libao plugin'
136   echo '--xmms-install-dir DIR      - Set install dir for XMMS plugin'
137   echo
138   echo '--prefix DIR                - Set general prefix (default: '"$PREFIX"')'
139   echo '--prefix-bin DIR            - Set prefix for binarys (default: $PREFIX/bin)'
140   echo '--prefix-lib DIR            - Set prefix for librarys (default: $PREFIX/libs)'
141   echo '--prefix-inc DIR            - Set prefix for include files (default: $PREFIX/include)'
142   echo '--prefix-man DIR            - Set prefix for manpages (default: $PREFIX/man)'
143   echo
144   echo '--default-rate RATE         - Set default sample rate for roard and roarclients'
145   echo '--default-channels CHANNELS - Set default number of channels for roard and roarclients'
146   echo '--default-bits BITS         - Set default number of bits per sample for roard and roarclients'
[1175]147   echo '--default-driver DRIVER     - Set default driver for roard'
[1208]148   echo '--default-codec CODEC       - Set default codec used for the default driver'
[1109]149   echo
150   echo '--without-alaw              - Disable support of A-Law codec (de- and encoding)'
151   echo '--without-alaw-rw           - Disable support for writing A-Law (saves 8KB)'
152   echo '--without-mulaw             - Disable support of mu-Law codec (de- and encoding)'
153   echo '--without-mulaw-rw          - Disable support for writing mu-Law (saves 16KB)'
154   echo '--without-proxy             - Disable support for proxys'
155   echo
[1491]156   echo '--without-meta-data         - Disable support for Meta Data'
157   echo
[1199]158   echo '--without-cf-cmd            - Disable support for command codecfilter'
159   echo
[1363]160   echo '--without-vio-MODULE        - Disable support for VIO module MODULE'
161   echo
[1399]162   echo '--without-password-api      - Disable build of Password API'
163   echo
[1491]164   echo '--without-listen            - Disable listening sockets in roard'
165   echo '                              This is the same as allways using --no-listen'
166   echo
[1109]167   echo '--without-libao             - Disable build of libao plugin'
168   echo '--without-xmms              - Disable build of XMMS plugin'
169   echo
[1468]170   echo '--mmcu MMCU                 - Sets -mmcu compiler/linker option'
[1109]171   echo '--minimal                   - Disable all optional components'
[1394]172   echo '--cross-compile             - Enable cross compiler workarounds'
[1420]173   echo '--target-microcontroller    - Set Options for mircocontrollers without a OS'
174   echo '                              Implys --cross-compile'
[1109]175   echo '--target-win32              - Disable everything useful'
176   echo '--exec-helper HELPER        - Exec all test programms using this command (HELPER $cmd $args)'
177   echo '                              use '\''--exec-helper wine'\'' when building win32 binarys'
[484]178   exit 0;
179  ;;
180  '--ldpath')
181   LDPATH="$LDPATH -L$2"
182   shift;
183  ;;
[553]184  '--incpath')
185   INCPATH="$INCPATH -I$2"
186   shift;
187  ;;
188  '--addpath')
189   LDPATH="$LDPATH -L$2/lib/"
190   INCPATH="$INCPATH -I$2/include/"
191   shift;
192  ;;
[899]193  '--cc')
194   CC="$2"
195   shift;
196  ;;
[804]197  '--cdrom')
198   CDROM="$2"
199   shift;
200  ;;
[1237]201  '--tty')
202   TTY_DEV="$2"
203   shift;
204  ;;
[913]205  '--oss-dev')
206   OSS_DEV="$2"
207   shift;
208  ;;
[927]209  '--audio-group')
210   DEFAULT_GRP="$2"
211   shift;
212  ;;
[696]213  '--no-'*)
214   lib=$(echo "$1" | sed 's/^--no-//')
215   eval no_lib_$lib=true
216  ;;
[750]217  '--runtime-detect')
[864]218   RUNTIME_DETECT=true
219  ;;
[872]220  '--ao-install-dir')
221   AO_INST_DIR="$2"
222   shift;
223  ;;
[1057]224  '--xmms-install-dir')
225   XMMS_INST_DIR="$2"
226   shift;
227  ;;
[1062]228  '--default-rate')
229   DEFAULT_RATE="$2"
230   shift;
231  ;;
232  '--default-channels')
233   DEFAULT_CHANNELS="$2"
234   shift;
235  ;;
236  '--default-bits')
237   DEFAULT_BITS="$2"
238   shift;
239  ;;
[1175]240  '--default-driver')
241   ROAR_DRIVER_DEFAULT="$2"
242   shift;
243  ;;
[1208]244  '--default-codec')
245   ROAR_DRIVER_CODEC="$2"
246   shift;
247  ;;
[1065]248  '--without-alaw')
249   ALAW=false
250   ALAW_RW=false
251  ;;
252  '--without-alaw-rw')
253   ALAW_RW=false
254  ;;
255  '--without-mulaw')
256   MULAW=false
257   MULAW_RW=false
258  ;;
259  '--without-mulaw-rw')
260   MULAW_RW=false
261  ;;
[1086]262  '--without-proxy')
263   PROXY=false
264  ;;
[1491]265  '--without-meta-data')
266   META_DATA=false
267  ;;
[1199]268  '--without-cf-'*)
269   WITHOUT_CF="$WITHOUT_CF"' '$(echo "$1" | cut -d- -f5)
270  ;;
[1363]271  '--without-vio-'*)
272   WITHOUT_VIO="$WITHOUT_VIO"' '$(echo "$1" | cut -d- -f5)
273  ;;
[1398]274  '--without-password-api')
275   PASSWORD_API=false
276  ;;
[1491]277  '--without-listen')
278   NO_LISTEN=true
279  ;;
[1092]280  '--without-libao')
281   LIBAO=false
282   no_lib_ao=true
283  ;;
284  '--without-xmms')
285   XMMS=false
286  ;;
[1109]287  '--minimal')
288   MINIMAL=true
[1391]289   RUNTIME_DETECT=false
[1109]290   XMMS=false
291   LIBAO=false
292   PROXY=false
293   MULAW=false
294   MULAW_RW=false
295   ALAW=false
296   ALAW_RW=false
[1491]297   META_DATA=false
[1398]298   PASSWORD_API=false
[1377]299   WITHOUT_VIO="$WITHOUT_VIO"' dstr cmd stdio'
[1109]300  ;;
[864]301  '--prefix')
302   PREFIX="$2"
303   shift;
304  ;;
305  '--prefix-bin')
306   PREFIX_BIN="$2"
307   shift;
308  ;;
309  '--prefix-lib')
310   PREFIX_LIB="$2"
311   shift;
312  ;;
313  '--prefix-inc')
314   PREFIX_INC="$2"
315   shift;
316  ;;
317  '--prefix-man')
318   PREFIX_MAN="$2"
319   shift;
[750]320  ;;
[1468]321  '--mmcu')
322   MMCU="$2"
323   shift;
324  ;;
[1394]325  '--cross-compile')
326   CROSS_COMPILE=true
327  ;;
[1092]328  '--exec-helper')
329   EXEC_HELPER="$2"
330   shift;
331  ;;
[1420]332  '--target-microcontroller')
333   TARGET_MICROCONTROLLER=true
334   CROSS_COMPILE=true
[1503]335   HAVE_MAIN_ARGS=false
[1420]336  ;;
[1071]337  '--target-win32')
[1421]338   TARGET_WIN32=true
339   CROSS_COMPILE=true
[1071]340   RUNTIME_DETECT=true
341   no_lib_dnet=true
[1088]342   PROXY=false
[1092]343   XMMS=false
[1387]344   WITHOUT_VIO="$WITHOUT_VIO"' pipe' # hope that with buffered pipes we can remove this soon
[1071]345  ;;
[484]346 esac;
347
348 shift;
349done
350
351
[714]352CCTF="false"
[353]353
354test_lib () {
355 echo > $TF_C
356
357 echo -n "checking for $1... "
358 shift;
359
360 LIBS=''
361
362 while [ "$1" != '--' ]
363 do
[1490]364  [ "$1" != 'c' -a "$1" != '-lc' ] && LIBS="$LIBS -l$1"
[353]365  shift;
366 done
367
368 shift;
369
[751]370 LIBS=$(echo "$LIBS" | sed 's/-l-l/-l/g; s/-l-L/-L/g;')
[725]371
[353]372 while [ "$1" != '' ]
373 do
374  echo "#include <$1>" >> $TF_C
375  shift;
376 done
377
378 echo 'int main (void) { return 0; }' >> $TF_C
379
380 $CCTF $LIBS 2> /dev/null;
381
382 R=$?
383
384 if [ "$R" = '0' ]
385 then
386  echo 'yes'
387 else
388  echo 'no'
389 fi
390
391 return $R
392}
393
[426]394test_lib_defmake () {
395 def="$1"
396 subdir="$2"
397 shift
398 shift
[725]399 name="$1"
[428]400 lib="$2"
[725]401 shift
[426]402
[429]403 [ "$subdir" = '%' ] && subdir=''
404
[698]405 if [ "$lib" != '--' ]
[696]406 then
[698]407  eval _no="\$no_lib_$lib";
[1109]408  $MINIMAL && _no='XXX'
[698]409
410  if [ "$_no" != '' ]
411  then
[1362]412    echo "checking for $name... disabled by user"
[698]413   [ "$subdir" != '' ] && \
414    echo "subdir_$subdir=" >&4
415   echo "lib_$lib=" >&4
416   return;
417  fi
[696]418 fi
419
[1417]420 LIBS=$($PKG_CONFIG --silence-errors --libs $lib 2> /dev/null)
[725]421 if [ "$?" != '0' ]
422 then
423  LIBS="-l$lib"
424 fi
425
426 if test_lib "$name" $LIBS "$@"
[426]427 then
[1049]428  subdir_var='subdir_'"`echo $subdir | tr / _`"
[426]429  echo "#define $def"            >&3
430  [ "$subdir" != '' ] && \
[1049]431   echo "$subdir_var=$subdir" >&4
[1607]432  [ "$lib" != 'c' ] && \
433   echo "lib_$lib=$LIBS" >&4
[426]434 else
435  [ "$subdir" != '' ] && \
436   echo "subdir_$subdir=" >&4
[1607]437  [ "$lib" != 'c' ] && \
438   echo "lib_$lib=" >&4
[426]439 fi
440}
441
[748]442test_tool_defmake () {
443 DEF="$1"
444 NAME="$2"
445 shift;
446 shift;
447 echo -n "checking for $NAME... "
448
[750]449 if $RUNTIME_DETECT
[748]450 then
[750]451  echo "$1 (runtime detect)"
452 echo "#define $DEF "\""$1"\" >&3
[1109]453 elif $MINIMAL
454 then
455  echo "disabled by user (minimalstic build)"
[748]456 else
[750]457
458  LIST=$(which "$@" 2> /dev/null | grep ^/ | head -n 1)
459
460  if [ "$LIST" = '' ]
461  then
462   echo 'no'
463  else
464   echo $LIST
465   echo "#define $DEF "\""$LIST"\" >&3
466  fi
[748]467 fi
468}
469
[426]470exec 3> config.h 4> Makefile.conf
[353]471
[1520]472TARGET_CYGWIN=`echo "$SYSNAME" | if grep CYGWIN > /dev/null; then echo true; else echo false; fi`
[1519]473
[691]474if [ "$SYSNAME" = 'Darwin' ]
475then
476 echo "Adding $SYSNAME shared lib arguments..."
477 SHARED="$SHARED -fno-common -dynamiclib -compatibility_version 0.1 -current_version 0.1.0"
[730]478 SHARED_CF="$SHARED_CF -fno-common"
[713]479elif [ "$SYSNAME" = 'NetBSD' ]
480then
481 echo "Adding $SYSNAME libpath arguments..."
482 LDPATH="$LDPATH -L/usr/local/lib/"
[1170]483elif [ "$SYSNAME" = 'OpenBSD' ]
484then
485 echo "Adding $SYSNAME search path arguments..."
486 LDPATH="$LDPATH -L/usr/local/lib/"
487 INCPATH="$INCPATH -I/usr/local/include/"
[1607]488 echo "Adding $SYSNAME build arguments..."
489 SNDIO_EMUL=false
[926]490elif [ "$SYSNAME" = 'FreeBSD' ]
491then
[927]492 echo "Adding $SYSNAME search path arguments..."
[926]493 LDPATH="$LDPATH -L/usr/local/lib/"
494 INCPATH="$INCPATH -I/usr/local/include/"
[927]495 [ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='wheel'
[1389]496elif $TARGET_WIN32
[1390]497then
[1389]498 echo "Adding win32 build arguments..."
499 fPIC=false
[1519]500elif $TARGET_CYGWIN
501then
502 echo "Adding cygwin build arguments..."
503 fPIC=false
[691]504fi
505
[863]506[ "$PREFIX_BIN" = '' ] && PREFIX_BIN="$PREFIX/bin/"
507[ "$PREFIX_LIB" = '' ] && PREFIX_LIB="$PREFIX/lib/"
508[ "$PREFIX_INC" = '' ] && PREFIX_INC="$PREFIX/include/"
509[ "$PREFIX_MAN" = '' ] && PREFIX_MAN="$PREFIX/share/man/"
510
[927]511[ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='audio'
512
[1468]513if [ "$MMCU" != '' ]
514then
515 CC="$CC -mmcu=$MMCU"
516fi
517
[714]518# now write the cc name to Makefile.conf
[863]519{
520 echo "SHARED=$SHARED"
521 echo "SHARED_CF=$SHARED_CF"
[1389]522 $fPIC && echo 'fPIC=-fPIC'
[1607]523 echo
[863]524 echo "CC=$CC"
525 echo "LDPATH=$LDPATH"
526 echo "INCPATH=$INCPATH"
[1607]527 echo
[863]528 echo "PREFIX=$PREFIX"
529 echo "PREFIX_BIN=$PREFIX_BIN"
530 echo "PREFIX_LIB=$PREFIX_LIB"
531 echo "PREFIX_INC=$PREFIX_INC"
532 echo "PREFIX_MAN=$PREFIX_MAN"
[1607]533 echo
534 $SNDIO_EMUL && echo "subdir_libroarsndio=libroarsndio"
[863]535} >&4
[714]536
[1055]537CCTF="$CC $LDPATH $INCPATH -Iinclude/ -o $TF_E $TF_C"
[691]538
[353]539cat >&3 << EOF
540//config.h:
541
542#ifndef _ROARAUDIO_CONFIG_H_
543#define _ROARAUDIO_CONFIG_H_
544
545EOF
546
547{
548 echo '/* uname: ' $(uname -a) '*/'
549 echo '/* Date : ' $(date)  '*/'
550 echo
[1175]551 [ "$DEFAULT_RATE"        = '' ] || echo "#define ROAR_RATE_DEFAULT     $DEFAULT_RATE"
552 [ "$DEFAULT_CHANNELS"    = '' ] || echo "#define ROAR_CHANNELS_DEFAULT $DEFAULT_CHANNELS"
553 [ "$DEFAULT_BITS"        = '' ] || echo "#define ROAR_BITS_DEFAULT     $DEFAULT_BITS"
554 [ "$ROAR_DRIVER_DEFAULT" = '' ] || echo "#define ROAR_DRIVER_DEFAULT   \"$ROAR_DRIVER_DEFAULT\""
[1208]555 [ "$ROAR_DRIVER_CODEC"   = '' ] || echo "#define ROAR_DRIVER_CODEC     \"$ROAR_DRIVER_CODEC\""
[1062]556 echo
[1501]557 $MINIMAL      && echo '#define ROAR_MINIMAL'
[1398]558 $ALAW         && echo '#define ROAR_SUPPORT_ALAW'
559 $ALAW_RW      && echo '#define ROAR_SUPPORT_ALAW_RW'
560 $MULAW        && echo '#define ROAR_SUPPORT_MULAW'
561 $MULAW_RW     && echo '#define ROAR_SUPPORT_MULAW_RW'
562 $PROXY        && echo '#define ROAR_SUPPORT_PROXY'
563 $PASSWORD_API && echo '#define ROAR_SUPPORT_PASSWORD_API'
[1491]564 $NO_LISTEN    || echo '#define ROAR_SUPPORT_LISTEN'
565 $META_DATA    && echo '#define ROAR_SUPPORT_META'
[1086]566 echo
[1199]567
[1503]568 $HAVE_MAIN_ARGS && echo '#define ROAR_HAVE_MAIN_ARGS'
569
570 echo
571
[1199]572 for i in $WITHOUT_CF
573 do
574  i=$(echo $i | tr /a-z/ /A-Z/);
575  echo '#define ROAR_WITHOUT_CF_'$i
576 done
577
[1363]578 for i in $WITHOUT_VIO
579 do
580  i=$(echo $i | tr /a-z/ /A-Z/);
581  echo '#define ROAR_WITHOUT_VIO_'$i
582 done
583
[1199]584 echo
[1423]585 $TARGET_MICROCONTROLLER && echo '#define ROAR_TARGET_MICROCONTROLLER'
[1420]586 $TARGET_WIN32           && echo '#define ROAR_TARGET_WIN32'
[1446]587                            echo '#define ROAR_OS_'$(echo $SYSNAME | tr a-z-. A-Z__)
[1065]588 echo
[353]589} >&3
590
[1286]591#                 #define                   name         cmds...
592test_tool_defmake ROAR_HAVE_BIN_OGG123      ogg123       ogg123
593test_tool_defmake ROAR_HAVE_BIN_FLAC        flac         flac
594test_tool_defmake ROAR_HAVE_BIN_TIMIDITY    TiMidity++   timidity
595test_tool_defmake ROAR_HAVE_BIN_CDPARANOIA  cdparanoia   cdparanoia
596test_tool_defmake ROAR_HAVE_BIN_WGET        Wget         wget
597test_tool_defmake ROAR_HAVE_BIN_GNUPLOT     gnuplot      gnuplot
598test_tool_defmake ROAR_HAVE_BIN_SSH         OpenSSH      ssh
599test_tool_defmake ROAR_HAVE_BIN_PINENTRY    PIN-Entry    pinentry
600test_tool_defmake ROAR_HAVE_BIN_SSH_ASKPASS SSH-AskPass  ssh-askpass
601test_tool_defmake ROAR_HAVE_BIN_GZIP        Gzip         gzip
[1357]602test_tool_defmake ROAR_HAVE_BIN_BZIP2       bzip2        bzip2
[1286]603test_tool_defmake ROAR_HAVE_BIN_GPG         GnuPG        gpg
[1357]604test_tool_defmake ROAR_HAVE_BIN_CHAT        chat         chat
[748]605
606echo >&3
607
[1101]608#                #define                 subdir       name           -lxxx      -- header
609test_lib_defmake ROAR_HAVE_LIBM          %            'Math Library' m          -- math.h
[363]610if test_lib 'realtime Library' rt -- sys/mman.h mqueue.h semaphore.h
611then
612 {
613  echo '#define ROAR_HAVE_LIBRT'
614  echo '#define ROAR_NEED_LIBRT'
615 } >&3
616fi
617
618echo >&3
619
[500]620#                #define                 subdir       name          -lxxx      -- header
621test_lib_defmake ROAR_HAVE_ESD           libroaresd   EsounD        esd        -- esd.h
[1049]622test_lib_defmake ROAR_HAVE_LIBAO         plugins/ao   libao         ao         -- ao/ao.h ao/plugin.h
[500]623test_lib_defmake ROAR_HAVE_LIBVORBIS     %            libvorbis     vorbis     -- vorbis/codec.h
624test_lib_defmake ROAR_HAVE_LIBVORBISFILE %            libvorbisfile vorbisfile -- vorbis/vorbisfile.h
[568]625test_lib_defmake ROAR_HAVE_LIBVORBISENC  %            libvorbisenc  vorbisenc  -- vorbis/vorbisenc.h
[500]626test_lib_defmake ROAR_HAVE_LIBSPEEX      %            libspeex      speex      -- speex/speex.h speex/speex_stereo.h
[1136]627test_lib_defmake ROAR_HAVE_LIBSPEEXDSP   %            libspeexdsp   speexdsp   -- speex/speex.h speex/speex_stereo.h
[500]628test_lib_defmake ROAR_HAVE_LIBCELT       %            libcelt       celt       -- celt/celt.h celt/celt_header.h
629test_lib_defmake ROAR_HAVE_LIBOGGZ       %            liboggz       oggz       -- oggz/oggz.h
630test_lib_defmake ROAR_HAVE_LIBSNDFILE    %            libsndfile    sndfile    -- sndfile.h
631test_lib_defmake ROAR_HAVE_LIBFISHSOUND  roarfish     libfishsound  fishsound  -- fishsound/fishsound.h
[604]632test_lib_defmake ROAR_HAVE_LIBSHOUT      %            libshout      shout      -- shout/shout.h
[500]633test_lib_defmake ROAR_HAVE_LIBPULSE      libroarpulse libpulse      pulse      -- pulse/pulseaudio.h pulse/simple.h
634test_lib_defmake ROAR_HAVE_LIBY2         libroaryiff  libyiff       Y2         -- Y2/Y.h Y2/Ylib.h
635test_lib_defmake ROAR_HAVE_LIBARTSC      libroararts  libartsc      artsc      -- kde/artsc/artsc.h
[921]636test_lib_defmake ROAR_HAVE_LIBOSSAUDIO   %            libossaudio   ossaudio   -- sys/ioctl.h
[1542]637test_lib_defmake ROAR_HAVE_LIBSNDIO      %            libsndio      sndio      -- sndio.h
[1313]638test_lib_defmake ROAR_HAVE_LIBSSL        %            OpenSSL       ssl        -- openssl/bio.h openssl/evp.h
[500]639test_lib_defmake ROAR_HAVE_LIBDNET       %            libdnet       dnet       -- sys/socket.h netdnet/dn.h netdnet/dnetdb.h
[1415]640test_lib_defmake ROAR_HAVE_BSDSOCKETS    %            BSDSockets    c          -- sys/types.h sys/socket.h
[1173]641test_lib_defmake ROAR_HAVE_UNIX          %            UNIX          c          -- sys/types.h sys/socket.h sys/un.h
[725]642test_lib_defmake ROAR_HAVE_IPX           %            IPX           c          -- netipx/ipx.h
[1415]643test_lib_defmake ROAR_HAVE_IPV4          %            IPv4          c          -- sys/types.h sys/socket.h 'netinet/in.h'
[914]644test_lib_defmake ROAR_HAVE_OSS           %            OSS           c          -- sys/ioctl.h sys/soundcard.h
645test_lib_defmake ROAR_HAVE_OSS_BSD       %            BSDOSS        c          -- sys/ioctl.h soundcard.h
[1091]646test_lib_defmake ROAR_HAVE_LIBWSOCK32    %            WinSockP0     wsock32    -- winsock2.h
647test_lib_defmake ROAR_HAVE_LIBWS2_32     %            WinSockP1     ws2_32     -- winsock2.h
[353]648
[1180]649echo >&3
650
[1427]651# Those tests should not be disbaled as they do not reduce the lib size just
652# break --minimal on full systems
653OLD_MINIMAL=$MINIMAL
654MINIMAL=false
[1425]655test_lib_defmake ROAR_HAVE_H_SYS_TYPES   %            sys/types.h   c          -- sys/types.h
656test_lib_defmake ROAR_HAVE_H_FCNTL       %            fcntl.h       c          -- fcntl.h
[1426]657test_lib_defmake ROAR_HAVE_H_UNISTD      %            unistd.h      c          -- unistd.h
[1553]658test_lib_defmake ROAR_HAVE_H_POLL        %            poll.h        c          -- poll.h
[1427]659MINIMAL=$OLD_MINIMAL
[1425]660
661echo >&3
662
[353]663# add a better test here
664test_lib 'linux sendfile()'       -- sys/sendfile.h && echo '#define ROAR_HAVE_LINUX_SENDFILE' >&3
665
666
[890]667echo -n 'checking for IPv6... '
668
[1360]669if $MINIMAL
670then
671 echo "disabled by user (minimalstic build)"
672else
673 echo '#include <sys/socket.h>'  > $TF_C
674 echo '#include <netinet/in.h>' >> $TF_C
675 echo 'int main (void) { struct sockaddr_in6 in6; return 0; }' >> $TF_C
[890]676
[1360]677 if $CCTF 2> /dev/null;
678 then
679  echo '#define ROAR_HAVE_IPV6' >&3
680  echo yes
681 else
682  echo no
683 fi
[890]684fi
685
686
[1471]687echo -n 'checking for _exit()... '
688
689echo '#include <unistd.h>'    > $TF_C
690echo 'int main (void) { _exit(0); return 0; }' >> $TF_C
691
692if $CCTF 2> /dev/null;
693then
694 echo '#define ROAR_HAVE_U_EXIT' >&3
695 echo '#define ROAR_U_EXIT _exit' >&3
696 echo yes
697else
698 echo '#define ROAR_U_EXIT exit' >&3
699 echo no
700fi
701
702
703echo -n 'checking for nice()... '
704
705echo '#include <unistd.h>'    > $TF_C
706echo 'int main (void) { nice(0); return 0; }' >> $TF_C
707
708if $CCTF 2> /dev/null;
709then
710 echo '#define ROAR_HAVE_NICE' >&3
711 echo yes
712else
713 echo no
714fi
715
716
717echo -n 'checking for setgid()... '
718
719echo '#include <sys/types.h>' >  $TF_C
720echo '#include <unistd.h>'    >> $TF_C
721echo 'int main (void) { setgid(0); return 0; }' >> $TF_C
722
723if $CCTF 2> /dev/null;
724then
725 echo '#define ROAR_HAVE_SETGID' >&3
726 echo yes
727else
728 echo no
729fi
730
731
732echo -n 'checking for setuid()... '
733
734echo '#include <sys/types.h>' >  $TF_C
735echo '#include <unistd.h>'    >> $TF_C
736echo 'int main (void) { setuid(0); return 0; }' >> $TF_C
737
738if $CCTF 2> /dev/null;
739then
740 echo '#define ROAR_HAVE_SETUID' >&3
741 echo yes
742else
743 echo no
744fi
745
746
747echo -n 'checking for gettimeofday()... '
748
749echo '#include <sys/time.h>' >  $TF_C
750echo '#include <time.h>'     >> $TF_C
751echo 'int main (void) { struct timeval tv; gettimeofday(&tv, NULL); return 0; }' >> $TF_C
752
753if $CCTF 2> /dev/null;
754then
755 echo '#define ROAR_HAVE_GETTIMEOFDAY' >&3
756 echo yes
757else
758 echo no
759fi
760
761
762echo -n 'checking for basic IO calls... '
763
764cat <<EOF > $TF_C
765#include <sys/types.h>
766#include <sys/stat.h>
767#include <fcntl.h>
768#include <string.h>
769#include <unistd.h>
770
771int main(void) {
772 open(NULL, 0, 0);
773 close(0);
774 read(0, NULL, 0);
775 write(0, NULL, 0);
776 lseek(0, 0, 0);
777 return 0;
778}
779EOF
780
781if $CCTF 2> /dev/null;
782then
783 echo '#define ROAR_HAVE_IO_POSIX' >&3
784 echo posix
785else
786 echo none
787fi
788
789echo -n 'checking for basic FS calls... '
790
791cat <<EOF > $TF_C
792#include <string.h>
793#include <unistd.h>
794
795int main(void) {
796 chdir(NULL);
797 unlink(NULL);
798 return 0;
799}
800EOF
801
802if $CCTF 2> /dev/null;
803then
804 echo '#define ROAR_HAVE_FS_POSIX' >&3
805 echo posix
806else
807 echo none
808fi
809
810
811echo -n 'checking for chroot()... '
812
813echo '#include <unistd.h>' > $TF_C
814echo 'int main (void) { chroot((void*)0); return 0; }' >> $TF_C
815
816if $CCTF 2> /dev/null;
817then
818 echo '#define ROAR_HAVE_CHROOT' >&3
819 echo yes
820else
821 echo no
822fi
823
824
[353]825echo -n 'checking for mlock()... '
826
827echo '#include <sys/mman.h>' > $TF_C
828echo 'int main (void) { mlock((void*)0, 0); return 0; }' >> $TF_C
829
830if $CCTF 2> /dev/null;
831then
832 echo '#define ROAR_HAVE_MLOCK' >&3
833 echo yes
834else
835 echo no
836fi
837
[1441]838echo -n 'checking for mmap()... '
839
840echo '#include <sys/mman.h>' > $TF_C
841echo 'int main (void) { mmap((void*)0, 0, 0, 0, 0, 0); return 0; }' >> $TF_C
842
843if $CCTF 2> /dev/null;
844then
845 echo '#define ROAR_HAVE_MMAP' >&3
846 echo yes
847else
848 echo no
849fi
850
[1397]851echo -n 'checking for fsync()... '
852
853echo '#include <unistd.h>' > $TF_C
854echo 'int main (void) { fsync(0); return 0; }' >> $TF_C
855
856if $CCTF 2> /dev/null;
857then
858 echo '#define ROAR_HAVE_FSYNC' >&3
859 FSYNC=true
860 echo yes
861else
862 FSYNC=false
863 echo no
864fi
865
[1170]866echo -n 'checking for fdatasync()... '
867
868echo '#include <unistd.h>' > $TF_C
869echo 'int main (void) { fdatasync(0); return 0; }' >> $TF_C
870
871if $CCTF 2> /dev/null;
872then
873 echo '#define ROAR_HAVE_FDATASYNC' >&3
[1171]874 echo '#define ROAR_FDATASYNC fdatasync' >&3
[1170]875 echo yes
876else
[1397]877 $FSYNC && echo '#define ROAR_FDATASYNC fsync' >&3
[1170]878 echo no
879fi
880
[1248]881echo -n 'checking for fopencookie()... '
882
883echo '#define _GNU_SOURCE' > $TF_C
884echo '#include <stdio.h>' >> $TF_C
885echo 'int main (void) { cookie_io_functions_t f; fopencookie(NULL, "", f); return 0; }' >> $TF_C
886
887if $CCTF 2> /dev/null;
888then
889 echo '#define ROAR_HAVE_FOPENCOOKIE' >&3
[1250]890 echo '#define ROAR_NEED_GNU_SOURCE' >&3
[1248]891 echo yes
892else
893 echo no
894fi
895
[1249]896echo -n 'checking for funopen()... '
897
898echo '#define __BSD_VISIBLE 1'  > $TF_C
899echo '#include <stdio.h>'      >> $TF_C
900echo 'int main (void) { funopen(NULL, NULL, NULL, NULL, NULL); return 0; }' >> $TF_C
901
902if $CCTF 2> /dev/null;
903then
904 echo '#define ROAR_HAVE_FUNOPEN' >&3
905 echo '#define ROAR_NEED_BSD_VISIBLE' >&3
906 echo yes
907else
908 echo no
909fi
910
[1409]911echo -n 'checking for pipe()... '
912
913echo '#include <unistd.h>'      > $TF_C
914echo 'int main (void) { pipe(NULL); return 0; }' >> $TF_C
915
916if $CCTF 2> /dev/null;
917then
918 echo '#define ROAR_HAVE_PIPE' >&3
919 echo yes
920else
921 echo no
922fi
923
[1385]924echo -n 'checking for fork()... '
925
926echo '#include <unistd.h>'      > $TF_C
927echo 'int main (void) { fork(); return 0; }' >> $TF_C
928
929if $CCTF 2> /dev/null;
930then
931 echo '#define ROAR_HAVE_FORK' >&3
932 echo yes
933else
934 echo no
935fi
936
937echo -n 'checking for wait()... '
938
[1386]939echo '#include <string.h>'        >  $TF_C
940echo '#include <sys/wait.h>'      >> $TF_C
[1385]941echo 'int main (void) { wait(NULL); return 0; }' >> $TF_C
942
943if $CCTF 2> /dev/null;
944then
945 echo '#define ROAR_HAVE_WAIT' >&3
946 echo yes
947else
948 echo no
949fi
950
[1019]951echo -n 'checking for square root func... '
952
[1519]953if $TARGET_CYGWIN
[1019]954then
[1034]955 echo 'sqrt() (cygwin)'
[1419]956elif [ "$SYSNAME" = 'FreeBSD' ]
957then
958 echo 'sqrt() (FreeBSD, fix your gcc)'
[1589]959elif [ "$SYSNAME" = 'Linux' ]
960then
[1034]961 echo '#include <math.h>' > $TF_C
962 echo 'int main (void) { sqrtl(0); return 0; }' >> $TF_C
963
964 if $CCTF -lm 2> /dev/null;
965 then
966  echo '#define ROAR_HAVE_SQRTL' >&3
967  echo 'sqrtl()'
968 else
969  echo 'sqrt()'
970 fi
[1019]971fi
972
[697]973echo -n 'checking for inline funcs... '
974
975echo 'inline int test (void) { return 0; }' > $TF_C
976echo 'int main (void) { return test(); }'  >> $TF_C
977
978if $CCTF 2> /dev/null;
979then
980 echo '#define ROAR_HAVE_INLINE' >&3
981 echo yes
982else
983 echo no
984fi
985
[1055]986echo -n 'checking for broken peercred... '
987echo '#include <roaraudio.h>' > $TF_C
988echo 'int main (void) { struct ucred cred; return 0; }'  >> $TF_C
989
990if $CCTF 2> /dev/null;
991then
992 echo working
993else
994 echo '#define ROAR_BROKEN_PEERCRED' >&3
995 echo broken
996fi
997
[1180]998echo -n 'checking for getpeereid()... '
999echo '#include <roaraudio.h>' > $TF_C
1000echo 'int main (void) { getpeereid(0, NULL, NULL); return 0; }'  >> $TF_C
1001
1002if $CCTF 2> /dev/null;
1003then
1004 echo '#define ROAR_HAVE_GETPEEREID' >&3
1005 echo yes
1006else
1007 echo no
1008fi
1009
[1468]1010echo -n 'checking for select()... '
1011cat <<EOF > $TF_C
[1537]1012#ifndef NO_SYS_SELECT_H
[1468]1013#include <sys/select.h>
[1537]1014#endif
[1468]1015#include <sys/time.h>
1016#include <sys/types.h>
1017#include <unistd.h>
1018
1019int main (void) {
1020 fd_set rfds;
1021 struct timeval tv;
1022
1023 FD_ZERO(&rfds);
1024 FD_SET(0, &rfds);
1025
1026 tv.tv_sec  = 0;
1027 tv.tv_usec = 0;
1028
1029 select(1, &rfds, NULL, NULL, &tv);
1030
1031 return 0;
1032}
1033EOF
1034
1035if $CCTF 2> /dev/null;
1036then
1037 echo '#define ROAR_HAVE_SELECT' >&3
[1537]1038 echo '#define ROAR_HAVE_H_SYS_SELECT' >&3
1039 echo yes, POSIX.1-2001
1040elif $CCTF -DNO_SYS_SELECT_H 2> /dev/null;
1041then
1042 echo '#define ROAR_HAVE_SELECT' >&3
1043 echo yes, old style
[1468]1044else
1045 echo no
1046fi
1047
[1469]1048echo -n 'checking for shutdown()... '
1049echo '#include <sys/socket.h>'     >  $TF_C
1050echo 'int main (void) { shutdown(0, 0); return 0; }'  >> $TF_C
1051
1052if $CCTF 2> /dev/null;
1053then
1054 echo '#define ROAR_HAVE_SHUTDOWN'     >&3
1055 echo '#define ROAR_SHUTDOWN shutdown' >&3
1056 echo yes
1057else
1058 echo '#define ROAR_SHUTDOWN(x,y) (-1)' >&3
1059 echo no
1060fi
1061
[1340]1062echo -n 'checking for getobjectbyname()... '
[1460]1063echo '#include <netdnet/dn.h>'     >  $TF_C
1064echo '#include <netdnet/dnetdb.h>' >> $TF_C
[1340]1065echo 'int main (void) { getobjectbyname(NULL); return 0; }'  >> $TF_C
1066
1067if $CCTF 2> /dev/null;
1068then
1069 echo '#define ROAR_HAVE_GETOBJECTBYNAME' >&3
1070 echo yes
1071else
1072 echo no
1073fi
1074
[1459]1075echo -n 'checking for getservbyname()... '
1076echo '#include <netdb.h>' > $TF_C
[1462]1077echo 'int main (void) { getservbyname((void*)0, (void*)0); return 0; }'  >> $TF_C
[1459]1078
1079if $CCTF 2> /dev/null;
1080then
1081 echo '#define ROAR_HAVE_GETSERVBYNAME' >&3
1082 echo yes
1083else
1084 echo no
1085fi
1086
[420]1087echo -n 'checking for safe 32 bit integer overflow... '
[354]1088
1089cat > $TF_C << EOF
1090#include <stdio.h>
1091#include <stdint.h>
1092#define TYPE uint32_t
1093#define MAX  ((TYPE)4294967295U)
1094
1095int main (void) {
1096 TYPE a = MAX;
1097
1098 a += 2;
1099
1100 if ( a == 1 ) {
1101  printf("#define ROAR_HAVE_SAFE_OVERFLOW\n");
1102  return 0;
1103 }
1104
1105 return 1;
1106}
1107EOF
1108
1109if $CCTF 2> /dev/null;
1110then
[1092]1111 $EXEC_HELPER $TF_E >&3
[354]1112 if [ "$?" = '0' ]
1113 then
1114  echo yes
1115 else
1116  echo no
1117 fi
1118else
1119 echo 'no (can not compile!, no stdint.h?)'
1120fi
1121
[781]1122echo -n 'checking for __LP64__... '
[1381]1123if $TARGET_WIN32
[1382]1124then
[1381]1125 echo 'need to set (win32 build)'
1126else
[781]1127cat > $TF_C << EOF
1128#include <stdio.h>
1129
1130int main (void) {
1131#ifdef __LP64__
1132 fprintf(stderr, "set by compiler\n");
1133#else
1134 if ( sizeof(int) == sizeof(void*) ) {
1135  fprintf(stderr, "no need to set\n");
1136 } else {
1137  fprintf(stderr, "need to set\n");
1138  printf("\n#ifndef __LP64__\n#define __LP64__\n#endif\n\n");
1139 }
1140#endif
1141 return 0;
1142}
1143EOF
[1381]1144 if $CCTF 2> /dev/null;
1145 then
1146  $EXEC_HELPER $TF_E >&3
1147 else
1148  echo 'error, can not compile'
1149  exit 1
1150 fi
[781]1151fi
1152
[853]1153echo -n 'checking for 64 bit types... '
[1384]1154if $TARGET_WIN32
[1383]1155then
1156 echo 'int64_t, uint64_t (win32 build)'
1157 echo '#define ROAR_NATIVE_INT64  int64_t'  >&3
1158 echo '#define ROAR_NATIVE_UINT64 uint64_t' >&3
1159else
[853]1160cat > $TF_C << EOF
1161#include <stdio.h>
1162#include <stdint.h>
1163
1164int main (void) {
1165 char * i64 = NULL, * ui64 = NULL;
1166
1167 if ( sizeof(int) == 8 ) {
1168  i64 = "int"; ui64 = "unsigned int";
1169 } else if ( sizeof(long int) == 8 ) {
1170  i64 = "long int"; ui64 = "unsigned long int";
1171 } else if ( sizeof(long long int) == 8 ) {
1172  i64 = "long long int"; ui64 = "unsigned long long int";
1173 } else if ( sizeof(int64_t) == 8 ) {
1174  i64 = "int64_t"; ui64 = "uint64_t";
1175 } else {
1176  fprintf(stderr, "none\n");
1177  return 0;
1178 }
1179
1180 fprintf(stderr, "%s, %s\n", i64, ui64);
1181 printf("#define ROAR_NATIVE_INT64 %s\n#define ROAR_NATIVE_UINT64 %s\n", i64, ui64);
1182
1183 return 0;
1184}
1185EOF
[1383]1186 if $CCTF 2> /dev/null;
1187 then
1188  $EXEC_HELPER $TF_E >&3
1189 else
1190  echo 'error, can not compile'
1191  exit 1
1192 fi
[853]1193fi
1194
1195
[475]1196echo -n 'checking if cp supports -v... '
1197if cp -v --help > /dev/null 2> /dev/null
1198then
1199 echo "cp_v=-v" >&4
1200 echo yes
1201else
1202 echo "cp_v=" >&4
1203 echo no
1204fi
1205
[804]1206echo -n 'checking for cdrom device... '
1207if [ -e "$CDROM" ]
1208then
1209 echo "$CDROM"
[924]1210 echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
[1394]1211 echo '#define ROAR_HAVE_CDROM' >&3
1212elif $CROSS_COMPILE
1213then
1214 echo 'none (cross compiling, use --cdrom to enable CDROM support)'
[804]1215else
1216 CDROM=$(ls /dev/cdrom /dev/rcd0c 2> /dev/null | head -n 1);
1217 if [ -e "$CDROM" ]
1218 then
1219  echo "$CDROM"
1220  echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
[1394]1221  echo '#define ROAR_HAVE_CDROM' >&3
[804]1222 else
1223  echo 'none'
[1394]1224  echo '#define ROAR_HAVE_CDROM' >&3
[804]1225 fi
1226fi
[475]1227
[1237]1228echo -n 'checking for default tty device... '
1229if [ -e "$TTY_DEV" ]
1230then
1231 echo "$TTY_DEV"
1232 echo '#define ROAR_DEFAULT_TTY "'"$TTY_DEV"'"' >&3
1233else
1234 TTY_DEV=$(ls /dev/tty 2> /dev/null | head -n 1);
1235 if [ -e "$TTY_DEV" ]
1236 then
1237  echo "$TTY_DEV"
1238  echo '#define ROAR_DEFAULT_TTY "'"$TTY_DEV"'"' >&3
1239 else
1240  echo 'none'
1241 fi
1242fi
1243
[913]1244echo -n 'checking for OSS device... '
1245if [ -e "$OSS_DEV" ]
1246then
1247 echo "$OSS_DEV"
[924]1248 echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
[913]1249else
1250 OSS_DEV=$(ls /dev/dsp /dev/audio 2> /dev/null | head -n 1);
1251 if [ -e "$OSS_DEV" ]
1252 then
1253  echo "$OSS_DEV"
1254  echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
1255 else
1256  echo 'none'
1257 fi
1258fi
1259
[843]1260echo 'checking for decnet status file... '"$PROC_NET_DECNET"
[827]1261echo '#define ROAR_PROC_NET_DECNET "'"$PROC_NET_DECNET"'"' >&3
1262
[927]1263
1264echo 'checking for default audio group... '"$DEFAULT_GRP"
1265echo '#define ROAR_DEFAULT_SOCKGRP "'"$DEFAULT_GRP"'"' >&3
1266
[353]1267cat >&3 << EOF
1268
1269#endif
1270
1271//ll
1272EOF
1273
[1092]1274cd plugins
1275
1276if $LIBAO
[872]1277then
[1092]1278 echo 'running libao plugin configure...'
1279  cd ao/
1280 if [ "$AO_INST_DIR" = '' ]
1281 then
1282  ./configure --force-have-roar
1283 else
1284  ./configure --force-have-roar --inst-dir "$AO_INST_DIR"
1285 fi
1286 cd ..
[872]1287else
[1092]1288 echo "running libao plugin configure... disabled by user"
[872]1289fi
[1057]1290
[1092]1291if $XMMS
[1057]1292then
[1092]1293 echo 'running xmms plugin configure...'
1294  cd xmms/
1295 if [ "$XMMS_INST_DIR" = '' ]
1296 then
[1607]1297  ./configure --force-have-roar --pkg-config "$PKG_CONFIG"
[1092]1298 else
[1607]1299  ./configure --force-have-roar --pkg-config "$PKG_CONFIG" --inst-dir "$XMMS_INST_DIR"
[1092]1300 fi
1301 cd ..
[1057]1302else
[1092]1303 echo "running xmms plugin configure... disabled by user"
[1057]1304fi
1305
[1092]1306cd ..
[872]1307
[354]1308rm -f $TF_C $TF_E
[353]1309
[359]1310mv config.h include/roaraudio/
1311echo 'config.h created and moved into include/roaraudio/'
1312
[1519]1313if $TARGET_CYGWIN
[898]1314then
[1034]1315 rm -f $TF_E.exe
[898]1316 echo 'patching Makefiles for cygwin...'
1317 find . -name Makefile -print0 | xargs -0 sed 's/\.so/.dll'/g -i
1318fi
1319
[353]1320#ll
Note: See TracBrowser for help on using the repository browser.