Statistics
| Branch: | Revision:

root / configure @ 67b915a5

History | View | Annotate | Download (11.6 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

    
19
# default parameters
20
prefix="/usr/local"
21
interp_prefix="/usr/gnemul/qemu-%M"
22
static="no"
23
cross_prefix=""
24
cc="gcc"
25
host_cc="gcc"
26
ar="ar"
27
make="make"
28
strip="strip"
29
cpu=`uname -m`
30
target_list="i386-user i386 i386-softmmu arm-user sparc-user ppc-user"
31
case "$cpu" in
32
  i386|i486|i586|i686|i86pc|BePC)
33
    cpu="i386"
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
  m68k)
60
    cpu="m68k"
61
  ;;
62
  x86_64|amd64)
63
    cpu="amd64"
64
  ;;
65
  *)
66
    cpu="unknown"
67
  ;;
68
esac
69
gprof="no"
70
bigendian="no"
71
mingw32="no"
72
EXESUF=""
73
gdbstub="yes"
74

    
75
# OS specific
76
targetos=`uname -s`
77
case $targetos in
78
MINGW32*)
79
mingw32="yes"
80
;;
81
*) ;;
82
esac
83

    
84
##########################################
85
# SDL probe
86

    
87
cat > $TMPC << EOF
88
#include <SDL.h>
89
#undef main /* We don't want SDL to override our main() */
90
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
91
EOF
92

    
93
sdl_too_old=no
94
sdl=no
95
if $cc -o $TMPE `sdl-config --cflags` $TMPC `sdl-config --libs`  2> /dev/null  ; then
96
_sdlversion=`sdl-config --version | sed 's/[^0-9]//g'`
97
if test "$_sdlversion" -lt 121 ; then
98
sdl_too_old=yes
99
else
100
sdl=yes
101
fi
102
fi
103

    
104
# find source path
105
# XXX: we assume an absolute path is given when launching configure, 
106
# except in './configure' case.
107
source_path=${0%configure}
108
source_path=${source_path%/}
109
source_path_used="yes"
110
if test -z "$source_path" -o "$source_path" = "." ; then
111
    source_path=`pwd`
112
    source_path_used="no"
113
fi
114

    
115
for opt do
116
  case "$opt" in
117
  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
118
  ;;
119
  --interp-prefix=*) interp_prefix=`echo $opt | cut -d '=' -f 2`
120
  ;;
121
  --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
122
  ;;
123
  --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
124
  ;;
125
  --cc=*) cc=`echo $opt | cut -d '=' -f 2`
126
  ;;
127
  --make=*) make=`echo $opt | cut -d '=' -f 2`
128
  ;;
129
  --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
130
  ;;
131
  --extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}"
132
  ;;
133
  --extra-libs=*) extralibs=${opt#--extra-libs=}
134
  ;;
135
  --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
136
  ;;
137
  --target-list=*) target_list=${opt#--target-list=}
138
  ;;
139
  --enable-gprof) gprof="yes"
140
  ;;
141
  --static) static="yes"
142
  ;;
143
  --disable-sdl) sdl="no"
144
  ;;
145
  --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-"
146
  ;; 
147
  esac
148
done
149

    
150
# Checking for CFLAGS
151
if test -z "$CFLAGS"; then
152
    CFLAGS="-O2"
153
fi
154

    
155
cc="${cross_prefix}${cc}"
156
ar="${cross_prefix}${ar}"
157
strip="${cross_prefix}${strip}"
158

    
159
if test "$mingw32" = "yes" ; then
160
    host_cc="$cc"
161
    target_list="i386-softmmu"
162
    prefix="/c/Program Files/Qemu"
163
    EXESUF=".exe"
164
    gdbstub="no"
165
fi
166

    
167
if test -z "$cross_prefix" ; then
168

    
169
# ---
170
# big/little endian test
171
cat > $TMPC << EOF
172
#include <inttypes.h>
173
int main(int argc, char ** argv){
174
	volatile uint32_t i=0x01234567;
175
	return (*((uint8_t*)(&i))) == 0x67;
176
}
177
EOF
178

    
179
if $cc -o $TMPE $TMPC 2>/dev/null ; then
180
$TMPE && bigendian="yes"
181
else
182
echo big/little test failed
183
fi
184

    
185
else
186

    
187
# if cross compiling, cannot launch a program, so make a static guess
188
if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k"; then
189
    bigendian="yes"
190
fi
191

    
192
fi
193

    
194
# check gcc options support
195
cat > $TMPC <<EOF
196
int main(void) {
197
}
198
EOF
199

    
200
have_gcc3_options="no"
201
if $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev/null ; then
202
   have_gcc3_options="yes"
