xref: /openbmc/qemu/configure (revision fb3e5849)
17d13299dSbellard#!/bin/sh
27d13299dSbellard#
33ef693a0Sbellard# qemu configure script (c) 2003 Fabrice Bellard
47d13299dSbellard#
57d13299dSbellard# set temporary file name
67d13299dSbellardif test ! -z "$TMPDIR" ; then
77d13299dSbellard    TMPDIR1="${TMPDIR}"
87d13299dSbellardelif test ! -z "$TEMPDIR" ; then
97d13299dSbellard    TMPDIR1="${TEMPDIR}"
107d13299dSbellardelse
117d13299dSbellard    TMPDIR1="/tmp"
127d13299dSbellardfi
137d13299dSbellard
143ef693a0SbellardTMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
153ef693a0SbellardTMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
163ef693a0SbellardTMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
173ef693a0SbellardTMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
183ef693a0SbellardTMPH="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.h"
197d13299dSbellard
207d13299dSbellard# default parameters
217d13299dSbellardprefix="/usr/local"
227d13299dSbellardcross_prefix=""
237d13299dSbellardcc="gcc"
247d13299dSbellardhost_cc="gcc"
257d13299dSbellardar="ar"
267d13299dSbellardmake="make"
277d13299dSbellardstrip="strip"
287d13299dSbellardcpu=`uname -m`
297d13299dSbellardcase "$cpu" in
307d13299dSbellard  i386|i486|i586|i686|i86pc|BePC)
317d13299dSbellard    cpu="x86"
327d13299dSbellard  ;;
337d13299dSbellard  armv4l)
347d13299dSbellard    cpu="armv4l"
357d13299dSbellard  ;;
367d13299dSbellard  alpha)
377d13299dSbellard    cpu="alpha"
387d13299dSbellard  ;;
397d13299dSbellard  "Power Macintosh"|ppc)
407d13299dSbellard    cpu="powerpc"
417d13299dSbellard  ;;
427d13299dSbellard  mips)
437d13299dSbellard    cpu="mips"
447d13299dSbellard  ;;
45*fb3e5849Sbellard  s390)
46*fb3e5849Sbellard    cpu="s390"
47*fb3e5849Sbellard  ;;
487d13299dSbellard  *)
497d13299dSbellard    cpu="unknown"
507d13299dSbellard  ;;
517d13299dSbellardesac
527d13299dSbellardgprof="no"
537d13299dSbellardbigendian="no"
547d13299dSbellard
557d13299dSbellard# OS specific
567d13299dSbellardtargetos=`uname -s`
577d13299dSbellardcase $targetos in
587d13299dSbellardBeOS)
597d13299dSbellardprefix="/boot/home/config"
607d13299dSbellard# helps building libavcodec
617d13299dSbellardCFLAGS="-O2 -DPIC"
627d13299dSbellard# no need for libm, but the inet stuff
637d13299dSbellard# Check for BONE
647d13299dSbellardif (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
657d13299dSbellardextralibs="-lbind -lsocket"
667d13299dSbellardelse
677d13299dSbellardecho "Not sure building for net_server will succeed... good luck."
687d13299dSbellardextralibs="-lsocket"
697d13299dSbellardfi ;;
707d13299dSbellardBSD/OS)
717d13299dSbellardextralibs="-lpoll -lgnugetopt -lm"
727d13299dSbellardmake="gmake"
737d13299dSbellard;;
747d13299dSbellard*) ;;
757d13299dSbellardesac
767d13299dSbellard
777d13299dSbellard# find source path
787d13299dSbellard# XXX: we assume an absolute path is given when launching configure,
797d13299dSbellard# except in './configure' case.
807d13299dSbellardsource_path=${0%configure}
817d13299dSbellardsource_path=${source_path%/}
827d13299dSbellardsource_path_used="yes"
837d13299dSbellardif test -z "$source_path" -o "$source_path" = "." ; then
847d13299dSbellard    source_path=`pwd`
857d13299dSbellard    source_path_used="no"
867d13299dSbellardfi
877d13299dSbellard
887d13299dSbellardfor opt do
897d13299dSbellard  case "$opt" in
907d13299dSbellard  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
917d13299dSbellard  ;;
927d13299dSbellard  --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
937d13299dSbellard  ;;
947d13299dSbellard  --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
957d13299dSbellard  ;;
967d13299dSbellard  --cc=*) cc=`echo $opt | cut -d '=' -f 2`
977d13299dSbellard  ;;
987d13299dSbellard  --make=*) make=`echo $opt | cut -d '=' -f 2`
997d13299dSbellard  ;;
1007d13299dSbellard  --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
1017d13299dSbellard  ;;
1027d13299dSbellard  --extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}"
1037d13299dSbellard  ;;
1047d13299dSbellard  --extra-libs=*) extralibs=${opt#--extra-libs=}
1057d13299dSbellard  ;;
1067d13299dSbellard  --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
1077d13299dSbellard  ;;
1087d13299dSbellard  --enable-gprof) gprof="yes"
1097d13299dSbellard  ;;
1107d13299dSbellard  esac
1117d13299dSbellarddone
1127d13299dSbellard
1137d13299dSbellard# Checking for CFLAGS
1147d13299dSbellardif test -z "$CFLAGS"; then
1157d13299dSbellard    CFLAGS="-O2"
1167d13299dSbellardfi
1177d13299dSbellard
1187d13299dSbellardcc="${cross_prefix}${cc}"
1197d13299dSbellardar="${cross_prefix}${ar}"
1207d13299dSbellardstrip="${cross_prefix}${strip}"
1217d13299dSbellard
1227d13299dSbellardif test -z "$cross_prefix" ; then
1237d13299dSbellard
1247d13299dSbellard# ---
1257d13299dSbellard# big/little endian test
1267d13299dSbellardcat > $TMPC << EOF
1277d13299dSbellard#include <inttypes.h>
1287d13299dSbellardint main(int argc, char ** argv){
1297d13299dSbellard	volatile uint32_t i=0x01234567;
1307d13299dSbellard	return (*((uint8_t*)(&i))) == 0x67;
1317d13299dSbellard}
1327d13299dSbellardEOF
1337d13299dSbellard
1347d13299dSbellardif $cc -o $TMPE $TMPC 2>/dev/null ; then
1357d13299dSbellard$TMPE && bigendian="yes"
1367d13299dSbellardelse
1377d13299dSbellardecho big/little test failed
1387d13299dSbellardfi
1397d13299dSbellard
1407d13299dSbellardelse
1417d13299dSbellard
1427d13299dSbellard# if cross compiling, cannot launch a program, so make a static guess
143*fb3e5849Sbellardif test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" ; then
1447d13299dSbellard    bigendian="yes"
1457d13299dSbellardfi
1467d13299dSbellard
1477d13299dSbellardfi
1487d13299dSbellard
149ca735206Sbellard# check gcc version
15004369ff2Sbellardcat > $TMPC <<EOF
15104369ff2Sbellardint main(void) {
15204369ff2Sbellard#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
15304369ff2Sbellardreturn 0;
15404369ff2Sbellard#else
15504369ff2Sbellard#error gcc < 3.2
15604369ff2Sbellard#endif
15704369ff2Sbellard}
15804369ff2SbellardEOF
15904369ff2Sbellard
160ca735206Sbellardgcc_major="2"
16104369ff2Sbellardif $cc -o $TMPO $TMPC 2> /dev/null ; then
16204369ff2Sbellard   gcc_major="3"
16304369ff2Sbellardfi
164ca735206Sbellard
1657d13299dSbellardif test x"$1" = x"-h" -o x"$1" = x"--help" ; then
1667d13299dSbellardcat << EOF
1677d13299dSbellard
1687d13299dSbellardUsage: configure [options]
1697d13299dSbellardOptions: [defaults in brackets after descriptions]
1707d13299dSbellard
1717d13299dSbellardEOF
1727d13299dSbellardecho "Standard options:"
1737d13299dSbellardecho "  --help                   print this message"
1747d13299dSbellardecho "  --prefix=PREFIX          install in PREFIX [$prefix]"
1757d13299dSbellardecho "                           for audio/video/image support"
1767d13299dSbellardecho ""
1777d13299dSbellardecho "Advanced options (experts only):"
1787d13299dSbellardecho "  --source-path=PATH       path of source code [$source_path]"
1797d13299dSbellardecho "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
1807d13299dSbellardecho "  --cc=CC                  use C compiler CC [$cc]"
1817d13299dSbellardecho "  --make=MAKE              use specified make [$make]"
1827d13299dSbellardecho ""
1837d13299dSbellardecho "NOTE: The object files are build at the place where configure is launched"
1847d13299dSbellardexit 1
1857d13299dSbellardfi
1867d13299dSbellard
1877d13299dSbellardecho "Install prefix   $prefix"
1887d13299dSbellardecho "Source path      $source_path"
1897d13299dSbellardecho "C compiler       $cc"
1907d13299dSbellardecho "make             $make"
1917d13299dSbellardecho "CPU              $cpu"
1927d13299dSbellardecho "Big Endian       $bigendian"
1937d13299dSbellardecho "gprof enabled    $gprof"
1947d13299dSbellard
1957d13299dSbellardecho "Creating config.mak and config.h"
1967d13299dSbellard
1977d13299dSbellardecho "# Automatically generated by configure - do not modify" > config.mak
1987d13299dSbellardecho "/* Automatically generated by configure - do not modify */" > $TMPH
1997d13299dSbellard
2007d13299dSbellardecho "prefix=$prefix" >> config.mak
2013ef693a0Sbellardecho "#define CONFIG_QEMU_PREFIX \"$prefix\"" >> $TMPH
2027d13299dSbellardecho "MAKE=$make" >> config.mak
2037d13299dSbellardecho "CC=$cc" >> config.mak
204ca735206Sbellardecho "GCC_MAJOR=$gcc_major" >> config.mak
2057d13299dSbellardecho "HOST_CC=$host_cc" >> config.mak
2067d13299dSbellardecho "AR=$ar" >> config.mak
2077d13299dSbellardecho "STRIP=$strip -s -R .comment -R .note" >> config.mak
2087d13299dSbellardecho "CFLAGS=$CFLAGS" >> config.mak
2097d13299dSbellardecho "LDFLAGS=$LDFLAGS" >> config.mak
2107d13299dSbellardif test "$cpu" = "x86" ; then
2117d13299dSbellard  echo "ARCH=i386" >> config.mak
2127d13299dSbellardelif test "$cpu" = "armv4l" ; then
2137d13299dSbellard  echo "ARCH=arm" >> config.mak
2147d13299dSbellardelif test "$cpu" = "powerpc" ; then
21504369ff2Sbellard  echo "ARCH=ppc" >> config.mak
2167d13299dSbellardelif test "$cpu" = "mips" ; then
21704369ff2Sbellard  echo "ARCH=mips" >> config.mak
218*fb3e5849Sbellardelif test "$cpu" = "s390" ; then
219*fb3e5849Sbellard  echo "ARCH=s390" >> config.mak
2207d13299dSbellardelse
2217d13299dSbellard  echo "Unsupported CPU"
2227d13299dSbellard  exit 1
2237d13299dSbellardfi
2247d13299dSbellardif test "$bigendian" = "yes" ; then
2257d13299dSbellard  echo "WORDS_BIGENDIAN=yes" >> config.mak
2267d13299dSbellard  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
2277d13299dSbellardfi
2287d13299dSbellardif test "$gprof" = "yes" ; then
2297d13299dSbellard  echo "TARGET_GPROF=yes" >> config.mak
2307d13299dSbellard  echo "#define HAVE_GPROF 1" >> $TMPH
2317d13299dSbellardfi
2327d13299dSbellardecho -n "VERSION=" >>config.mak
2337d13299dSbellardhead $source_path/VERSION >>config.mak
2347d13299dSbellardecho "" >>config.mak
2353ef693a0Sbellardecho -n "#define QEMU_VERSION \"" >> $TMPH
2367d13299dSbellardhead $source_path/VERSION >> $TMPH
2377d13299dSbellardecho "\"" >> $TMPH
2387d13299dSbellardif test "$network" = "yes" ; then
2397d13299dSbellard  echo "#define CONFIG_NETWORK 1" >> $TMPH
2407d13299dSbellard  echo "CONFIG_NETWORK=yes" >> config.mak
2417d13299dSbellardfi
2427d13299dSbellard
2437d13299dSbellard# build tree in object directory if source path is different from current one
2447d13299dSbellardif test "$source_path_used" = "yes" ; then
2457d13299dSbellard    DIRS="tests"
2467d13299dSbellard    FILES="Makefile tests/Makefile"
2477d13299dSbellard    for dir in $DIRS ; do
2487d13299dSbellard            mkdir -p $dir
2497d13299dSbellard    done
2507d13299dSbellard    for f in $FILES ; do
2517d13299dSbellard        ln -sf $source_path/$f $f
2527d13299dSbellard    done
2537d13299dSbellardfi
2547d13299dSbellardecho "SRC_PATH=$source_path" >> config.mak
2557d13299dSbellard
2567d13299dSbellarddiff $TMPH config.h >/dev/null 2>&1
2577d13299dSbellardif test $? -ne 0 ; then
2587d13299dSbellard	mv -f $TMPH config.h
2597d13299dSbellardelse
2607d13299dSbellard	echo "config.h is unchanged"
2617d13299dSbellardfi
2627d13299dSbellard
2637d13299dSbellardrm -f $TMPH
264