build: Allow building with OpenJDK

Change-Id: I6348bc1187240729f75f50d7ef91802c68e7788b
Some changes added to compile and run with Java 6 and Java 7.

  - correction of errors with Javac 6:
    - target 1.5 and source empty.
  - correction of errors with Javadoc 7:
    - strange behavior when duplicate classes are given.

Change-Id: Ib814ede143f7799ef18e0fb1b733547519b8b0e5

Conflicts:

	core/main.mk

Change-Id: Ief980703f0ff747166c1ec79ad748c09d5979c01
build: Inline kernel building as a buildtime task
By arcee

Kernel image integration is now done in the build system. The
"one true way" of doing this is to download the kernel source
into kernel/TARGET_BOOTLOADER_NAME (by usage of the cm.dependencies
mechanism or otherwise), and defining the TARGET_KERNEL_CONFIG
variable in the device's BoardConfig makefile

If the kernel's location doesn't match the automagic location
(multi-device kernel source, for instance), TARGET_KERNEL_SOURCE
can be used to specify a kernel path (i.e.,
"TARGET_KERNEL_SOURCE := kernel/shared-whatever")

If the device requires out-of-kernel-tree modules to be built,
the TARGET_KERNEL_MODULES variable can be used, pointing to a
_make target_ that will build and install such modules. Definition
of such a target is the device author's responsibility, the only
restriction is that it is a normal makefile recipe (example
below)

Optionally (or as an alternative), a prebuilt binary can also be
defined at BoardConfig, by usage of the TARGET_PREBUILT_KERNEL
variable. This binary will be used if the kernel source is absent
(or undefined).

A minimal BoardConfig.mk should look something like this:

TARGET_KERNEL_CONFIG := cyanogenmod_<device>_defconfig
TARGET_PREBUILT_KERNEL := device/<vendor>/<device>/kernel

To include, for example, the TI WLAN modules, this can be used:

-----------------------------
TIWLAN_MODULES:
       make -C hardware/ti/wlan/wl1283/platforms/os/linux/ KERNEL_DIR=$(KERNEL_OUT) ARCH="arm"
CROSS_COMPILE="arm-eabi-" TNETW=1273 RANDOM_MAC=n REPORT_LOG=n
       mv hardware/ti/wlan/wl1283/platforms/os/linux/tiwlan_drv.ko $(KERNEL_MODULES_OUT)
       make -C hardware/ti/wlan/wl1283_softAP/platforms/os/linux/ KERNEL_DIR=$(KERNEL_OUT) ARCH="arm"
CROSS_COMPILE="arm-eabi-" TNETW=1273 REPORT_LOG=n
       mv hardware/ti/wlan/wl1283_softAP/platforms/os/linux/tiap_drv.ko $(KERNEL_MODULES_OUT)

TARGET_KERNEL_MODULES := TIWLAN_MODULES
---------------------------

Change-Id: I8634fa4c788a42dc6f62e62ca170825b66db126a
build: Fix kernel.mk typos

Change-Id: I5980d6a30dd66741a561a95e0dfba60a3ad0ef5d
build: Add Qualcomm's helper macros

 * This is used everywhere in Qualcomm's code. There's no reason we need
   to constantly replace it with uglier stuff in our Makefiles.

Change-Id: I0183a338470ec96a38f356a47bae65a0d3fb2c95
build: Add board platforms to qcom_utils

Change-Id: I85458167bf2b9c04b029d09b87bf791ff4cfd04d
build: Use common name for QCOM 7K boards.

This is needed to build QCOM HAL without external modifications. The
device would now have to specify msm7x27 or msm7x30 instead of
specifying the full name.

Patch Set 2: Add msm7x27a into the list.

Change-Id: I25018e397b5aad27fab5244731a574ae86752e17
Add new version to qcom_utils.mk

Change-Id: I1ca1532fd4968450715ecd0cca7729e0e6d507ef
Allow a device to generically define its own headers

We have a few cases of devices including specific versions of projects
just because of modified headers (msm_mdp.h comes to mind), and I just
had enough of ifdeffing header files for specific cases (the P990 needs
a lot of these).
Now... if a target defines a TARGET_SPECIFIC_HEADER_PATH, any headers in
there will take precedence over the standard ones; for example, on the
p990, I have

TARGET_SPECIFIC_HEADER_PATH := device/lge/p990/include

which makes, for example, the
device/lge/p990/include/hardware_legacy/AudioHardwareInterface.h be
used instead of
hardware/libhardware_legacy/include/hardware_legacy/AudioHardwareInterface.h
whenever a source file uses <hardware_legacy/AudioHardwareInterface.h>

