source: roaraudio/configure @ 1087:4d0c609b456d

Last change on this file since 1087:4d0c609b456d was 1086:0b429d3ad30d, checked in by phi, 15 years ago

added support to disale proxy code

  • Property exe set to *
File size: 14.8 KB
Line 
1#!/bin/sh
2
3# check for bash...
4
5if [ "$(echo -n)" = '-n' ]
6then
7 SHELL=$(which bash sh 2> /dev/null | grep ^/ | head -n 1)
8 exec $SHELL $0 "$@"
9fi
10
11
12#set -x
13
14TF_C=testit.c
15TF_E=./testit
16LDPATH=''
17INCPATH=''
18
19SYSNAME='unknown'
20SHARED='-shared'
21SHARED_CF=''
22PKG_CONFIG=false
23RUNTIME_DETECT=false
24
25PREFIX='/usr/local'
26PREFIX_BIN=''
27PREFIX_LIB=''
28PREFIX_INC=''
29PREFIX_MAN=''
30
31CDROM="none"
32OSS_DEV="none"
33PROC_NET_DECNET="/proc/net/decnet"
34
35DEFAULT_GRP=''
36
37AO_INST_DIR=''
38XMMS_INST_DIR=''
39
40DEFAULT_RATE=''
41DEFAULT_CHANNELS=''
42DEFAULT_BITS=''
43
44ALAW=true
45MULAW=true
46ALAW_RW=true
47MULAW_RW=true
48
49PROXY=true
50
51TARGET_WIN32=false
52
53echo -n "checking for C compiler... "
54if [ "$CC" != '' ]
55then
56 echo $CC
57else
58 CC=$(which gcc cc 2> /dev/null | grep ^/ | head -n 1)
59 if [ "$CC" = '' ]
60 then
61  echo 'none'
62  exit 1;
63 fi
64 echo $CC
65fi
66
67echo -n "checking for pkg-config... "
68PKG_CONFIG=$(which pkg-config false 2> /dev/null | grep ^/ | head -n 1)
69if $PKG_CONFIG --help > /dev/null 2> /dev/null
70then
71 echo $PKG_CONFIG
72else
73 echo no
74fi
75
76#Makefile.conf not yet open, write it later
77
78echo -n "checking for sysname... "
79SYSNAME=$(uname -s)
80echo "$SYSNAME"
81
82while [ "$1" != '' ]
83do
84 case "$1" in
85  '--help')
86   echo '--help                      - This Help'
87   echo '--ldpath DIR                - Add DIR to (compile time) search list for libs'
88   echo '--incpath DIR               - Add DIR to search list for headers'
89   echo '--addpath DIR               - Add DIR/lib to lib, DIR/include to header search list'
90   echo '--cdrom DEV                 - Set default CDRum device'
91   echo '--proc-net-decnet FILE      - Set DECnet file for DECnet support auto detecting'
92   echo '                              (ignore this on non-Linux)'
93   echo '--no-LIB                    - disable LIB'
94   echo '--runtime-detect            - do as much as posible auto detecting on runtime (for distributors)'
95   echo '--ao-install-dir DIR'
96   echo '--xmms-install-dir DIR'
97   echo '--prefix DIR'
98   echo '--prefix-bin DIR'
99   echo '--prefix-lib DIR'
100   echo '--prefix-inc DIR'
101   echo '--prefix-man DIR'
102   echo '--default-rate RATE'
103   echo '--default-channels CHANNELS'
104   echo '--default-bits BITS'
105   echo '--without-alaw'
106   echo '--without-alaw-rw'
107   echo '--without-mulaw'
108   echo '--without-mulaw-rw'
109   echo '--without-proxy'
110   echo '--target-win32'
111   exit 0;
112  ;;
113  '--ldpath')
114   LDPATH="$LDPATH -L$2"
115   shift;
116  ;;
117  '--incpath')
118   INCPATH="$INCPATH -I$2"
119   shift;
120  ;;
121  '--addpath')
122   LDPATH="$LDPATH -L$2/lib/"
123   INCPATH="$INCPATH -I$2/include/"
124   shift;
125  ;;
126  '--cc')
127   CC="$2"
128   shift;
129  ;;
130  '--cdrom')
131   CDROM="$2"
132   shift;
133  ;;
134  '--oss-dev')
135   OSS_DEV="$2"
136   shift;
137  ;;
138  '--audio-group')
139   DEFAULT_GRP="$2"
140   shift;
141  ;;
142  '--no-'*)
143   lib=$(echo "$1" | sed 's/^--no-//')
144   eval no_lib_$lib=true
145  ;;
146  '--runtime-detect')
147   RUNTIME_DETECT=true
148  ;;
149  '--ao-install-dir')
150   AO_INST_DIR="$2"
151   shift;
152  ;;
153  '--xmms-install-dir')
154   XMMS_INST_DIR="$2"
155   shift;
156  ;;
157  '--default-rate')
158   DEFAULT_RATE="$2"
159   shift;
160  ;;
161  '--default-channels')
162   DEFAULT_CHANNELS="$2"
163   shift;
164  ;;
165  '--default-bits')
166   DEFAULT_BITS="$2"
167   shift;
168  ;;
169  '--without-alaw')
170   ALAW=false
171   ALAW_RW=false
172  ;;
173  '--without-alaw-rw')
174   ALAW_RW=false
175  ;;
176  '--without-mulaw')
177   MULAW=false
178   MULAW_RW=false
179  ;;
180  '--without-mulaw-rw')
181   MULAW_RW=false
182  ;;
183  '--without-proxy')
184   PROXY=false
185  ;;
186  '--prefix')
187   PREFIX="$2"
188   shift;
189  ;;
190  '--prefix-bin')
191   PREFIX_BIN="$2"
192   shift;
193  ;;
194  '--prefix-lib')
195   PREFIX_LIB="$2"
196   shift;
197  ;;
198  '--prefix-inc')
199   PREFIX_INC="$2"
200   shift;
201  ;;
202  '--prefix-man')
203   PREFIX_MAN="$2"
204   shift;
205  ;;
206  '--target-win32')
207   RUNTIME_DETECT=true
208   no_lib_dnet=true
209   TARGET_WIN32=true
210  ;;
211 esac;
212
213 shift;
214done
215
216
217CCTF="false"
218
219test_lib () {
220 echo > $TF_C
221
222 echo -n "checking for $1... "
223 shift;
224
225 LIBS=''
226
227 while [ "$1" != '--' ]
228 do
229  LIBS="$LIBS -l$1"
230  shift;
231 done
232
233 shift;
234
235 LIBS=$(echo "$LIBS" | sed 's/-l-l/-l/g; s/-l-L/-L/g;')
236
237 while [ "$1" != '' ]
238 do
239  echo "#include <$1>" >> $TF_C
240  shift;
241 done
242
243 echo 'int main (void) { return 0; }' >> $TF_C
244
245 $CCTF $LIBS 2> /dev/null;
246
247 R=$?
248
249 if [ "$R" = '0' ]
250 then
251  echo 'yes'
252 else
253  echo 'no'
254 fi
255
256 return $R
257}
258
259test_lib_defmake () {
260 def="$1"
261 subdir="$2"
262 shift
263 shift
264 name="$1"
265 lib="$2"
266 shift
267
268 [ "$subdir" = '%' ] && subdir=''
269
270 if [ "$lib" != '--' ]
271 then
272  eval _no="\$no_lib_$lib";
273
274  if [ "$_no" != '' ]
275  then
276    echo "checking for $1... disabled by user"
277   [ "$subdir" != '' ] && \
278    echo "subdir_$subdir=" >&4
279   echo "lib_$lib=" >&4
280   return;
281  fi
282 fi
283
284 LIBS=$($PKG_CONFIG --silence-errors --libs $lib)
285 if [ "$?" != '0' ]
286 then
287  LIBS="-l$lib"
288 fi
289
290 if test_lib "$name" $LIBS "$@"
291 then
292  subdir_var='subdir_'"`echo $subdir | tr / _`"
293  echo "#define $def"            >&3
294  [ "$subdir" != '' ] && \
295   echo "$subdir_var=$subdir" >&4
296  echo "lib_$lib=$LIBS" >&4
297 else
298  [ "$subdir" != '' ] && \
299   echo "subdir_$subdir=" >&4
300  echo "lib_$lib=" >&4
301 fi
302}
303
304test_tool_defmake () {
305 DEF="$1"
306 NAME="$2"
307 shift;
308 shift;
309 echo -n "checking for $NAME... "
310
311 if $RUNTIME_DETECT
312 then
313  echo "$1 (runtime detect)"
314 echo "#define $DEF "\""$1"\" >&3
315 else
316
317  LIST=$(which "$@" 2> /dev/null | grep ^/ | head -n 1)
318
319  if [ "$LIST" = '' ]
320  then
321   echo 'no'
322  else
323   echo $LIST
324   echo "#define $DEF "\""$LIST"\" >&3
325  fi
326 fi
327}
328
329exec 3> config.h 4> Makefile.conf
330
331if [ "$SYSNAME" = 'Darwin' ]
332then
333 echo "Adding $SYSNAME shared lib arguments..."
334 SHARED="$SHARED -fno-common -dynamiclib -compatibility_version 0.1 -current_version 0.1.0"
335 SHARED_CF="$SHARED_CF -fno-common"
336elif [ "$SYSNAME" = 'NetBSD' ]
337then
338 echo "Adding $SYSNAME libpath arguments..."
339 LDPATH="$LDPATH -L/usr/local/lib/"
340elif [ "$SYSNAME" = 'FreeBSD' ]
341then
342 echo "Adding $SYSNAME search path arguments..."
343 LDPATH="$LDPATH -L/usr/local/lib/"
344 INCPATH="$INCPATH -I/usr/local/include/"
345 [ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='wheel'
346fi
347
348[ "$PREFIX_BIN" = '' ] && PREFIX_BIN="$PREFIX/bin/"
349[ "$PREFIX_LIB" = '' ] && PREFIX_LIB="$PREFIX/lib/"
350[ "$PREFIX_INC" = '' ] && PREFIX_INC="$PREFIX/include/"
351[ "$PREFIX_MAN" = '' ] && PREFIX_MAN="$PREFIX/share/man/"
352
353[ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='audio'
354
355# now write the cc name to Makefile.conf
356{
357 echo "SHARED=$SHARED"
358 echo "SHARED_CF=$SHARED_CF"
359 echo "CC=$CC"
360 echo "LDPATH=$LDPATH"
361 echo "INCPATH=$INCPATH"
362 echo "PREFIX=$PREFIX"
363 echo "PREFIX_BIN=$PREFIX_BIN"
364 echo "PREFIX_LIB=$PREFIX_LIB"
365 echo "PREFIX_INC=$PREFIX_INC"
366 echo "PREFIX_MAN=$PREFIX_MAN"
367} >&4
368
369CCTF="$CC $LDPATH $INCPATH -Iinclude/ -o $TF_E $TF_C"
370
371cat >&3 << EOF
372//config.h:
373
374#ifndef _ROARAUDIO_CONFIG_H_
375#define _ROARAUDIO_CONFIG_H_
376
377EOF
378
379{
380 echo '/* uname: ' $(uname -a) '*/'
381 echo '/* Date : ' $(date)  '*/'
382 echo
383 [ "$DEFAULT_RATE"     = '' ] || echo "#define ROAR_RATE_DEFAULT     $DEFAULT_RATE"
384 [ "$DEFAULT_CHANNELS" = '' ] || echo "#define ROAR_CHANNELS_DEFAULT $DEFAULT_CHANNELS"
385 [ "$DEFAULT_BITS"     = '' ] || echo "#define ROAR_BITS_DEFAULT     $DEFAULT_BITS"
386 echo
387 $ALAW     && echo '#define ROAR_SUPPORT_ALAW'
388 $ALAW_RW  && echo '#define ROAR_SUPPORT_ALAW_RW'
389 $MULAW    && echo '#define ROAR_SUPPORT_MULAW'
390 $MULAW_RW && echo '#define ROAR_SUPPORT_MULAW_RW'
391 $PROXY    && echo '#define ROAR_SUPPORT_PROXY'
392 echo
393 $TARGET_WIN32 && echo '#define ROAR_TARGET_WIN32'
394 echo
395} >&3
396
397#                 #define                  name         cmds...
398test_tool_defmake ROAR_HAVE_BIN_OGG123     ogg123       ogg123
399test_tool_defmake ROAR_HAVE_BIN_FLAC       flac         flac
400test_tool_defmake ROAR_HAVE_BIN_TIMIDITY   TiMidity++   timidity
401test_tool_defmake ROAR_HAVE_BIN_CDPARANOIA cdparanoia   cdparanoia
402test_tool_defmake ROAR_HAVE_BIN_WGET       Wget         wget
403test_tool_defmake ROAR_HAVE_BIN_GNUPLOT    gnuplot      gnuplot
404test_tool_defmake ROAR_HAVE_BIN_SSH        OpenSSH      ssh
405
406echo >&3
407
408test_lib 'Math Library' m          -- math.h                         && echo '#define ROAR_HAVE_LIBM' >&3
409if test_lib 'realtime Library' rt -- sys/mman.h mqueue.h semaphore.h
410then
411 {
412  echo '#define ROAR_HAVE_LIBRT'
413  echo '#define ROAR_NEED_LIBRT'
414 } >&3
415fi
416
417echo >&3
418
419#                #define                 subdir       name          -lxxx      -- header
420test_lib_defmake ROAR_HAVE_ESD           libroaresd   EsounD        esd        -- esd.h
421test_lib_defmake ROAR_HAVE_LIBAO         plugins/ao   libao         ao         -- ao/ao.h ao/plugin.h
422test_lib_defmake ROAR_HAVE_LIBVORBIS     %            libvorbis     vorbis     -- vorbis/codec.h
423test_lib_defmake ROAR_HAVE_LIBVORBISFILE %            libvorbisfile vorbisfile -- vorbis/vorbisfile.h
424test_lib_defmake ROAR_HAVE_LIBVORBISENC  %            libvorbisenc  vorbisenc  -- vorbis/vorbisenc.h
425test_lib_defmake ROAR_HAVE_LIBSPEEX      %            libspeex      speex      -- speex/speex.h speex/speex_stereo.h
426test_lib_defmake ROAR_HAVE_LIBCELT       %            libcelt       celt       -- celt/celt.h celt/celt_header.h
427test_lib_defmake ROAR_HAVE_LIBOGGZ       %            liboggz       oggz       -- oggz/oggz.h
428test_lib_defmake ROAR_HAVE_LIBSNDFILE    %            libsndfile    sndfile    -- sndfile.h
429test_lib_defmake ROAR_HAVE_LIBFISHSOUND  roarfish     libfishsound  fishsound  -- fishsound/fishsound.h
430test_lib_defmake ROAR_HAVE_LIBSHOUT      %            libshout      shout      -- shout/shout.h
431test_lib_defmake ROAR_HAVE_LIBPULSE      libroarpulse libpulse      pulse      -- pulse/pulseaudio.h pulse/simple.h
432test_lib_defmake ROAR_HAVE_LIBY2         libroaryiff  libyiff       Y2         -- Y2/Y.h Y2/Ylib.h
433test_lib_defmake ROAR_HAVE_LIBARTSC      libroararts  libartsc      artsc      -- kde/artsc/artsc.h
434test_lib_defmake ROAR_HAVE_LIBOSSAUDIO   %            libossaudio   ossaudio   -- sys/ioctl.h
435test_lib_defmake ROAR_HAVE_LIBDNET       %            libdnet       dnet       -- sys/socket.h netdnet/dn.h netdnet/dnetdb.h
436test_lib_defmake ROAR_HAVE_IPX           %            IPX           c          -- netipx/ipx.h
437test_lib_defmake ROAR_HAVE_OSS           %            OSS           c          -- sys/ioctl.h sys/soundcard.h
438test_lib_defmake ROAR_HAVE_OSS_BSD       %            BSDOSS        c          -- sys/ioctl.h soundcard.h
439test_lib_defmake ROAR_HAVE_LIBWSOCK32    %            WinSock       wsock32    -- winsock2.h
440
441# add a better test here
442test_lib 'linux sendfile()'       -- sys/sendfile.h && echo '#define ROAR_HAVE_LINUX_SENDFILE' >&3
443
444
445echo -n 'checking for IPv6... '
446
447echo '#include <sys/socket.h>'  > $TF_C
448echo '#include <netinet/in.h>' >> $TF_C
449echo 'int main (void) { struct sockaddr_in6 in6; return 0; }' >> $TF_C
450
451if $CCTF 2> /dev/null;
452then
453 echo '#define ROAR_HAVE_IPV6' >&3
454 echo yes
455else
456 echo no
457fi
458
459
460echo -n 'checking for mlock()... '
461
462echo '#include <sys/mman.h>' > $TF_C
463echo 'int main (void) { mlock((void*)0, 0); return 0; }' >> $TF_C
464
465if $CCTF 2> /dev/null;
466then
467 echo '#define ROAR_HAVE_MLOCK' >&3
468 echo yes
469else
470 echo no
471fi
472
473echo -n 'checking for square root func... '
474
475echo "$SYSNAME" | if grep CYGWIN > /dev/null
476then
477 echo 'sqrt() (cygwin)'
478else
479 echo '#include <math.h>' > $TF_C
480 echo 'int main (void) { sqrtl(0); return 0; }' >> $TF_C
481
482 if $CCTF -lm 2> /dev/null;
483 then
484  echo '#define ROAR_HAVE_SQRTL' >&3
485  echo 'sqrtl()'
486 else
487  echo 'sqrt()'
488 fi
489fi
490
491echo -n 'checking for inline funcs... '
492
493echo 'inline int test (void) { return 0; }' > $TF_C
494echo 'int main (void) { return test(); }'  >> $TF_C
495
496if $CCTF 2> /dev/null;
497then
498 echo '#define ROAR_HAVE_INLINE' >&3
499 echo yes
500else
501 echo no
502fi
503
504echo -n 'checking for broken peercred... '
505echo '#include <roaraudio.h>' > $TF_C
506echo 'int main (void) { struct ucred cred; return 0; }'  >> $TF_C
507
508if $CCTF 2> /dev/null;
509then
510 echo working
511else
512 echo '#define ROAR_BROKEN_PEERCRED' >&3
513 echo broken
514fi
515
516echo -n 'checking for safe 32 bit integer overflow... '
517
518cat > $TF_C << EOF
519#include <stdio.h>
520#include <stdint.h>
521#define TYPE uint32_t
522#define MAX  ((TYPE)4294967295U)
523
524int main (void) {
525 TYPE a = MAX;
526
527 a += 2;
528
529 if ( a == 1 ) {
530  printf("#define ROAR_HAVE_SAFE_OVERFLOW\n");
531  return 0;
532 }
533
534 return 1;
535}
536EOF
537
538if $CCTF 2> /dev/null;
539then
540 $TF_E >&3
541 if [ "$?" = '0' ]
542 then
543  echo yes
544 else
545  echo no
546 fi
547else
548 echo 'no (can not compile!, no stdint.h?)'
549fi
550
551echo -n 'checking for __LP64__... '
552cat > $TF_C << EOF
553#include <stdio.h>
554
555int main (void) {
556#ifdef __LP64__
557 fprintf(stderr, "set by compiler\n");
558#else
559 if ( sizeof(int) == sizeof(void*) ) {
560  fprintf(stderr, "no need to set\n");
561 } else {
562  fprintf(stderr, "need to set\n");
563  printf("\n#ifndef __LP64__\n#define __LP64__\n#endif\n\n");
564 }
565#endif
566 return 0;
567}
568EOF
569if $CCTF 2> /dev/null;
570then
571 $TF_E >&3
572else
573 echo 'error, can not compile'
574 exit 1
575fi
576
577echo -n 'checking for 64 bit types... '
578cat > $TF_C << EOF
579#include <stdio.h>
580#include <stdint.h>
581
582int main (void) {
583 char * i64 = NULL, * ui64 = NULL;
584
585 if ( sizeof(int) == 8 ) {
586  i64 = "int"; ui64 = "unsigned int";
587 } else if ( sizeof(long int) == 8 ) {
588  i64 = "long int"; ui64 = "unsigned long int";
589 } else if ( sizeof(long long int) == 8 ) {
590  i64 = "long long int"; ui64 = "unsigned long long int";
591 } else if ( sizeof(int64_t) == 8 ) {
592  i64 = "int64_t"; ui64 = "uint64_t";
593 } else {
594  fprintf(stderr, "none\n");
595  return 0;
596 }
597
598 fprintf(stderr, "%s, %s\n", i64, ui64);
599 printf("#define ROAR_NATIVE_INT64 %s\n#define ROAR_NATIVE_UINT64 %s\n", i64, ui64);
600
601 return 0;
602}
603EOF
604if $CCTF 2> /dev/null;
605then
606 $TF_E >&3
607else
608 echo 'error, can not compile'
609 exit 1
610fi
611
612
613echo -n 'checking if cp supports -v... '
614if cp -v --help > /dev/null 2> /dev/null
615then
616 echo "cp_v=-v" >&4
617 echo yes
618else
619 echo "cp_v=" >&4
620 echo no
621fi
622
623echo -n 'checking for cdrom device... '
624if [ -e "$CDROM" ]
625then
626 echo "$CDROM"
627 echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
628else
629 CDROM=$(ls /dev/cdrom /dev/rcd0c 2> /dev/null | head -n 1);
630 if [ -e "$CDROM" ]
631 then
632  echo "$CDROM"
633  echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
634 else
635  echo 'none'
636 fi
637fi
638
639echo -n 'checking for OSS device... '
640if [ -e "$OSS_DEV" ]
641then
642 echo "$OSS_DEV"
643 echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
644else
645 OSS_DEV=$(ls /dev/dsp /dev/audio 2> /dev/null | head -n 1);
646 if [ -e "$OSS_DEV" ]
647 then
648  echo "$OSS_DEV"
649  echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
650 else
651  echo 'none'
652 fi
653fi
654
655echo 'checking for decnet status file... '"$PROC_NET_DECNET"
656echo '#define ROAR_PROC_NET_DECNET "'"$PROC_NET_DECNET"'"' >&3
657
658
659echo 'checking for default audio group... '"$DEFAULT_GRP"
660echo '#define ROAR_DEFAULT_SOCKGRP "'"$DEFAULT_GRP"'"' >&3
661
662cat >&3 << EOF
663
664#endif
665
666//ll
667EOF
668
669echo 'running libao plugin configure...'
670 cd plugins/ao/
671if [ "$AO_INST_DIR" = '' ]
672then
673 ./configure --force-have-roar
674else
675 ./configure --force-have-roar --inst-dir "$AO_INST_DIR"
676fi
677
678echo 'running xmms plugin configure...'
679 cd ../xmms/
680if [ "$XMMS_INST_DIR" = '' ]
681then
682 ./configure --force-have-roar
683else
684 ./configure --force-have-roar --inst-dir "$XMMS_INST_DIR"
685fi
686
687cd ../..
688
689rm -f $TF_C $TF_E
690
691mv config.h include/roaraudio/
692echo 'config.h created and moved into include/roaraudio/'
693
694echo "$SYSNAME" | if grep CYGWIN > /dev/null
695then
696 rm -f $TF_E.exe
697 echo 'patching Makefiles for cygwin...'
698 find . -name Makefile -print0 | xargs -0 sed 's/\.so/.dll'/g -i
699fi
700
701#ll
Note: See TracBrowser for help on using the repository browser.