configure 48.1 KB
Newer Older
bellard's avatar
bellard committed
1 2
#!/bin/sh
#
bellard's avatar
bellard committed
3
# qemu configure script (c) 2003 Fabrice Bellard
bellard's avatar
bellard committed
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

bellard's avatar
bellard committed
14 15 16 17
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"
18
TMPI="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.i"
19
TMPSDLLOG="${TMPDIR1}/qemu-conf-sdl-$$-${RANDOM}.log"
bellard's avatar
bellard committed
20

21
trap "rm -f $TMPC $TMPO $TMPE $TMPS $TMPI $TMPSDLLOG; exit" 0 2 3 15
22

bellard's avatar
bellard committed
23
# default parameters
bellard's avatar
bellard committed
24
prefix=""
25
interp_prefix="/usr/gnemul/qemu-%M"
bellard's avatar
bellard committed
26
static="no"
bellard's avatar
bellard committed
27 28
cross_prefix=""
cc="gcc"
29
audio_drv_list=""
30 31
audio_card_list="ac97 es1370 sb16"
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
bellard's avatar
bellard committed
32 33 34
host_cc="gcc"
ar="ar"
make="make"
35
install="install"
bellard's avatar
bellard committed
36
strip="strip"
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 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 80 81 82

# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
  --cc=*) cc="$optarg"
  ;;
  esac
done

# OS specific
# Using uname is really, really broken.  Once we have the right set of checks
# we can eliminate it's usage altogether

cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
strip="${cross_prefix}${strip}"

# check that the C compiler works.
cat > $TMPC <<EOF
int main(void) {}
EOF

if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
  : C compiler works ok
else
    echo "ERROR: \"$cc\" either does not exist or does not work"
    exit 1
fi

check_define() {
cat > $TMPC <<EOF
#if !defined($1)
#error Not defined
#endif
int main(void) { return 0; }
EOF
  $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
}

if check_define __i386__ ; then
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
blueswir1's avatar
blueswir1 committed
83 84 85 86 87 88 89 90
elif check_define __sparc__ ; then
  # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
  # They must be specified using --sparc_cpu
  if check_define __arch64__ ; then
    cpu="sparc64"
  else
    cpu="sparc"
  fi
malc's avatar
malc committed
91 92 93 94 95 96
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
97
else
malc's avatar
malc committed
98
  cpu=`uname -m`
99 100
fi

bellard's avatar
bellard committed
101
target_list=""
bellard's avatar
bellard committed
102 103
case "$cpu" in
  i386|i486|i586|i686|i86pc|BePC)
104
    cpu="i386"
bellard's avatar
bellard committed
105
  ;;
aurel32's avatar
aurel32 committed
106 107 108 109 110 111
  x86_64|amd64)
    cpu="x86_64"
  ;;
  alpha)
    cpu="alpha"
  ;;
112
  armv*b)
113 114
    cpu="armv4b"
  ;;
115
  armv*l)
bellard's avatar
bellard committed
116 117
    cpu="armv4l"
  ;;
aurel32's avatar
aurel32 committed
118 119
  cris)
    cpu="cris"
bellard's avatar
bellard committed
120
  ;;
aurel32's avatar
aurel32 committed
121 122 123
  parisc|parisc64)
    cpu="hppa"
  ;;
aurel32's avatar
aurel32 committed
124 125 126 127 128
  ia64)
    cpu="ia64"
  ;;
  m68k)
    cpu="m68k"
bellard's avatar
bellard committed
129 130 131 132
  ;;
  mips)
    cpu="mips"
  ;;
ths's avatar
ths committed
133 134 135
  mips64)
    cpu="mips64"
  ;;
malc's avatar
malc committed
136 137 138 139 140
  ppc)
    cpu="ppc"
  ;;
  ppc64)
    cpu="ppc64"
141
  ;;
ths's avatar
ths committed
142
  s390*)
bellard's avatar
bellard committed
143 144
    cpu="s390"
  ;;
145
  sparc|sun4[cdmuv])
bellard's avatar
bellard committed
146 147 148 149 150
    cpu="sparc"
  ;;
  sparc64)
    cpu="sparc64"
  ;;
bellard's avatar
bellard committed
151 152 153 154 155
  *)
    cpu="unknown"
  ;;
esac
gprof="no"
156
sparse="no"
bellard's avatar
bellard committed
157
bigendian="no"
158 159 160
mingw32="no"
EXESUF=""
gdbstub="yes"
bellard's avatar
bellard committed
161
slirp="yes"
162
vde="yes"
bellard's avatar
bellard committed
163 164
fmod_lib=""
fmod_inc=""
blueswir1's avatar
blueswir1 committed
165
oss_lib=""
166
vnc_tls="yes"
167
bsd="no"
bellard's avatar
bellard committed
168
linux="no"
169
solaris="no"
bellard's avatar
bellard committed
170
kqemu="no"
171
profiler="no"
172
cocoa="no"
173
check_gfx="yes"
174
softmmu="yes"
175 176
linux_user="no"
darwin_user="no"
177
bsd_user="no"
178
build_docs="no"
179
uname_release=""
balrog's avatar
balrog committed
180
curses="yes"
181
aio="yes"
182
nptl="yes"
183
mixemu="no"
184
bluez="yes"
aliguori's avatar
aliguori committed
185
kvm="yes"
186
kerneldir=""
malc's avatar
malc committed
187
aix="no"
188
blobs="yes"
189
fdt="yes"
bellard's avatar
bellard committed
190 191