Change-Id: I41b62668b60e3f62a6ebd3738d8d2675103a81e6
envsetup: set OUT_DIR to an absolute path always

OUT_DIR was set to $(TOPDIR)out previously,
but $(TOPDIR) was null, so it was a relative path.
This broke releasetools, inline kernel building, etc
since they require absolute paths.
Fix it so that it is set to $(shell readlink -f .)/out
if $(TOPDIR) is null.

Also remove hacks which checked if (OUT_DIR) was out
and changed it to $(ANDROID_BUILD_TOP)/out to workaround
the aforementioned problem.

Change-Id: I459a3b1325a1bbea0565cd73f6acf160d4ed9b39

Conflicts:
	core/base_rules.mk
	core/tasks/kernel.mk

Change-Id: I52a7a6024f0f2b708c230e53c0152ed138726cc1
envsetup: Set CUSTOM_BUILD environment variable

This is used to gate a few features, including backuptool

Change-Id: I02fee9e0765cca88c833bb0514762aa3b14642e3
Add backuptool support to the releasetools system

Pulled from CyanogenMod 10.1

Change-Id: Iffd9a45865011ad9108508d31f79e53d609dd6f4
Allow override of device asserts, including multi-device support.

Set in board file with TARGET_OTA_ASSERT_DEVICE.
(cherry-picked from commit 0f452f21fc9323b9d1fe746161761cf40aaa5030)

Change-Id: Icd10de924f2b88168912c9575174cebf6b0104ba
envsetup: add a helper to fix "out/target/common" not being really common

* out/target/common isn't really common, and if you do
  back to back builds for multiple devices, that is noticable.
* Use out/target/common-$device instead, and link the appropriate
  dir to out/target/common every time lunch() is run, if
  ANDROID_FIXUP_COMMON_OUT is set.
* Refer https://groups.google.com/forum/#!topic/android-building/ispbOgzoyg8
  for more info.

Change-Id: I11e7df0e68e2a60ce32576f06397d60fc9465b60
Signed-off-by: iceandfire <arhamjamal@gmail.com>

Conflicts:
	envsetup.sh
envsetup: Add pushboot function

This function lets you push a file from your current OUT dir
for your current device. It root/remount the device, push the
file, and reboots it. Example: pushboot system/app/SystemUI.apk

Change-Id: I8a404323a4091e8502fbdd24198c66f1ac598192
Signed-off-by: iceandfire <arhamjamal@gmail.com>

Conflicts:
	envsetup.sh
recovery: fix custom recoveries

This is a squashed set of commits with some updates to minimize conflict with AOSP

recovery: custom recovery build fixes

Patch by Koush

Extract uboot image creation from core/Makefile

http://memegenerator.net/instance/12495768

This change utilizes BOARD_CUSTOM_BOOTIMG_MK to extract out the Uboot boot and
recovery image generation out into it's own file (approx 130 lines).

This should:
    * Clean up the already huge Makefile and the keep ifdeffyness down
    * Make sure Uboot changes don't effect other builds
    * Extract a lot of code that is only for 3 devices

This depreciates BOARD_USES_UBOOT but BOARD_USES_UBOOT_MULTIIMAGE is still valid.

Boards who use uboot boot images should remove BOARD_USES_UBOOT and add
  BOARD_CUSTOM_BOOTIMG_MK := device/common/uboot-bootimg.mk
to their BoardConfig.mk
(location of the makefile is not finalized)

Conflicts:
	core/Makefile

Patch by nemith

remove unused BOARD_USES_COMBINED_RECOVERY

Change-Id: I79520c510488d63d469b0d1a3a099420f7de1fe6

Patch by codeworkx

Change-Id: I6bcab88b76272526bdc558fbf8d7b43347bb5ef1
build: fix BOARD_CUSTOM_BOOTIMG_MK

Change-Id: I1b9fa7d8eb67bdcaaae7b55ca538b33545e73581
build: add support for custom releasetools

Change-Id: I2337559ac669bb5868708c4726cbacbf5713261a
releasetools: use prebuilt boot image if using a custom boot image makefile

Change-Id: Ic348d31e8df7933dc4f9f055b7a5a2beacc21d32
Add ARMv6J and ARMv6-VFP processor combo option

Cherry-picked from gingerbread branch.

Change-Id: I8015149184ab3e1ee61ef93c62a395233ad1d156