source: roaraudio/configure @ 1091:00defdcb1f0f

Last change on this file since 1091:00defdcb1f0f was 1091:00defdcb1f0f, checked in by phi, 15 years ago

look for libws2_32, too

  • Property exe set to *
File size: 15.0 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_UNIX          %            UNIX          c          -- sys/socket.h sys/un.h
438test_lib_defmake ROAR_HAVE_IPX           %            IPX           c          -- netipx/ipx.h
439test_lib_defmake ROAR_HAVE_OSS           %            OSS           c          -- sys/ioctl.h sys/soundcard.h
440test_lib_defmake ROAR_HAVE_OSS_BSD       %            BSDOSS        c          -- sys/ioctl.h soundcard.h
441test_lib_defmake ROAR_HAVE_LIBWSOCK32    %            WinSockP0     wsock32    -- winsock2.h
442test_lib_defmake ROAR_HAVE_LIBWS2_32     %            WinSockP1     ws2_32     -- winsock2.h
443
444# add a better test here
445test_lib 'linux sendfile()'       -- sys/sendfile.h && echo '#define ROAR_HAVE_LINUX_SENDFILE' >&3
446
447
448echo -n 'checking for IPv6... '
449
450echo '#include <sys/socket.h>'  > $TF_C
451echo '#include <netinet/in.h>' >> $TF_C
452echo 'int main (void) { struct sockaddr_in6 in6; return 0; }' >> $TF_C
453
454if $CCTF 2> /dev/null;
455then
456 echo '#define ROAR_HAVE_IPV6' >&3
457 echo yes
458else
459 echo no
460fi
461
462
463echo -n 'checking for mlock()... '
464
465echo '#include <sys/mman.h>' > $TF_C
466echo 'int main (void) { mlock((void*)0, 0); return 0; }' >> $TF_C
467
468if $CCTF 2> /dev/null;
469then
470 echo '#define ROAR_HAVE_MLOCK' >&3
471 echo yes
472else
473 echo no
474fi
475
476echo -n 'checking for square root func... '
477
478echo "$SYSNAME" | if grep CYGWIN > /dev/null
479then
480 echo 'sqrt() (cygwin)'
481else
482 echo '#include <math.h>' > $TF_C
483 echo 'int main (void) { sqrtl(0); return 0; }' >> $TF_C
484
485 if $CCTF -lm 2> /dev/null;
486 then
487  echo '#define ROAR_HAVE_SQRTL' >&3
488  echo 'sqrtl()'
489 else
490  echo 'sqrt()'
491 fi
492fi
493
494echo -n 'checking for inline funcs... '
495
496echo 'inline int test (void) { return 0; }' > $TF_C
497echo 'int main (void) { return test(); }'  >> $TF_C
498
499if $CCTF 2> /dev/null;
500then
501 echo '#define ROAR_HAVE_INLINE' >&3
502 echo yes
503else
504 echo no
505fi
506
507echo -n 'checking for broken peercred... '
508echo '#include <roaraudio.h>' > $TF_C
509echo 'int main (void) { struct ucred cred; return 0; }'  >> $TF_C
510
511if $CCTF 2> /dev/null;
512then
513 echo working
514else
515 echo '#define ROAR_BROKEN_PEERCRED' >&3
516 echo broken
517fi
518
519echo -n 'checking for safe 32 bit integer overflow... '
520
521cat > $TF_C << EOF
522#include <stdio.h>
523#include <stdint.h>
524#define TYPE uint32_t
525#define MAX  ((TYPE)4294967295U)
526
527int main (void) {
528 TYPE a = MAX;
529
530 a += 2;
531
532 if ( a == 1 ) {
533  printf("#define ROAR_HAVE_SAFE_OVERFLOW\n");
534  return 0;
535 }
536
537 return 1;
538}
539EOF
540
541if $CCTF 2> /dev/null;
542then
543 $TF_E >&3
544 if [ "$?" = '0' ]
545 then
546  echo yes
547 else
548  echo no
549 fi
550else
551 echo 'no (can not compile!, no stdint.h?)'
552fi
553
554echo -n 'checking for __LP64__... '
555cat > $TF_C << EOF
556#include <stdio.h>
557
558int main (void) {
559#ifdef __LP64__
560 fprintf(stderr, "set by compiler\n");
561#else
562 if ( sizeof(int) == sizeof(void*) ) {
563  fprintf(stderr, "no need to set\n");
564 } else {
565  fprintf(stderr, "need to set\n");
566  printf("\n#ifndef __LP64__\n#define __LP64__\n#endif\n\n");
567 }
568#endif
569 return 0;
570}
571EOF
572if $CCTF 2> /dev/null;
573then
574 $TF_E >&3
575else
576 echo 'error, can not compile'
577 exit 1
578fi
579
580echo -n 'checking for 64 bit types... '
581cat > $TF_C << EOF
582#include <stdio.h>
583#include <stdint.h>
584
585int main (void) {
586 char * i64 = NULL, * ui64 = NULL;
587
588 if ( sizeof(int) == 8 ) {
589  i64 = "int"; ui64 = "unsigned int";
590 } else if ( sizeof(long int) == 8 ) {
591  i64 = "long int"; ui64 = "unsigned long int";
592 } else if ( sizeof(long long int) == 8 ) {
593  i64 = "long long int"; ui64 = "unsigned long long int";
594 } else if ( sizeof(int64_t) == 8 ) {
595  i64 = "int64_t"; ui64 = "uint64_t";
596 } else {
597  fprintf(stderr, "none\n");
598  return 0;
599 }
600
601 fprintf(stderr, "%s, %s\n", i64, ui64);
602 printf("#define ROAR_NATIVE_INT64 %s\n#define ROAR_NATIVE_UINT64 %s\n", i64, ui64);
603
604 return 0;
605}
606EOF
607if $CCTF 2> /dev/null;
608then
609 $TF_E >&3
610else
611 echo 'error, can not compile'
612 exit 1
613fi
614
615
616echo -n 'checking if cp supports -v... '
617if cp -v --help > /dev/null 2> /dev/null
618then
619 echo "cp_v=-v" >&4
620 echo yes
621else
622 echo "cp_v=" >&4
623 echo no
624fi
625
626echo -n 'checking for cdrom device... '
627if [ -e "$CDROM" ]
628then
629 echo "$CDROM"
630 echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
631else
632 CDROM=$(ls /dev/cdrom /dev/rcd0c 2> /dev/null | head -n 1);
633 if [ -e "$CDROM" ]
634 then
635  echo "$CDROM"
636  echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
637 else
638  echo 'none'
639 fi
640fi
641
642echo -n 'checking for OSS device... '
643if [ -e "$OSS_DEV" ]
644then
645 echo "$OSS_DEV"
646 echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
647else
648 OSS_DEV=$(ls /dev/dsp /dev/audio 2> /dev/null | head -n 1);
649 if [ -e "$OSS_DEV" ]
650 then
651  echo "$OSS_DEV"
652  echo '#define ROAR_DEFAULT_OSS_DEV "'"$OSS_DEV"'"' >&3
653 else
654  echo 'none'
655 fi
656fi
657
658echo 'checking for decnet status file... '"$PROC_NET_DECNET"
659echo '#define ROAR_PROC_NET_DECNET "'"$PROC_NET_DECNET"'"' >&3
660
661
662echo 'checking for default audio group... '"$DEFAULT_GRP"
663echo '#define ROAR_DEFAULT_SOCKGRP "'"$DEFAULT_GRP"'"' >&3
664
665cat >&3 << EOF
666
667#endif
668
669//ll
670EOF
671
672echo 'running libao plugin configure...'
673 cd plugins/ao/
674if [ "$AO_INST_DIR" = '' ]
675then
676 ./configure --force-have-roar
677else
678 ./configure --force-have-roar --inst-dir "$AO_INST_DIR"
679fi
680
681echo 'running xmms plugin configure...'
682 cd ../xmms/
683if [ "$XMMS_INST_DIR" = '' ]
684then
685 ./configure --force-have-roar
686else
687 ./configure --force-have-roar --inst-dir "$XMMS_INST_DIR"
688fi
689
690cd ../..
691
692rm -f $TF_C $TF_E
693
694mv config.h include/roaraudio/
695echo 'config.h created and moved into include/roaraudio/'
696
697echo "$SYSNAME" | if grep CYGWIN > /dev/null
698then
699 rm -f $TF_E.exe
700 echo 'patching Makefiles for cygwin...'
701 find . -name Makefile -print0 | xargs -0 sed 's/\.so/.dll'/g -i
702fi
703
704#ll
Note: See TracBrowser for help on using the repository browser.