# OS specific
192 193 194 195 196 197 198
if check_define __linux__ ; then
  targetos="Linux"
elif check_define _WIN32 ; then
  targetos='MINGW32'
else
  targetos=`uname -s`
fi
bellard's avatar
bellard committed
199
case $targetos in
200 201
CYGWIN*)
mingw32="yes"
202
OS_CFLAGS="-mno-cygwin"
203 204 205
if [ "$cpu" = "i386" ] ; then
    kqemu="yes"
fi
206
audio_possible_drivers="sdl"
207
;;
208 209
MINGW32*)
mingw32="yes"
210 211 212
if [ "$cpu" = "i386" ] ; then
    kqemu="yes"
fi
213
audio_possible_drivers="dsound sdl fmod"
214
;;
215
GNU/kFreeBSD)
216
audio_drv_list="oss"
217
audio_possible_drivers="oss sdl esd pa"
218 219 220 221
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
    kqemu="yes"
fi
;;
bellard's avatar
bellard committed
222 223
FreeBSD)
bsd="yes"
224
audio_drv_list="oss"
225
audio_possible_drivers="oss sdl esd pa"
bellard's avatar
bellard committed
226
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard's avatar
bellard committed
227 228
    kqemu="yes"
fi
bellard's avatar
bellard committed
229 230 231
;;
NetBSD)
bsd="yes"
232
audio_drv_list="oss"
233
audio_possible_drivers="oss sdl esd"
234
oss_lib="-lossaudio"
bellard's avatar
bellard committed
235 236 237
;;
OpenBSD)
bsd="yes"
238
openbsd="yes"
239
audio_drv_list="oss"
240
audio_possible_drivers="oss sdl esd"
blueswir1's avatar
blueswir1 committed
241
oss_lib="-lossaudio"
bellard's avatar
bellard committed
242
;;
243 244 245
Darwin)
bsd="yes"
darwin="yes"
246
darwin_user="yes"
247
cocoa="yes"
248
audio_drv_list="coreaudio"
249
audio_possible_drivers="coreaudio sdl fmod"
250
OS_CFLAGS="-mdynamic-no-pic"
251
OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
252
;;
bellard's avatar
bellard committed
253
SunOS)
254 255 256
    solaris="yes"
    make="gmake"
    install="ginstall"
257
    needs_libsunmath="no"
258
    solarisrev=`uname -r | cut -f2 -d.`
259 260 261 262 263 264
    # have to select again, because `uname -m` returns i86pc
    # even on an x86_64 box.
    solariscpu=`isainfo -k`
    if test "${solariscpu}" = "amd64" ; then
        cpu="x86_64"
    fi
265
    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
266 267 268 269 270 271 272 273 274 275 276 277
        if test "$solarisrev" -le 9 ; then
            if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
                needs_libsunmath="yes"
            else
                echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
                echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
                echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
                echo "Studio 11 can be downloaded from www.sun.com."
                exit 1
            fi
        fi
        if test "$solarisrev" -ge 9 ; then
278 279
            kqemu="yes"
        fi
ths's avatar
ths committed
280
    fi
281
    if test -f /usr/include/sys/soundcard.h ; then
282
        audio_drv_list="oss"
283
    fi
284
    audio_possible_drivers="oss sdl"
ths's avatar
ths committed
285
;;
malc's avatar
malc committed
286 287 288 289
AIX)
aix="yes"
make="gmake"
;;
290
*)
291
audio_drv_list="oss"
malc's avatar
malc committed
292
audio_possible_drivers="oss alsa sdl esd pa"
bellard's avatar
bellard committed
293
linux="yes"
294
linux_user="yes"
295
usb="linux"
bellard's avatar
bellard committed
296
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard's avatar
bellard committed
297
    kqemu="yes"
298
    audio_possible_drivers="$audio_possible_drivers fmod"
bellard's avatar
bellard committed
299
fi
300
;;
bellard's avatar
bellard committed
301 302
esac

bellard's avatar
bellard committed
303
if [ "$bsd" = "yes" ] ; then
304
  if [ "$darwin" != "yes" ] ; then
305
    make="gmake"
306
    usb="bsd"
307
  fi
308
  bsd_user="yes"
bellard's avatar
bellard committed
309 310
fi

bellard's avatar
bellard committed
311
# find source path
pbrook's avatar
pbrook committed
312
source_path=`dirname "$0"`
313 314
source_path_used="no"
workdir=`pwd`
pbrook's avatar
pbrook committed
315
if [ -z "$source_path" ]; then
316
    source_path=$workdir
pbrook's avatar
pbrook committed
317 318
else
    source_path=`cd "$source_path"; pwd`
