source: roaraudio/configure @ 1645:4abcd756aea9

Last change on this file since 1645:4abcd756aea9 was 1645:4abcd756aea9, checked in by phi, 15 years ago

test for libogg

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