source: roaraudio/configure @ 1661:77112f0f3b2a

Last change on this file since 1661:77112f0f3b2a was 1661:77112f0f3b2a, checked in by phi, 15 years ago

use correct headers for tests

  • Property exe set to *
File size: 30.1 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_LIBSOCKET     %            libsocket     socket     -- sys/socket.h
657test_lib_defmake ROAR_HAVE_LIBWSOCK32    %            WinSockP0     wsock32    -- winsock2.h
658test_lib_defmake ROAR_HAVE_LIBWS2_32     %            WinSockP1     ws2_32     -- winsock2.h
659
660echo >&3
661
662# Those tests should not be disbaled as they do not reduce the lib size just
663# break --minimal on full systems
664OLD_MINIMAL=$MINIMAL
665MINIMAL=false
666test_lib_defmake ROAR_HAVE_H_SYS_TYPES   %            sys/types.h   c          -- sys/types.h
667test_lib_defmake ROAR_HAVE_H_FCNTL       %            fcntl.h       c          -- fcntl.h
668test_lib_defmake ROAR_HAVE_H_UNISTD      %            unistd.h      c          -- unistd.h
669test_lib_defmake ROAR_HAVE_H_POLL        %            poll.h        c          -- poll.h
670MINIMAL=$OLD_MINIMAL
671
672echo >&3
673
674# add a better test here
675test_lib 'linux sendfile()'       -- sys/sendfile.h && echo '#define ROAR_HAVE_LINUX_SENDFILE' >&3
676
677
678echo -n 'checking for IPv6... '
679
680if $MINIMAL
681then
682 echo "disabled by user (minimalstic build)"
683else
684 echo '#include <sys/socket.h>'  > $TF_C
685 echo '#include <netinet/in.h>' >> $TF_C
686 echo 'int main (void) { struct sockaddr_in6 in6; return 0; }' >> $TF_C
687
688 if $CCTF 2> /dev/null;
689 then
690  echo '#define ROAR_HAVE_IPV6' >&3
691  echo yes
692 else
693  echo no
694 fi
695fi
696
697
698echo -n 'checking for _exit()... '
699
700echo '#include <unistd.h>'    > $TF_C
701echo 'int main (void) { _exit(0); return 0; }' >> $TF_C
702
703if $CCTF 2> /dev/null;
704then
705 echo '#define ROAR_HAVE_U_EXIT' >&3
706 echo '#define ROAR_U_EXIT _exit' >&3
707 echo yes
708else
709 echo '#define ROAR_U_EXIT exit' >&3
710 echo no
711fi
712
713
714echo -n 'checking for nice()... '
715
716echo '#include <unistd.h>'    > $TF_C
717echo 'int main (void) { nice(0); return 0; }' >> $TF_C
718
719if $CCTF 2> /dev/null;
720then
721 echo '#define ROAR_HAVE_NICE' >&3
722 echo yes
723else
724 echo no
725fi
726
727
728echo -n 'checking for setgid()... '
729
730echo '#include <sys/types.h>' >  $TF_C
731echo '#include <unistd.h>'    >> $TF_C
732echo 'int main (void) { setgid(0); return 0; }' >> $TF_C
733
734if $CCTF 2> /dev/null;
735then
736 echo '#define ROAR_HAVE_SETGID' >&3
737 echo yes
738else
739 echo no
740fi
741
742
743echo -n 'checking for setuid()... '
744
745echo '#include <sys/types.h>' >  $TF_C
746echo '#include <unistd.h>'    >> $TF_C
747echo 'int main (void) { setuid(0); return 0; }' >> $TF_C
748
749if $CCTF 2> /dev/null;
750then
751 echo '#define ROAR_HAVE_SETUID' >&3
752 echo yes
753else
754 echo no
755fi
756
757
758echo -n 'checking for gettimeofday()... '
759
760echo '#include <sys/time.h>' >  $TF_C
761echo '#include <time.h>'     >> $TF_C
762echo 'int main (void) { struct timeval tv; gettimeofday(&tv, NULL); return 0; }' >> $TF_C
763
764if $CCTF 2> /dev/null;
765then
766 echo '#define ROAR_HAVE_GETTIMEOFDAY' >&3
767 echo yes
768else
769 echo no
770fi
771
772
773echo -n 'checking for basic IO calls... '
774
775cat <<EOF > $TF_C
776#include <sys/types.h>
777#include <sys/stat.h>
778#include <fcntl.h>
779#include <string.h>
780#include <unistd.h>
781
782int main(void) {
783 open(NULL, 0, 0);
784 close(0);
785 read(0, NULL, 0);
786 write(0, NULL, 0);
787 lseek(0, 0, 0);
788 return 0;
789}
790EOF
791
792if $CCTF 2> /dev/null;
793then
794 echo '#define ROAR_HAVE_IO_POSIX' >&3
795 echo posix
796else
797 echo none
798fi
799
800echo -n 'checking for basic FS calls... '
801
802cat <<EOF > $TF_C
803#include <string.h>
804#include <unistd.h>
805
806int main(void) {
807 chdir(NULL);
808 unlink(NULL);
809 return 0;
810}
811EOF
812
813if $CCTF 2> /dev/null;
814then
815 echo '#define ROAR_HAVE_FS_POSIX' >&3
816 echo posix
817else
818 echo none
819fi
820
821
822echo -n 'checking for chroot()... '
823
824echo '#include <unistd.h>' > $TF_C
825echo 'int main (void) { chroot((void*)0); return 0; }' >> $TF_C
826
827if $CCTF 2> /dev/null;
828then
829 echo '#define ROAR_HAVE_CHROOT' >&3
830 echo yes
831else
832 echo no
833fi
834
835
836echo -n 'checking for mlock()... '
837
838echo '#include <sys/mman.h>' > $TF_C
839echo 'int main (void) { mlock((void*)0, 0); return 0; }' >> $TF_C
840
841if $CCTF 2> /dev/null;
842then
843 echo '#define ROAR_HAVE_MLOCK' >&3
844 echo yes
845else
846 echo no
847fi
848
849echo -n 'checking for mmap()... '
850
851echo '#include <sys/mman.h>' > $TF_C
852echo 'int main (void) { mmap((void*)0, 0, 0, 0, 0, 0); return 0; }' >> $TF_C
853
854if $CCTF 2> /dev/null;
855then
856 echo '#define ROAR_HAVE_MMAP' >&3
857 echo yes
858else
859 echo no
860fi
861
862echo -n 'checking for fsync()... '
863
864echo '#include <unistd.h>' > $TF_C
865echo 'int main (void) { fsync(0); return 0; }' >> $TF_C
866
867if $CCTF 2> /dev/null;
868then
869 echo '#define ROAR_HAVE_FSYNC' >&3
870 FSYNC=true
871 echo yes
872else
873 FSYNC=false
874 echo no
875fi
876
877echo -n 'checking for fdatasync()... '
878
879echo '#include <unistd.h>' > $TF_C
880echo 'int main (void) { fdatasync(0); return 0; }' >> $TF_C
881
882if $CCTF 2> /dev/null;
883then
884 echo '#define ROAR_HAVE_FDATASYNC' >&3
885 echo '#define ROAR_FDATASYNC fdatasync' >&3
886 echo yes
887else
888 $FSYNC && echo '#define ROAR_FDATASYNC fsync' >&3
889 echo no
890fi
891
892echo -n 'checking for fopencookie()... '
893
894echo '#define _GNU_SOURCE' > $TF_C
895echo '#include <stdio.h>' >> $TF_C
896echo 'int main (void) { cookie_io_functions_t f; fopencookie(NULL, "", f); return 0; }' >> $TF_C
897
898if $CCTF 2> /dev/null;
899then
900 echo '#define ROAR_HAVE_FOPENCOOKIE' >&3
901 echo '#define ROAR_NEED_GNU_SOURCE' >&3
902 echo yes
903else
904 echo no
905fi
906
907echo -n 'checking for funopen()... '
908
909echo '#define __BSD_VISIBLE 1'  > $TF_C
910echo '#include <stdio.h>'      >> $TF_C
911echo 'int main (void) { funopen(NULL, NULL, NULL, NULL, NULL); return 0; }' >> $TF_C
912
913if $CCTF 2> /dev/null;
914then
915 echo '#define ROAR_HAVE_FUNOPEN' >&3
916 echo '#define ROAR_NEED_BSD_VISIBLE' >&3
917 echo yes
918else
919 echo no
920fi
921
922echo -n 'checking for pipe()... '
923
924echo '#include <unistd.h>'      > $TF_C
925echo 'int main (void) { pipe(NULL); return 0; }' >> $TF_C
926
927if $CCTF 2> /dev/null;
928then
929 echo '#define ROAR_HAVE_PIPE' >&3
930 echo yes
931else
932 echo no
933fi
934
935echo -n 'checking for fork()... '
936
937echo '#include <unistd.h>'      > $TF_C
938echo 'int main (void) { fork(); return 0; }' >> $TF_C
939
940if $CCTF 2> /dev/null;
941then
942 echo '#define ROAR_HAVE_FORK' >&3
943 echo yes
944else
945 echo no
946fi
947
948echo -n 'checking for wait()... '
949
950echo '#include <string.h>'        >  $TF_C
951echo '#include <sys/wait.h>'      >> $TF_C
952echo 'int main (void) { wait(NULL); return 0; }' >> $TF_C
953
954if $CCTF 2> /dev/null;
955then
956 echo '#define ROAR_HAVE_WAIT' >&3
957 echo yes
958else
959 echo no
960fi
961
962echo -n 'checking for square root func... '
963
964if $TARGET_CYGWIN
965then
966 echo 'sqrt() (cygwin)'
967elif [ "$SYSNAME" = 'FreeBSD' ]
968then
969 echo 'sqrt() (FreeBSD, fix your gcc)'
970elif [ "$SYSNAME" = 'Linux' ]
971then
972 echo '#include <math.h>' > $TF_C
973 echo 'int main (void) { sqrtl(0); return 0; }' >> $TF_C
974
975 if $CCTF -lm 2> /dev/null;
976 then
977  echo '#define ROAR_HAVE_SQRTL' >&3
978  echo 'sqrtl()'
979 else
980  echo 'sqrt()'
981 fi
982else
983 echo 'sqrt()'
984fi
985
986echo -n 'checking for inline funcs... '
987
988echo 'inline int test (void) { return 0; }' > $TF_C
989echo 'int main (void) { return test(); }'  >> $TF_C
990
991if $CCTF 2> /dev/null;
992then
993 echo '#define ROAR_HAVE_INLINE' >&3
994 echo yes
995else
996 echo no
997fi
998
999echo -n 'checking for broken peercred... '
1000echo '#include <roaraudio.h>' > $TF_C
1001echo 'int main (void) { struct ucred cred; return 0; }'  >> $TF_C
1002
1003if $CCTF 2> /dev/null;
1004then
1005 echo working
1006else
1007 echo '#define ROAR_BROKEN_PEERCRED' >&3
1008 echo broken
1009fi
1010
1011echo -n 'checking for getpeereid()... '
1012echo '#include <sys/types.h>'      >  $TF_C
1013echo '#include <sys/socket.h>'     >> $TF_C
1014echo 'int main (void) { getpeereid(0, NULL, NULL); return 0; }'  >> $TF_C
1015
1016if $CCTF 2> /dev/null;
1017then
1018 echo '#define ROAR_HAVE_GETPEEREID' >&3
1019 echo yes
1020else
1021 echo no
1022fi
1023
1024echo -n 'checking for select()... '
1025cat <<EOF > $TF_C
1026#ifndef NO_SYS_SELECT_H
1027#include <sys/select.h>
1028#endif
1029#include <sys/time.h>
1030#include <sys/types.h>
1031#include <unistd.h>
1032
1033int main (void) {
1034 fd_set rfds;
1035 struct timeval tv;
1036
1037 FD_ZERO(&rfds);
1038 FD_SET(0, &rfds);
1039
1040 tv.tv_sec  = 0;
1041 tv.tv_usec = 0;
1042
1043 select(1, &rfds, NULL, NULL, &tv);
1044
1045 return 0;
1046}
1047EOF
1048
1049if $CCTF 2> /dev/null;
1050then
1051 echo '#define ROAR_HAVE_SELECT' >&3
1052 echo '#define ROAR_HAVE_H_SYS_SELECT' >&3
1053 echo yes, POSIX.1-2001
1054elif $CCTF -DNO_SYS_SELECT_H 2> /dev/null;
1055then
1056 echo '#define ROAR_HAVE_SELECT' >&3
1057 echo yes, old style
1058else
1059 echo no
1060fi
1061
1062echo -n 'checking for shutdown()... '
1063echo '#include <sys/types.h>'      >  $TF_C
1064echo '#include <sys/socket.h>'     >> $TF_C
1065echo 'int main (void) { shutdown(0, 0); return 0; }'  >> $TF_C
1066
1067if [ "$SYSNAME" = 'SunOS' ]
1068then
1069 _l='-lsocket'
1070else
1071 _l=''
1072fi
1073
1074if $CCTF $_l 2> /dev/null;
1075then
1076 echo '#define ROAR_HAVE_SHUTDOWN'     >&3
1077 echo '#define ROAR_SHUTDOWN shutdown' >&3
1078 echo yes
1079else
1080 echo '#define ROAR_SHUTDOWN(x,y) (-1)' >&3
1081 echo no
1082fi
1083
1084echo -n 'checking for getobjectbyname()... '
1085echo '#include <netdnet/dn.h>'     >  $TF_C
1086echo '#include <netdnet/dnetdb.h>' >> $TF_C
1087echo 'int main (void) { getobjectbyname(NULL); return 0; }'  >> $TF_C
1088
1089if $CCTF 2> /dev/null;
1090then
1091 echo '#define ROAR_HAVE_GETOBJECTBYNAME' >&3
1092 echo yes
1093else
1094 echo no
1095fi
1096
1097echo -n 'checking for getservbyname()... '
1098echo '#include <netdb.h>' > $TF_C
1099echo 'int main (void) { getservbyname((void*)0, (void*)0); return 0; }'  >> $TF_C
1100
1101if $CCTF 2> /dev/null;
1102then
1103 echo '#define ROAR_HAVE_GETSERVBYNAME' >&3
1104 echo yes
1105else
1106 echo no
1107fi
1108
1109echo -n 'checking for safe 32 bit integer overflow... '
1110
1111cat > $TF_C << EOF
1112#include <stdio.h>
1113#include <stdint.h>
1114#define TYPE uint32_t
1115#define MAX  ((TYPE)4294967295U)
1116
1117int main (void) {
1118 TYPE a = MAX;
1119
1120 a += 2;
1121
1122 if ( a == 1 ) {
1123  printf("#define ROAR_HAVE_SAFE_OVERFLOW\n");
1124  return 0;
1125 }
1126
1127 return 1;
1128}
1129EOF
1130
1131if $CCTF 2> /dev/null;
1132then
1133 $EXEC_HELPER $TF_E >&3
1134 if [ "$?" = '0' ]
1135 then
1136  echo yes
1137 else
1138  echo no
1139 fi
1140else
1141 echo 'no (can not compile!, no stdint.h?)'
1142fi
1143
1144echo -n 'checking for __LP64__... '
1145if $TARGET_WIN32
1146then
1147 echo 'need to set (win32 build)'
1148else
1149cat > $TF_C << EOF
1150#include <stdio.h>
1151
1152int main (void) {
1153#ifdef __LP64__
1154 fprintf(stderr, "set by compiler\n");
1155#else
1156 if ( sizeof(int) == sizeof(void*) ) {
1157  fprintf(stderr, "no need to set\n");
1158 } else {
1159  fprintf(stderr, "need to set\n");
1160  printf("\n#ifndef __LP64__\n#define __LP64__\n#endif\n\n");
1161 }
1162#endif
1163 return 0;
1164}
1165EOF
1166 if $CCTF 2> /dev/null;
1167 then
1168  $EXEC_HELPER $TF_E >&3
1169 else
1170  echo 'error, can not compile'
1171  exit 1
1172 fi
1173fi
1174
1175echo -n 'checking for 64 bit types... '
1176if $TARGET_WIN32
1177then
1178 echo 'int64_t, uint64_t (win32 build)'
1179 echo '#define ROAR_NATIVE_INT64  int64_t'  >&3
1180 echo '#define ROAR_NATIVE_UINT64 uint64_t' >&3
1181else
1182cat > $TF_C << EOF
1183#include <stdio.h>
1184#include <stdint.h>
1185
1186int main (void) {
1187 char * i64 = NULL, * ui64 = NULL;
1188
1189 if ( sizeof(int) == 8 ) {
1190  i64 = "int"; ui64 = "unsigned int";
1191 } else if ( sizeof(long int) == 8 ) {
1192  i64 = "long int"; ui64 = "unsigned long int";
1193 } else if ( sizeof(long long int) == 8 ) {
1194  i64 = "long long int"; ui64 = "unsigned long long int";
1195 } else if ( sizeof(int64_t) == 8 ) {
1196  i64 = "int64_t"; ui64 = "uint64_t";
1197 } else {
1198  fprintf(stderr, "none\n");
1199  return 0;
1200 }
1201
1202 fprintf(stderr, "%s, %s\n", i64, ui64);
1203 printf("#define ROAR_NATIVE_INT64 %s\n#define ROAR_NATIVE_UINT64 %s\n", i64, ui64);
1204
1205 return 0;
1206}
1207EOF
1208 if $CCTF 2> /dev/null;
1209 then
1210  $EXEC_HELPER $TF_E >&3
1211 else
1212  echo 'error, can not compile'
1213  exit 1
1214 fi
1215fi
1216
1217
1218echo -n 'checking if cp supports -v... '
1219if cp -v --help > /dev/null 2> /dev/null
1220then
1221 echo "cp_v=-v" >&4
1222 echo yes
1223else
1224 echo "cp_v=" >&4
1225 echo no
1226fi
1227
1228echo -n 'checking for cdrom device... '
1229if [ -e "$CDROM" ]
1230then
1231 echo "$CDROM"
1232 echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
1233 echo '#define ROAR_HAVE_CDROM' >&3
1234elif $CROSS_COMPILE
1235then
1236 echo 'none (cross compiling, use --cdrom to enable CDROM support)'
1237else
1238 CDROM=$(ls /dev/cdrom /dev/rcd0c 2> /dev/null | head -n 1);
1239 if [ -e "$CDROM" ]
1240 then
1241  echo "$CDROM"
1242  echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
1243  echo '#define ROAR_HAVE_CDROM' >&3
1244 else
1245  echo 'none'
1246  echo '#define ROAR_HAVE_CDROM' >&3
1247 fi
1248fi
1249
1250echo -n 'checking for default tty device... '
1251if [ -e "$TTY_DEV" ]
1252then
1253 echo "$TTY_DEV"
1254 echo '#define ROAR_DEFAULT_TTY "'"$TTY_DEV"'"' >&3
1255else
1256 TTY_DEV=$(ls /dev/tty 2> /dev/null | head -n 1);
1257 if [ -e "$TTY_DEV" ]
1258 then
1259  echo "$TTY_DEV"
1260  echo '#define ROAR_DEFAULT_TTY "'"$TTY_DEV"'"' >&3
1261 else
1262  echo 'none'
1263 fi
1264fi
1265
1266echo -n 'checking for OSS device... '
1267if [ -e "$OSS_DEV" ]
1268then
1269 echo "$OSS_DEV"
1270 echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
1271else
1272 OSS_DEV=$(ls /dev/dsp /dev/audio 2> /dev/null | head -n 1);
1273 if [ -e "$OSS_DEV" ]
1274 then
1275  echo "$OSS_DEV"
1276  echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
1277 else
1278  echo 'none'
1279 fi
1280fi
1281
1282echo 'checking for decnet status file... '"$PROC_NET_DECNET"
1283echo '#define ROAR_PROC_NET_DECNET "'"$PROC_NET_DECNET"'"' >&3
1284
1285
1286echo 'checking for default audio group... '"$DEFAULT_GRP"
1287echo '#define ROAR_DEFAULT_SOCKGRP "'"$DEFAULT_GRP"'"' >&3
1288
1289cat >&3 << EOF
1290
1291#endif
1292
1293//ll
1294EOF
1295
1296cd plugins
1297
1298if $LIBAO
1299then
1300 echo 'running libao plugin configure...'
1301  cd ao/
1302 if [ "$AO_INST_DIR" = '' ]
1303 then
1304  ./configure --force-have-roar
1305 else
1306  ./configure --force-have-roar --inst-dir "$AO_INST_DIR"
1307 fi
1308 cd ..
1309else
1310 echo "running libao plugin configure... disabled by user"
1311fi
1312
1313if $XMMS
1314then
1315 echo 'running xmms plugin configure...'
1316  cd xmms/
1317 if [ "$XMMS_INST_DIR" = '' ]
1318 then
1319  ./configure --force-have-roar --pkg-config "$PKG_CONFIG"
1320 else
1321  ./configure --force-have-roar --pkg-config "$PKG_CONFIG" --inst-dir "$XMMS_INST_DIR"
1322 fi
1323 cd ..
1324else
1325 echo "running xmms plugin configure... disabled by user"
1326fi
1327
1328cd ..
1329
1330rm -f $TF_C $TF_E
1331
1332mv config.h include/roaraudio/
1333echo 'config.h created and moved into include/roaraudio/'
1334
1335if $TARGET_CYGWIN
1336then
1337 rm -f $TF_E.exe
1338 echo 'patching Makefiles for cygwin...'
1339 find . -name Makefile -print0 | xargs -0 sed 's/\.so/.dll'/g -i
1340fi
1341
1342#ll
Note: See TracBrowser for help on using the repository browser.