xref: /openbmc/qemu/configure (revision 7d13299d)
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