source: roaraudio/configure @ 1641:e7842a0c3e84

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

test for libsendfile

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