1#!/bin/sh 2# 3# qemu configure script (c) 2003 Fabrice Bellard 4# 5# set temporary file name 6if test ! -z "$TMPDIR" ; then 7 TMPDIR1="${TMPDIR}" 8elif test ! -z "$TEMPDIR" ; then 9 TMPDIR1="${TEMPDIR}" 10else 11 TMPDIR1="/tmp" 12fi 13 14TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c" 15TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o" 16TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}" 17TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S" 18TMPH="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.h" 19 20# default parameters 21prefix="/usr/local" 22cross_prefix="" 23cc="gcc" 24host_cc="gcc" 25ar="ar" 26make="make" 27strip="strip" 28cpu=`uname -m` 29case "$cpu" in 30 i386|i486|i586|i686|i86pc|BePC) 31 cpu="x86" 32 ;; 33 armv4l) 34 cpu="armv4l" 35 ;; 36 alpha) 37 cpu="alpha" 38 ;; 39 "Power Macintosh"|ppc|ppc64) 40 cpu="powerpc" 41 ;; 42 mips) 43 cpu="mips" 44 ;; 45 s390) 46 cpu="s390" 47 ;; 48 *) 49 cpu="unknown" 50 ;; 51esac 52gprof="no" 53bigendian="no" 54 55# OS specific 56targetos=`uname -s` 57case $targetos in 58BeOS) 59prefix="/boot/home/config" 60# helps building libavcodec 61CFLAGS="-O2 -DPIC" 62# no need for libm, but the inet stuff 63# Check for BONE 64if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then 65extralibs="-lbind -lsocket" 66else 67echo "Not sure building for net_server will succeed... good luck." 68extralibs="-lsocket" 69fi ;; 70BSD/OS) 71extralibs="-lpoll -lgnugetopt -lm" 72make="gmake" 73;; 74*) ;; 75esac 76 77# find source path 78# XXX: we assume an absolute path is given when launching configure, 79# except in './configure' case. 80source_path=${0%configure} 81source_path=${source_path%/} 82source_path_used="yes" 83if test -z "$source_path" -o "$source_path" = "." ; then 84 source_path=`pwd` 85 source_path_used="no" 86fi 87 88for opt do 89 case "$opt" in 90 --prefix=*) prefix=`echo $opt | cut -d '=' -f 2` 91 ;; 92 --source-path=*) source_path=`echo $opt | cut -d '=' -f 2` 93 ;; 94 --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2` 95 ;; 96 --cc=*) cc=`echo $opt | cut -d '=' -f 2` 97 ;; 98 --make=*) make=`echo $opt | cut -d '=' -f 2` 99 ;; 100 --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}" 101 ;; 102 --extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}" 103 ;; 104 --extra-libs=*) extralibs=${opt#--extra-libs=} 105 ;; 106 --cpu=*) cpu=`echo $opt | cut -d '=' -f 2` 107 ;; 108 --enable-gprof) gprof="yes" 109 ;; 110 esac 111done 112 113# Checking for CFLAGS 114if test -z "$CFLAGS"; then 115 CFLAGS="-O2" 116fi 117 118cc="${cross_prefix}${cc}" 119ar="${cross_prefix}${ar}" 120strip="${cross_prefix}${strip}" 121 122if test -z "$cross_prefix" ; then 123 124# --- 125# big/little endian test 126cat > $TMPC << EOF 127#include <inttypes.h> 128int main(int argc, char ** argv){ 129 volatile uint32_t i=0x01234567; 130 return (*((uint8_t*)(&i))) == 0x67; 131} 132EOF 133 134if $cc -o $TMPE $TMPC 2>/dev/null ; then 135$TMPE && bigendian="yes" 136else 137echo big/little test failed 138fi 139 140else 141 142# if cross compiling, cannot launch a program, so make a static guess 143if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" ; then 144 bigendian="yes" 145fi 146 147fi 148 149# check gcc version 150cat > $TMPC <<EOF 151int main(void) { 152#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) 153return 0; 154#else 155#error gcc < 3.2 156#endif 157} 158EOF 159 160gcc_major="2" 161if $cc -o $TMPO $TMPC 2> /dev/null ; then 162 gcc_major="3" 163fi 164 165if test x"$1" = x"-h" -o x"$1" = x"--help" ; then 166cat << EOF 167 168Usage: configure [options] 169Options: [defaults in brackets after descriptions] 170 171EOF 172echo "Standard options:" 173echo " --help print this message" 174echo " --prefix=PREFIX install in PREFIX [$prefix]" 175echo " for audio/video/image support" 176echo "" 177echo "Advanced options (experts only):" 178echo " --source-path=PATH path of source code [$source_path]" 179echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]" 180echo " --cc=CC use C compiler CC [$cc]" 181echo " --make=MAKE use specified make [$make]" 182echo "" 183echo "NOTE: The object files are build at the place where configure is launched" 184exit 1 185fi 186 187echo "Install prefix $prefix" 188echo "Source path $source_path" 189echo "C compiler $cc" 190echo "make $make" 191echo "CPU $cpu" 192echo "Big Endian $bigendian" 193echo "gprof enabled $gprof" 194 195echo "Creating config.mak and config.h" 196 197echo "# Automatically generated by configure - do not modify" > config.mak 198echo "/* Automatically generated by configure - do not modify */" > $TMPH 199 200echo "prefix=$prefix" >> config.mak 201echo "#define CONFIG_QEMU_PREFIX \"$prefix\"" >> $TMPH 202echo "MAKE=$make" >> config.mak 203echo "CC=$cc" >> config.mak 204echo "GCC_MAJOR=$gcc_major" >> config.mak 205echo "HOST_CC=$host_cc" >> config.mak 206echo "AR=$ar" >> config.mak 207echo "STRIP=$strip -s -R .comment -R .note" >> config.mak 208echo "CFLAGS=$CFLAGS" >> config.mak 209echo "LDFLAGS=$LDFLAGS" >> config.mak 210if test "$cpu" = "x86" ; then 211 echo "ARCH=i386" >> config.mak 212 echo "#define HOST_I386 1" >> $TMPH 213elif test "$cpu" = "armv4l" ; then 214 echo "ARCH=arm" >> config.mak 215 echo "#define HOST_ARM 1" >> $TMPH 216elif test "$cpu" = "powerpc" ; then 217 echo "ARCH=ppc" >> config.mak 218 echo "#define HOST_PPC 1" >> $TMPH 219elif test "$cpu" = "mips" ; then 220 echo "ARCH=mips" >> config.mak 221 echo "#define HOST_MIPS 1" >> $TMPH 222elif test "$cpu" = "s390" ; then 223 echo "ARCH=s390" >> config.mak 224 echo "#define HOST_S390 1" >> $TMPH 225elif test "$cpu" = "alpha" ; then 226 echo "ARCH=alpha" >> config.mak 227 echo "#define HOST_ALPHA 1" >> $TMPH 228else 229 echo "Unsupported CPU" 230 exit 1 231fi 232if test "$bigendian" = "yes" ; then 233 echo "WORDS_BIGENDIAN=yes" >> config.mak 234 echo "#define WORDS_BIGENDIAN 1" >> $TMPH 235fi 236if test "$gprof" = "yes" ; then 237 echo "TARGET_GPROF=yes" >> config.mak 238 echo "#define HAVE_GPROF 1" >> $TMPH 239fi 240echo -n "VERSION=" >>config.mak 241head $source_path/VERSION >>config.mak 242echo "" >>config.mak 243echo -n "#define QEMU_VERSION \"" >> $TMPH 244head $source_path/VERSION >> $TMPH 245echo "\"" >> $TMPH 246if test "$network" = "yes" ; then 247 echo "#define CONFIG_NETWORK 1" >> $TMPH 248 echo "CONFIG_NETWORK=yes" >> config.mak 249fi 250 251# build tree in object directory if source path is different from current one 252if test "$source_path_used" = "yes" ; then 253 DIRS="tests" 254 FILES="Makefile tests/Makefile" 255 for dir in $DIRS ; do 256 mkdir -p $dir 257 done 258 for f in $FILES ; do 259 ln -sf $source_path/$f $f 260 done 261fi 262echo "SRC_PATH=$source_path" >> config.mak 263 264diff $TMPH config.h >/dev/null 2>&1 265if test $? -ne 0 ; then 266 mv -f $TMPH config.h 267else 268 echo "config.h is unchanged" 269fi 270 271rm -f $TMPH 272