Statistics
| Branch: | Revision:

root / configure @ 5a91de8c

History | View | Annotate | Download (6.4 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
  sparc)
51
    cpu="sparc"
52
  ;;
53
  sparc64)
54
    cpu="sparc64"
55
  ;;
56
  ia64)
57
    cpu="ia64"
58
  ;;
59
  *)
60
    cpu="unknown"
61
  ;;
62
esac
63
gprof="no"
64
bigendian="no"
65

    
66
# OS specific
67
targetos=`uname -s`
68
case $targetos in
69
*) ;;
70
esac
71

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

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

    
110
# Checking for CFLAGS
111
if test -z "$CFLAGS"; then
112
    CFLAGS="-O2"
113
fi
114

    
115
cc="${cross_prefix}${cc}"
116
ar="${cross_prefix}${ar}"
117
strip="${cross_prefix}${strip}"
118

    
119
if test -z "$cross_prefix" ; then
120

    
121
# ---
122
# big/little endian test
123
cat > $TMPC << EOF
124
#include <inttypes.h>
125
int main(int argc, char ** argv){
126
	volatile uint32_t i=0x01234567;
127
	return (*((uint8_t*)(&i))) == 0x67;
128
}
129
EOF
130

    
131
if $cc -o $TMPE $TMPC 2>/dev/null ; then
132
$TMPE && bigendian="yes"
133
else
134
echo big/little test failed
135
fi
136

    
137
else
138

    
139
# if cross compiling, cannot launch a program, so make a static guess
140
if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64"; then
141
    bigendian="yes"
142
fi
143

    
144
fi
145

    
146
# check gcc version
147
cat > $TMPC <<EOF
148
int main(void) {
149
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
150
return 0;
151
#else
152
#error gcc < 3.2
153
#endif
154
}
155
EOF
156

    
157
gcc_major="2"
158
if $cc -o $TMPO $TMPC 2> /dev/null ; then
159
   gcc_major="3"
160
fi
161

    
162
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
163
cat << EOF
164

    
165
Usage: configure [options]
166
Options: [defaults in brackets after descriptions]
167

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

    
184
echo "Install prefix   $prefix"
185
echo "Source path      $source_path"
186
echo "C compiler       $cc"
187
echo "make             $make"
188
echo "host CPU         $cpu"
189
echo "Big Endian       $bigendian"
190
echo "target CPU       $target_cpu"
191
echo "gprof enabled    $gprof"
192

    
193
echo "Creating config.mak and config.h"
194

    
195
echo "# Automatically generated by configure - do not modify" > config.mak
196
echo "/* Automatically generated by configure - do not modify */" > $TMPH
197

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

    
254
# build tree in object directory if source path is different from current one
255
if test "$source_path_used" = "yes" ; then
256
    DIRS="tests"
257
    FILES="Makefile tests/Makefile"
258
    for dir in $DIRS ; do
259
            mkdir -p $dir
260
    done
261
    for f in $FILES ; do
262
        ln -sf $source_path/$f $f
263
    done
264
fi
265
echo "SRC_PATH=$source_path" >> config.mak
266

    
267
diff $TMPH config.h >/dev/null 2>&1
268
if test $? -ne 0 ; then
269
	mv -f $TMPH config.h
270
else
271
	echo "config.h is unchanged"
272
fi
273

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