source: roaraudio/configure @ 1638:2b49e3ca9730

Last change on this file since 1638:2b49e3ca9730 was 1638:2b49e3ca9730, checked in by phi, 15 years ago

echo info and new lion if no sqrtl() found because of not GNU/Linux

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