source: roaraudio/configure @ 1397:9b4664b6c3dc

Last change on this file since 1397:9b4664b6c3dc was 1397:9b4664b6c3dc, checked in by phi, 15 years ago

make fsync() and fdatasync() optional

  • Property exe set to *
File size: 22.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
26PKG_CONFIG=false
27RUNTIME_DETECT=false
28
29PREFIX='/usr/local'
30PREFIX_BIN=''
31PREFIX_LIB=''
32PREFIX_INC=''
33PREFIX_MAN=''
34
35CDROM_IS_DEV=true
36CDROM="none"
37OSS_DEV="none"
38PROC_NET_DECNET="/proc/net/decnet"
39TTY_DEV="none"
40
41FSYNC=false
42
43DEFAULT_GRP=''
44
45AO_INST_DIR=''
46XMMS_INST_DIR=''
47
48LIBAO=true
49XMMS=true
50
51DEFAULT_RATE=''
52DEFAULT_CHANNELS=''
53DEFAULT_BITS=''
54
55ALAW=true
56MULAW=true
57ALAW_RW=true
58MULAW_RW=true
59
60PROXY=true
61
62WITHOUT_CF=''
63
64WITHOUT_VIO=''
65
66MINIMAL=false
67
68TARGET_WIN32=false
69
70EXEC_HELPER=''
71
72ROAR_DRIVER_DEFAULT=''
73ROAR_DRIVER_CODEC=''
74
75echo -n "checking for C compiler... "
76if [ "$CC" != '' ]
77then
78 echo $CC
79else
80 CC=$(which gcc cc 2> /dev/null | grep ^/ | head -n 1)
81 if [ "$CC" = '' ]
82 then
83  echo 'none'
84  exit 1;
85 fi
86 echo $CC
87fi
88
89echo -n "checking for pkg-config... "
90PKG_CONFIG=$(which pkg-config false 2> /dev/null | grep ^/ | head -n 1)
91if $PKG_CONFIG --help > /dev/null 2> /dev/null
92then
93 echo $PKG_CONFIG
94else
95 echo no
96fi
97
98#Makefile.conf not yet open, write it later
99
100echo -n "checking for sysname... "
101SYSNAME=$(uname -s)
102echo "$SYSNAME"
103
104while [ "$1" != '' ]
105do
106 case "$1" in
107  '--help')
108   echo '--help                      - This Help'
109   echo
110   echo '--ldpath DIR                - Add DIR to (compile time) search list for libs'
111   echo '--incpath DIR               - Add DIR to search list for headers'
112   echo '--addpath DIR               - Add DIR/lib to lib, DIR/include to header search list'
113   echo
114   echo '--cdrom DEV                 - Set default CDRum device'
115   echo '--tty DEV                   - Set default TTY'
116   echo '--proc-net-decnet FILE      - Set DECnet file for DECnet support auto detecting'
117   echo '                              (ignore this on non-Linux)'
118   echo
119   echo '--no-LIB                    - disable library LIB'
120   echo '--runtime-detect            - do as much as posible auto detecting on runtime (for distributors)'
121   echo
122   echo '--ao-install-dir DIR        - Set install dir for libao plugin'
123   echo '--xmms-install-dir DIR      - Set install dir for XMMS plugin'
124   echo
125   echo '--prefix DIR                - Set general prefix (default: '"$PREFIX"')'
126   echo '--prefix-bin DIR            - Set prefix for binarys (default: $PREFIX/bin)'
127   echo '--prefix-lib DIR            - Set prefix for librarys (default: $PREFIX/libs)'
128   echo '--prefix-inc DIR            - Set prefix for include files (default: $PREFIX/include)'
129   echo '--prefix-man DIR            - Set prefix for manpages (default: $PREFIX/man)'
130   echo
131   echo '--default-rate RATE         - Set default sample rate for roard and roarclients'
132   echo '--default-channels CHANNELS - Set default number of channels for roard and roarclients'
133   echo '--default-bits BITS         - Set default number of bits per sample for roard and roarclients'
134   echo '--default-driver DRIVER     - Set default driver for roard'
135   echo '--default-codec CODEC       - Set default codec used for the default driver'
136   echo
137   echo '--without-alaw              - Disable support of A-Law codec (de- and encoding)'
138   echo '--without-alaw-rw           - Disable support for writing A-Law (saves 8KB)'
139   echo '--without-mulaw             - Disable support of mu-Law codec (de- and encoding)'
140   echo '--without-mulaw-rw          - Disable support for writing mu-Law (saves 16KB)'
141   echo '--without-proxy             - Disable support for proxys'
142   echo
143   echo '--without-cf-cmd            - Disable support for command codecfilter'
144   echo
145   echo '--without-vio-MODULE        - Disable support for VIO module MODULE'
146   echo
147   echo '--without-libao             - Disable build of libao plugin'
148   echo '--without-xmms              - Disable build of XMMS plugin'
149   echo
150   echo '--minimal                   - Disable all optional components'
151   echo '--cross-compile             - Enable cross compiler workarounds'
152   echo '--target-win32              - Disable everything useful'
153   echo '--exec-helper HELPER        - Exec all test programms using this command (HELPER $cmd $args)'
154   echo '                              use '\''--exec-helper wine'\'' when building win32 binarys'
155   exit 0;
156  ;;
157  '--ldpath')
158   LDPATH="$LDPATH -L$2"
159   shift;
160  ;;
161  '--incpath')
162   INCPATH="$INCPATH -I$2"
163   shift;
164  ;;
165  '--addpath')
166   LDPATH="$LDPATH -L$2/lib/"
167   INCPATH="$INCPATH -I$2/include/"
168   shift;
169  ;;
170  '--cc')
171   CC="$2"
172   shift;
173  ;;
174  '--cdrom')
175   CDROM="$2"
176   shift;
177  ;;
178  '--tty')
179   TTY_DEV="$2"
180   shift;
181  ;;
182  '--oss-dev')
183   OSS_DEV="$2"
184   shift;
185  ;;
186  '--audio-group')
187   DEFAULT_GRP="$2"
188   shift;
189  ;;
190  '--no-'*)
191   lib=$(echo "$1" | sed 's/^--no-//')
192   eval no_lib_$lib=true
193  ;;
194  '--runtime-detect')
195   RUNTIME_DETECT=true
196  ;;
197  '--ao-install-dir')
198   AO_INST_DIR="$2"
199   shift;
200  ;;
201  '--xmms-install-dir')
202   XMMS_INST_DIR="$2"
203   shift;
204  ;;
205  '--default-rate')
206   DEFAULT_RATE="$2"
207   shift;
208  ;;
209  '--default-channels')
210   DEFAULT_CHANNELS="$2"
211   shift;
212  ;;
213  '--default-bits')
214   DEFAULT_BITS="$2"
215   shift;
216  ;;
217  '--default-driver')
218   ROAR_DRIVER_DEFAULT="$2"
219   shift;
220  ;;
221  '--default-codec')
222   ROAR_DRIVER_CODEC="$2"
223   shift;
224  ;;
225  '--without-alaw')
226   ALAW=false
227   ALAW_RW=false
228  ;;
229  '--without-alaw-rw')
230   ALAW_RW=false
231  ;;
232  '--without-mulaw')
233   MULAW=false
234   MULAW_RW=false
235  ;;
236  '--without-mulaw-rw')
237   MULAW_RW=false
238  ;;
239  '--without-proxy')
240   PROXY=false
241  ;;
242  '--without-cf-'*)
243   WITHOUT_CF="$WITHOUT_CF"' '$(echo "$1" | cut -d- -f5)
244  ;;
245  '--without-vio-'*)
246   WITHOUT_VIO="$WITHOUT_VIO"' '$(echo "$1" | cut -d- -f5)
247  ;;
248  '--without-libao')
249   LIBAO=false
250   no_lib_ao=true
251  ;;
252  '--without-xmms')
253   XMMS=false
254  ;;
255  '--minimal')
256   MINIMAL=true
257   RUNTIME_DETECT=false
258   XMMS=false
259   LIBAO=false
260   PROXY=false
261   MULAW=false
262   MULAW_RW=false
263   ALAW=false
264   ALAW_RW=false
265   WITHOUT_VIO="$WITHOUT_VIO"' dstr cmd stdio'
266  ;;
267  '--prefix')
268   PREFIX="$2"
269   shift;
270  ;;
271  '--prefix-bin')
272   PREFIX_BIN="$2"
273   shift;
274  ;;
275  '--prefix-lib')
276   PREFIX_LIB="$2"
277   shift;
278  ;;
279  '--prefix-inc')
280   PREFIX_INC="$2"
281   shift;
282  ;;
283  '--prefix-man')
284   PREFIX_MAN="$2"
285   shift;
286  ;;
287  '--cross-compile')
288   CROSS_COMPILE=true
289  ;;
290  '--exec-helper')
291   EXEC_HELPER="$2"
292   shift;
293  ;;
294  '--target-win32')
295   RUNTIME_DETECT=true
296   no_lib_dnet=true
297   TARGET_WIN32=true
298   CROSS_COMPILE=true
299   PROXY=false
300   XMMS=false
301   WITHOUT_VIO="$WITHOUT_VIO"' pipe' # hope that with buffered pipes we can remove this soon
302  ;;
303 esac;
304
305 shift;
306done
307
308
309CCTF="false"
310
311test_lib () {
312 echo > $TF_C
313
314 echo -n "checking for $1... "
315 shift;
316
317 LIBS=''
318
319 while [ "$1" != '--' ]
320 do
321  LIBS="$LIBS -l$1"
322  shift;
323 done
324
325 shift;
326
327 LIBS=$(echo "$LIBS" | sed 's/-l-l/-l/g; s/-l-L/-L/g;')
328
329 while [ "$1" != '' ]
330 do
331  echo "#include <$1>" >> $TF_C
332  shift;
333 done
334
335 echo 'int main (void) { return 0; }' >> $TF_C
336
337 $CCTF $LIBS 2> /dev/null;
338
339 R=$?
340
341 if [ "$R" = '0' ]
342 then
343  echo 'yes'
344 else
345  echo 'no'
346 fi
347
348 return $R
349}
350
351test_lib_defmake () {
352 def="$1"
353 subdir="$2"
354 shift
355 shift
356 name="$1"
357 lib="$2"
358 shift
359
360 [ "$subdir" = '%' ] && subdir=''
361
362 if [ "$lib" != '--' ]
363 then
364  eval _no="\$no_lib_$lib";
365  $MINIMAL && _no='XXX'
366
367  if [ "$_no" != '' ]
368  then
369    echo "checking for $name... disabled by user"
370   [ "$subdir" != '' ] && \
371    echo "subdir_$subdir=" >&4
372   echo "lib_$lib=" >&4
373   return;
374  fi
375 fi
376
377 LIBS=$($PKG_CONFIG --silence-errors --libs $lib)
378 if [ "$?" != '0' ]
379 then
380  LIBS="-l$lib"
381 fi
382
383 if test_lib "$name" $LIBS "$@"
384 then
385  subdir_var='subdir_'"`echo $subdir | tr / _`"
386  echo "#define $def"            >&3
387  [ "$subdir" != '' ] && \
388   echo "$subdir_var=$subdir" >&4
389  echo "lib_$lib=$LIBS" >&4
390 else
391  [ "$subdir" != '' ] && \
392   echo "subdir_$subdir=" >&4
393  echo "lib_$lib=" >&4
394 fi
395}
396
397test_tool_defmake () {
398 DEF="$1"
399 NAME="$2"
400 shift;
401 shift;
402 echo -n "checking for $NAME... "
403
404 if $RUNTIME_DETECT
405 then
406  echo "$1 (runtime detect)"
407 echo "#define $DEF "\""$1"\" >&3
408 elif $MINIMAL
409 then
410  echo "disabled by user (minimalstic build)"
411 else
412
413  LIST=$(which "$@" 2> /dev/null | grep ^/ | head -n 1)
414
415  if [ "$LIST" = '' ]
416  then
417   echo 'no'
418  else
419   echo $LIST
420   echo "#define $DEF "\""$LIST"\" >&3
421  fi
422 fi
423}
424
425exec 3> config.h 4> Makefile.conf
426
427if [ "$SYSNAME" = 'Darwin' ]
428then
429 echo "Adding $SYSNAME shared lib arguments..."
430 SHARED="$SHARED -fno-common -dynamiclib -compatibility_version 0.1 -current_version 0.1.0"
431 SHARED_CF="$SHARED_CF -fno-common"
432elif [ "$SYSNAME" = 'NetBSD' ]
433then
434 echo "Adding $SYSNAME libpath arguments..."
435 LDPATH="$LDPATH -L/usr/local/lib/"
436elif [ "$SYSNAME" = 'OpenBSD' ]
437then
438 echo "Adding $SYSNAME search path arguments..."
439 LDPATH="$LDPATH -L/usr/local/lib/"
440 INCPATH="$INCPATH -I/usr/local/include/"
441elif [ "$SYSNAME" = 'FreeBSD' ]
442then
443 echo "Adding $SYSNAME search path arguments..."
444 LDPATH="$LDPATH -L/usr/local/lib/"
445 INCPATH="$INCPATH -I/usr/local/include/"
446 [ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='wheel'
447elif $TARGET_WIN32
448then
449 echo "Adding win32 build arguments..."
450 fPIC=false
451fi
452
453[ "$PREFIX_BIN" = '' ] && PREFIX_BIN="$PREFIX/bin/"
454[ "$PREFIX_LIB" = '' ] && PREFIX_LIB="$PREFIX/lib/"
455[ "$PREFIX_INC" = '' ] && PREFIX_INC="$PREFIX/include/"
456[ "$PREFIX_MAN" = '' ] && PREFIX_MAN="$PREFIX/share/man/"
457
458[ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='audio'
459
460# now write the cc name to Makefile.conf
461{
462 echo "SHARED=$SHARED"
463 echo "SHARED_CF=$SHARED_CF"
464 $fPIC && echo 'fPIC=-fPIC'
465 echo "CC=$CC"
466 echo "LDPATH=$LDPATH"
467 echo "INCPATH=$INCPATH"
468 echo "PREFIX=$PREFIX"
469 echo "PREFIX_BIN=$PREFIX_BIN"
470 echo "PREFIX_LIB=$PREFIX_LIB"
471 echo "PREFIX_INC=$PREFIX_INC"
472 echo "PREFIX_MAN=$PREFIX_MAN"
473} >&4
474
475CCTF="$CC $LDPATH $INCPATH -Iinclude/ -o $TF_E $TF_C"
476
477cat >&3 << EOF
478//config.h:
479
480#ifndef _ROARAUDIO_CONFIG_H_
481#define _ROARAUDIO_CONFIG_H_
482
483EOF
484
485{
486 echo '/* uname: ' $(uname -a) '*/'
487 echo '/* Date : ' $(date)  '*/'
488 echo
489 [ "$DEFAULT_RATE"        = '' ] || echo "#define ROAR_RATE_DEFAULT     $DEFAULT_RATE"
490 [ "$DEFAULT_CHANNELS"    = '' ] || echo "#define ROAR_CHANNELS_DEFAULT $DEFAULT_CHANNELS"
491 [ "$DEFAULT_BITS"        = '' ] || echo "#define ROAR_BITS_DEFAULT     $DEFAULT_BITS"
492 [ "$ROAR_DRIVER_DEFAULT" = '' ] || echo "#define ROAR_DRIVER_DEFAULT   \"$ROAR_DRIVER_DEFAULT\""
493 [ "$ROAR_DRIVER_CODEC"   = '' ] || echo "#define ROAR_DRIVER_CODEC     \"$ROAR_DRIVER_CODEC\""
494 echo
495 $ALAW     && echo '#define ROAR_SUPPORT_ALAW'
496 $ALAW_RW  && echo '#define ROAR_SUPPORT_ALAW_RW'
497 $MULAW    && echo '#define ROAR_SUPPORT_MULAW'
498 $MULAW_RW && echo '#define ROAR_SUPPORT_MULAW_RW'
499 $PROXY    && echo '#define ROAR_SUPPORT_PROXY'
500 echo
501
502 for i in $WITHOUT_CF
503 do
504  i=$(echo $i | tr /a-z/ /A-Z/);
505  echo '#define ROAR_WITHOUT_CF_'$i
506 done
507
508 for i in $WITHOUT_VIO
509 do
510  i=$(echo $i | tr /a-z/ /A-Z/);
511  echo '#define ROAR_WITHOUT_VIO_'$i
512 done
513
514 echo
515 $TARGET_WIN32 && echo '#define ROAR_TARGET_WIN32'
516                  echo '#define ROAR_OS_'$(echo $SYSNAME | tr a-z A-Z)
517 echo
518} >&3
519
520#                 #define                   name         cmds...
521test_tool_defmake ROAR_HAVE_BIN_OGG123      ogg123       ogg123
522test_tool_defmake ROAR_HAVE_BIN_FLAC        flac         flac
523test_tool_defmake ROAR_HAVE_BIN_TIMIDITY    TiMidity++   timidity
524test_tool_defmake ROAR_HAVE_BIN_CDPARANOIA  cdparanoia   cdparanoia
525test_tool_defmake ROAR_HAVE_BIN_WGET        Wget         wget
526test_tool_defmake ROAR_HAVE_BIN_GNUPLOT     gnuplot      gnuplot
527test_tool_defmake ROAR_HAVE_BIN_SSH         OpenSSH      ssh
528test_tool_defmake ROAR_HAVE_BIN_PINENTRY    PIN-Entry    pinentry
529test_tool_defmake ROAR_HAVE_BIN_SSH_ASKPASS SSH-AskPass  ssh-askpass
530test_tool_defmake ROAR_HAVE_BIN_GZIP        Gzip         gzip
531test_tool_defmake ROAR_HAVE_BIN_BZIP2       bzip2        bzip2
532test_tool_defmake ROAR_HAVE_BIN_GPG         GnuPG        gpg
533test_tool_defmake ROAR_HAVE_BIN_CHAT        chat         chat
534
535echo >&3
536
537#                #define                 subdir       name           -lxxx      -- header
538test_lib_defmake ROAR_HAVE_LIBM          %            'Math Library' m          -- math.h
539if test_lib 'realtime Library' rt -- sys/mman.h mqueue.h semaphore.h
540then
541 {
542  echo '#define ROAR_HAVE_LIBRT'
543  echo '#define ROAR_NEED_LIBRT'
544 } >&3
545fi
546
547echo >&3
548
549#                #define                 subdir       name          -lxxx      -- header
550test_lib_defmake ROAR_HAVE_ESD           libroaresd   EsounD        esd        -- esd.h
551test_lib_defmake ROAR_HAVE_LIBAO         plugins/ao   libao         ao         -- ao/ao.h ao/plugin.h
552test_lib_defmake ROAR_HAVE_LIBVORBIS     %            libvorbis     vorbis     -- vorbis/codec.h
553test_lib_defmake ROAR_HAVE_LIBVORBISFILE %            libvorbisfile vorbisfile -- vorbis/vorbisfile.h
554test_lib_defmake ROAR_HAVE_LIBVORBISENC  %            libvorbisenc  vorbisenc  -- vorbis/vorbisenc.h
555test_lib_defmake ROAR_HAVE_LIBSPEEX      %            libspeex      speex      -- speex/speex.h speex/speex_stereo.h
556test_lib_defmake ROAR_HAVE_LIBSPEEXDSP   %            libspeexdsp   speexdsp   -- speex/speex.h speex/speex_stereo.h
557test_lib_defmake ROAR_HAVE_LIBCELT       %            libcelt       celt       -- celt/celt.h celt/celt_header.h
558test_lib_defmake ROAR_HAVE_LIBOGGZ       %            liboggz       oggz       -- oggz/oggz.h
559test_lib_defmake ROAR_HAVE_LIBSNDFILE    %            libsndfile    sndfile    -- sndfile.h
560test_lib_defmake ROAR_HAVE_LIBFISHSOUND  roarfish     libfishsound  fishsound  -- fishsound/fishsound.h
561test_lib_defmake ROAR_HAVE_LIBSHOUT      %            libshout      shout      -- shout/shout.h
562test_lib_defmake ROAR_HAVE_LIBPULSE      libroarpulse libpulse      pulse      -- pulse/pulseaudio.h pulse/simple.h
563test_lib_defmake ROAR_HAVE_LIBY2         libroaryiff  libyiff       Y2         -- Y2/Y.h Y2/Ylib.h
564test_lib_defmake ROAR_HAVE_LIBARTSC      libroararts  libartsc      artsc      -- kde/artsc/artsc.h
565test_lib_defmake ROAR_HAVE_LIBOSSAUDIO   %            libossaudio   ossaudio   -- sys/ioctl.h
566test_lib_defmake ROAR_HAVE_LIBSSL        %            OpenSSL       ssl        -- openssl/bio.h openssl/evp.h
567test_lib_defmake ROAR_HAVE_LIBDNET       %            libdnet       dnet       -- sys/socket.h netdnet/dn.h netdnet/dnetdb.h
568test_lib_defmake ROAR_HAVE_BSDSOCKETS    %            BSDSockets    c          -- sys/socket.h
569test_lib_defmake ROAR_HAVE_UNIX          %            UNIX          c          -- sys/types.h sys/socket.h sys/un.h
570test_lib_defmake ROAR_HAVE_IPX           %            IPX           c          -- netipx/ipx.h
571test_lib_defmake ROAR_HAVE_IPV4          %            IPv4          c          -- sys/socket.h 'netinet/in.h'
572test_lib_defmake ROAR_HAVE_OSS           %            OSS           c          -- sys/ioctl.h sys/soundcard.h
573test_lib_defmake ROAR_HAVE_OSS_BSD       %            BSDOSS        c          -- sys/ioctl.h soundcard.h
574test_lib_defmake ROAR_HAVE_LIBWSOCK32    %            WinSockP0     wsock32    -- winsock2.h
575test_lib_defmake ROAR_HAVE_LIBWS2_32     %            WinSockP1     ws2_32     -- winsock2.h
576
577echo >&3
578
579# add a better test here
580test_lib 'linux sendfile()'       -- sys/sendfile.h && echo '#define ROAR_HAVE_LINUX_SENDFILE' >&3
581
582
583echo -n 'checking for IPv6... '
584
585if $MINIMAL
586then
587 echo "disabled by user (minimalstic build)"
588else
589 echo '#include <sys/socket.h>'  > $TF_C
590 echo '#include <netinet/in.h>' >> $TF_C
591 echo 'int main (void) { struct sockaddr_in6 in6; return 0; }' >> $TF_C
592
593 if $CCTF 2> /dev/null;
594 then
595  echo '#define ROAR_HAVE_IPV6' >&3
596  echo yes
597 else
598  echo no
599 fi
600fi
601
602
603echo -n 'checking for mlock()... '
604
605echo '#include <sys/mman.h>' > $TF_C
606echo 'int main (void) { mlock((void*)0, 0); return 0; }' >> $TF_C
607
608if $CCTF 2> /dev/null;
609then
610 echo '#define ROAR_HAVE_MLOCK' >&3
611 echo yes
612else
613 echo no
614fi
615
616echo -n 'checking for fsync()... '
617
618echo '#include <unistd.h>' > $TF_C
619echo 'int main (void) { fsync(0); return 0; }' >> $TF_C
620
621if $CCTF 2> /dev/null;
622then
623 echo '#define ROAR_HAVE_FSYNC' >&3
624 FSYNC=true
625 echo yes
626else
627 FSYNC=false
628 echo no
629fi
630
631echo -n 'checking for fdatasync()... '
632
633echo '#include <unistd.h>' > $TF_C
634echo 'int main (void) { fdatasync(0); return 0; }' >> $TF_C
635
636if $CCTF 2> /dev/null;
637then
638 echo '#define ROAR_HAVE_FDATASYNC' >&3
639 echo '#define ROAR_FDATASYNC fdatasync' >&3
640 echo yes
641else
642 $FSYNC && echo '#define ROAR_FDATASYNC fsync' >&3
643 echo no
644fi
645
646echo -n 'checking for fopencookie()... '
647
648echo '#define _GNU_SOURCE' > $TF_C
649echo '#include <stdio.h>' >> $TF_C
650echo 'int main (void) { cookie_io_functions_t f; fopencookie(NULL, "", f); return 0; }' >> $TF_C
651
652if $CCTF 2> /dev/null;
653then
654 echo '#define ROAR_HAVE_FOPENCOOKIE' >&3
655 echo '#define ROAR_NEED_GNU_SOURCE' >&3
656 echo yes
657else
658 echo no
659fi
660
661echo -n 'checking for funopen()... '
662
663echo '#define __BSD_VISIBLE 1'  > $TF_C
664echo '#include <stdio.h>'      >> $TF_C
665echo 'int main (void) { funopen(NULL, NULL, NULL, NULL, NULL); return 0; }' >> $TF_C
666
667if $CCTF 2> /dev/null;
668then
669 echo '#define ROAR_HAVE_FUNOPEN' >&3
670 echo '#define ROAR_NEED_BSD_VISIBLE' >&3
671 echo yes
672else
673 echo no
674fi
675
676echo -n 'checking for fork()... '
677
678echo '#include <unistd.h>'      > $TF_C
679echo 'int main (void) { fork(); return 0; }' >> $TF_C
680
681if $CCTF 2> /dev/null;
682then
683 echo '#define ROAR_HAVE_FORK' >&3
684 echo yes
685else
686 echo no
687fi
688
689echo -n 'checking for wait()... '
690
691echo '#include <string.h>'        >  $TF_C
692echo '#include <sys/wait.h>'      >> $TF_C
693echo 'int main (void) { wait(NULL); return 0; }' >> $TF_C
694
695if $CCTF 2> /dev/null;
696then
697 echo '#define ROAR_HAVE_WAIT' >&3
698 echo yes
699else
700 echo no
701fi
702
703echo -n 'checking for square root func... '
704
705echo "$SYSNAME" | if grep CYGWIN > /dev/null
706then
707 echo 'sqrt() (cygwin)'
708else
709 echo '#include <math.h>' > $TF_C
710 echo 'int main (void) { sqrtl(0); return 0; }' >> $TF_C
711
712 if $CCTF -lm 2> /dev/null;
713 then
714  echo '#define ROAR_HAVE_SQRTL' >&3
715  echo 'sqrtl()'
716 else
717  echo 'sqrt()'
718 fi
719fi
720
721echo -n 'checking for inline funcs... '
722
723echo 'inline int test (void) { return 0; }' > $TF_C
724echo 'int main (void) { return test(); }'  >> $TF_C
725
726if $CCTF 2> /dev/null;
727then
728 echo '#define ROAR_HAVE_INLINE' >&3
729 echo yes
730else
731 echo no
732fi
733
734echo -n 'checking for broken peercred... '
735echo '#include <roaraudio.h>' > $TF_C
736echo 'int main (void) { struct ucred cred; return 0; }'  >> $TF_C
737
738if $CCTF 2> /dev/null;
739then
740 echo working
741else
742 echo '#define ROAR_BROKEN_PEERCRED' >&3
743 echo broken
744fi
745
746echo -n 'checking for getpeereid()... '
747echo '#include <roaraudio.h>' > $TF_C
748echo 'int main (void) { getpeereid(0, NULL, NULL); return 0; }'  >> $TF_C
749
750if $CCTF 2> /dev/null;
751then
752 echo '#define ROAR_HAVE_GETPEEREID' >&3
753 echo yes
754else
755 echo no
756fi
757
758echo -n 'checking for getobjectbyname()... '
759echo '#include <roaraudio.h>' > $TF_C
760echo 'int main (void) { getobjectbyname(NULL); return 0; }'  >> $TF_C
761
762if $CCTF 2> /dev/null;
763then
764 echo '#define ROAR_HAVE_GETOBJECTBYNAME' >&3
765 echo yes
766else
767 echo no
768fi
769
770echo -n 'checking for safe 32 bit integer overflow... '
771
772cat > $TF_C << EOF
773#include <stdio.h>
774#include <stdint.h>
775#define TYPE uint32_t
776#define MAX  ((TYPE)4294967295U)
777
778int main (void) {
779 TYPE a = MAX;
780
781 a += 2;
782
783 if ( a == 1 ) {
784  printf("#define ROAR_HAVE_SAFE_OVERFLOW\n");
785  return 0;
786 }
787
788 return 1;
789}
790EOF
791
792if $CCTF 2> /dev/null;
793then
794 $EXEC_HELPER $TF_E >&3
795 if [ "$?" = '0' ]
796 then
797  echo yes
798 else
799  echo no
800 fi
801else
802 echo 'no (can not compile!, no stdint.h?)'
803fi
804
805echo -n 'checking for __LP64__... '
806if $TARGET_WIN32
807then
808 echo 'need to set (win32 build)'
809else
810cat > $TF_C << EOF
811#include <stdio.h>
812
813int main (void) {
814#ifdef __LP64__
815 fprintf(stderr, "set by compiler\n");
816#else
817 if ( sizeof(int) == sizeof(void*) ) {
818  fprintf(stderr, "no need to set\n");
819 } else {
820  fprintf(stderr, "need to set\n");
821  printf("\n#ifndef __LP64__\n#define __LP64__\n#endif\n\n");
822 }
823#endif
824 return 0;
825}
826EOF
827 if $CCTF 2> /dev/null;
828 then
829  $EXEC_HELPER $TF_E >&3
830 else
831  echo 'error, can not compile'
832  exit 1
833 fi
834fi
835
836echo -n 'checking for 64 bit types... '
837if $TARGET_WIN32
838then
839 echo 'int64_t, uint64_t (win32 build)'
840 echo '#define ROAR_NATIVE_INT64  int64_t'  >&3
841 echo '#define ROAR_NATIVE_UINT64 uint64_t' >&3
842else
843cat > $TF_C << EOF
844#include <stdio.h>
845#include <stdint.h>
846
847int main (void) {
848 char * i64 = NULL, * ui64 = NULL;
849
850 if ( sizeof(int) == 8 ) {
851  i64 = "int"; ui64 = "unsigned int";
852 } else if ( sizeof(long int) == 8 ) {
853  i64 = "long int"; ui64 = "unsigned long int";
854 } else if ( sizeof(long long int) == 8 ) {
855  i64 = "long long int"; ui64 = "unsigned long long int";
856 } else if ( sizeof(int64_t) == 8 ) {
857  i64 = "int64_t"; ui64 = "uint64_t";
858 } else {
859  fprintf(stderr, "none\n");
860  return 0;
861 }
862
863 fprintf(stderr, "%s, %s\n", i64, ui64);
864 printf("#define ROAR_NATIVE_INT64 %s\n#define ROAR_NATIVE_UINT64 %s\n", i64, ui64);
865
866 return 0;
867}
868EOF
869 if $CCTF 2> /dev/null;
870 then
871  $EXEC_HELPER $TF_E >&3
872 else
873  echo 'error, can not compile'
874  exit 1
875 fi
876fi
877
878
879echo -n 'checking if cp supports -v... '
880if cp -v --help > /dev/null 2> /dev/null
881then
882 echo "cp_v=-v" >&4
883 echo yes
884else
885 echo "cp_v=" >&4
886 echo no
887fi
888
889echo -n 'checking for cdrom device... '
890if [ -e "$CDROM" ]
891then
892 echo "$CDROM"
893 echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
894 echo '#define ROAR_HAVE_CDROM' >&3
895elif $CROSS_COMPILE
896then
897 echo 'none (cross compiling, use --cdrom to enable CDROM support)'
898else
899 CDROM=$(ls /dev/cdrom /dev/rcd0c 2> /dev/null | head -n 1);
900 if [ -e "$CDROM" ]
901 then
902  echo "$CDROM"
903  echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
904  echo '#define ROAR_HAVE_CDROM' >&3
905 else
906  echo 'none'
907  echo '#define ROAR_HAVE_CDROM' >&3
908 fi
909fi
910
911echo -n 'checking for default tty device... '
912if [ -e "$TTY_DEV" ]
913then
914 echo "$TTY_DEV"
915 echo '#define ROAR_DEFAULT_TTY "'"$TTY_DEV"'"' >&3
916else
917 TTY_DEV=$(ls /dev/tty 2> /dev/null | head -n 1);
918 if [ -e "$TTY_DEV" ]
919 then
920  echo "$TTY_DEV"
921  echo '#define ROAR_DEFAULT_TTY "'"$TTY_DEV"'"' >&3
922 else
923  echo 'none'
924 fi
925fi
926
927echo -n 'checking for OSS device... '
928if [ -e "$OSS_DEV" ]
929then
930 echo "$OSS_DEV"
931 echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
932else
933 OSS_DEV=$(ls /dev/dsp /dev/audio 2> /dev/null | head -n 1);
934 if [ -e "$OSS_DEV" ]
935 then
936  echo "$OSS_DEV"
937  echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
938 else
939  echo 'none'
940 fi
941fi
942
943echo 'checking for decnet status file... '"$PROC_NET_DECNET"
944echo '#define ROAR_PROC_NET_DECNET "'"$PROC_NET_DECNET"'"' >&3
945
946
947echo 'checking for default audio group... '"$DEFAULT_GRP"
948echo '#define ROAR_DEFAULT_SOCKGRP "'"$DEFAULT_GRP"'"' >&3
949
950cat >&3 << EOF
951
952#endif
953
954//ll
955EOF
956
957cd plugins
958
959if $LIBAO
960then
961 echo 'running libao plugin configure...'
962  cd ao/
963 if [ "$AO_INST_DIR" = '' ]
964 then
965  ./configure --force-have-roar
966 else
967  ./configure --force-have-roar --inst-dir "$AO_INST_DIR"
968 fi
969 cd ..
970else
971 echo "running libao plugin configure... disabled by user"
972fi
973
974if $XMMS
975then
976 echo 'running xmms plugin configure...'
977  cd xmms/
978 if [ "$XMMS_INST_DIR" = '' ]
979 then
980  ./configure --force-have-roar
981 else
982  ./configure --force-have-roar --inst-dir "$XMMS_INST_DIR"
983 fi
984 cd ..
985else
986 echo "running xmms plugin configure... disabled by user"
987fi
988
989cd ..
990
991rm -f $TF_C $TF_E
992
993mv config.h include/roaraudio/
994echo 'config.h created and moved into include/roaraudio/'
995
996echo "$SYSNAME" | if grep CYGWIN > /dev/null
997then
998 rm -f $TF_E.exe
999 echo 'patching Makefiles for cygwin...'
1000 find . -name Makefile -print0 | xargs -0 sed 's/\.so/.dll'/g -i
1001fi
1002
1003#ll
Note: See TracBrowser for help on using the repository browser.