Statistics
| Branch: | Revision:

root / configure @ 7d13299d

History | View | Annotate | Download (5.6 kB)

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