bellard's avatar
bellard committed
319
fi
320
[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard's avatar
bellard committed
321

322
werror="no"
323 324 325 326
# generate compile errors on warnings for development builds
#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
#werror="yes";
#fi
327

bellard's avatar
bellard committed
328
for opt do
pbrook's avatar
pbrook committed
329
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard's avatar
bellard committed
330
  case "$opt" in
331 332
  --help|-h) show_help=yes
  ;;
333
  --prefix=*) prefix="$optarg"
bellard's avatar
bellard committed
334
  ;;
335
  --interp-prefix=*) interp_prefix="$optarg"
bellard's avatar
bellard committed
336
  ;;
337
  --source-path=*) source_path="$optarg"
pbrook's avatar
pbrook committed
338
  source_path_used="yes"
bellard's avatar
bellard committed
339
  ;;
340
  --cross-prefix=*)
bellard's avatar
bellard committed
341
  ;;
342
  --cc=*)
bellard's avatar
bellard committed
343
  ;;
344
  --host-cc=*) host_cc="$optarg"
bellard's avatar
bellard committed
345
  ;;
346
  --make=*) make="$optarg"
bellard's avatar
bellard committed
347
  ;;
348 349
  --install=*) install="$optarg"
  ;;
350
  --extra-cflags=*) CFLAGS="$optarg"
bellard's avatar
bellard committed
351
  ;;
352
  --extra-ldflags=*) LDFLAGS="$optarg"
bellard's avatar
bellard committed
353
  ;;
354
  --cpu=*) cpu="$optarg"
bellard's avatar
bellard committed
355
  ;;
356
  --target-list=*) target_list="$optarg"
bellard's avatar
bellard committed
357
  ;;
bellard's avatar
bellard committed
358 359
  --enable-gprof) gprof="yes"
  ;;
bellard's avatar
bellard committed
360 361
  --static) static="yes"
  ;;
362 363
  --disable-sdl) sdl="no"
  ;;
364
  --fmod-lib=*) fmod_lib="$optarg"
365
  ;;
366 367
  --fmod-inc=*) fmod_inc="$optarg"
  ;;
blueswir1's avatar
blueswir1 committed
368 369
  --oss-lib=*) oss_lib="$optarg"
  ;;
370
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
bellard's avatar
bellard committed
371
  ;;
372
  --audio-drv-list=*) audio_drv_list="$optarg"
bellard's avatar
bellard committed
373
  ;;
374 375 376 377
  --enable-sparse) sparse="yes"
  ;;
  --disable-sparse) sparse="no"
  ;;
378 379
  --disable-vnc-tls) vnc_tls="no"
  ;;
bellard's avatar
bellard committed
380
  --disable-slirp) slirp="no"
381
  ;;
382
  --disable-vde) vde="no"
383
  ;;
bellard's avatar
bellard committed
384
  --disable-kqemu) kqemu="no"
385
  ;;
aurel32's avatar
aurel32 committed
386 387
  --disable-brlapi) brlapi="no"
  ;;
388 389
  --disable-bluez) bluez="no"
  ;;
aliguori's avatar
aliguori committed
390 391
  --disable-kvm) kvm="no"
  ;;
392 393
  --enable-profiler) profiler="yes"
  ;;
394 395 396 397
  --enable-cocoa)
      cocoa="yes" ;
      sdl="no" ;
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
398
  ;;
399 400
  --disable-gfx-check) check_gfx="no"
  ;;
401
  --disable-system) softmmu="no"
402
  ;;
403
  --enable-system) softmmu="yes"
404
  ;;
405
  --disable-linux-user) linux_user="no"
406
  ;;
407 408 409 410 411
  --enable-linux-user) linux_user="yes"
  ;;
  --disable-darwin-user) darwin_user="no"
  ;;
  --enable-darwin-user) darwin_user="yes"
412
  ;;
413 414 415 416
  --disable-bsd-user) bsd_user="no"
  ;;
  --enable-bsd-user) bsd_user="yes"
  ;;
417 418
  --enable-uname-release=*) uname_release="$optarg"
  ;;
419 420 421 422 423 424 425 426 427 428 429 430
  --sparc_cpu=*)
      sparc_cpu="$optarg"
      case $sparc_cpu in
        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
                 target_cpu="sparc"; cpu="sparc" ;;
        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
                 target_cpu="sparc"; cpu="sparc" ;;
        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
                 target_cpu="sparc64"; cpu="sparc64" ;;
        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
      esac
  ;;
431 432 433 434
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
balrog's avatar
balrog committed
435 436
  --disable-curses) curses="no"
  ;;
437 438
  --disable-nptl) nptl="no"
  ;;
439 440
  --enable-mixemu) mixemu="yes"
  ;;
441 442
  --disable-aio) aio="no"
  ;;
443 444
  --disable-blobs) blobs="no"
  ;;
445 446
  --kerneldir=*) kerneldir="$optarg"
  ;;
447 448
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
bellard's avatar
bellard committed
449 450 451
  esac
done

452
# default flags for all hosts
453
CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
454
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls"
455
LDFLAGS="$LDFLAGS -g"
456 457 458
if test "$werror" = "yes" ; then
CFLAGS="$CFLAGS -Werror"
fi
459

