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