e523b5bb7a731ba03273b434020a1c6ffbfe9d37
[sdk/emulator/qemu.git] / tizen / emulator_configure.sh
1 #!/bin/sh
2
3 CONFIGURE_APPEND=""
4 EMUL_TARGET_LIST=""
5 VIRTIOGL_EN=""
6 YAGL_EN=""
7 YAGL_STATS_EN=""
8 VIGS_EN=""
9
10 usage() {
11     echo "usage: build.sh [options] [target]"
12     echo ""
13     echo "target"
14     echo "    emulator target, one of: [x86|i386|i486|i586|i686|arm|all]. Defaults to \"all\""
15     echo ""
16     echo "options:"
17     echo "-d, --debug"
18     echo "    build debug configuration"
19     echo "-vgl|--virtio-gl"
20     echo "    enable virtio GL support"
21     echo "-yagl|--yagl-device"
22     echo "    enable YaGL passthrough device"
23     echo "-ys|--yagl-stats"
24     echo "    enable YaGL stats"
25     echo "-vigs|--vigs-device"
26     echo "    enable VIGS device"
27     echo "-e|--extra"
28     echo "    extra options for QEMU configure"
29     echo "-u|-h|--help|--usage"
30     echo "    display this help message and exit"
31 }
32
33 virtgl_enable() {
34   case "$1" in
35   0|no|disable)
36     VIRTIOGL_EN="no"
37   ;;
38   1|yes|enable)
39     VIRTIOGL_EN="yes"
40   ;;
41   *)
42     usage
43     exit 1
44   ;;
45   esac
46 }
47
48 yagl_enable() {
49   case "$1" in
50   0|no|disable)
51     YAGL_EN="no"
52   ;;
53   1|yes|enable)
54     YAGL_EN="yes"
55   ;;
56   *)
57     usage
58     exit 1
59   ;;
60   esac
61 }
62
63 yagl_stats_enable() {
64   case "$1" in
65   0|no|disable)
66     YAGL_STATS_EN="no"
67   ;;
68   1|yes|enable)
69     YAGL_STATS_EN="yes"
70   ;;
71   *)
72     usage
73     exit 1
74   ;;
75   esac
76 }
77
78 vigs_enable() {
79   case "$1" in
80   0|no|disable)
81     VIGS_EN="no"
82   ;;
83   1|yes|enable)
84     VIGS_EN="yes"
85   ;;
86   *)
87     usage
88     exit 1
89   ;;
90   esac
91 }
92
93 set_target() {
94   if [ ! -z "$EMUL_TARGET_LIST" ] ; then
95       usage
96       exit 1
97   fi
98
99   case "$1" in
100   x86|i386|i486|i586|i686)
101     EMUL_TARGET_LIST="i386-softmmu"
102     if [ -z "$VIRTIOGL_EN" ] ; then
103       virtgl_enable yes
104     fi
105     if [ -z "$YAGL_EN" ] ; then
106       yagl_enable yes
107     fi
108     if [ -z "$VIGS_EN" ] ; then
109       vigs_enable yes
110     fi
111   ;;
112   arm)
113     EMUL_TARGET_LIST="arm-softmmu"
114     if [ -z "$YAGL_EN" ] && [ "$targetos" != "Darwin" ] ; then
115       yagl_enable yes
116     fi
117     if [ -z "$VIGS_EN" ] && [ "$targetos" != "Darwin" ] ; then
118       vigs_enable yes
119     fi
120   ;;
121   all)
122 #    EMUL_TARGET_LIST="i386-softmmu,arm-softmmu"
123     EMUL_TARGET_LIST="i386-softmmu"
124     if [ -z "$VIRTIOGL_EN" ] ; then
125       virtgl_enable yes
126     fi
127     if [ -z "$YAGL_EN" ] ; then   
128         yagl_enable yes
129     fi
130     if [ -z "$VIGS_EN" ] ; then
131       vigs_enable yes
132     fi
133   ;;
134   esac
135 }
136
137
138 # OS specific
139 targetos=`uname -s`
140 targetarch=`echo | gcc -E -dM - | grep __x86_64`
141 bindir="i386"
142 ffmpegarc="x86"
143 if test "$targetarch" != ""
144 then
145     bindir="x86_64"
146     ffmpegarc="x86_64"
147 fi
148 echo "##### checking for os... targetos $targetos"
149
150 echo "$*"
151
152 while [ "$#" -gt "0" ]
153 do
154     case $1 in
155     x86|i386|i486|i586|i686|arm|all)
156         set_target $1
157     ;;
158     -d|--debug)
159         CONFIGURE_APPEND="$CONFIGURE_APPEND --enable-debug"
160     ;;
161     -e|--extra)
162         shift
163         CONFIGURE_APPEND="$CONFIGURE_APPEND $1"
164     ;;
165     -vgl|--virtio-gl)
166         virtgl_enable 1
167     ;;
168     -yagl|--yagl-device)
169         yagl_enable 1
170     ;;
171     -ys|--yagl-stats)
172         yagl_stats_enable 1
173     ;;
174     -vigs|--vigs-device)
175         vigs_enable 1
176     ;;
177     -u|-h|--help|--usage)
178         usage
179         exit 0
180     ;;
181     *)
182         echo "Syntax Error"
183         usage
184         exit 1
185     ;;
186     esac
187     shift
188 done
189
190 if [ -z "$EMUL_TARGET_LIST" ] ; then
191   set_target all
192 fi
193
194 CONFIGURE_APPEND="--target-list=$EMUL_TARGET_LIST $CONFIGURE_APPEND"
195
196 if test "$VIRTIOGL_EN" = "yes" ; then
197   CONFIGURE_APPEND="$CONFIGURE_APPEND --enable-gl"
198 else
199   CONFIGURE_APPEND="$CONFIGURE_APPEND --disable-gl"
200 fi
201
202 if test "$YAGL_EN" = "yes" ; then
203   CONFIGURE_APPEND="$CONFIGURE_APPEND --enable-yagl"
204 else
205   CONFIGURE_APPEND="$CONFIGURE_APPEND --disable-yagl"
206 fi
207
208 if test "$YAGL_STATS_EN" = "yes" ; then
209   CONFIGURE_APPEND="$CONFIGURE_APPEND --enable-yagl-stats"
210 else
211   CONFIGURE_APPEND="$CONFIGURE_APPEND --disable-yagl-stats"
212 fi
213
214 if test "$VIGS_EN" = "yes" ; then
215   CONFIGURE_APPEND="$CONFIGURE_APPEND --enable-vigs"
216 else
217   CONFIGURE_APPEND="$CONFIGURE_APPEND --disable-vigs"
218 fi
219
220 case $targetos in
221 Linux*)
222 cd distrib/libav
223 echo ""
224 echo "##### FFMPEG configure for emulator"
225 ./configure \
226  --prefix=./$bindir --arch=${ffmpegarc} --enable-static --enable-pic --enable-optimizations --disable-doc --disable-gpl --disable-yasm --disable-postproc --disable-swscale --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-ffplay --disable-decoders --disable-encoders --disable-muxers --disable-demuxers --disable-parsers --disable-protocols --disable-network --disable-bsfs --disable-devices --disable-filters --enable-encoder=aac --enable-encoder=h263 --enable-encoder=h263p --enable-encoder=mpeg4 --enable-encoder=msmpeg4v2 --enable-encoder=msmpeg4v3 --enable-decoder=aac --enable-decoder=h263 --enable-decoder=h264 --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mpeg4 --enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=wmv3 --enable-decoder=vc1
227 cd ../.. 
228
229 cd ..
230
231 echo ""
232 echo "##### QEMU configuring for emulator"
233 echo "##### QEMU configure append:" $CONFIGURE_APPEND
234 export PKG_CONFIG_PATH=${PWD}/tizen/distrib/remote/output/lib/pkgconfig:${PKG_CONFIG_PATH}
235 exec ./configure \
236  --enable-werror \
237  --audio-drv-list=alsa \
238  --enable-maru \
239  --disable-vnc \
240  --disable-pie $1 \
241  --enable-virtfs \
242  $CONFIGURE_APPEND \
243 ;;
244 MINGW*)
245 cd distrib/libav
246 echo ""
247 echo "##### FFMPEG configure for emulator"
248 ./configure \
249  --prefix=./$bindir --arch=x86 --enable-static --enable-w32threads --enable-optimizations --enable-memalign-hack --disable-doc --disable-gpl --disable-yasm --disable-postproc --disable-swscale --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-ffplay --disable-decoders --disable-encoders --disable-muxers --disable-demuxers --disable-parsers --disable-protocols --disable-network --disable-bsfs --disable-devices --disable-filters --enable-encoder=aac --enable-encoder=h263 --enable-encoder=h263p --enable-encoder=mpeg4 --enable-encoder=msmpeg4v2 --enable-encoder=msmpeg4v3 --enable-decoder=aac --enable-decoder=h263 --enable-decoder=h264 --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mpeg4 --enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=wmv3 --enable-decoder=vc1
250 cd ../..
251
252 cd ..
253 echo ""
254 echo "##### QEMU configuring for emulator"
255 echo "##### QEMU configure append:" $CONFIGURE_APPEND
256 # We add CFLAGS '-fno-omit-frame-pointer'.
257 # A GCC might have a bug related with omitting frame pointer. It generates weird instructions.
258 exec ./configure \
259  --extra-cflags=-fno-omit-frame-pointer \
260  --cc=gcc \
261  --audio-drv-list=winwave \
262  --enable-hax \
263  --enable-maru \
264  --disable-vnc $1 \
265  $CONFIGURE_APPEND \
266 ;;
267 Darwin*)
268 cd distrib/libav
269 echo ""
270 echo "##### FFMPEG configure for emulator"
271 ./configure \
272 --prefix=./$bindir --extra-cflags=-mmacosx-version-min=10.4 --arch=x86 --enable-static --enable-pic --enable-optimizations --disable-doc --disable-gpl --disable-yasm --disable-postproc --disable-swscale --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-ffplay --disable-decoders --disable-encoders --disable-muxers --disable-demuxers --disable-parsers --disable-protocols --disable-network --disable-bsfs --disable-devices --disable-filters --enable-encoder=aac --enable-encoder=h263 --enable-encoder=h263p --enable-encoder=mpeg4 --enable-encoder=msmpeg4v2 --enable-encoder=msmpeg4v3 --enable-decoder=aac --enable-decoder=h263 --enable-decoder=h264 --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mpeg4 --enable-decoder=mpegvideo --enable-decoder=msmpeg4v1 --enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3 --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=wmv3 --enable-decoder=vc1 --cc=cc
273 cd ../..
274
275 cd ..
276 echo ""
277 echo "##### QEMU configuring for emulator"
278 echo "##### QEMU configure append:" $CONFIGURE_APPEND
279 ./configure \
280  --extra-cflags=-mmacosx-version-min=10.4 \
281  --audio-drv-list=coreaudio \
282  --enable-mixemu \
283  --enable-maru \
284  --enable-shm \
285  --enable-hax \
286  --disable-vnc \
287  --disable-cocoa \
288  --enable-gl \
289  --disable-sdl $1 \
290  $CONFIGURE_APPEND \
291 ;;
292 esac