Statistics
| Branch: | Revision:

root / configure @ a98fd896

History | View | Annotate | Download (6.1 kB)

1
#!/bin/sh
2
#
3
# qemu configure script (c) 2003 Fabrice Bellard
4
#
5
# set temporary file name
6
if test ! -z "$TMPDIR" ; then
7
    TMPDIR1="${TMPDIR}"
8
elif test ! -z "$TEMPDIR" ; then
9
    TMPDIR1="${TEMPDIR}"
10
else
11
    TMPDIR1="/tmp"
12
fi
13

    
14
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17
TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
18
TMPH="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.h"
19

    
20
# default parameters
21
prefix="/usr/local"
22
interp_prefix="/usr/gnemul/qemu-i386"
23
cross_prefix=""
24
cc="gcc"
25
host_cc="gcc"
26
ar="ar"
27
make="make"
28
strip="strip"
29
target_cpu="x86"
30
cpu=`uname -m`
31
case "$cpu" in
32
  i386|i486|i586|i686|i86pc|BePC)
33
    cpu="x86"
34
  ;;
35
  armv4l)
36
    cpu="armv4l"
37
  ;;
38
  alpha)
39
    cpu="alpha"
40
  ;;
41
  "Power Macintosh"|ppc|ppc64)
42
    cpu="powerpc"
43
  ;;
44
  mips)
45
    cpu="mips"
46
  ;;
47
  s390)
48
    cpu="s390"
49
  ;;
50
  ia64)
51
    cpu="ia64"
52
  ;;
53
  *)
54
    cpu="unknown"
55
  ;;
56
esac
57
gprof="no"
58
bigendian="no"
59

    
60
# OS specific
61
targetos=`uname -s`
62
case $targetos in
63
*) ;;
64
esac
65

    
66
# find source path
67
# XXX: we assume an absolute path is given when launching configure, 
68
# except in './configure' case.
69
source_path=${0%configure}
70
source_path=${source_path%/}
71
source_path_used="yes"
72
if test -z "$source_path" -o "$source_path" = "." ; then
73
    source_path=`pwd`
74
    source_path_used="no"
75
fi
76

    
77
for opt do
78
  case "$opt" in
79
  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
80
  ;;
81
  --interp-prefix=*) interp_prefix=`echo $opt | cut -d '=' -f 2`
82
  ;;
83
  --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
84
  ;;
85
  --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
86
  ;;
87
  --cc=*) cc=`echo $opt | cut -d '=' -f 2`
88
  ;;
89
  --make=*) make=`echo $opt | cut -d '=' -f 2`
90
  ;;
91
  --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
92
  ;;
93
  --extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}"
94
  ;;
95
  --extra-libs=*) extralibs=${opt#--extra-libs=}
96
  ;;
97
  --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
98
  ;;
99
  --enable-gprof) gprof="yes"
100
  ;;
101
  esac
102
done
103

    
104
# Checking for CFLAGS
105
if test -z "$CFLAGS"; then
106
    CFLAGS="-O2"
107
fi
108

    
109
cc="${cross_prefix}${cc}"
110
ar="${cross_prefix}${ar}"
111
strip="${cross_prefix}${strip}"
112

    
113
if test -z "$cross_prefix" ; then
114

    
115
# ---
116
# big/little endian test
117
cat > $TMPC << EOF
118
#include <inttypes.h>
119
int main(int argc, char ** argv){
120
	volatile uint32_t i=0x01234567;
121
	return (*((uint8_t*)(&i))) == 0x67;
122
}
123
EOF
124

    
125
if $cc -o $TMPE $TMPC 2>/dev/null ; then
126
$TMPE && bigendian="yes"
127
else
128
echo big/little test failed
129
fi
130

    
131
else
132

    
133
# if cross compiling, cannot launch a program, so make a static guess
134
if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" ; then
135
    bigendian="yes"
136
fi
137

    
138
fi
139

    
140
# check gcc version
141
cat > $TMPC <<EOF
142
int main(void) {
143
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
144
return 0;
145
#else
146
#error gcc < 3.2
147
#endif
148
}
149
EOF
150

    
151
gcc_major="2"
152
if $cc -o $TMPO $TMPC 2> /dev/null ; then
153
   gcc_major="3"