460 461 462 463
if test "$solaris" = "no" ; then
    if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
        LDFLAGS="$LDFLAGS -Wl,--warn-common"
    fi
blueswir1's avatar
blueswir1 committed
464 465
fi

466 467 468 469
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
#
470
case "$cpu" in
471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486
    sparc) if test -z "$sparc_cpu" ; then
               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
               ARCH_LDFLAGS="-m32"
           else
               ARCH_CFLAGS="${SP_CFLAGS}"
               ARCH_LDFLAGS="${SP_LDFLAGS}"
           fi
           ;;
    sparc64) if test -z "$sparc_cpu" ; then
               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
               ARCH_LDFLAGS="-m64"
           else
               ARCH_CFLAGS="${SP_CFLAGS}"
               ARCH_LDFLAGS="${SP_LDFLAGS}"
           fi
           ;;
487 488 489
    s390)
           ARCH_CFLAGS="-march=z900"
           ;;
490 491 492 493 494 495 496 497
    i386)
           ARCH_CFLAGS="-m32"
           ARCH_LDFLAGS="-m32"
           ;;
    x86_64)
           ARCH_CFLAGS="-m64"
           ARCH_LDFLAGS="-m64"
           ;;
498 499
esac

500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522
if test x"$show_help" = x"yes" ; 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]"
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
echo "                           use %M for cpu name [$interp_prefix]"
echo "  --target-list=LIST       set target list [$target_list]"
echo ""
echo "kqemu kernel acceleration support:"
echo "  --disable-kqemu          disable kqemu support"
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 "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
echo "  --make=MAKE              use specified make [$make]"
523
echo "  --install=INSTALL        use specified install [$install]"
524
echo "  --static                 enable static build [$static]"
525 526
echo "  --enable-sparse          enable sparse checker"
echo "  --disable-sparse         disable sparse checker (default)"
527
echo "  --disable-werror         disable compilation abort on warning"
528
echo "  --disable-sdl            disable SDL"
529
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
530 531
echo "  --audio-drv-list=LIST    set audio drivers list:"
echo "                           Available drivers: $audio_possible_drivers"
532 533
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
echo "                           Available cards: $audio_possible_cards"
534
echo "  --enable-mixemu          enable mixer emulation"
aurel32's avatar
aurel32 committed
535
echo "  --disable-brlapi         disable BrlAPI"
536
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
537
echo "  --disable-curses         disable curses output"
538
echo "  --disable-bluez          disable bluez stack connectivity"
aliguori's avatar
aliguori committed
539
echo "  --disable-kvm            disable KVM acceleration support"
540
echo "  --disable-nptl           disable usermode NPTL support"
541 542
echo "  --enable-system          enable all system emulation targets"
echo "  --disable-system         disable all system emulation targets"
543 544 545 546
echo "  --enable-linux-user      enable all linux usermode emulation targets"
echo "  --disable-linux-user     disable all linux usermode emulation targets"
echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
547 548
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
549 550
echo "  --fmod-lib               path to FMOD library"
echo "  --fmod-inc               path to FMOD includes"
blueswir1's avatar
blueswir1 committed
551
echo "  --oss-lib                path to OSS library"
552
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
553
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
554
echo "  --disable-vde            disable support for vde network"
555
echo "  --disable-aio            disable AIO support"
556
echo "  --disable-blobs          disable installing provided firmware blobs"
557
echo "  --kerneldir=PATH         look for kernel includes in PATH"
558
echo ""
ths's avatar
ths committed
559
echo "NOTE: The object files are built at the place where configure is launched"
560 561 562
exit 1
fi

563
if test "$mingw32" = "yes" ; then
bellard's avatar
bellard committed
564
    linux="no"
565
    EXESUF=".exe"
bellard's avatar
bellard committed
566
    oss="no"
aliguori's avatar
aliguori committed
567
    linux_user="no"
568
    bsd_user="no"
aliguori's avatar
aliguori committed
569 570
fi

571 572 573 574
if test ! -x "$(which cgcc 2>/dev/null)"; then
    sparse="no"
fi

bellard's avatar
bellard committed
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
  if test -z "$solinst" ; then
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
    exit 1
  fi
  if test "$solinst" = "/usr/sbin/install" ; then
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
    exit 1
  fi
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
  if test -z "$sol_ar" ; then
    echo "Error: No path includes ar"
    if test -f /usr/ccs/bin/ar ; then
      echo "Add /usr/ccs/bin to your path and rerun configure"
    fi
    exit 1
  fi
600
fi
bellard's avatar
bellard committed
601 602


bellard's avatar
bellard committed
603 604
if test -z "$target_list" ; then
# these targets are portable
605
    if [ "$softmmu" = "yes" ] ; then
aurel32's avatar
aurel32 committed
606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622
        target_list="\
i386-softmmu \
x86_64-softmmu \
arm-softmmu \
cris-softmmu \
m68k-softmmu \
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
"
623
    fi
bellard's avatar
bellard committed
624
# the following are Linux specific
625
    if [ "$linux_user" = "yes" ] ; then
