blob: aa7f6945b31bf1f2a86672ad17f1147935374637 [file] [log] [blame]
#
# Copyright (C) 2012 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# common build dirs for pdk_eng and pdk_rel builds
# this list should be minimal to make pdk_rel build fast
# BUILD_PDK_SUBDIRS is parsed by a script to extract source tree list automatically.
# To make that parsing simple, the first line should not include any explicit directory name.
BUILD_PDK_SUBDIRS := \
abi \
bionic \
bootable \
build \
device \
hardware \
prebuilt \
prebuilts
# if pdk_vendor.mk exist, do not include pdk_google.mk
# pdk_vendor.mk should add more dirs for pdk_rel build
# that is, it should include BUILD_PDK_SUBDIRS += \ to add additional dir for build
ifneq (,$(wildcard $(TOPDIR)pdk/build/pdk_vendor.mk))
include $(TOPDIR)pdk/build/pdk_vendor.mk
else
include $(TOPDIR)pdk/build/pdk_google.mk
endif
ifeq ($(PDK_BUILD_TYPE), pdk_eng)
# addition for pdk_eng
BUILD_PDK_ENG_SUBDIRS := \
dalvik \
development \
external \
frameworks \
libcore \
packages/apps/Bluetooth \
packages/apps/Launcher2 \
packages/apps/Settings \
packages/inputmethods/LatinIME \
packages/providers \
sdk \
system
BUILD_PDK_SUBDIRS += $(BUILD_PDK_ENG_SUBDIRS)
ifeq ($(TARGET_CPU_SMP), true)
PDK_BIN_NAME := pdk_bin_$(TARGET_ARCH_VARIANT)_true
else # !SMP
PDK_BIN_NAME := pdk_bin_$(TARGET_ARCH_VARIANT)_false
endif # !SMP
.PHONY: pdk_bin_zip
pdk_bin_zip: $(OUT_DIR)/target/$(PDK_BIN_NAME).zip
$(OUT_DIR)/target/$(PDK_BIN_NAME).zip: $(OUT_DIR)/target/$(PDK_BIN_NAME)
$(info Creating $(OUT_DIR)/target/$(PDK_BIN_NAME).zip)
$(hide) cd $(dir $@) && rm -rf $(notdir $@) && zip -rq $(notdir $@) $(PDK_BIN_NAME)
# explicitly put dependency on two final images to avoid copying every time
# It is too early and INSTALLED_SYSTEMIMAGE is not defined yet.
$(OUT_DIR)/target/$(PDK_BIN_NAME): $(OUT_DIR)/target/product/$(TARGET_DEVICE)/boot.img \
$(OUT_DIR)/target/product/$(TARGET_DEVICE)/system.img
python $(TOPDIR)pdk/build/copy_pdk_bins.py . $(OUT_DIR)/target/$(PDK_BIN_NAME) $(TARGET_DEVICE)
else # pdk_rel
# overwrite the definition from conflig.mk, no package build in pdk_rel
BUILD_PACKAGE :=
# addition for pdk_rel
BUILD_PDK_REL_SUBDIRS := \
external/antlr \
external/bluetooth \
external/bsdiff \
external/bzip2 \
external/clang \
external/dbus \
external/doclava \
external/expat \
external/fdlibm \
external/flac \
external/freetype \
external/gcc-demangle \
external/giflib \
external/gtest \
external/guava \
external/icu4c \
external/jhead \
external/jpeg \
external/jsilver \
external/jsr305 \
external/liblzf \
external/libpng \
external/libvpx \
external/llvm \
external/mksh \
external/openssl \
external/protobuf \
external/sonivox \
external/speex \
external/stlport \
external/tinyalsa \
external/tremolo \
external/wpa_supplicant \
external/wpa_supplicant_6 \
external/wpa_supplicant_8 \
external/yaffs2 \
external/zlib \
frameworks/compile \
frameworks/native \
system/bluetooth \
system/core \
system/extras \
system/media/audio_utils \
system/netd \
system/security \
system/vold
# system should be put back to common list once system/media is refactored
BUILD_PDK_SUBDIRS += $(BUILD_PDK_REL_SUBDIRS)
# naming convention for bin repository: pdk_bin_CPUArch_SMPSupport
# ex: pdk_bin_armv7-a_true (armv7-a with SMP support)
ifeq ($(TARGET_CPU_SMP), true)
PDK_BIN_PRIMARY := pdk_bin_$(TARGET_ARCH_VARIANT)_true
# this dir will not exist, so SMP CPU requires SMP version
PDK_BIN_SECONDARY := pdk_bin_no_such_dir
else # !SMP
PDK_BIN_PRIMARY := pdk_bin_$(TARGET_ARCH_VARIANT)_false
# if non-SMP binary does not exist, use SMP version
PDK_BIN_SECONDARY := pdk_bin_$(TARGET_ARCH_VARIANT)_true
endif # !SMP
PDK_BIN_VENDOR_TOP_DIR := $(TOPDIR)vendor/pdk/data/partner
ifneq (,$(wildcard $(PDK_BIN_VENDOR_TOP_DIR)/$(PDK_BIN_PRIMARY)))
PDK_BIN_REPOSITORY := $(PDK_BIN_VENDOR_TOP_DIR)/$(PDK_BIN_PRIMARY)
else # !PRIMARY
ifneq (,$(wildcard $(PDK_BIN_VENDOR_TOP_DIR)/$(PDK_BIN_SECONDARY)))
$(info PDK_BIN using secondary option $(PDK_BIN_SECONDARY) for build)
PDK_BIN_REPOSITORY := $(PDK_BIN_VENDOR_TOP_DIR)/$(PDK_BIN_SECONDARY)
else # !SECONDARY
$(error Neither $(PDK_BIN_VENDOR_TOP_DIR)/$(PDK_BIN_PRIMARY) nor \
$(PDK_BIN_VENDOR_TOP_DIR)/$(PDK_BIN_SECONDARY) exists.)
endif # !SECONDARY
endif # !PRIMARY
include $(PDK_BIN_REPOSITORY)/pdk_prebuilt.mk
ifeq ($(PDK_BIN_ORIGINAL_TARGET), )
$(error PDK_BIN_ORIGINAL_TARGET not set in $(PDK_BIN_REPOSITORY)/pdk_prebuilt.mk)
endif
ifeq (,$(wildcard $(OUT_DIR)/target/product/$(TARGET_DEVICE)/PDK_BIN_COPIED))
$(error PDK binaries necessary for pdk_rel build are not there! Did you run setup_pdk_rel.py? )
endif # PDK_BIN_COPIED
PRODUCT_PACKAGES += core core-junit
endif # pdk_rel