154
fi
155

    
156
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
157
cat << EOF
158

    
159
Usage: configure [options]
160
Options: [defaults in brackets after descriptions]
161

    
162
EOF
163
echo "Standard options:"
164
echo "  --help                   print this message"
165
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
166
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc. [$interp_prefix]"
167
echo ""
168
echo "Advanced options (experts only):"
169
echo "  --source-path=PATH       path of source code [$source_path]"
170
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
171
echo "  --cc=CC                  use C compiler CC [$cc]"
172
echo "  --make=MAKE              use specified make [$make]"
173
echo ""
174
echo "NOTE: The object files are build at the place where configure is launched"
175
exit 1
176
fi
177

    
178
echo "Install prefix   $prefix"
179
echo "Source path      $source_path"
180
echo "C compiler       $cc"
181
echo "make             $make"
182
echo "host CPU         $cpu"
183
echo "Big Endian       $bigendian"
184
echo "target CPU       $target_cpu"
185
echo "gprof enabled    $gprof"
186

    
187
echo "Creating config.mak and config.h"
188

    
189
echo "# Automatically generated by configure - do not modify" > config.mak
190
echo "/* Automatically generated by configure - do not modify */" > $TMPH
191

    
192
echo "prefix=$prefix" >> config.mak
193
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix\"" >> $TMPH
194
echo "MAKE=$make" >> config.mak
195
echo "CC=$cc" >> config.mak
196
echo "GCC_MAJOR=$gcc_major" >> config.mak
197
echo "HOST_CC=$host_cc" >> config.mak
198
echo "AR=$ar" >> config.mak
199
echo "STRIP=$strip -s -R .comment -R .note" >> config.mak
200
echo "CFLAGS=$CFLAGS" >> config.mak
201
echo "LDFLAGS=$LDFLAGS" >> config.mak
202
if test "$cpu" = "x86" ; then
203
  echo "ARCH=i386" >> config.mak
204
  echo "#define HOST_I386 1" >> $TMPH
205
elif test "$cpu" = "armv4l" ; then
206
  echo "ARCH=arm" >> config.mak
207
  echo "#define HOST_ARM 1" >> $TMPH
208
elif test "$cpu" = "powerpc" ; then
209
  echo "ARCH=ppc" >> config.mak
210
  echo "#define HOST_PPC 1" >> $TMPH
211
elif test "$cpu" = "mips" ; then
212
  echo "ARCH=mips" >> config.mak
213
  echo "#define HOST_MIPS 1" >> $TMPH
214
elif test "$cpu" = "s390" ; then
215
  echo "ARCH=s390" >> config.mak
216
  echo "#define HOST_S390 1" >> $TMPH
217
elif test "$cpu" = "alpha" ; then
218
  echo "ARCH=alpha" >> config.mak
219
  echo "#define HOST_ALPHA 1" >> $TMPH
220
elif test "$cpu" = "ia64" ; then
221
  echo "ARCH=ia64" >> config.mak
222
  echo "#define HOST_IA64 1" >> $TMPH
223
else
224
  echo "Unsupported CPU"
225
  exit 1
226
fi
227
if test "$bigendian" = "yes" ; then
228
  echo "WORDS_BIGENDIAN=yes" >> config.mak
229
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
230
fi
231
if test "$gprof" = "yes" ; then
232
  echo "TARGET_GPROF=yes" >> config.mak
233
  echo "#define HAVE_GPROF 1" >> $TMPH
234
fi
235
echo -n "VERSION=" >>config.mak
236
head $source_path/VERSION >>config.mak
237
echo "" >>config.mak
238
echo -n "#define QEMU_VERSION \"" >> $TMPH
239
head $source_path/VERSION >> $TMPH
240
echo "\"" >> $TMPH
241

    
242
# build tree in object directory if source path is different from current one
243
if test "$source_path_used" = "yes" ; then
244
    DIRS="tests"
245
    FILES="Makefile tests/Makefile"
246
    for dir in $DIRS ; do
247
            mkdir -p $dir
248
    done
249
    for f in $FILES ; do
250
        ln -sf $source_path/$f $f
251
    done
252
fi
253
echo "SRC_PATH=$source_path" >> config.mak
254

    
255
diff $TMPH config.h >/dev/null 2>&1
256
if test $? -ne 0 ; then
257
	mv -f $TMPH config.h
258
else
259
	echo "config.h is unchanged"
260
fi
261

    
262
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH