source: roaraudio/configure @ 1607:a400220f1564

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

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

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