aurel32's avatar
aurel32 committed
626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644
        target_list="${target_list}\
i386-linux-user \
x86_64-linux-user \
alpha-linux-user \
arm-linux-user \
armeb-linux-user \
cris-linux-user \
m68k-linux-user \
mips-linux-user \
mipsel-linux-user \
ppc-linux-user \
ppc64-linux-user \
ppc64abi32-linux-user \
sh4-linux-user \
sh4eb-linux-user \
sparc-linux-user \
sparc64-linux-user \
sparc32plus-linux-user \
"
645 646 647
    fi
# the following are Darwin specific
    if [ "$darwin_user" = "yes" ] ; then
malc's avatar
malc committed
648
        target_list="$target_list i386-darwin-user ppc-darwin-user "
bellard's avatar
bellard committed
649
    fi
650 651 652 653 654 655
# the following are BSD specific
    if [ "$bsd_user" = "yes" ] ; then
        target_list="${target_list}\
sparc64-bsd-user \
"
    fi
656
else
657
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard's avatar
bellard committed
658
fi
659 660 661 662
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
bellard's avatar
bellard committed
663

bellard's avatar
bellard committed
664 665 666 667 668 669 670
if test -z "$cross_prefix" ; then

# ---
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
671 672
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
bellard's avatar
bellard committed
673 674 675
}
EOF

676
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
bellard's avatar
bellard committed
677 678 679 680 681 682 683 684
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
aurel32's avatar
aurel32 committed
685
if test "$cpu" = "armv4b" \
aurel32's avatar
aurel32 committed
686
     -o "$cpu" = "hppa" \
aurel32's avatar
aurel32 committed
687 688 689
     -o "$cpu" = "m68k" \
     -o "$cpu" = "mips" \
     -o "$cpu" = "mips64" \
malc's avatar
malc committed
690 691
     -o "$cpu" = "ppc" \
     -o "$cpu" = "ppc64" \
aurel32's avatar
aurel32 committed
692 693 694
     -o "$cpu" = "s390" \
     -o "$cpu" = "sparc" \
     -o "$cpu" = "sparc64"; then
bellard's avatar
bellard committed
695 696 697 698 699
    bigendian="yes"
fi

fi

700 701
# host long bits test
hostlongbits="32"
aurel32's avatar
aurel32 committed
702 703 704
if test "$cpu" = "x86_64" \
     -o "$cpu" = "alpha" \
     -o "$cpu" = "ia64" \
malc's avatar
malc committed
705 706
     -o "$cpu" = "sparc64" \
     -o "$cpu" = "ppc64"; then
707 708 709
    hostlongbits="64"
fi

bellard's avatar
bellard committed
710
# check gcc options support
bellard's avatar
bellard committed
711 712 713 714 715
cat > $TMPC <<EOF
int main(void) {
}
EOF

716 717 718
# Check host NPTL support
cat > $TMPC <<EOF
#include <sched.h>
pbrook's avatar
pbrook committed
719
#include <linux/futex.h>
720 721 722 723 724 725 726 727
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF

728
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
729 730 731 732 733
  :
else
   nptl="no"
fi

734 735 736 737 738 739 740
##########################################
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
741
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz > /dev/null 2> /dev/null ; then
742 743 744 745 746 747 748 749 750
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

bellard's avatar
bellard committed
751 752 753 754 755 756
##########################################
# SDL probe

sdl_too_old=no

if test -z "$sdl" ; then
757 758 759 760
    sdl_config="sdl-config"
    sdl=no
    sdl_static=no

