source: roaraudio/configure @ 428:80a282d18194

Last change on this file since 428:80a282d18194 was 428:80a282d18194, checked in by phi, 16 years ago

also print out lib_* to Makefile.conf

  • Property exe set to *
File size: 3.4 KB
Line 
1#!/bin/sh
2
3#set -x
4
5TF_C=testit.c
6TF_E=./testit
7CC=cc
8
9CCTF="$CC -o $TF_E $TF_C"
10
11test_lib () {
12 echo > $TF_C
13
14 echo -n "checking for $1... "
15 shift;
16
17 LIBS=''
18
19 while [ "$1" != '--' ]
20 do
21  LIBS="$LIBS -l$1"
22  shift;
23 done
24
25 shift;
26
27 while [ "$1" != '' ]
28 do
29  echo "#include <$1>" >> $TF_C
30  shift;
31 done
32
33 echo 'int main (void) { return 0; }' >> $TF_C
34
35 $CCTF $LIBS 2> /dev/null;
36
37 R=$?
38
39 if [ "$R" = '0' ]
40 then
41  echo 'yes'
42 else
43  echo 'no'
44 fi
45
46 return $R
47}
48
49test_lib_defmake () {
50 def="$1"
51 subdir="$2"
52 shift
53 shift
54 lib="$2"
55
56 if test_lib $@
57 then
58  echo "#define $def"            >&3
59  [ "$subdir" != '' ] && \
60   echo "subdir_$subdir=$subdir" >&4
61  echo "lib_$lib=-l$lib" >&4
62 else
63  [ "$subdir" != '' ] && \
64   echo "subdir_$subdir=" >&4
65  echo "lib_$lib=" >&4
66 fi
67}
68
69exec 3> config.h 4> Makefile.conf
70
71cat >&3 << EOF
72//config.h:
73
74#ifndef _ROARAUDIO_CONFIG_H_
75#define _ROARAUDIO_CONFIG_H_
76
77EOF
78
79{
80 echo '/* uname: ' $(uname -a) '*/'
81 echo '/* Date : ' $(date)  '*/'
82 echo
83} >&3
84
85test_lib 'Math Library' m          -- math.h                         && echo '#define ROAR_HAVE_LIBM' >&3
86if test_lib 'realtime Library' rt -- sys/mman.h mqueue.h semaphore.h
87then
88 {
89  echo '#define ROAR_HAVE_LIBRT'
90  echo '#define ROAR_NEED_LIBRT'
91 } >&3
92fi
93
94echo >&3
95
96test_lib_defmake ROAR_HAVE_ESD          libroaresd   EsounD         esd        -- esd.h
97test_lib libao          ao         -- ao/ao.h ao/plugin.h                && echo '#define ROAR_HAVE_LIBAO' >&3
98test_lib libvorbis      vorbis     -- vorbis/codec.h                     && echo '#define ROAR_HAVE_LIBVORBIS' >&3
99test_lib libvorbisfile  vorbisfile -- vorbis/vorbisfile.h                && echo '#define ROAR_HAVE_LIBVORBISFILE' >&3
100test_lib libspeex       speex      -- speex/speex.h speex/speex_stereo.h && echo '#define ROAR_HAVE_LIBSPEEX' >&3
101test_lib libcelt        celt       -- celt/celt.h celt/celt_header.h     && echo '#define ROAR_HAVE_LIBCELT' >&3
102test_lib liboggz        oggz       -- oggz/oggz.h                        && echo '#define ROAR_HAVE_LIBOGGZ' >&3
103test_lib libsndfile     sndfile    -- sndfile.h                          && echo '#define ROAR_HAVE_LIBSNDFILE' >&3
104test_lib_defmake ROAR_HAVE_LIBFISHSOUND roarfish     libfishsound   fishsound  -- fishsound/fishsound.h
105test_lib_defmake ROAR_HAVE_LIBPULSE     libroarpulse libpulse       pulse      -- pulse/pulseaudio.h pulse/simple.h
106test_lib_defmake ROAR_HAVE_LIBY2        libroaryiff  libyiff        Y2         -- Y2/Y.h Y2/Ylib.h
107
108# add a better test here
109test_lib 'linux sendfile()'       -- sys/sendfile.h && echo '#define ROAR_HAVE_LINUX_SENDFILE' >&3
110
111
112echo -n 'checking for mlock()... '
113
114echo '#include <sys/mman.h>' > $TF_C
115echo 'int main (void) { mlock((void*)0, 0); return 0; }' >> $TF_C
116
117if $CCTF 2> /dev/null;
118then
119 echo '#define ROAR_HAVE_MLOCK' >&3
120 echo yes
121else
122 echo no
123fi
124
125echo -n 'checking for safe 32 bit integer overflow... '
126
127cat > $TF_C << EOF
128#include <stdio.h>
129#include <stdint.h>
130#define TYPE uint32_t
131#define MAX  ((TYPE)4294967295U)
132
133int main (void) {
134 TYPE a = MAX;
135
136 a += 2;
137
138 if ( a == 1 ) {
139  printf("#define ROAR_HAVE_SAFE_OVERFLOW\n");
140  return 0;
141 }
142
143 return 1;
144}
145EOF
146
147if $CCTF 2> /dev/null;
148then
149 $TF_E >&3
150 if [ "$?" = '0' ]
151 then
152  echo yes
153 else
154  echo no
155 fi
156else
157 echo 'no (can not compile!, no stdint.h?)'
158fi
159
160cat >&3 << EOF
161
162#endif
163
164//ll
165EOF
166
167rm -f $TF_C $TF_E
168
169mv config.h include/roaraudio/
170echo 'config.h created and moved into include/roaraudio/'
171
172#ll
Note: See TracBrowser for help on using the repository browser.