source: roaraudio/configure @ 1088:ea793131068f

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

disable proxy code for win32 per default

  • 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   PROXY=false
211  ;;
212 esac;
213
214 shift;
215done
216
217
218CCTF="false"
219
220test_lib () {
221 echo > $TF_C
222
223 echo -n "checking for $1... "
224 shift;
225
226 LIBS=''
227
228 while [ "$1" != '--' ]
229 do
230  LIBS="$LIBS -l$1"
231  shift;
232 done
233
234 shift;
235
236 LIBS=$(echo "$LIBS" | sed 's/-l-l/-l/g; s/-l-L/-L/g;')
237
238 while [ "$1" != '' ]
239 do
240  echo "#include <$1>" >> $TF_C
241  shift;
242 done
243
244 echo 'int main (void) { return 0; }' >> $TF_C
245
246 $CCTF $LIBS 2> /dev/null;
247
248 R=$?
249
250 if [ "$R" = '0' ]
251 then
252  echo 'yes'
253 else
254  echo 'no'
255 fi
256
257 return $R
258}
259
260test_lib_defmake () {
261 def="$1"
262 subdir="$2"
263 shift
264 shift
265 name="$1"
266 lib="$2"
267 shift
268
269 [ "$subdir" = '%' ] && subdir=''
270
271 if [ "$lib" != '--' ]
272 then
273  eval _no="\$no_lib_$lib";
274
275  if [ "$_no" != '' ]
276  then
277    echo "checking for $1... disabled by user"
278   [ "$subdir" != '' ] && \
279    echo "subdir_$subdir=" >&4
280   echo "lib_$lib=" >&4
281   return;
282  fi
283 fi
284
285 LIBS=$($PKG_CONFIG --silence-errors --libs $lib)
286 if [ "$?" != '0' ]
287 then
288  LIBS="-l$lib"
289 fi
290
291 if test_lib "$name" $LIBS "$@"
292 then
293  subdir_var='subdir_'"`echo $subdir | tr / _`"
294  echo "#define $def"            >&3
295  [ "$subdir" != '' ] && \
296   echo "$subdir_var=$subdir" >&4
297  echo "lib_$lib=$LIBS" >&4
298 else
299  [ "$subdir" != '' ] && \
300   echo "subdir_$subdir=" >&4
301  echo "lib_$lib=" >&4
302 fi
303}
304
305test_tool_defmake () {
306 DEF="$1"
307 NAME="$2"
308 shift;
309 shift;
310 echo -n "checking for $NAME... "
311
312 if $RUNTIME_DETECT
313 then
314  echo "$1 (runtime detect)"
315 echo "#define $DEF "\""$1"\" >&3
316 else
317
318  LIST=$(which "$@" 2> /dev/null | grep ^/ | head -n 1)
319
320  if [ "$LIST" = '' ]
321  then
322   echo 'no'
323  else
324   echo $LIST
325   echo "#define $DEF "\""$LIST"\" >&3
326  fi
327 fi
328}
329
330exec 3> config.h 4> Makefile.conf
331
332if [ "$SYSNAME" = 'Darwin' ]
333then
334 echo "Adding $SYSNAME shared lib arguments..."
335 SHARED="$SHARED -fno-common -dynamiclib -compatibility_version 0.1 -current_version 0.1.0"
336 SHARED_CF="$SHARED_CF -fno-common"
337elif [ "$SYSNAME" = 'NetBSD' ]
338then
339 echo "Adding $SYSNAME libpath arguments..."
340 LDPATH="$LDPATH -L/usr/local/lib/"
341elif [ "$SYSNAME" = 'FreeBSD' ]
342then
343 echo "Adding $SYSNAME search path arguments..."
344 LDPATH="$LDPATH -L/usr/local/lib/"
345 INCPATH="$INCPATH -I/usr/local/include/"
346 [ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='wheel'
347fi
348
349[ "$PREFIX_BIN" = '' ] && PREFIX_BIN="$PREFIX/bin/"
350[ "$PREFIX_LIB" = '' ] && PREFIX_LIB="$PREFIX/lib/"
351[ "$PREFIX_INC" = '' ] && PREFIX_INC="$PREFIX/include/"
352[ "$PREFIX_MAN" = '' ] && PREFIX_MAN="$PREFIX/share/man/"
353
354[ "$DEFAULT_GRP" = '' ] && DEFAULT_GRP='audio'
355
356# now write the cc name to Makefile.conf
357{
358 echo "SHARED=$SHARED"
359 echo "SHARED_CF=$SHARED_CF"
360 echo "CC=$CC"
361 echo "LDPATH=$LDPATH"
362 echo "INCPATH=$INCPATH"
363 echo "PREFIX=$PREFIX"
364 echo "PREFIX_BIN=$PREFIX_BIN"
365 echo "PREFIX_LIB=$PREFIX_LIB"
366 echo "PREFIX_INC=$PREFIX_INC"
367 echo "PREFIX_MAN=$PREFIX_MAN"
368} >&4
369
370CCTF="$CC $LDPATH $INCPATH -Iinclude/ -o $TF_E $TF_C"
371
372cat >&3 << EOF
373//config.h:
374
375#ifndef _ROARAUDIO_CONFIG_H_
376#define _ROARAUDIO_CONFIG_H_
377
378EOF
379
380{
381 echo '/* uname: ' $(uname -a) '*/'
382 echo '/* Date : ' $(date)  '*/'
383 echo
384 [ "$DEFAULT_RATE"     = '' ] || echo "#define ROAR_RATE_DEFAULT     $DEFAULT_RATE"
385 [ "$DEFAULT_CHANNELS" = '' ] || echo "#define ROAR_CHANNELS_DEFAULT $DEFAULT_CHANNELS"
386 [ "$DEFAULT_BITS"     = '' ] || echo "#define ROAR_BITS_DEFAULT     $DEFAULT_BITS"
387 echo
388 $ALAW     && echo '#define ROAR_SUPPORT_ALAW'
389 $ALAW_RW  && echo '#define ROAR_SUPPORT_ALAW_RW'
390 $MULAW    && echo '#define ROAR_SUPPORT_MULAW'
391 $MULAW_RW && echo '#define ROAR_SUPPORT_MULAW_RW'
392 $PROXY    && echo '#define ROAR_SUPPORT_PROXY'
393 echo
394 $TARGET_WIN32 && echo '#define ROAR_TARGET_WIN32'
395 echo
396} >&3
397
398#                 #define                  name         cmds...
399test_tool_defmake ROAR_HAVE_BIN_OGG123     ogg123       ogg123
400test_tool_defmake ROAR_HAVE_BIN_FLAC       flac         flac
401test_tool_defmake ROAR_HAVE_BIN_TIMIDITY   TiMidity++   timidity
402test_tool_defmake ROAR_HAVE_BIN_CDPARANOIA cdparanoia   cdparanoia
403test_tool_defmake ROAR_HAVE_BIN_WGET       Wget         wget
404test_tool_defmake ROAR_HAVE_BIN_GNUPLOT    gnuplot      gnuplot
405test_tool_defmake ROAR_HAVE_BIN_SSH        OpenSSH      ssh
406
407echo >&3
408
409test_lib 'Math Library' m          -- math.h                         && echo '#define ROAR_HAVE_LIBM' >&3
410if test_lib 'realtime Library' rt -- sys/mman.h mqueue.h semaphore.h
411then
412 {
413  echo '#define ROAR_HAVE_LIBRT'
414  echo '#define ROAR_NEED_LIBRT'
415 } >&3
416fi
417
418echo >&3
419
420#                #define                 subdir       name          -lxxx      -- header
421test_lib_defmake ROAR_HAVE_ESD           libroaresd   EsounD        esd        -- esd.h
422test_lib_defmake ROAR_HAVE_LIBAO         plugins/ao   libao         ao         -- ao/ao.h ao/plugin.h
423test_lib_defmake ROAR_HAVE_LIBVORBIS     %            libvorbis     vorbis     -- vorbis/codec.h
424test_lib_defmake ROAR_HAVE_LIBVORBISFILE %            libvorbisfile vorbisfile -- vorbis/vorbisfile.h
425test_lib_defmake ROAR_HAVE_LIBVORBISENC  %            libvorbisenc  vorbisenc  -- vorbis/vorbisenc.h
426test_lib_defmake ROAR_HAVE_LIBSPEEX      %            libspeex      speex      -- speex/speex.h speex/speex_stereo.h
427test_lib_defmake ROAR_HAVE_LIBCELT       %            libcelt       celt       -- celt/celt.h celt/celt_header.h
428test_lib_defmake ROAR_HAVE_LIBOGGZ       %            liboggz       oggz       -- oggz/oggz.h
429test_lib_defmake ROAR_HAVE_LIBSNDFILE    %            libsndfile    sndfile    -- sndfile.h
430test_lib_defmake ROAR_HAVE_LIBFISHSOUND  roarfish     libfishsound  fishsound  -- fishsound/fishsound.h
431test_lib_defmake ROAR_HAVE_LIBSHOUT      %            libshout      shout      -- shout/shout.h
432test_lib_defmake ROAR_HAVE_LIBPULSE      libroarpulse libpulse      pulse      -- pulse/pulseaudio.h pulse/simple.h
433test_lib_defmake ROAR_HAVE_LIBY2         libroaryiff  libyiff       Y2         -- Y2/Y.h Y2/Ylib.h
434test_lib_defmake ROAR_HAVE_LIBARTSC      libroararts  libartsc      artsc      -- kde/artsc/artsc.h
435test_lib_defmake ROAR_HAVE_LIBOSSAUDIO   %            libossaudio   ossaudio   -- sys/ioctl.h
436test_lib_defmake ROAR_HAVE_LIBDNET       %            libdnet       dnet       -- sys/socket.h netdnet/dn.h netdnet/dnetdb.h
437test_lib_defmake ROAR_HAVE_IPX           %            IPX           c          -- netipx/ipx.h
438test_lib_defmake ROAR_HAVE_OSS           %            OSS           c          -- sys/ioctl.h sys/soundcard.h
439test_lib_defmake ROAR_HAVE_OSS_BSD       %            BSDOSS        c          -- sys/ioctl.h soundcard.h
440test_lib_defmake ROAR_HAVE_LIBWSOCK32    %            WinSock       wsock32    -- winsock2.h
441
442# add a better test here
443test_lib 'linux sendfile()'       -- sys/sendfile.h && echo '#define ROAR_HAVE_LINUX_SENDFILE' >&3
444
445
446echo -n 'checking for IPv6... '
447
448echo '#include <sys/socket.h>'  > $TF_C
449echo '#include <netinet/in.h>' >> $TF_C
450echo 'int main (void) { struct sockaddr_in6 in6; return 0; }' >> $TF_C
451
452if $CCTF 2> /dev/null;
453then
454 echo '#define ROAR_HAVE_IPV6' >&3
455 echo yes
456else
457 echo no
458fi
459
460
461echo -n 'checking for mlock()... '
462
463echo '#include <sys/mman.h>' > $TF_C
464echo 'int main (void) { mlock((void*)0, 0); return 0; }' >> $TF_C
465
466if $CCTF 2> /dev/null;
467then
468 echo '#define ROAR_HAVE_MLOCK' >&3
469 echo yes
470else
471 echo no
472fi
473
474echo -n 'checking for square root func... '
475
476echo "$SYSNAME" | if grep CYGWIN > /dev/null
477then
478 echo 'sqrt() (cygwin)'
479else
480 echo '#include <math.h>' > $TF_C
481 echo 'int main (void) { sqrtl(0); return 0; }' >> $TF_C
482
483 if $CCTF -lm 2> /dev/null;
484 then
485  echo '#define ROAR_HAVE_SQRTL' >&3
486  echo 'sqrtl()'
487 else
488  echo 'sqrt()'
489 fi
490fi
491
492echo -n 'checking for inline funcs... '
493
494echo 'inline int test (void) { return 0; }' > $TF_C
495echo 'int main (void) { return test(); }'  >> $TF_C
496
497if $CCTF 2> /dev/null;
498then
499 echo '#define ROAR_HAVE_INLINE' >&3
500 echo yes
501else
502 echo no
503fi
504
505echo -n 'checking for broken peercred... '
506echo '#include <roaraudio.h>' > $TF_C
507echo 'int main (void) { struct ucred cred; return 0; }'  >> $TF_C
508
509if $CCTF 2> /dev/null;
510then
511 echo working
512else
513 echo '#define ROAR_BROKEN_PEERCRED' >&3
514 echo broken
515fi
516
517echo -n 'checking for safe 32 bit integer overflow... '
518
519cat > $TF_C << EOF
520#include <stdio.h>
521#include <stdint.h>
522#define TYPE uint32_t
523#define MAX  ((TYPE)4294967295U)
524
525int main (void) {
526 TYPE a = MAX;
527
528 a += 2;
529
530 if ( a == 1 ) {
531  printf("#define ROAR_HAVE_SAFE_OVERFLOW\n");
532  return 0;
533 }
534
535 return 1;
536}
537EOF
538
539if $CCTF 2> /dev/null;
540then
541 $TF_E >&3
542 if [ "$?" = '0' ]
543 then
544  echo yes
545 else
546  echo no
547 fi
548else
549 echo 'no (can not compile!, no stdint.h?)'
550fi
551
552echo -n 'checking for __LP64__... '
553cat > $TF_C << EOF
554#include <stdio.h>
555
556int main (void) {
557#ifdef __LP64__
558 fprintf(stderr, "set by compiler\n");
559#else
560 if ( sizeof(int) == sizeof(void*) ) {
561  fprintf(stderr, "no need to set\n");
562 } else {
563  fprintf(stderr, "need to set\n");
564  printf("\n#ifndef __LP64__\n#define __LP64__\n#endif\n\n");
565 }
566#endif
567 return 0;
568}
569EOF
570if $CCTF 2> /dev/null;
571then
572 $TF_E >&3
573else
574 echo 'error, can not compile'
575 exit 1
576fi
577
578echo -n 'checking for 64 bit types... '
579cat > $TF_C << EOF
580#include <stdio.h>
581#include <stdint.h>
582
583int main (void) {
584 char * i64 = NULL, * ui64 = NULL;
585
586 if ( sizeof(int) == 8 ) {
587  i64 = "int"; ui64 = "unsigned int";
588 } else if ( sizeof(long int) == 8 ) {
589  i64 = "long int"; ui64 = "unsigned long int";
590 } else if ( sizeof(long long int) == 8 ) {
591  i64 = "long long int"; ui64 = "unsigned long long int";
592 } else if ( sizeof(int64_t) == 8 ) {
593  i64 = "int64_t"; ui64 = "uint64_t";
594 } else {
595  fprintf(stderr, "none\n");
596  return 0;
597 }
598
599 fprintf(stderr, "%s, %s\n", i64, ui64);
600 printf("#define ROAR_NATIVE_INT64 %s\n#define ROAR_NATIVE_UINT64 %s\n", i64, ui64);
601
602 return 0;
603}
604EOF
605if $CCTF 2> /dev/null;
606then
607 $TF_E >&3
608else
609 echo 'error, can not compile'
610 exit 1
611fi
612
613
614echo -n 'checking if cp supports -v... '
615if cp -v --help > /dev/null 2> /dev/null
616then
617 echo "cp_v=-v" >&4
618 echo yes
619else
620 echo "cp_v=" >&4
621 echo no
622fi
623
624echo -n 'checking for cdrom device... '
625if [ -e "$CDROM" ]
626then
627 echo "$CDROM"
628 echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
629else
630 CDROM=$(ls /dev/cdrom /dev/rcd0c 2> /dev/null | head -n 1);
631 if [ -e "$CDROM" ]
632 then
633  echo "$CDROM"
634  echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
635 else
636  echo 'none'
637 fi
638fi
639
640echo -n 'checking for OSS device... '
641if [ -e "$OSS_DEV" ]
642then
643 echo "$OSS_DEV"
644 echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
645else
646 OSS_DEV=$(ls /dev/dsp /dev/audio 2> /dev/null | head -n 1);
647 if [ -e "$OSS_DEV" ]
648 then
649  echo "$OSS_DEV"
650  echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
651 else
652  echo 'none'
653 fi
654fi
655
656echo 'checking for decnet status file... '"$PROC_NET_DECNET"
657echo '#define ROAR_PROC_NET_DECNET "'"$PROC_NET_DECNET"'"' >&3
658
659
660echo 'checking for default audio group... '"$DEFAULT_GRP"
661echo '#define ROAR_DEFAULT_SOCKGRP "'"$DEFAULT_GRP"'"' >&3
662
663cat >&3 << EOF
664
665#endif
666
667//ll
668EOF
669
670echo 'running libao plugin configure...'
671 cd plugins/ao/
672if [ "$AO_INST_DIR" = '' ]
673then
674 ./configure --force-have-roar
675else
676 ./configure --force-have-roar --inst-dir "$AO_INST_DIR"
677fi
678
679echo 'running xmms plugin configure...'
680 cd ../xmms/
681if [ "$XMMS_INST_DIR" = '' ]
682then
683 ./configure --force-have-roar
684else
685 ./configure --force-have-roar --inst-dir "$XMMS_INST_DIR"
686fi
687
688cd ../..
689
690rm -f $TF_C $TF_E
691
692mv config.h include/roaraudio/
693echo 'config.h created and moved into include/roaraudio/'
694
695echo "$SYSNAME" | if grep CYGWIN > /dev/null
696then
697 rm -f $TF_E.exe
698 echo 'patching Makefiles for cygwin...'
699 find . -name Makefile -print0 | xargs -0 sed 's/\.so/.dll'/g -i
700fi
701
702#ll
Note: See TracBrowser for help on using the repository browser.