bellard's avatar
bellard committed
761 762 763 764 765
cat > $TMPC << EOF
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
766
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` > $TMPSDLLOG 2>&1 ; then
aliguori's avatar
aliguori committed
767 768 769 770 771 772
        _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
        if test "$_sdlversion" -lt 121 ; then
            sdl_too_old=yes
        else
            if test "$cocoa" = "no" ; then
                sdl=yes
773
            fi
aliguori's avatar
aliguori committed
774
        fi
bellard's avatar
bellard committed
775

aliguori's avatar
aliguori committed
776 777 778 779 780 781 782 783 784
        # static link with sdl ?
        if test "$sdl" = "yes" ; then
            aa="no"
            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
            if [ "$aa" = "yes" ] ; then
                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
            fi

785
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs > /dev/null 2> /dev/null; then
aliguori's avatar
aliguori committed
786 787 788 789
                sdl_static=yes
            fi
        fi # static link
    fi # sdl compile test
790
else
791 792 793
    # Make sure to disable cocoa if sdl was set
    if test "$sdl" = "yes" ; then
       cocoa="no"
794
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
795
    fi
796
fi # -z $sdl
bellard's avatar
bellard committed
797

798 799 800
##########################################
# VNC TLS detection
if test "$vnc_tls" = "yes" ; then
801 802 803 804 805 806 807
cat > $TMPC <<EOF
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
808
           $vnc_tls_libs > /dev/null 2> /dev/null ; then
809 810 811 812
	:
    else
	vnc_tls="no"
    fi
813 814
fi

815 816 817 818 819
##########################################
# vde libraries probe
if test "$vde" = "yes" ; then
  cat > $TMPC << EOF
#include <libvdeplug.h>
pbrook's avatar
pbrook committed
820 821 822 823 824 825
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
826
EOF
827
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug > /dev/null 2> /dev/null ; then
828 829
        :
    else
830
        vde="no"
831 832 833
    fi
fi

834
##########################################
835
# Sound support libraries probe
836

837 838 839 840 841 842 843 844 845 846
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
847
EOF
848
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib > /dev/null 2> /dev/null ; then
849 850 851 852 853 854 855 856 857 858
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

859
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880
for drv in $audio_drv_list; do
    case $drv in
    alsa)
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
    ;;

    fmod)
    if test -z $fmod_lib || test -z $fmod_inc; then
        echo
        echo "Error: You must specify path to FMOD library and headers"
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
        echo
        exit 1
    fi
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
    ;;
malc's avatar
malc committed
881 882 883 884 885 886

    pa)
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
    ;;

blueswir1's avatar
blueswir1 committed
887 888 889 890
    oss|sdl|core|wav|dsound)
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

malc's avatar
malc committed
891
    *)
malc's avatar
malc committed
892
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malc's avatar
malc committed
893 894 895 896 897 898 899
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
900 901
    esac
done
902

aurel32's avatar
aurel32 committed
903 904 905 906 907 908 909 910 911
##########################################
# BrlAPI probe

if test -z "$brlapi" ; then
    brlapi=no
cat > $TMPC << EOF
#include <brlapi.h>
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
912
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi > /dev/null 2> /dev/null ; then
aurel32's avatar
aurel32 committed
913 914 915 916
	    brlapi=yes
    fi # brlapi compile test
fi # -z $brlapi

balrog's avatar
balrog committed
917 918 919 920 921 922 923 924 925
##########################################
# curses probe

if test "$curses" = "yes" ; then
  curses=no
  cat > $TMPC << EOF
#include <curses.h>
int main(void) { return curses_version(); }
EOF
926
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses > /dev/null 2> /dev/null ; then
balrog's avatar
balrog committed
927 928 929 930
    curses=yes
  fi
fi # test "$curses"

931 932 933 934 935 936
##########################################
# bluez support probe
if test "$bluez" = "yes" ; then
  `pkg-config bluez` || bluez="no"
fi
if test "$bluez" = "yes" ; then
937 938 939 940
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
941 942
  bluez_cflags=`pkg-config --cflags bluez`
  bluez_libs=`pkg-config --libs bluez`
943
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
944
      $bluez_libs > /dev/null 2> /dev/null ; then
945 946 947 948
    :
  else
    bluez="no"
  fi
949 950
fi

aliguori's avatar
aliguori committed
951 952 953 954 955
##########################################
# kvm probe
if test "$kvm" = "yes" ; then
    cat > $TMPC <<EOF
#include <linux/kvm.h>
956
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
aliguori's avatar
aliguori committed
957 958
#error Invalid KVM version
#endif
959 960 961 962 963 964 965 966 967
#if !defined(KVM_CAP_USER_MEMORY)
#error Missing KVM capability KVM_CAP_USER_MEMORY
#endif
#if !defined(KVM_CAP_SET_TSS_ADDR)
#error Missing KVM capability KVM_CAP_SET_TSS_ADDR
#endif
#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
#endif
aliguori's avatar
aliguori committed
968 969
int main(void) { return 0; }
EOF
970 971
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
972 973 974
      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
         -a -d "$kerneldir/arch/x86/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
975 976
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
977 978 979
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
980 981 982
  else
      kvm_cflags=""
  fi
aliguori's avatar
aliguori committed
983
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
984
      > /dev/null 2>/dev/null ; then
aliguori's avatar
aliguori committed
985 986
    :
  else
987 988 989 990 991 992 993 994 995 996
    kvm="no";
    if [ -x "`which awk 2>/dev/null`" ] && \
       [ -x "`which grep 2>/dev/null`" ]; then
      kvmerr=`$cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC 2>&1 \
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
      if test "$kvmerr" != "" ; then
        kvm="no - (${kvmerr})"
      fi
    fi
aliguori's avatar
aliguori committed
997 998 999
  fi
fi

1000 1001
##########################################
# AIO probe
1002 1003
AIOLIBS=""

1004 1005 1006
if test "$aio" = "yes" ; then
  aio=no
  cat > $TMPC << EOF
1007
#include <pthread.h>
1008
int main(void) { pthread_mutex_t lock;  return 0; }
1009 1010 1011
EOF
  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
    aio=yes
1012
    AIOLIBS="-lpthread"
1013 1014 1015
  fi
fi

1016 1017 1018
##########################################
# iovec probe
cat > $TMPC <<EOF
blueswir1's avatar
blueswir1 committed
1019
#include <sys/types.h>
1020
#include <sys/uio.h>
blueswir1's avatar
blueswir1 committed
1021
#include <unistd.h>
1022 1023 1024
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
1025
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1026 1027 1028
  iovec=yes
fi

1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040
##########################################
# fdt probe
if test "$fdt" = "yes" ; then
    fdt=no
    cat > $TMPC << EOF
int main(void) { return 0; }
EOF
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lfdt 2> /dev/null ; then
    fdt=yes
  fi
fi

