source: roaraudio/configure @ 843:50bb0a47d743

Last change on this file since 843:50bb0a47d743 was 843:50bb0a47d743, checked in by phi, 16 years ago

$PROC_NET_DECNET is "decnet status file" not "cdrom device" ;)

  • Property exe set to *
File size: 8.1 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
25CDROM="none"
26PROC_NET_DECNET="/proc/net/decnet"
27
28echo -n "checking for C compiler... "
29CC=$(which gcc cc 2> /dev/null | grep ^/ | head -n 1)
30if [ "$CC" = '' ]
31then
32 echo 'none'
33 exit 1;
34fi
35echo $CC
36
37echo -n "checking for pkg-config... "
38PKG_CONFIG=$(which pkg-config false 2> /dev/null | grep ^/ | head -n 1)
39if $PKG_CONFIG --help > /dev/null 2> /dev/null
40then
41 echo $PKG_CONFIG
42else
43 echo no
44fi
45
46#Makefile.conf not yet open, write it later
47
48echo -n "checking for sysname... "
49SYSNAME=$(uname -s)
50echo "$SYSNAME"
51
52while [ "$1" != '' ]
53do
54 case "$1" in
55  '--help')
56   echo '--help'
57   echo '--ldpath DIR'
58   echo '--incpath DIR'
59   echo '--addpath DIR'
60   echo '--cdrom DEV'
61   echo '--proc-net-decnet FILE'
62   echo '--no-LIB'
63   echo '--runtime-detect'
64   exit 0;
65  ;;
66  '--ldpath')
67   LDPATH="$LDPATH -L$2"
68   shift;
69  ;;
70  '--incpath')
71   INCPATH="$INCPATH -I$2"
72   shift;
73  ;;
74  '--addpath')
75   LDPATH="$LDPATH -L$2/lib/"
76   INCPATH="$INCPATH -I$2/include/"
77   shift;
78  ;;
79  '--cdrom')
80   CDROM="$2"
81   shift;
82  ;;
83  '--no-'*)
84   lib=$(echo "$1" | sed 's/^--no-//')
85   eval no_lib_$lib=true
86  ;;
87  '--runtime-detect')
88  RUNTIME_DETECT=true
89  ;;
90 esac;
91
92 shift;
93done
94
95
96CCTF="false"
97
98test_lib () {
99 echo > $TF_C
100
101 echo -n "checking for $1... "
102 shift;
103
104 LIBS=''
105
106 while [ "$1" != '--' ]
107 do
108  LIBS="$LIBS -l$1"
109  shift;
110 done
111
112 shift;
113
114 LIBS=$(echo "$LIBS" | sed 's/-l-l/-l/g; s/-l-L/-L/g;')
115
116 while [ "$1" != '' ]
117 do
118  echo "#include <$1>" >> $TF_C
119  shift;
120 done
121
122 echo 'int main (void) { return 0; }' >> $TF_C
123
124 $CCTF $LIBS 2> /dev/null;
125
126 R=$?
127
128 if [ "$R" = '0' ]
129 then
130  echo 'yes'
131 else
132  echo 'no'
133 fi
134
135 return $R
136}
137
138test_lib_defmake () {
139 def="$1"
140 subdir="$2"
141 shift
142 shift
143 name="$1"
144 lib="$2"
145 shift
146
147 [ "$subdir" = '%' ] && subdir=''
148
149 if [ "$lib" != '--' ]
150 then
151  eval _no="\$no_lib_$lib";
152
153  if [ "$_no" != '' ]
154  then
155    echo "checking for $1... disabled by user"
156   [ "$subdir" != '' ] && \
157    echo "subdir_$subdir=" >&4
158   echo "lib_$lib=" >&4
159   return;
160  fi
161 fi
162
163 LIBS=$($PKG_CONFIG --silence-errors --libs $lib)
164 if [ "$?" != '0' ]
165 then
166  LIBS="-l$lib"
167 fi
168
169 if test_lib "$name" $LIBS "$@"
170 then
171  echo "#define $def"            >&3
172  [ "$subdir" != '' ] && \
173   echo "subdir_$subdir=$subdir" >&4
174  echo "lib_$lib=$LIBS" >&4
175 else
176  [ "$subdir" != '' ] && \
177   echo "subdir_$subdir=" >&4
178  echo "lib_$lib=" >&4
179 fi
180}
181
182test_tool_defmake () {
183 DEF="$1"
184 NAME="$2"
185 shift;
186 shift;
187 echo -n "checking for $NAME... "
188
189 if $RUNTIME_DETECT
190 then
191  echo "$1 (runtime detect)"
192 echo "#define $DEF "\""$1"\" >&3
193 else
194
195  LIST=$(which "$@" 2> /dev/null | grep ^/ | head -n 1)
196
197  if [ "$LIST" = '' ]
198  then
199   echo 'no'
200  else
201   echo $LIST
202   echo "#define $DEF "\""$LIST"\" >&3
203  fi
204 fi
205}
206
207exec 3> config.h 4> Makefile.conf
208
209if [ "$SYSNAME" = 'Darwin' ]
210then
211 echo "Adding $SYSNAME shared lib arguments..."
212 SHARED="$SHARED -fno-common -dynamiclib -compatibility_version 0.1 -current_version 0.1.0"
213 SHARED_CF="$SHARED_CF -fno-common"
214elif [ "$SYSNAME" = 'NetBSD' ]
215then
216 echo "Adding $SYSNAME libpath arguments..."
217 LDPATH="$LDPATH -L/usr/local/lib/"
218fi
219
220# now write the cc name to Makefile.conf
221echo "SHARED=$SHARED" >&4
222echo "SHARED_CF=$SHARED_CF" >&4
223echo "CC=$CC" >&4
224echo "LDPATH=$LDPATH" >&4
225echo "INCPATH=$INCPATH" >&4
226
227CCTF="$CC $LDPATH $INCPATH -o $TF_E $TF_C"
228
229cat >&3 << EOF
230//config.h:
231
232#ifndef _ROARAUDIO_CONFIG_H_
233#define _ROARAUDIO_CONFIG_H_
234
235EOF
236
237{
238 echo '/* uname: ' $(uname -a) '*/'
239 echo '/* Date : ' $(date)  '*/'
240 echo
241} >&3
242
243#                 #define                  name         cmds...
244test_tool_defmake ROAR_HAVE_BIN_OGG123     ogg123       ogg123
245test_tool_defmake ROAR_HAVE_BIN_FLAC       flac         flac
246test_tool_defmake ROAR_HAVE_BIN_TIMIDITY   TiMidity++   timidity
247test_tool_defmake ROAR_HAVE_BIN_CDPARANOIA cdparanoia   cdparanoia
248
249echo >&3
250
251test_lib 'Math Library' m          -- math.h                         && echo '#define ROAR_HAVE_LIBM' >&3
252if test_lib 'realtime Library' rt -- sys/mman.h mqueue.h semaphore.h
253then
254 {
255  echo '#define ROAR_HAVE_LIBRT'
256  echo '#define ROAR_NEED_LIBRT'
257 } >&3
258fi
259
260echo >&3
261
262#                #define                 subdir       name          -lxxx      -- header
263test_lib_defmake ROAR_HAVE_ESD           libroaresd   EsounD        esd        -- esd.h
264test_lib_defmake ROAR_HAVE_LIBAO         %            libao         ao         -- ao/ao.h ao/plugin.h
265test_lib_defmake ROAR_HAVE_LIBVORBIS     %            libvorbis     vorbis     -- vorbis/codec.h
266test_lib_defmake ROAR_HAVE_LIBVORBISFILE %            libvorbisfile vorbisfile -- vorbis/vorbisfile.h
267test_lib_defmake ROAR_HAVE_LIBVORBISENC  %            libvorbisenc  vorbisenc  -- vorbis/vorbisenc.h
268test_lib_defmake ROAR_HAVE_LIBSPEEX      %            libspeex      speex      -- speex/speex.h speex/speex_stereo.h
269test_lib_defmake ROAR_HAVE_LIBCELT       %            libcelt       celt       -- celt/celt.h celt/celt_header.h
270test_lib_defmake ROAR_HAVE_LIBOGGZ       %            liboggz       oggz       -- oggz/oggz.h
271test_lib_defmake ROAR_HAVE_LIBSNDFILE    %            libsndfile    sndfile    -- sndfile.h
272test_lib_defmake ROAR_HAVE_LIBFISHSOUND  roarfish     libfishsound  fishsound  -- fishsound/fishsound.h
273test_lib_defmake ROAR_HAVE_LIBSHOUT      %            libshout      shout      -- shout/shout.h
274test_lib_defmake ROAR_HAVE_LIBPULSE      libroarpulse libpulse      pulse      -- pulse/pulseaudio.h pulse/simple.h
275test_lib_defmake ROAR_HAVE_LIBY2         libroaryiff  libyiff       Y2         -- Y2/Y.h Y2/Ylib.h
276test_lib_defmake ROAR_HAVE_LIBARTSC      libroararts  libartsc      artsc      -- kde/artsc/artsc.h
277test_lib_defmake ROAR_HAVE_LIBDNET       %            libdnet       dnet       -- sys/socket.h netdnet/dn.h netdnet/dnetdb.h
278test_lib_defmake ROAR_HAVE_IPX           %            IPX           c          -- netipx/ipx.h
279
280# add a better test here
281test_lib 'linux sendfile()'       -- sys/sendfile.h && echo '#define ROAR_HAVE_LINUX_SENDFILE' >&3
282
283
284echo -n 'checking for mlock()... '
285
286echo '#include <sys/mman.h>' > $TF_C
287echo 'int main (void) { mlock((void*)0, 0); return 0; }' >> $TF_C
288
289if $CCTF 2> /dev/null;
290then
291 echo '#define ROAR_HAVE_MLOCK' >&3
292 echo yes
293else
294 echo no
295fi
296
297echo -n 'checking for inline funcs... '
298
299echo 'inline int test (void) { return 0; }' > $TF_C
300echo 'int main (void) { return test(); }'  >> $TF_C
301
302if $CCTF 2> /dev/null;
303then
304 echo '#define ROAR_HAVE_INLINE' >&3
305 echo yes
306else
307 echo no
308fi
309
310echo -n 'checking for safe 32 bit integer overflow... '
311
312cat > $TF_C << EOF
313#include <stdio.h>
314#include <stdint.h>
315#define TYPE uint32_t
316#define MAX  ((TYPE)4294967295U)
317
318int main (void) {
319 TYPE a = MAX;
320
321 a += 2;
322
323 if ( a == 1 ) {
324  printf("#define ROAR_HAVE_SAFE_OVERFLOW\n");
325  return 0;
326 }
327
328 return 1;
329}
330EOF
331
332if $CCTF 2> /dev/null;
333then
334 $TF_E >&3
335 if [ "$?" = '0' ]
336 then
337  echo yes
338 else
339  echo no
340 fi
341else
342 echo 'no (can not compile!, no stdint.h?)'
343fi
344
345echo -n 'checking for __LP64__... '
346cat > $TF_C << EOF
347#include <stdio.h>
348
349int main (void) {
350#ifdef __LP64__
351 fprintf(stderr, "set by compiler\n");
352#else
353 if ( sizeof(int) == sizeof(void*) ) {
354  fprintf(stderr, "no need to set\n");
355 } else {
356  fprintf(stderr, "need to set\n");
357  printf("\n#ifndef __LP64__\n#define __LP64__\n#endif\n\n");
358 }
359#endif
360 return 0;
361}
362EOF
363if $CCTF 2> /dev/null;
364then
365 $TF_E >&3
366else
367 echo 'error, can not compile'
368 exit 1
369fi
370
371echo -n 'checking if cp supports -v... '
372if cp -v --help > /dev/null 2> /dev/null
373then
374 echo "cp_v=-v" >&4
375 echo yes
376else
377 echo "cp_v=" >&4
378 echo no
379fi
380
381echo -n 'checking for cdrom device... '
382if [ -e "$CDROM" ]
383then
384 echo "$CDROM"
385else
386 CDROM=$(ls /dev/cdrom /dev/rcd0c 2> /dev/null | head -n 1);
387 if [ -e "$CDROM" ]
388 then
389  echo "$CDROM"
390  echo '#define ROAR_DEFAULT_CDROM "'"$CDROM"'"' >&3
391 else
392  echo 'none'
393 fi
394fi
395
396echo 'checking for decnet status file... '"$PROC_NET_DECNET"
397echo '#define ROAR_PROC_NET_DECNET "'"$PROC_NET_DECNET"'"' >&3
398
399cat >&3 << EOF
400
401#endif
402
403//ll
404EOF
405
406rm -f $TF_C $TF_E
407
408mv config.h include/roaraudio/
409echo 'config.h created and moved into include/roaraudio/'
410
411#ll
Note: See TracBrowser for help on using the repository browser.