source: roaraudio/configure @ 354:bcf8d9c3317d

Last change on this file since 354:bcf8d9c3317d was 354:bcf8d9c3317d, checked in by phi, 16 years ago

added integer overflow test

  • Property exe set to *
File size: 2.0 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
49exec 3> config.h
50
51cat >&3 << EOF
52//config.h:
53
54#ifndef _ROARAUDIO_CONFIG_H_
55#define _ROARAUDIO_CONFIG_H_
56
57EOF
58
59{
60 echo '/* uname: ' $(uname -a) '*/'
61 echo '/* Date : ' $(date)  '*/'
62 echo
63} >&3
64
65test_lib EsounD        esd        -- esd.h                          && echo '#define ROAR_HAVE_ESD' >&3
66test_lib libao         ao         -- ao/ao.h ao/plugin.h            && echo '#define ROAR_HAVE_LIBAO' >&3
67test_lib libvorbis     vorbis     -- vorbis/codec.h                 && echo '#define ROAR_HAVE_LIBVORBIS' >&3
68test_lib libvorbisfile vorbisfile -- vorbis/vorbisfile.h            && echo '#define ROAR_HAVE_LIBVORBISFILE' >&3
69test_lib libcelt       celt       -- celt/celt.h celt/celt_header.h && echo '#define ROAR_HAVE_LIBVORBISFILE' >&3
70
71# add a better test here
72test_lib 'linux sendfile()'       -- sys/sendfile.h && echo '#define ROAR_HAVE_LINUX_SENDFILE' >&3
73
74
75echo -n 'checking for mlock()... '
76
77echo '#include <sys/mman.h>' > $TF_C
78echo 'int main (void) { mlock((void*)0, 0); return 0; }' >> $TF_C
79
80if $CCTF 2> /dev/null;
81then
82 echo '#define ROAR_HAVE_MLOCK' >&3
83 echo yes
84else
85 echo no
86fi
87
88echo -n 'checking for save 32 bit integer overflow... '
89
90cat > $TF_C << EOF
91#include <stdio.h>
92#include <stdint.h>
93#define TYPE uint32_t
94#define MAX  ((TYPE)4294967295U)
95
96int main (void) {
97 TYPE a = MAX;
98
99 a += 2;
100
101 if ( a == 1 ) {
102  printf("#define ROAR_HAVE_SAFE_OVERFLOW\n");
103  return 0;
104 }
105
106 return 1;
107}
108EOF
109
110if $CCTF 2> /dev/null;
111then
112 $TF_E >&3
113 if [ "$?" = '0' ]
114 then
115  echo yes
116 else
117  echo no
118 fi
119else
120 echo 'no (can not compile!, no stdint.h?)'
121fi
122
123cat >&3 << EOF
124
125#endif
126
127//ll
128EOF
129
130rm -f $TF_C $TF_E
131
132#ll
Note: See TracBrowser for help on using the repository browser.