1041
# Check if tools are available to build documentation.
1042 1043
if [ -x "`which texi2html 2>/dev/null`" ] && \
   [ -x "`which pod2man 2>/dev/null`" ]; then
1044 1045 1046
  build_docs="yes"
fi

1047 1048 1049 1050 1051 1052 1053 1054 1055
##########################################
# Do we need librt
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
EOF

rt=no
1056
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1057
  :
1058
elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt > /dev/null 2> /dev/null ; then
1059 1060 1061 1062 1063 1064 1065 1066
  rt=yes
fi

if test "$rt" = "yes" ; then
  # Hack, we should have a general purpose LIBS for this sort of thing
  AIOLIBS="$AIOLIBS -lrt"
fi

bellard's avatar
bellard committed
1067
if test "$mingw32" = "yes" ; then
1068
  if test -z "$prefix" ; then
1069
      prefix="c:\\\\Program Files\\\\Qemu"
1070 1071 1072 1073 1074
  fi
  mansuffix=""
  datasuffix=""
  docsuffix=""
  binsuffix=""
bellard's avatar
bellard committed
1075
else
1076 1077 1078 1079 1080 1081 1082
  if test -z "$prefix" ; then
      prefix="/usr/local"
  fi
  mansuffix="/share/man"
  datasuffix="/share/qemu"
  docsuffix="/share/doc/qemu"
  binsuffix="/bin"
bellard's avatar
bellard committed
1083
fi
1084

bellard's avatar
bellard committed
1085
echo "Install prefix    $prefix"
1086 1087
echo "BIOS directory    $prefix$datasuffix"
echo "binary directory  $prefix$binsuffix"
bellard's avatar
bellard committed
1088
if test "$mingw32" = "no" ; then
1089
echo "Manual directory  $prefix$mansuffix"
bellard's avatar
bellard committed
1090
echo "ELF interp prefix $interp_prefix"
bellard's avatar
bellard committed
1091
fi
1092
echo "Source path       $source_path"
bellard's avatar
bellard committed
1093
echo "C compiler        $cc"
bellard's avatar
bellard committed
1094
echo "Host C compiler   $host_cc"
1095
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
bellard's avatar
bellard committed
1096
echo "make              $make"
1097
echo "install           $install"
bellard's avatar
bellard committed
1098
echo "host CPU          $cpu"
bellard's avatar
bellard committed
1099
echo "host big endian   $bigendian"
1100
echo "target list       $target_list"
bellard's avatar
bellard committed
1101
echo "gprof enabled     $gprof"
1102
echo "sparse enabled    $sparse"
1103
echo "profiler          $profiler"
bellard's avatar
bellard committed
1104
echo "static build      $static"
1105
echo "-Werror enabled   $werror"
1106 1107 1108
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
1109
echo "SDL support       $sdl"
bellard's avatar
bellard committed
1110 1111 1112
if test "$sdl" != "no" ; then
    echo "SDL static link   $sdl_static"
fi
balrog's avatar
balrog committed
1113
echo "curses support    $curses"
1114
echo "mingw32 support   $mingw32"
1115 1116
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
1117
echo "Mixer emulation   $mixemu"
1118 1119 1120 1121 1122
echo "VNC TLS support   $vnc_tls"
if test "$vnc_tls" = "yes" ; then
    echo "    TLS CFLAGS    $vnc_tls_cflags"
    echo "    TLS LIBS      $vnc_tls_libs"
fi
1123 1124 1125
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
bellard's avatar
bellard committed
1126
echo "kqemu support     $kqemu"
aurel32's avatar
aurel32 committed
1127
echo "brlapi support    $brlapi"
1128
echo "Documentation     $build_docs"
1129 1130
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
1131
echo "NPTL support      $nptl"
1132
echo "vde support       $vde"
1133
echo "AIO support       $aio"
1134
echo "Install blobs     $blobs"
aliguori's avatar
aliguori committed
1135
echo "KVM support       $kvm"
1136
echo "fdt support       $fdt"
1137

1138
if test $sdl_too_old = "yes"; then
1139
echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellard's avatar
bellard committed
1140
fi
1141
if [ -s $TMPSDLLOG ]; then
1142
  echo "The error log from compiling the libSDL test is: "
1143
  cat $TMPSDLLOG
1144
fi
1145 1146 1147
#if test "$sdl_static" = "no"; then
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
#fi
1148 1149
config_mak="config-host.mak"
config_h="config-host.h"
bellard's avatar
bellard committed
1150

bellard's avatar
bellard committed
1151
#echo "Creating $config_mak and $config_h"
bellard's avatar
bellard committed
1152

1153 1154
test -f $config_h && mv $config_h ${config_h}~

1155
echo "# Automatically generated by configure - do not modify" > $config_mak
1156
printf "# Configured with:" >> $config_mak
1157 1158
printf " '%s'" "$0" "$@" >> $config_mak
echo >> $config_mak
1159
echo "/* Automatically generated by configure - do not modify */" > $config_h
bellard's avatar
bellard committed
1160

