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