203
fi
204

    
205
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
206
cat << EOF
207

    
208
Usage: configure [options]
209
Options: [defaults in brackets after descriptions]
210

    
211
EOF
212
echo "Standard options:"
213
echo "  --help                   print this message"
214
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
215
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
216
echo "                           use %M for cpu name [$interp_prefix]"
217
echo "  --target-list=LIST       set target list [$target_list]"
218
echo ""
219
echo "Advanced options (experts only):"
220
echo "  --source-path=PATH       path of source code [$source_path]"
221
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
222
echo "  --cc=CC                  use C compiler CC [$cc]"
223
echo "  --make=MAKE              use specified make [$make]"
224
echo "  --static                 enable static build [$static]"
225
echo "  --enable-mingw32         enable Win32 cross compilation with mingw32"
226
echo ""
227
echo "NOTE: The object files are build at the place where configure is launched"
228
exit 1
229
fi
230

    
231
mandir="$prefix/share/man"
232
sharedir="$prefix/share/qemu"
233

    
234
echo "Install prefix    $prefix"
235
echo "Manual directory  $mandir"
236
echo "BIOS directory    $sharedir"
237
echo "ELF interp prefix $interp_prefix"
238
echo "Source path       $source_path"
239
echo "C compiler        $cc"
240
echo "make              $make"
241
echo "host CPU          $cpu"
242
echo "host big endian   $bigendian"
243
echo "target list       $target_list"
244
echo "gprof enabled     $gprof"
245
echo "static build      $static"
246
echo "SDL support       $sdl"
247
echo "mingw32 support   $mingw32"
248

    
249
if test $sdl_too_old = "yes"; then
250
echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support"
251
fi
252

    
253
config_mak="config-host.mak"
254
config_h="config-host.h"
255

    
256
echo "Creating $config_mak and $config_h"
257

    
258
echo "# Automatically generated by configure - do not modify" > $config_mak
259
echo "/* Automatically generated by configure - do not modify */" > $config_h
260

    
261
echo "prefix=$prefix" >> $config_mak
262
echo "mandir=$mandir" >> $config_mak
263
echo "sharedir=$sharedir" >> $config_mak
264
echo "#define CONFIG_QEMU_SHAREDIR \"$sharedir\"" >> $config_h
265
echo "MAKE=$make" >> $config_mak
266
echo "CC=$cc" >> $config_mak
267
if test "$have_gcc3_options" = "yes" ; then
268
  echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
269
fi
270
echo "HOST_CC=$host_cc" >> $config_mak
271
echo "AR=$ar" >> $config_mak
272
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
273
echo "CFLAGS=$CFLAGS" >> $config_mak
274
echo "LDFLAGS=$LDFLAGS" >> $config_mak
275
echo "EXESUF=$EXESUF" >> $config_mak
276
if test "$cpu" = "i386" ; then
277
  echo "ARCH=i386" >> $config_mak
278
  echo "#define HOST_I386 1" >> $config_h
279
elif test "$cpu" = "amd64" ; then
280
  echo "ARCH=amd64" >> $config_mak
281
  echo "#define HOST_AMD64 1" >> $config_h
282
elif test "$cpu" = "armv4l" ; then
283
  echo "ARCH=arm" >> $config_mak
284
  echo "#define HOST_ARM 1" >> $config_h
285
elif test "$cpu" = "powerpc" ; then
286
  echo "ARCH=ppc" >> $config_mak
287
  echo "#define HOST_PPC 1" >> $config_h
288
elif test "$cpu" = "mips" ; then
289
  echo "ARCH=mips" >> $config_mak
290
  echo "#define HOST_MIPS 1" >> $config_h
291
elif test "$cpu" = "s390" ; then
292
  echo "ARCH=s390" >> $config_mak
293
  echo "#define HOST_S390 1" >> $config_h
294
elif test "$cpu" = "alpha" ; then
295
  echo "ARCH=alpha" >> $config_mak
296
  echo "#define HOST_ALPHA 1" >> $config_h
297
elif test "$cpu" = "sparc" ; then
298
  echo "ARCH=sparc" >> $config_mak
299
  echo "#define HOST_SPARC 1" >> $config_h
300
elif test "$cpu" = "sparc64" ; then
301
  echo "ARCH=sparc64" >> $config_mak
302
  echo "#define HOST_SPARC64 1" >> $config_h
303
elif test "$cpu" = "ia64" ; then
304
  echo "ARCH=ia64" >> $config_mak
305
  echo "#define HOST_IA64 1" >> $config_h
306
elif test "$cpu" = "m68k" ; then
307
  echo "ARCH=m68k" >> $config_mak
308
  echo "#define HOST_M68K 1" >> $config_h
309
else
310
  echo "Unsupported CPU"
311
  exit 1
312
fi
313
if test "$bigendian" = "yes" ; then
314
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
315
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
316
fi
317
if test "$mingw32" = "yes" ; then
318
  echo "CONFIG_WIN32=yes" >> $config_mak
319
else
320
  echo "#define HAVE_BYTESWAP_H 1" >> $config_h