1161
echo "prefix=$prefix" >> $config_mak
1162 1163 1164
echo "bindir=\${prefix}$binsuffix" >> $config_mak
echo "mandir=\${prefix}$mansuffix" >> $config_mak
echo "datadir=\${prefix}$datasuffix" >> $config_mak
1165
echo "docdir=\${prefix}$docsuffix" >> $config_mak
1166
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1167
echo "MAKE=$make" >> $config_mak
1168
echo "INSTALL=$install" >> $config_mak
1169 1170 1171 1172
echo "CC=$cc" >> $config_mak
echo "HOST_CC=$host_cc" >> $config_mak
echo "AR=$ar" >> $config_mak
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1173 1174 1175
# XXX: only use CFLAGS and LDFLAGS ?  
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
# compilation of dyngen tool (useful for win32 build on Linux host)
1176
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1177 1178 1179
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1180 1181
echo "CFLAGS=$CFLAGS" >> $config_mak
echo "LDFLAGS=$LDFLAGS" >> $config_mak
1182
echo "EXESUF=$EXESUF" >> $config_mak
1183
echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel32's avatar
aurel32 committed
1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228
case "$cpu" in
  i386)
    echo "ARCH=i386" >> $config_mak
    echo "#define HOST_I386 1" >> $config_h
  ;;
  x86_64)
    echo "ARCH=x86_64" >> $config_mak
    echo "#define HOST_X86_64 1" >> $config_h
  ;;
  alpha)
    echo "ARCH=alpha" >> $config_mak
    echo "#define HOST_ALPHA 1" >> $config_h
  ;;
  armv4b)
    echo "ARCH=arm" >> $config_mak
    echo "#define HOST_ARM 1" >> $config_h
  ;;
  armv4l)
    echo "ARCH=arm" >> $config_mak
    echo "#define HOST_ARM 1" >> $config_h
  ;;
  cris)
    echo "ARCH=cris" >> $config_mak
    echo "#define HOST_CRIS 1" >> $config_h
  ;;
  hppa)
    echo "ARCH=hppa" >> $config_mak
    echo "#define HOST_HPPA 1" >> $config_h
  ;;
  ia64)
    echo "ARCH=ia64" >> $config_mak
    echo "#define HOST_IA64 1" >> $config_h
  ;;
  m68k)
    echo "ARCH=m68k" >> $config_mak
    echo "#define HOST_M68K 1" >> $config_h
  ;;
  mips)
    echo "ARCH=mips" >> $config_mak
    echo "#define HOST_MIPS 1" >> $config_h
  ;;
  mips64)
    echo "ARCH=mips64" >> $config_mak
    echo "#define HOST_MIPS64 1" >> $config_h
  ;;
malc's avatar
malc committed
1229 1230 1231 1232 1233 1234 1235
  ppc)
    echo "ARCH=ppc" >> $config_mak
    echo "#define HOST_PPC 1" >> $config_h
  ;;
  ppc64)
    echo "ARCH=ppc64" >> $config_mak
    echo "#define HOST_PPC64 1" >> $config_h
aurel32's avatar
aurel32 committed
1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253
  ;;
  s390)
    echo "ARCH=s390" >> $config_mak
    echo "#define HOST_S390 1" >> $config_h
  ;;
  sparc)
    echo "ARCH=sparc" >> $config_mak
    echo "#define HOST_SPARC 1" >> $config_h
  ;;
  sparc64)
    echo "ARCH=sparc64" >> $config_mak
    echo "#define HOST_SPARC64 1" >> $config_h
  ;;
  *)
    echo "Unsupported CPU = $cpu"
    exit 1
  ;;
esac
1254 1255 1256 1257 1258
if test "$sparse" = "yes" ; then
  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_mak
  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_mak
  echo "CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
fi
bellard's avatar
bellard committed
1259
if test "$bigendian" = "yes" ; then
1260 1261 1262
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
fi
1263
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1264 1265
if test "$mingw32" = "yes" ; then
  echo "CONFIG_WIN32=yes" >> $config_mak
bellard's avatar
bellard committed
1266
  echo "#define CONFIG_WIN32 1" >> $config_h
1267 1268 1269 1270 1271
else
  cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
1272
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1273 1274
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
  fi
1275 1276 1277 1278 1279 1280
  cat > $TMPC << EOF
#include <sys/endian.h>
#include <sys/types.h>
#include <machine/bswap.h>
int main(void) { return bswap32(0); }
EOF
1281
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1282 1283
    echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_h
  fi
1284
fi
1285 1286 1287 1288 1289

if [ "$openbsd" = "yes" ] ; then
  echo "#define ENOTSUP 4096" >> $config_h
fi

1290 1291 1292 1293
if test "$darwin" = "yes" ; then
  echo "CONFIG_DARWIN=yes" >> $config_mak
  echo "#define CONFIG_DARWIN 1" >> $config_h
fi
malc's avatar
malc committed
1294 1295 1296 1297 1298 1299

if test "$aix" = "yes" ; then
  echo "CONFIG_AIX=yes" >> $config_mak
  echo "#define CONFIG_AIX 1" >> $config_h
fi

bellard's avatar
bellard committed
1300 1301
if test "$solaris" = "yes" ; then
  echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard's avatar
bellard committed
1302
  echo "#define HOST_SOLARIS