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