321
fi
322
if test "$gdbstub" = "yes" ; then
323
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
324
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
325
fi
326
if test "$gprof" = "yes" ; then
327
  echo "TARGET_GPROF=yes" >> $config_mak
328
  echo "#define HAVE_GPROF 1" >> $config_h
329
fi
330
if test "$static" = "yes" ; then
331
  echo "CONFIG_STATIC=yes" >> $config_mak
332
  echo "#define CONFIG_STATIC 1" >> $config_h
333
fi
334
if test "$sdl" = "yes" ; then
335
  echo "CONFIG_SDL=yes" >> $config_mak
336
  echo "#define CONFIG_SDL 1" >> $config_h
337
  echo "SDL_LIBS=`sdl-config --libs`" >> $config_mak
338
  aa="no"
339
  `sdl-config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
340
  echo -n "SDL_STATIC_LIBS=`sdl-config --static-libs`" >> $config_mak
341
  if [ "${aa}" = "yes" ] ; then
342
      echo -n " `aalib-config --libs`" >> $config_mak ;
343
  fi
344
  echo "" >> $config_mak
345
  echo -n "SDL_CFLAGS=`sdl-config --cflags`" >> $config_mak
346
  if [ "${aa}" = "yes" ] ; then
347
      echo -n " `aalib-config --cflags`" >> $config_mak ;
348
  fi
349
  echo "" >> $config_mak
350
fi
351
echo -n "VERSION=" >>$config_mak
352
head $source_path/VERSION >>$config_mak
353
echo "" >>$config_mak
354
echo -n "#define QEMU_VERSION \"" >> $config_h
355
head $source_path/VERSION >> $config_h
356
echo "\"" >> $config_h
357

    
358
echo "SRC_PATH=$source_path" >> $config_mak
359
echo "TARGET_DIRS=$target_list" >> $config_mak
360

    
361
for target in $target_list; do 
362

    
363
target_dir="$target"
364
config_mak=$target_dir/config.mak
365
config_h=$target_dir/config.h
366
target_cpu=`echo $target | cut -d '-' -f 1`
367
target_bigendian="no"
368
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
369
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
370
target_softmmu="no"
371
if expr $target : '.*-softmmu' > /dev/null ; then
372
  target_softmmu="yes"
373
fi
374
target_user_only="no"
375
if expr $target : '.*-user' > /dev/null ; then
376
  target_user_only="yes"
377
fi
378

    
379
echo "Creating $config_mak, $config_h and $target_dir/Makefile"
380

    
381
mkdir -p $target_dir
382
if test "$target" = "arm-user" ; then
383
  mkdir -p $target_dir/nwfpe
384
fi
385

    
386
ln -sf $source_path/Makefile.target $target_dir/Makefile
387

    
388
echo "# Automatically generated by configure - do not modify" > $config_mak
389
echo "/* Automatically generated by configure - do not modify */" > $config_h
390

    
391

    
392
echo "include ../config-host.mak" >> $config_mak
393
echo "#include \"../config-host.h\"" >> $config_h
394

    
395
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
396
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
397

    
398
if test "$target_cpu" = "i386" ; then
399
  echo "TARGET_ARCH=i386" >> $config_mak
400
  echo "#define TARGET_ARCH \"i386\"" >> $config_h
401
  echo "#define TARGET_I386 1" >> $config_h
402
elif test "$target_cpu" = "arm" ; then
403
  echo "TARGET_ARCH=arm" >> $config_mak
404
  echo "#define TARGET_ARCH \"arm\"" >> $config_h
405
  echo "#define TARGET_ARM 1" >> $config_h
406
elif test "$target_cpu" = "sparc" ; then
407
  echo "TARGET_ARCH=sparc" >> $config_mak
408
  echo "#define TARGET_ARCH \"sparc\"" >> $config_h
409
  echo "#define TARGET_SPARC 1" >> $config_h
410
elif test "$target_cpu" = "ppc" ; then
411
  echo "TARGET_ARCH=ppc" >> $config_mak
412
  echo "#define TARGET_ARCH \"ppc\"" >> $config_h
413
  echo "#define TARGET_PPC 1" >> $config_h
414
else
415
  echo "Unsupported target CPU"
416
  exit 1
417
fi
418
if test "$target_bigendian" = "yes" ; then
419
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
420
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
421
fi
422
if test "$target_softmmu" = "yes" ; then
423
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
424
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
425
fi
426
if test "$target_user_only" = "yes" ; then
427
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
428
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
429
fi
430

    
431
done # for target in $targets
432

    
433
# build tree in object directory if source path is different from current one
434
if test "$source_path_used" = "yes" ; then
435
    DIRS="tests"
436
    FILES="Makefile tests/Makefile"
437
    for dir in $DIRS ; do
438
            mkdir -p $dir
439
    done
440
    for f in $FILES ; do
441
        ln -sf $source_path/$f $f
442
    done
443
fi
444

    
445
rm -f $TMPO $TMPC $TMPE $TMPS