Introduction:
=============

The Android emulator builds now uses several prebuilt host binaries
(shared libraries or executables), in order to simplify and speed up the
build.

These binaries typically come from third-party open-source projects,
for example:

  - libffi, gettext, glib and other dependencies required by the code base
    under external/qemu

  - The LLVM and Mesa3D graphics libraries used to implement software-based
    GPU emulation.

This documents explains how these prebuilts were generated, how they are
typically stored and managed by the android/rebuild.sh script.


I. List of Android emulator prebuilt packages:
==============================================

The following file lists the location of all source packages for the prebuilts
required by the emulator build:

  android/dependencies/PACKAGES.TXT

This is a simple text file that contains one-line per package. For a detailed
description of the file format, read the comments in:

  android/scripts/utils/package_list_parser.py

It is possible to apply a set of patches on top of an official source package
by using a PATCHES=<file> field in a PACKAGES.TXT package description. For
example, this is used to apply a few patches on top of the official Mesa3D
release (see current content of android/dependencies/ and PACKAGES.TXT).

You should call the following script to download all source packages from
known reliable sources, and verify their content through sha1sum:

  android/scripts/download-sources.sh

IMPORTANT: You must also call this script every time you modify PACKAGES.TXT.

Note that by default, this will copy PACKAGES.TXT and patch files located
under android/dependencies/ into the following target directory:

  $AOSP/prebuilts/android-emulator-build/archive/

You can change this destination by using the --install-dir=<dir> option, or
defining the ANDROID_EMULATOR_PREBUILTS_DIR environment variable to point
to a different location.


II. Android SDK specific toolchains:
====================================

To avoid surprises and unexpected differences when people use different
systems to build the same sources, special toolchains are used to build
all prebuilts, more specifically:

  - A Linux toolchain, based on GCC 4.8, which compiles against GLibc 2.11,
    which is ancient enough to let binaries run on Debian Stable and
    RedHat systems.

  - A cross-toolchain (x86_64-w64-mingw32) which generates Win32 and Win64
    binaries under Linux. This is a lot more faster than trying to rebuild
    these with a solution like Cygwin on Windows.

  - For OS X, we use a prebuilt Clang binary (currently 3.5) and well as need
    to ensure that the corresponding binaries run at least on OS 10.8, the
    minimal supported version of the system for the SDK.

To make things easier, a script is provided that can generate a 'wrapper'
toolchain:

  android/scripts/gen-android-sdk-toolchain.sh --host=<system> <dst-dir>

Where <system> is a host system name as in [1], and <dst-dir> is a
directory where wrapper scripts for gcc, cc, ld, ar, and other toolchain
programs will be created to target

Note that these scripts have a system-specific prefix:

  - The Linux compiler will be called x86_64-linux-gcc.
  - The Windows compiler will be called x86_64-w64-mingw32-gcc.
  - The Darwin compiler doesn't use a prefix.

This is done to make typical GNU 'configure' script work easier. One would
typically use the configure --host option to ensure the wrapper toolchain
is being used, i.e.:

  - On Linux, use --host=x86_64-linux
  - On Linux, when generating Windows binaries, use --host=x86_64-w64-mingw32
  - On Darwin, don't use --host, since the wrapper toolchain doesn't use
    a 'binprefix' at all.

Use the --help option to see more options available when calling this script.

Typically, one would prepend <dst-dir> to your PATH before launching
the configure script, as an example, here's how to recompile a given
opensource package on Linux:

    /path/to/external/qemu/android/scripts/gen-android-sdk-toolchain.sh \
        /tmp/my-toolchain

    PATH=/tmp/my-toolchain:$PATH

    cd /path/to/opensource-package-1.0/
    ./configure --host=x86_64-linux --prefix <install-dir> <other-options>
    make -j8
    make install

However, several shell scripts are provided to automate this.


III. Rebuild scripts for third-party packages:
==============================================

the android/scripts/ directory contains many shell scripts used to rebuild
specific third-party libraries or executables. In particular:

  - They all use shared functions from android/scripts/utils/ that make
    it easy to parse the PACKAGES.TXT file, extract source tarball to
    temporary build directories, generate SDK toolchain wrappers, and
    configure simple projects.

  - On Linux, they will build binaries for linux-x86_64, windows-x86 and
    windows-x86_64 automatically.

    Also, they support the --darwin-ssh=<hostname> which allows one
    to perform a remote build of Darwin binaries through SSH.

  - They place all generated binaries under:

       $AOSP/prebuilts/android-emulator-build/<name>

    Where <name> is a unique name corresponding to this group of binaries.

Most features are explained when using the --help option on one of these
scripts.

If you consider adding new prebuilt binaries, consider writing such a
specialized script to get the same benefits. A good starting point is
looking at one of the existing scripts and try to modify it.

Another thing to do is open a buganizer entry to request a new git
repository under:

    $AOSP/prebuilts/android-emulator-build/<new-project-name>

Consider providing an archive of the original content for this directory
(i.e. generated by your own build script) to populate it first.


IV. How prebuilt binaries are used by the build:
================================================

The android/rebuild.sh script is in charge of placing prebuilt binaries
to the correct location under $OUT_DIR/, which defaults to objs/

In particular:

  - qemu2 binaries must be placed under:

       $OUT_DIR/qemu/<system>/qemu-system-<qemu-arch>

    Note that these binaries are generated by running:

        android/scripts/

  - Swiftshader must be placed under:

       $OUT_DIR/lib/gles_swiftshader/    (32-bit ones)
       $OUT_DIR/lib64/gles_swiftshader/  (64-bit ones)

  - Mesa libraries must be placed under:

       $OUT_DIR/lib/gles_mesa/    (32-bit ones)
       $OUT_DIR/lib64/gles_mesa/  (64-bit ones)

  - Qt shared libraries should go into:

       $OUT_DIR/lib/qt/           (32-bit ones)
       $OUT_DIR/lib64/qt/         (64-bit ones)

  - Any third-party host executable (if any) should go under:

       $OUT_DIR/bin/     (32-bit ones)
       $OUT_DIR/bin64/   (64-bit ones)

Note that the top-level 'emulator' launcher program will modify the runtime
library search path (e.g. LD_LIBRARY_PATH on Linux) to ensure that libraries
under <lib>/, <lib>/qt/ or <lib>/gles_swiftshader/, whenever that makes sense.

The PATH is not modified though, so use explicit bin/ or bin64/ prefixes
when invoking host binaries.



[1] Valid host system names are:

      darwin-x86_64
      linux-x86_64
      windows-x86_64
      linux-x86
      windows-x86
