Statistics
| Branch: | Revision:

root / configure @ 2c1794c4

History | View | Annotate | Download (7.8 kB)

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