|
1
2
|
#!/bin/sh
#
|
|
3
|
# qemu configure script (c) 2003 Fabrice Bellard
|
|
4
5
6
7
8
9
10
11
12
13
|
#
# set temporary file name
if test ! -z "$TMPDIR" ; then
TMPDIR1="${TMPDIR}"
elif test ! -z "$TEMPDIR" ; then
TMPDIR1="${TEMPDIR}"
else
TMPDIR1="/tmp"
fi
|
|
14
15
16
17
18
|
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.h"
|
|
19
20
21
|
# default parameters
prefix="/usr/local"
|
|
22
|
interp_prefix="/usr/gnemul/qemu-i386"
|
|
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
cross_prefix=""
cc="gcc"
host_cc="gcc"
ar="ar"
make="make"
strip="strip"
cpu=`uname -m`
case "$cpu" in
i386|i486|i586|i686|i86pc|BePC)
cpu="x86"
;;
armv4l)
cpu="armv4l"
;;
alpha)
cpu="alpha"
;;
|
|
40
|
"Power Macintosh"|ppc|ppc64)
|
|
41
42
43
44
45
|
cpu="powerpc"
;;
mips)
cpu="mips"
;;
|
|
46
47
48
|
s390)
cpu="s390"
;;
|
|
49
50
51
|
ia64)
cpu="ia64"
;;
|
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
*)
cpu="unknown"
;;
esac
gprof="no"
bigendian="no"
# OS specific
targetos=`uname -s`
case $targetos in
*) ;;
esac
# find source path
# XXX: we assume an absolute path is given when launching configure,
# except in './configure' case.
source_path=${0%configure}
source_path=${source_path%/}
source_path_used="yes"
if test -z "$source_path" -o "$source_path" = "." ; then
source_path=`pwd`
source_path_used="no"
fi
for opt do
case "$opt" in
--prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
;;
|
|
80
81
|
--interp-prefix=*) interp_prefix=`echo $opt | cut -d '=' -f 2`
;;
|
|
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
--source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
;;
--cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
;;
--cc=*) cc=`echo $opt | cut -d '=' -f 2`
;;
--make=*) make=`echo $opt | cut -d '=' -f 2`
;;
--extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
;;
--extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}"
;;
--extra-libs=*) extralibs=${opt#--extra-libs=}
;;
--cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
;;
--enable-gprof) gprof="yes"
;;
esac
done
# Checking for CFLAGS
if test -z "$CFLAGS"; then
CFLAGS="-O2"
fi
cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
strip="${cross_prefix}${strip}"
if test -z "$cross_prefix" ; then
# ---
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
volatile uint32_t i=0x01234567;
return (*((uint8_t*)(&i))) == 0x67;
}
EOF
if $cc -o $TMPE $TMPC 2>/dev/null ; then
$TMPE && bigendian="yes"
else
echo big/little test failed
fi
else
# if cross compiling, cannot launch a program, so make a static guess
|
|
133
|
if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" ; then
|
|
134
135
136
137
138
|
bigendian="yes"
fi
fi
|
|
139
|
# check gcc version
|
|
140
141
142
143
144
145
146
147
148
149
|
cat > $TMPC <<EOF
int main(void) {
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
return 0;
#else
#error gcc < 3.2
#endif
}
EOF
|
|
150
|
gcc_major="2"
|
|
151
152
153
|
if $cc -o $TMPO $TMPC 2> /dev/null ; then
gcc_major="3"
fi
|
|
154
|
|
|
155
156
157
158
159
160
161
162
163
164
|
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
cat << EOF
Usage: configure [options]
Options: [defaults in brackets after descriptions]
EOF
echo "Standard options:"
echo " --help print this message"
echo " --prefix=PREFIX install in PREFIX [$prefix]"
|
|
165
|
echo " --interp-prefix=PREFIX where to find shared libraries, etc. [$interp_prefix]"
|
|
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
echo ""
echo "Advanced options (experts only):"
echo " --source-path=PATH path of source code [$source_path]"
echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
echo " --cc=CC use C compiler CC [$cc]"
echo " --make=MAKE use specified make [$make]"
echo ""
echo "NOTE: The object files are build at the place where configure is launched"
exit 1
fi
echo "Install prefix $prefix"
echo "Source path $source_path"
echo "C compiler $cc"
echo "make $make"
echo "CPU $cpu"
echo "Big Endian $bigendian"
echo "gprof enabled $gprof"
echo "Creating config.mak and config.h"
echo "# Automatically generated by configure - do not modify" > config.mak
echo "/* Automatically generated by configure - do not modify */" > $TMPH
echo "prefix=$prefix" >> config.mak
|
|
191
|
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix\"" >> $TMPH
|
|
192
193
|
echo "MAKE=$make" >> config.mak
echo "CC=$cc" >> config.mak
|
|
194
|
echo "GCC_MAJOR=$gcc_major" >> config.mak
|
|
195
196
197
198
199
200
201
|
echo "HOST_CC=$host_cc" >> config.mak
echo "AR=$ar" >> config.mak
echo "STRIP=$strip -s -R .comment -R .note" >> config.mak
echo "CFLAGS=$CFLAGS" >> config.mak
echo "LDFLAGS=$LDFLAGS" >> config.mak
if test "$cpu" = "x86" ; then
echo "ARCH=i386" >> config.mak
|
|
202
|
echo "#define HOST_I386 1" >> $TMPH
|
|
203
204
|
elif test "$cpu" = "armv4l" ; then
echo "ARCH=arm" >> config.mak
|
|
205
|
echo "#define HOST_ARM 1" >> $TMPH
|
|
206
|
elif test "$cpu" = "powerpc" ; then
|
|
207
|
echo "ARCH=ppc" >> config.mak
|
|
208
|
echo "#define HOST_PPC 1" >> $TMPH
|
|
209
|
elif test "$cpu" = "mips" ; then
|
|
210
|
echo "ARCH=mips" >> config.mak
|
|
211
|
echo "#define HOST_MIPS 1" >> $TMPH
|
|
212
213
|
elif test "$cpu" = "s390" ; then
echo "ARCH=s390" >> config.mak
|
|
214
215
216
217
|
echo "#define HOST_S390 1" >> $TMPH
elif test "$cpu" = "alpha" ; then
echo "ARCH=alpha" >> config.mak
echo "#define HOST_ALPHA 1" >> $TMPH
|
|
218
219
220
|
elif test "$cpu" = "ia64" ; then
echo "ARCH=ia64" >> config.mak
echo "#define HOST_IA64 1" >> $TMPH
|
|
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
else
echo "Unsupported CPU"
exit 1
fi
if test "$bigendian" = "yes" ; then
echo "WORDS_BIGENDIAN=yes" >> config.mak
echo "#define WORDS_BIGENDIAN 1" >> $TMPH
fi
if test "$gprof" = "yes" ; then
echo "TARGET_GPROF=yes" >> config.mak
echo "#define HAVE_GPROF 1" >> $TMPH
fi
echo -n "VERSION=" >>config.mak
head $source_path/VERSION >>config.mak
echo "" >>config.mak
|
|
236
|
echo -n "#define QEMU_VERSION \"" >> $TMPH
|
|
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
|
head $source_path/VERSION >> $TMPH
echo "\"" >> $TMPH
# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
DIRS="tests"
FILES="Makefile tests/Makefile"
for dir in $DIRS ; do
mkdir -p $dir
done
for f in $FILES ; do
ln -sf $source_path/$f $f
done
fi
echo "SRC_PATH=$source_path" >> config.mak
diff $TMPH config.h >/dev/null 2>&1
if test $? -ne 0 ; then
mv -f $TMPH config.h
else
echo "config.h is unchanged"
fi
|
|
260
|
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
|