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