1#!/bin/sh 2# 3# this script is used to rebuild the Android emulator from sources 4# in the current directory. It also contains logic to speed up the 5# rebuild if it detects that you're using the Android build system 6# 7# here's the list of environment variables you can define before 8# calling this script to control it (besides options): 9# 10# 11 12# first, let's see which system we're running this on 13cd `dirname $0` 14 15# source common functions definitions 16. android/build/common.sh 17 18# Parse options 19OPTION_TARGETS="" 20OPTION_DEBUG=no 21OPTION_IGNORE_AUDIO=no 22OPTION_NO_PREBUILTS=no 23OPTION_TRY_64=no 24OPTION_HELP=no 25OPTION_DEBUG=no 26OPTION_STATIC=no 27OPTION_MINGW=no 28 29GLES_INCLUDE= 30GLES_LIBS= 31GLES_SUPPORT=no 32GLES_PROBE=yes 33 34HOST_CC=${CC:-gcc} 35OPTION_CC= 36 37TARGET_ARCH=arm 38 39for opt do 40 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 41 case "$opt" in 42 --help|-h|-\?) OPTION_HELP=yes 43 ;; 44 --verbose) 45 if [ "$VERBOSE" = "yes" ] ; then 46 VERBOSE2=yes 47 else 48 VERBOSE=yes 49 fi 50 ;; 51 --debug) OPTION_DEBUG=yes 52 ;; 53 --install=*) OPTION_TARGETS="$OPTION_TARGETS $optarg"; 54 ;; 55 --sdl-config=*) SDL_CONFIG=$optarg 56 ;; 57 --mingw) OPTION_MINGW=yes 58 ;; 59 --cc=*) OPTION_CC="$optarg" 60 ;; 61 --no-strip) OPTION_NO_STRIP=yes 62 ;; 63 --debug) OPTION_DEBUG=yes 64 ;; 65 --ignore-audio) OPTION_IGNORE_AUDIO=yes 66 ;; 67 --no-prebuilts) OPTION_NO_PREBUILTS=yes 68 ;; 69 --try-64) OPTION_TRY_64=yes 70 ;; 71 --static) OPTION_STATIC=yes 72 ;; 73 --arch=*) TARGET_ARCH=$optarg 74 ;; 75 --gles-include=*) GLES_INCLUDE=$optarg 76 GLES_SUPPORT=yes 77 ;; 78 --gles-libs=*) GLES_LIBS=$optarg 79 GLES_SUPPORT=yes 80 ;; 81 --no-gles) GLES_PROBE=no 82 ;; 83 *) 84 echo "unknown option '$opt', use --help" 85 exit 1 86 esac 87done 88 89# Print the help message 90# 91if [ "$OPTION_HELP" = "yes" ] ; then 92 cat << EOF 93 94Usage: rebuild.sh [options] 95Options: [defaults in brackets after descriptions] 96EOF 97 echo "Standard options:" 98 echo " --help print this message" 99 echo " --install=FILEPATH copy emulator executable to FILEPATH [$TARGETS]" 100 echo " --cc=PATH specify C compiler [$HOST_CC]" 101 echo " --arch=ARM specify target architecture [$TARGET_ARCH]" 102 echo " --sdl-config=FILE use specific sdl-config script [$SDL_CONFIG]" 103 echo " --no-strip do not strip emulator executable" 104 echo " --debug enable debug (-O0 -g) build" 105 echo " --ignore-audio ignore audio messages (may build sound-less emulator)" 106 echo " --no-prebuilts do not use prebuilt libraries and compiler" 107 echo " --try-64 try to build a 64-bit executable (may crash)" 108 echo " --mingw build Windows executable on Linux" 109 echo " --static build a completely static executable" 110 echo " --verbose verbose configuration" 111 echo " --debug build debug version of the emulator" 112 echo " --gles-include=PATH specify path to GLES emulation headers" 113 echo " --gles-libs=PATH specify path to GLES emulation host libraries" 114 echo " --no-gles disable GLES emulation support" 115 echo "" 116 exit 1 117fi 118 119# On Linux, try to use our prebuilt toolchain to generate binaries 120# that are compatible with Ubuntu 8.04 121if [ -z "$CC" -a -z "$OPTION_CC" -a "$HOST_OS" = linux ] ; then 122 HOST_CC=`dirname $0`/../../prebuilts/tools/gcc-sdk/gcc 123 if [ -f "$HOST_CC" ] ; then 124 echo "Using prebuilt toolchain: $HOST_CC" 125 CC="$HOST_CC" 126 fi 127fi 128 129echo "OPTION_CC='$OPTION_CC'" 130if [ -n "$OPTION_CC" ]; then 131 echo "Using specified C compiler: $OPTION_CC" 132 CC="$OPTION_CC" 133fi 134 135if [ -z "$CC" ]; then 136 CC=$HOST_CC 137fi 138 139# we only support generating 32-bit binaris on 64-bit systems. 140# And we may need to add a -Wa,--32 to CFLAGS to let the assembler 141# generate 32-bit binaries on Linux x86_64. 142# 143if [ "$OPTION_TRY_64" != "yes" ] ; then 144 force_32bit_binaries 145fi 146 147case $OS in 148 linux-*) 149 TARGET_DLL_SUFFIX=.so 150 ;; 151 darwin-*) 152 TARGET_DLL_SUFFIX=.dylib 153 ;; 154 windows*) 155 TARGET_DLL_SUFFIX=.dll 156esac 157 158TARGET_OS=$OS 159if [ "$OPTION_MINGW" = "yes" ] ; then 160 enable_linux_mingw 161 TARGET_OS=windows 162 TARGET_DLL_SUFFIX=.dll 163else 164 enable_cygwin 165fi 166 167# Are we running in the Android build system ? 168check_android_build 169 170 171# Adjust a few things when we're building within the Android build 172# system: 173# - locate prebuilt directory 174# - locate and use prebuilt libraries 175# - copy the new binary to the correct location 176# 177if [ "$OPTION_NO_PREBUILTS" = "yes" ] ; then 178 IN_ANDROID_BUILD=no 179fi 180 181# This is the list of static and shared host libraries we need to link 182# against in order to support OpenGLES emulation properly. Note that in 183# the case of a standalone build, we will find these libraries inside the 184# platform build tree and copy them into objs/lib/ automatically, unless 185# you use --gles-libs to point explicitely to a different directory. 186# 187if [ "$OPTION_TRY_64" != "yes" ] ; then 188 GLES_SHARED_LIBRARIES="libOpenglRender libGLES_CM_translator libGLES_V2_translator libEGL_translator" 189else 190 GLES_SHARED_LIBRARIES="lib64OpenglRender lib64GLES_CM_translator lib64GLES_V2_translator lib64EGL_translator" 191fi 192 193if [ "$IN_ANDROID_BUILD" = "yes" ] ; then 194 locate_android_prebuilt 195 196 # use ccache if USE_CCACHE is defined and the corresponding 197 # binary is available. 198 # 199 # note: located in PREBUILT/ccache/ccache in the new tree layout 200 # located in PREBUILT/ccache in the old one 201 # 202 if [ -n "$USE_CCACHE" ] ; then 203 CCACHE="$ANDROID_PREBUILT/ccache/ccache$EXE" 204 if [ ! -f $CCACHE ] ; then 205 CCACHE="$ANDROID_PREBUILT/ccache$EXE" 206 fi 207 if [ ! -f $CCACHE ] ; then 208 CCACHE="$ANDROID_PREBUILTS/ccache/ccache$EXE" 209 fi 210 if [ -f $CCACHE ] ; then 211 CC="$CCACHE $CC" 212 log "Prebuilt : CCACHE=$CCACHE" 213 else 214 log "Prebuilt : CCACHE can't be found" 215 fi 216 fi 217 218 # finally ensure that our new binary is copied to the 'out' 219 # subdirectory as 'emulator' 220 HOST_BIN=$(get_android_abs_build_var HOST_OUT_EXECUTABLES) 221 if [ "$TARGET_OS" = "windows" ]; then 222 HOST_BIN=$(echo $HOST_BIN | sed "s%$OS/bin%windows/bin%") 223 fi 224 if [ -n "$HOST_BIN" ] ; then 225 OPTION_TARGETS="$OPTION_TARGETS $HOST_BIN/emulator$EXE" 226 log "Targets : TARGETS=$OPTION_TARGETS" 227 fi 228 229 # find the Android SDK Tools revision number 230 TOOLS_PROPS=$ANDROID_TOP/sdk/files/tools_source.properties 231 if [ -f $TOOLS_PROPS ] ; then 232 ANDROID_SDK_TOOLS_REVISION=`awk -F= '/Pkg.Revision/ { print $2; }' $TOOLS_PROPS 2> /dev/null` 233 log "Tools : Found tools revision number $ANDROID_SDK_TOOLS_REVISION" 234 else 235 log "Tools : Could not locate $TOOLS_PROPS !?" 236 fi 237 238 # Try to find the GLES emulation headers and libraries automatically 239 if [ "$GLES_PROBE" = "yes" ]; then 240 GLES_SUPPORT=yes 241 if [ -z "$GLES_INCLUDE" ]; then 242 log "GLES : Probing for headers" 243 GLES_INCLUDE=$ANDROID_TOP/development/tools/emulator/opengl/host/include 244 if [ -d "$GLES_INCLUDE" ]; then 245 log "GLES : Headers in $GLES_INCLUDE" 246 else 247 echo "Warning: Could not find OpenGLES emulation include dir: $GLES_INCLUDE" 248 echo "Disabling GLES emulation from this build!" 249 GLES_SUPPORT=no 250 fi 251 fi 252 if [ -z "$GLES_LIBS" ]; then 253 log "GLES : Probing for host libraries" 254 GLES_LIBS=$(dirname "$HOST_BIN")/lib 255 if [ -d "$GLES_LIBS" ]; then 256 echo "GLES : Libs in $GLES_LIBS" 257 else 258 echo "Warning: Could nof find OpenGLES emulation libraries in: $GLES_LIBS" 259 echo "Disabling GLES emulation from this build!" 260 GLES_SUPPORT=no 261 fi 262 fi 263 fi 264fi # IN_ANDROID_BUILD = no 265 266if [ "$GLES_SUPPORT" = "yes" ]; then 267 if [ -z "$GLES_INCLUDE" -o -z "$GLES_LIBS" ]; then 268 echo "ERROR: You must use both --gles-include and --gles-libs at the same time!" 269 echo " Or use --no-gles to disable its support from this build." 270 exit 1 271 fi 272 273 GLES_HEADER=$GLES_INCLUDE/libOpenglRender/render_api.h 274 if [ ! -f "$GLES_HEADER" ]; then 275 echo "ERROR: Missing OpenGLES emulation header file: $GLES_HEADER" 276 echo "Please fix this by using --gles-include to point to the right directory!" 277 exit 1 278 fi 279 280 mkdir -p objs/lib 281 282 for lib in $GLES_SHARED_LIBRARIES; do 283 GLES_LIB=$GLES_LIBS/${lib}$TARGET_DLL_SUFFIX 284 if [ ! -f "$GLES_LIB" ]; then 285 echo "ERROR: Missing OpenGLES emulation host library: $GLES_LIB" 286 echo "Please fix this by using --gles-libs to point to the right directory!" 287 if [ "$IN_ANDROID_BUILD" = "true" ]; then 288 echo "You might also be missing the library because you forgot to rebuild the whole platform!" 289 fi 290 exit 1 291 fi 292 cp $GLES_LIB objs/lib 293 if [ $? != 0 ]; then 294 echo "ERROR: Could not find required OpenGLES emulation library: $GLES_LIB" 295 exit 1 296 else 297 log "GLES : Copying $GLES_LIB" 298 fi 299 done 300fi 301 302# we can build the emulator with Cygwin, so enable it 303enable_cygwin 304 305setup_toolchain 306 307### 308### SDL Probe 309### 310 311if [ -n "$SDL_CONFIG" ] ; then 312 313 # check that we can link statically with the library. 314 # 315 SDL_CFLAGS=`$SDL_CONFIG --cflags` 316 SDL_LIBS=`$SDL_CONFIG --static-libs` 317 318 # quick hack, remove the -D_GNU_SOURCE=1 of some SDL Cflags 3197 # since they break recent Mingw releases 320 SDL_CFLAGS=`echo $SDL_CFLAGS | sed -e s/-D_GNU_SOURCE=1//g` 321 322 log "SDL-probe : SDL_CFLAGS = $SDL_CFLAGS" 323 log "SDL-probe : SDL_LIBS = $SDL_LIBS" 324 325 326 EXTRA_CFLAGS="$SDL_CFLAGS" 327 EXTRA_LDFLAGS="$SDL_LIBS" 328 329 case "$OS" in 330 freebsd-*) 331 EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm -lpthread" 332 ;; 333 esac 334 335 cat > $TMPC << EOF 336#include <SDL.h> 337#undef main 338int main( int argc, char** argv ) { 339 return SDL_Init (SDL_INIT_VIDEO); 340} 341EOF 342 feature_check_link SDL_LINKING 343 344 if [ $SDL_LINKING != "yes" ] ; then 345 echo "You provided an explicit sdl-config script, but the corresponding library" 346 echo "cannot be statically linked with the Android emulator directly." 347 echo "Error message:" 348 cat $TMPL 349 clean_exit 350 fi 351 log "SDL-probe : static linking ok" 352 353 # now, let's check that the SDL library has the special functions 354 # we added to our own sources 355 # 356 cat > $TMPC << EOF 357#include <SDL.h> 358#undef main 359int main( int argc, char** argv ) { 360 int x, y; 361 SDL_Rect r; 362 SDL_WM_GetPos(&x, &y); 363 SDL_WM_SetPos(x, y); 364 SDL_WM_GetMonitorDPI(&x, &y); 365 SDL_WM_GetMonitorRect(&r); 366 return SDL_Init (SDL_INIT_VIDEO); 367} 368EOF 369 feature_check_link SDL_LINKING 370 371 if [ $SDL_LINKING != "yes" ] ; then 372 echo "You provided an explicit sdl-config script in SDL_CONFIG, but the" 373 echo "corresponding library doesn't have the patches required to link" 374 echo "with the Android emulator. Unsetting SDL_CONFIG will use the" 375 echo "sources bundled with the emulator instead" 376 echo "Error:" 377 cat $TMPL 378 clean_exit 379 fi 380 381 log "SDL-probe : extra features ok" 382 clean_temp 383 384 EXTRA_CFLAGS= 385 EXTRA_LDFLAGS= 386fi 387 388### 389### Audio subsystems probes 390### 391PROBE_COREAUDIO=no 392PROBE_ALSA=no 393PROBE_OSS=no 394PROBE_ESD=no 395PROBE_PULSEAUDIO=no 396PROBE_WINAUDIO=no 397 398case "$TARGET_OS" in 399 darwin*) PROBE_COREAUDIO=yes; 400 ;; 401 linux-*) PROBE_ALSA=yes; PROBE_OSS=yes; PROBE_ESD=yes; PROBE_PULSEAUDIO=yes; 402 ;; 403 freebsd-*) PROBE_OSS=yes; 404 ;; 405 windows) PROBE_WINAUDIO=yes 406 ;; 407esac 408 409ORG_CFLAGS=$CFLAGS 410ORG_LDFLAGS=$LDFLAGS 411 412if [ "$OPTION_IGNORE_AUDIO" = "yes" ] ; then 413PROBE_ESD_ESD=no 414PROBE_ALSA=no 415PROBE_PULSEAUDIO=no 416fi 417 418# Probe a system library 419# 420# $1: Variable name (e.g. PROBE_ESD) 421# $2: Library name (e.g. "Alsa") 422# $3: Path to source file for probe program (e.g. android/config/check-alsa.c) 423# $4: Package name (e.g. libasound-dev) 424# 425probe_system_library () 426{ 427 if [ `var_value $1` = yes ] ; then 428 CFLAGS="$ORG_CFLAGS" 429 LDFLAGS="$ORG_LDFLAGS -ldl" 430 cp -f android/config/check-esd.c $TMPC 431 compile 432 if [ $? = 0 ] ; then 433 log "AudioProbe : $2 seems to be usable on this system" 434 else 435 if [ "$OPTION_IGNORE_AUDIO" = no ] ; then 436 echo "The $2 development files do not seem to be installed on this system" 437 echo "Are you missing the $4 package ?" 438 echo "Correct the errors below and try again:" 439 cat $TMPL 440 clean_exit 441 fi 442 eval $1=no 443 log "AudioProbe : $2 seems to be UNUSABLE on this system !!" 444 fi 445 fi 446} 447 448probe_system_library PROBE_ESD ESounD android/config/check-esd.c libesd-dev 449probe_system_library PROBE_ALSA Alsa android/config/check-alsa.c libasound-dev 450probe_system_library PROBE_PULSEAUDIO PulseAudio android/config/check-pulseaudio.c libpulse-dev 451 452CFLAGS=$ORG_CFLAGS 453LDFLAGS=$ORG_LDFLAGS 454 455# create the objs directory that is going to contain all generated files 456# including the configuration ones 457# 458mkdir -p objs 459 460### 461### Compiler probe 462### 463 464#### 465#### Host system probe 466#### 467 468# because the previous version could be read-only 469rm -f $TMPC 470 471# check host endianess 472# 473HOST_BIGENDIAN=no 474if [ "$TARGET_OS" = "$OS" ] ; then 475cat > $TMPC << EOF 476#include <inttypes.h> 477int main(int argc, char ** argv){ 478 volatile uint32_t i=0x01234567; 479 return (*((uint8_t*)(&i))) == 0x01; 480} 481EOF 482feature_run_exec HOST_BIGENDIAN 483fi 484 485# check size of host long bits 486HOST_LONGBITS=32 487if [ "$TARGET_OS" = "$OS" ] ; then 488cat > $TMPC << EOF 489int main(void) { 490 return sizeof(void*)*8; 491} 492EOF 493feature_run_exec HOST_LONGBITS 494fi 495 496# check whether we have <byteswap.h> 497# 498feature_check_header HAVE_BYTESWAP_H "<byteswap.h>" 499feature_check_header HAVE_MACHINE_BSWAP_H "<machine/bswap.h>" 500feature_check_header HAVE_FNMATCH_H "<fnmatch.h>" 501 502# Build the config.make file 503# 504 505case $TARGET_OS in 506 windows) 507 TARGET_EXEEXT=.exe 508 ;; 509 *) 510 TARGET_EXEEXT= 511 ;; 512esac 513 514create_config_mk 515echo "" >> $config_mk 516if [ $TARGET_ARCH = arm ] ; then 517echo "TARGET_ARCH := arm" >> $config_mk 518fi 519 520if [ $TARGET_ARCH = x86 ] ; then 521echo "TARGET_ARCH := x86" >> $config_mk 522fi 523 524echo "HOST_PREBUILT_TAG := $TARGET_OS" >> $config_mk 525echo "HOST_EXEEXT := $TARGET_EXEEXT" >> $config_mk 526echo "PREBUILT := $ANDROID_PREBUILT" >> $config_mk 527echo "PREBUILTS := $ANDROID_PREBUILTS" >> $config_mk 528 529PWD=`pwd` 530echo "SRC_PATH := $PWD" >> $config_mk 531if [ -n "$SDL_CONFIG" ] ; then 532echo "QEMU_SDL_CONFIG := $SDL_CONFIG" >> $config_mk 533fi 534echo "CONFIG_COREAUDIO := $PROBE_COREAUDIO" >> $config_mk 535echo "CONFIG_WINAUDIO := $PROBE_WINAUDIO" >> $config_mk 536echo "CONFIG_ESD := $PROBE_ESD" >> $config_mk 537echo "CONFIG_ALSA := $PROBE_ALSA" >> $config_mk 538echo "CONFIG_OSS := $PROBE_OSS" >> $config_mk 539echo "CONFIG_PULSEAUDIO := $PROBE_PULSEAUDIO" >> $config_mk 540echo "BUILD_STANDALONE_EMULATOR := true" >> $config_mk 541if [ $OPTION_DEBUG = yes ] ; then 542 echo "BUILD_DEBUG_EMULATOR := true" >> $config_mk 543fi 544if [ $OPTION_STATIC = yes ] ; then 545 echo "CONFIG_STATIC_EXECUTABLE := true" >> $config_mk 546fi 547 548if [ -n "$ANDROID_SDK_TOOLS_REVISION" ] ; then 549 echo "ANDROID_SDK_TOOLS_REVISION := $ANDROID_SDK_TOOLS_REVISION" >> $config_mk 550fi 551 552if [ "$OPTION_MINGW" = "yes" ] ; then 553 echo "" >> $config_mk 554 echo "USE_MINGW := 1" >> $config_mk 555 echo "HOST_OS := windows" >> $config_mk 556fi 557 558if [ "$GLES_INCLUDE" -a "$GLES_LIBS" ]; then 559 echo "QEMU_OPENGLES_INCLUDE := $GLES_INCLUDE" >> $config_mk 560 echo "QEMU_OPENGLES_LIBS := $GLES_LIBS" >> $config_mk 561fi 562 563# Build the config-host.h file 564# 565config_h=objs/config-host.h 566echo "/* This file was autogenerated by '$PROGNAME' */" > $config_h 567echo "#define CONFIG_QEMU_SHAREDIR \"/usr/local/share/qemu\"" >> $config_h 568echo "#define HOST_LONG_BITS $HOST_LONGBITS" >> $config_h 569if [ "$HAVE_BYTESWAP_H" = "yes" ] ; then 570 echo "#define CONFIG_BYTESWAP_H 1" >> $config_h 571fi 572if [ "$HAVE_MACHINE_BYTESWAP_H" = "yes" ] ; then 573 echo "#define CONFIG_MACHINE_BSWAP_H 1" >> $config_h 574fi 575if [ "$HAVE_FNMATCH_H" = "yes" ] ; then 576 echo "#define CONFIG_FNMATCH 1" >> $config_h 577fi 578echo "#define CONFIG_GDBSTUB 1" >> $config_h 579echo "#define CONFIG_SLIRP 1" >> $config_h 580echo "#define CONFIG_SKINS 1" >> $config_h 581echo "#define CONFIG_TRACE 1" >> $config_h 582 583case "$TARGET_OS" in 584 windows) 585 echo "#define CONFIG_WIN32 1" >> $config_h 586 ;; 587 *) 588 echo "#define CONFIG_POSIX 1" >> $config_h 589 ;; 590esac 591 592case "$TARGET_OS" in 593 linux-*) 594 echo "#define CONFIG_KVM_GS_RESTORE 1" >> $config_h 595 ;; 596esac 597 598# only Linux has fdatasync() 599case "$TARGET_OS" in 600 linux-*) 601 echo "#define CONFIG_FDATASYNC 1" >> $config_h 602 ;; 603esac 604 605case "$TARGET_OS" in 606 linux-*|darwin-*) 607 echo "#define CONFIG_MADVISE 1" >> $config_h 608 ;; 609esac 610 611# the -nand-limits options can only work on non-windows systems 612if [ "$TARGET_OS" != "windows" ] ; then 613 echo "#define CONFIG_NAND_LIMITS 1" >> $config_h 614fi 615echo "#define QEMU_VERSION \"0.10.50\"" >> $config_h 616echo "#define QEMU_PKGVERSION \"Android\"" >> $config_h 617case "$CPU" in 618 x86) CONFIG_CPU=I386 619 ;; 620 ppc) CONFIG_CPU=PPC 621 ;; 622 x86_64) CONFIG_CPU=X86_64 623 ;; 624 *) CONFIG_CPU=$CPU 625 ;; 626esac 627echo "#define HOST_$CONFIG_CPU 1" >> $config_h 628if [ "$HOST_BIGENDIAN" = "1" ] ; then 629 echo "#define HOST_WORDS_BIGENDIAN 1" >> $config_h 630fi 631BSD=0 632case "$TARGET_OS" in 633 linux-*) CONFIG_OS=LINUX 634 ;; 635 darwin-*) CONFIG_OS=DARWIN 636 BSD=1 637 ;; 638 freebsd-*) CONFIG_OS=FREEBSD 639 BSD=1 640 ;; 641 windows*) CONFIG_OS=WIN32 642 ;; 643 *) CONFIG_OS=$OS 644esac 645 646if [ "$OPTION_STATIC" = "yes" ] ; then 647 echo "CONFIG_STATIC_EXECUTABLE := true" >> $config_mk 648 echo "#define CONFIG_STATIC_EXECUTABLE 1" >> $config_h 649fi 650 651case $TARGET_OS in 652 linux-*|darwin-*) 653 echo "#define CONFIG_IOVEC 1" >> $config_h 654 ;; 655esac 656 657echo "#define CONFIG_$CONFIG_OS 1" >> $config_h 658if [ $BSD = 1 ] ; then 659 echo "#define CONFIG_BSD 1" >> $config_h 660 echo "#define O_LARGEFILE 0" >> $config_h 661 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h 662fi 663 664echo "#define CONFIG_ANDROID 1" >> $config_h 665 666if [ "$GLES_INCLUDE" -a "$GLES_LIBS" ]; then 667 echo "#define CONFIG_ANDROID_OPENGLES 1" >> $config_h 668fi 669 670log "Generate : $config_h" 671 672echo "Ready to go. Type 'make' to build emulator" 673