aboutsummaryrefslogtreecommitdiffstats
path: root/android-configure.sh
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:35 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:35 -0800
commitf721e3ac031f892af46f255a47d7f54a91317b30 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /android-configure.sh
parentbae1bc39312d5019bd9a5b8d840a529213a69a17 (diff)
downloadexternal_qemu-f721e3ac031f892af46f255a47d7f54a91317b30.zip
external_qemu-f721e3ac031f892af46f255a47d7f54a91317b30.tar.gz
external_qemu-f721e3ac031f892af46f255a47d7f54a91317b30.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'android-configure.sh')
-rwxr-xr-xandroid-configure.sh646
1 files changed, 0 insertions, 646 deletions
diff --git a/android-configure.sh b/android-configure.sh
deleted file mode 100755
index c5e60ef..0000000
--- a/android-configure.sh
+++ /dev/null
@@ -1,646 +0,0 @@
-#!/bin/bash
-#
-# this script is used to rebuild the Android emulator from sources
-# in the current directory. It also contains logic to speed up the
-# rebuild if it detects that you're using the Android build system
-#
-# in this case, it will use prebuilt binaries for the compiler,
-# the audio library and the SDL library. You can disable this
-# by using the --no-prebuilt-libs and --cc=<compiler> options
-#
-#
-# here's the list of environment variables you can define before
-# calling this script to control it (besides options):
-#
-#
-
-# first, let's see which system we're running this on
-cd `dirname $0`
-PROGNAME=`basename $0`
-
-# this function will be used to execute commands and eventually
-# dump them if VERBOSE is 'yes'
-VERBOSE=yes
-VERBOSE2=no
-
-function log()
-{
- if [ "$VERBOSE" = "yes" ] ; then
- echo "$1"
- fi
-}
-
-function log2()
-{
- if [ "$VERBOSE2" = "yes" ] ; then
- echo "$1"
- fi
-}
-
-function execute()
-{
- log2 "Running: $*"
- $*
-}
-
-function compile()
-{
- log2 "Object : $CC -o $TMPO -c $CFLAGS $TMPC"
- $CC -o $TMPO -c $CFLAGS $TMPC 2> $TMPL
-}
-
-function link()
-{
- log2 "Link : $LD $LDFLAGS -o $TMPE $TMPO"
- $LD $LDFLAGS -o $TMPE $TMPO 2> $TMPL
-}
-
-function compile-exec-run()
-{
- log2 "RunExec : $CC -o $TMPE $CFLAGS $TMPC"
- compile
- if [ $? != 0 ] ; then
- echo "Failure to compile test program"
- cat $TMPL
- exit 1
- fi
- link
- if [ $? != 0 ] ; then
- echo "Failure to link test program"
- cat $TMPL
- exit 1
- fi
- $TMPE
-}
-
-OS=`uname -s`
-CPU=`uname -m`
-EXE=""
-case "$CPU" in
- i?86) CPU=x86
- ;;
-esac
-
-case "$OS" in
- Darwin)
- OS=darwin-$CPU
- ;;
- Linux)
- # note that building on x86_64 is handled later
- OS=linux-$CPU
- ;;
- *_NT-*)
- OS=windows
- EXE=.exe
- ;;
-esac
-
-# Are we running in the Android build system ?
-unset TOP
-if [ -n "$ANDROID_PRODUCT_OUT" ] ; then
- TOP=`cd $ANDROID_PRODUCT_OUT/../../../.. && pwd`
- log "TOP found at $TOP"
- # $TOP/config/envsetup.make is for the old tree layout
- # $TOP/build/envsetup.sh is for the new one
- ANDROID_CONFIG_MK=$TOP/config/envsetup.make
- if [ ! -f $ANDROID_CONFIG_MK ] ; then
- ANDROID_CONFIG_MK=$TOP/build/core/config.mk
- fi
- if [ ! -f $ANDROID_CONFIG_MK ] ; then
- echo "Cannot find build system root (TOP)"
- echo "defaulting to non-Android build"
- unset TOP
- fi
-fi
-
-# normalize the TOP variable, we don't want any trailing /
-IN_ANDROID_BUILD=no
-if [ -n "$TOP" ] ; then
- TOPDIR=`dirname $TOP`
- if [ "$TOPDIR" != "." ] ; then
- TOP=$TOPDIR/`basename $TOP`
- fi
- IN_ANDROID_BUILD=yes
- log "In Android Build"
-fi
-
-# Parse options
-OPTION_TARGETS=""
-OPTION_DEBUG=no
-OPTION_IGNORE_AUDIO=no
-OPTION_NO_PREBUILTS=no
-OPTION_TRY_64=no
-OPTION_HELP=no
-
-if [ -z "$CC" ] ; then
- CC=gcc
-fi
-
-for opt do
- optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
- case "$opt" in
- --help|-h|-\?) OPTION_HELP=yes
- ;;
- --verbose)
- if [ "$VERBOSE" = "yes" ] ; then
- VERBOSE2=yes
- else
- VERBOSE=yes
- fi
- ;;
- --install=*) OPTION_TARGETS="$TARGETS $optarg";
- ;;
- --sdl-config=*) SDL_CONFIG=$optarg
- ;;
- --cc=*) CC="$optarg" ; HOSTCC=$CC
- ;;
- --no-strip) OPTION_NO_STRIP=yes
- ;;
- --debug) OPTION_DEBUG=yes
- ;;
- --ignore-audio) OPTION_IGNORE_AUDIO=yes
- ;;
- --no-prebuilts) OPTION_NO_PREBUILTS=yes
- ;;
- --try-64) OPTION_TRY_64=yes
- ;;
- *)
- echo "unknown option '$opt', use --help"
- exit 1
- esac
-done
-
-# Print the help message
-#
-if [ "$OPTION_HELP" = "yes" ] ; then
- cat << EOF
-
-Usage: rebuild.sh [options]
-Options: [defaults in brackets after descriptions]
-EOF
- echo "Standard options:"
- echo " --help print this message"
- echo " --install=FILEPATH copy emulator executable to FILEPATH [$TARGETS]"
- echo " --cc=PATH specify C compiler [$CC]"
- echo " --sdl-config=FILE use specific sdl-config script [$SDL_CONFIG]"
- echo " --no-strip do not strip emulator executable"
- echo " --debug enable debug (-O0 -g) build"
- echo " --ignore-audio ignore audio messages (may build sound-less emulator)"
- echo " --no-prebuilts do not use prebuilt libraries and compiler"
- echo " --try-64 try to build a 64-bit executable (may crash)"
- echo " --verbose verbose configuration"
- echo ""
- exit 1
-fi
-
-# Various probes are going to need to run a small C program
-TMPC=/tmp/android-qemu-$$.c
-TMPO=/tmp/android-qemu-$$.o
-TMPE=/tmp/android-qemu-$$$EXE
-TMPL=/tmp/android-qemu-$$.log
-
-function clean-exit ()
-{
- rm -f $TMPC $TMPO $TMPL $TMPE
- exit 1
-}
-
-# Adjust a few things when we're building within the Android build
-# system:
-# - locate prebuilt directory
-# - locate and use prebuilt libraries
-# - copy the new binary to the correct location
-#
-if [ "$OPTION_NO_PREBUILTS" = "yes" ] ; then
- IN_ANDROID_BUILD=no
-fi
-
-if [ "$IN_ANDROID_BUILD" = "yes" ] ; then
-
- # Get the value of a build variable as an absolute path.
- function get_abs_build_var()
- {
- (cd $TOP && CALLED_FROM_SETUP=true BUILD_SYSTEM=build/core make -f $ANDROID_CONFIG_MK dumpvar-abs-$1)
- }
-
- # locate prebuilt directory
- PREBUILT_HOST_TAG=$OS
- case $OS in
- linux-*)
- # Linux is a special case because in the old tree layout
- # we simply used 'Linux' as the prebuilt host tag, but
- # are now using "linux-x86" in the new layout
- # check which one should be used
- #
- if [ -d $TOP/prebuilt/Linux ] ; then
- PREBUILT_HOST_TAG=Linux
- fi
- ;;
- esac
- PREBUILT=$TOP/prebuilt/$PREBUILT_HOST_TAG
- if [ ! -d $PREBUILT ] ; then
- # this can happen when building on x86_64
- case $OS in
- linux-x86_64)
- PREBUILT_HOST_TAG=linux-x86
- PREBUILT=$TOP/prebuilt/$PREBUILT_HOST_TAG
- log "Forcing usage of 32-bit prebuilts"
- ;;
- *)
- esac
- if [ ! -d $PREBUILT ] ; then
- echo "Can't find the prebuilt directory $PREBUILT in Android build"
- exit 1
- fi
- fi
- log "Prebuilt : PREBUILT=$PREBUILT"
-
- # use ccache if USE_CCACHE is defined and the corresponding
- # binary is available.
- #
- # note: located in PREBUILT/ccache/ccache in the new tree layout
- # located in PREBUILT/ccache in the old one
- #
- if [ -n "$USE_CCACHE" ] ; then
- CCACHE="$PREBUILT/ccache/ccache$EXE"
- if [ ! -f $CCACHE ] ; then
- CCACHE="$PREBUILT/ccache$EXE"
- fi
- if [ -f $CCACHE ] ; then
- CC="$CCACHE $CC"
- fi
- log "Prebuilt : CCACHE=$CCACHE"
- fi
-
- # if the user didn't specify a sdl-config script, get the prebuilt one
- if [ -z "$SDL_CONFIG" -a "$OPTION_NO_PREBUILTS" = "no" ] ; then
- # always use our own static libSDL by default
- SDL_CONFIG=$PREBUILT/sdl/bin/sdl-config
- log "Prebuilt : SDL_CONFIG=$SDL_CONFIG"
- fi
-
- # finally ensure that our new binary is copied to the 'out'
- # subdirectory as 'emulator'
- HOST_BIN=$(get_abs_build_var HOST_OUT_EXECUTABLES)
- if [ -n "$HOST_BIN" ] ; then
- TARGETS="$TARGETS $HOST_BIN/emulator$EXE"
- log "Targets : TARGETS=$TARGETS"
- fi
-fi # IN_ANDROID_BUILD = no
-
-
-####
-#### Compiler checks
-####
-####
-if [ -z "$CC" ] ; then
- CC=gcc
- if [ $CPU = "powerpc" ] ; then
- CC=gcc-3.3
- fi
-fi
-
-cat > $TMPC <<EOF
-int main(void) {}
-EOF
-
-if [ -z "$LD" ] ; then
- LD=$CC
-fi
-
-# we only support generating 32-bit binaris on 64-bit systems.
-# And we may need to add a -Wa,--32 to CFLAGS to let the assembler
-# generate 32-bit binaries on Linux x86_64.
-#
-if [ "$OPTION_TRY_64" != "yes" ] ; then
- if [ "$CPU" = "x86_64" -o "$CPU" = "amd64" ] ; then
- log "Check32Bits: Forcing generation of 32-bit binaries (--try-64 to disable)"
- CPU="i386"
- case $OS in
- linux-*)
- OS=linux-x86
- ;;
- darwin-*)
- OS=darwin-x86
- ;;
- esac
- CFLAGS="$CFLAGS -m32"
- LDFLAGS="$LDFLAGS -m32"
- compile
- if [ $? != 0 ] ; then
- CFLAGS="$CFLAGS -Wa,--32"
- fi
- # check that the compiler can link 32-bit executables
- # if not, try the host linker
- link
- if [ $? != 0 ] ; then
- OLD_LD=$LD
- LD=gcc
- compile
- link
- if [ $? != 0 ] ; then
- log "not using gcc for LD"
- LD=$OLD_LD
- fi
- fi
- fi
-fi
-
-compile
-if [ $? != 0 ] ; then
- echo "C compiler doesn't seem to work:"
- cat $TMPL
- clean-exit
-fi
-log "CC : compiler check ok ($CC)"
-
-# on 64-bit systems, some of our prebuilt compilers are not
-# capable of linking 32-bit executables properly
-#
-link
-if [ $? != 0 ] ; then
- echo "Linker doesn't seem to work:"
- cat $TMPL
- clean-exit
-fi
-log "LD : linker check ok ($LD)"
-
-###
-### SDL Probe
-###
-
-# For now, we require an external libSDL library, if SDL_CONFIG is not
-# defined, try to grab it from the environment
-#
-if [ -z "$SDL_CONFIG" ] ; then
- SDL_CONFIG=`which sdl-config`
- if [ $? != 0 ] ; then
- echo "Please ensure that you have the emulator's patched libSDL"
- echo "built somewhere and point to its sdl-config script either"
- echo "with the SDL_CONFIG env. variable, or the --sdl-config=<script>"
- echo "option."
- clean-exit
- fi
-fi
-
-# check that we can link statically with the library.
-#
-SDL_CFLAGS=`$SDL_CONFIG --cflags`
-SDL_LIBS=`$SDL_CONFIG --static-libs`
-
-# quick hack, remove the -D_GNU_SOURCE=1 of some SDL Cflags
-# since they break recent Mingw releases
-SDL_CFLAGS=`echo $SDL_CFLAGS | sed -e s/-D_GNU_SOURCE=1//g`
-
-log "SDL-probe : SDL_CFLAGS = $SDL_CFLAGS"
-log "SDL-probe : SDL_LIBS = $SDL_LIBS"
-
-OLD_CFLAGS=$CFLAGS
-OLD_LDFLAGS=$LDFLAGS
-
-CFLAGS="$CFLAGS $SDL_CFLAGS"
-LDFLAGS="$LDFLAGS $SDL_LIBS"
-
-cat > $TMPC << EOF
-#include <SDL.h>
-#undef main
-int main( void ) {
- return SDL_Init (SDL_INIT_VIDEO);
-}
-EOF
-compile
-if [ $? != 0 ] ; then
- echo "You provided an explicit sdl-config script, but the corresponding library"
- echo "cannot be statically linked with the Android emulator directly."
- echo "Error message:"
- cat $TMPL
- clean-exit
-fi
-log "SDL-probe : static linking ok"
-
-# now, let's check that the SDL library has the special functions
-# we added to our own sources
-#
-cat > $TMPC << EOF
-#include <SDL.h>
-#undef main
-int main( void ) {
- int x, y;
- SDL_WM_GetPos(&x, &y);
- SDL_WM_SetPos(x, y);
- return SDL_Init (SDL_INIT_VIDEO);
-}
-EOF
-compile
-if [ $? != 0 ] ; then
- echo "You provided an explicit sdl-config script in SDL_CONFIG, but the"
- echo "corresponding library doesn't have the patches required to link"
- echo "with the Android emulator. Unsetting SDL_CONFIG will use the"
- echo "sources bundled with the emulator instead"
- echo "Error:"
- cat $TMPL
- clean-exit
-fi
-
-log "SDL-probe : extra features ok"
-rm -f $TMPL $TMPC $TMPE
-
-CFLAGS=$OLD_CFLAGS
-LDFLAGS=$OLD_LDFLAGS
-
-
-###
-### Audio subsystems probes
-###
-PROBE_COREAUDIO=no
-PROBE_ALSA=no
-PROBE_OSS=no
-PROBE_ESD=no
-PROBE_WINAUDIO=no
-
-case "$OS" in
- darwin*) PROBE_COREAUDIO=yes;
- ;;
- linux-*) PROBE_ALSA=yes; PROBE_OSS=yes; PROBE_ESD=yes;
- ;;
- windows) PROBE_WINAUDIO=yes
- ;;
-esac
-
-ORG_CFLAGS=$CFLAGS
-ORG_LDFLAGS=$LDFLAGS
-
-if [ "$PROBE_ESD" = yes ] ; then
- CFLAGS="$ORG_CFLAGS"
- LDFLAGS="$ORG_LDFLAGS -ldl"
- cp -f android/config/check-esd.c $TMPC
- compile && link && $TMPE
- if [ $? = 0 ] ; then
- log "AudioProbe : ESD seems to be usable on this system"
- else
- if [ "$OPTION_IGNORE_AUDIO" = no ] ; then
- echo "the EsounD development files do not seem to be installed on this system"
- echo "Are you missing the libesd-dev package ?"
- echo "Correct the errors below and try again:"
- cat $TMPL
- clean-exit
- fi
- PROBE_ESD=no
- log "AudioProbe : ESD seems to be UNUSABLE on this system !!"
- fi
-fi
-
-if [ "$PROBE_ALSA" = yes ] ; then
- CFLAGS="$ORG_CFLAGS"
- LDFLAGS="$ORG_CFLAGS -ldl"
- cp -f android/config/check-alsa.c $TMPC
- compile && link && $TMPE
- if [ $? = 0 ] ; then
- log "AudioProbe : ALSA seems to be usable on this system"
- else
- if [ "$OPTION_IGNORE_AUDIO" = no ] ; then
- echo "the ALSA development files do not seem to be installed on this system"
- echo "Are you missing the libasound-dev package ?"
- echo "Correct the erros below and try again"
- cat $TMPL
- clean-exit
- fi
- PROBE_ALSA=no
- log "AudioProbe : ALSA seems to be UNUSABLE on this system !!"
- fi
-fi
-
-CFLAGS=$ORG_CFLAGS
-LDFLAGS=$ORG_LDFLAGS
-
-# create the objs directory that is going to contain all generated files
-# including the configuration ones
-#
-mkdir -p objs
-
-###
-### Compiler probe
-###
-
-####
-#### Host system probe
-####
-
-# because the previous version could be read-only
-rm -f $TMPC
-
-# check host endianess
-#
-HOST_BIGENDIAN=no
-cat > $TMPC << EOF
-#include <inttypes.h>
-int main(int argc, char ** argv){
- volatile uint32_t i=0x01234567;
- return (*((uint8_t*)(&i))) == 0x67;
-}
-EOF
-compile-exec-run && HOST_BIGENDIAN=yes
-log "Host : HOST_BIGENDIAN=$HOST_BIGENDIAN"
-
-# check size of host long bits
-HOST_LONGBITS=32
-cat > $TMPC << EOF
-int main(void) {
- return sizeof(void*)*8;
-}
-EOF
-compile-exec-run
-HOST_LONGBITS=$?
-log "Host : HOST_LONGBITS=$HOST_LONGBITS"
-
-# check whether we have <byteswap.h>
-#
-HAVE_BYTESWAP_H=yes
-cat > $TMPC << EOF
-#include <byteswap.h>
-EOF
-compile
-if [ $? != 0 ] ; then
- HAVE_BYTESWAP_H=no
-fi
-log "Host : HAVE_BYTESWAP_H=$HAVE_BYTESWAP_H"
-
-# Build the config.make file
-#
-rm -rf objs
-mkdir -p objs
-config_mk=objs/config.make
-echo "# This file was autogenerated by $PROGNAME" > $config_mk
-echo "TARGET_ARCH := arm" >> $config_mk
-case $OS in
- linux-*) HOST_OS=linux
- ;;
- darwin-*) HOST_OS=darwin
- ;;
- *) HOST_OS=$OS
-esac
-echo "OS := $OS" >> $config_mk
-echo "HOST_OS := $HOST_OS" >> $config_mk
-case $CPU in
- i?86) HOST_ARCH=x86
- ;;
- amd64) HOST_ARCH=x86_64
- ;;
- powerpc) HOST_ARCH=ppc
- ;;
- *) HOST_ARCH=$CPU
-esac
-echo "HOST_ARCH := $HOST_ARCH" >> $config_mk
-PWD=`pwd`
-echo "SRC_PATH := $PWD" >> $config_mk
-echo "CC := $CC" >> $config_mk
-echo "HOST_CC := $CC" >> $config_mk
-echo "LD := $LD" >> $config_mk
-echo "NO_PREBUILT := $OPTION_NO_PREBUILTS" >> $config_mk
-echo "HOST_PREBUILT_TAG := $PREBUILT_HOST_TAG" >> $config_mk
-echo "PREBUILT := $PREBUILT" >> $config_mk
-echo "CFLAGS := $CFLAGS" >> $config_mk
-echo "LDFLAGS := $LDFLAGS" >> $config_mk
-echo "SDL_CONFIG := $SDL_CONFIG" >> $config_mk
-echo "CONFIG_COREAUDIO := $PROBE_COREAUDIO" >> $config_mk
-echo "CONFIG_WINAUDIO := $PROBE_WINAUDIO" >> $config_mk
-echo "CONFIG_ESD := $PROBE_ESD" >> $config_mk
-echo "CONFIG_ALSA := $PROBE_ALSA" >> $config_mk
-echo "CONFIG_OSS := $PROBE_OSS" >> $config_mk
-echo "" >> $config_mk
-echo "BUILD_STANDALONE_EMULATOR := true" >> $config_mk
-echo "HOST_PREBUILT_TAG := $PREBUILT_HOST_TAG" >> $config_mk
-
-log "Generate : $config_mk"
-
-# Build the config-host.h file
-#
-config_h=objs/config-host.h
-echo "/* This file was autogenerated by '$PROGNAME' */" > $config_h
-echo "#define CONFIG_QEMU_SHAREDIR \"/usr/local/share/qemu\"" >> $config_h
-echo "#define HOST_LONG_BITS $HOST_LONGBITS" >> $config_h
-if [ "$HAVE_BYTESWAP_H" = "yes" ] ; then
- echo "#define HAVE_BYTESWAP_H 1" >> $config_h
-fi
-echo "#define CONFIG_GDBSTUB 1" >> $config_h
-echo "#define CONFIG_SLIRP 1" >> $config_h
-echo "#define CONFIG_SKINS 1" >> $config_h
-# the -nand-limits options can only work on non-windows systems
-if [ "$OS" != "windows" ] ; then
- echo "#define CONFIG_NAND_LIMITS 1" >> $config_h
-fi
-echo "#define QEMU_VERSION \"0.8.2\"" >> $config_h
-case "$CPU" in
- i386) HOST_CPU=I386
- ;;
- powerpc) HOST_CPU=PPC
- ;;
- x86_64|amd64) HOST_CPU=X86_64
- ;;
- *) HOST_CPU=$CPU
- ;;
-esac
-echo "#define HOST_$HOST_CPU 1" >> $config_h
-log "Generate : $config_h"
-
-echo "Ready to go. Type 'make' to build emulator"