Merge "Revert "Revert "Inject minSdkVersion from the build system"""
diff --git a/Changes.md b/Changes.md
index b92342e..21a0abe 100644
--- a/Changes.md
+++ b/Changes.md
@@ -1,11 +1,57 @@
# Build System Changes for Android.mk Writers
+## Removing '/' from Valid Module Names {#name_slash}
+
+The build system uses module names in path names in many places. Having an
+extra '/' or '../' being inserted can cause problems -- and not just build
+breaks, but stranger invalid behavior.
+
+In every case we've seen, the fix is relatively simple: move the directory into
+`LOCAL_MODULE_RELATIVE_PATH` (or `LOCAL_MODULE_PATH` if you're still using it).
+If this causes multiple modules to be named the same, use unique module names
+and `LOCAL_MODULE_STEM` to change the installed file name:
+
+``` make
+include $(CLEAR_VARS)
+LOCAL_MODULE := ver1/code.bin
+LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware
+...
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := ver2/code.bin
+LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware
+...
+include $(BUILD_PREBUILT)
+```
+
+Can be rewritten as:
+
+```
+include $(CLEAR_VARS)
+LOCAL_MODULE := ver1_code.bin
+LOCAL_MODULE_STEM := code.bin
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/firmware/ver1
+...
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := ver2_code.bin
+LOCAL_MODULE_STEM := code.bin
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/firmware/ver2
+...
+include $(BUILD_PREBUILT)
+```
+
+You just need to make sure that any other references (`PRODUCT_PACKAGES`,
+`LOCAL_REQUIRED_MODULES`, etc) are converted to the new names.
+
## Valid Module Names {#name}
We've adopted lexical requirements very similar to [Bazel's
requirements](https://docs.bazel.build/versions/master/build-ref.html#name) for
target names. Valid characters are `a-z`, `A-Z`, `0-9`, and the special
-characters `_.+-=,@~/`. This currently applies to `LOCAL_PACKAGE_NAME`,
+characters `_.+-=,@~`. This currently applies to `LOCAL_PACKAGE_NAME`,
`LOCAL_MODULE`, and `LOCAL_MODULE_SUFFIX`, and `LOCAL_MODULE_STEM*`.
Many other characters already caused problems if you used them, so we don't
diff --git a/core/Makefile b/core/Makefile
index 7635e19..1161e4d 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -1534,6 +1534,8 @@
# so that we can get the size stat even if the build fails due to too large
# system image.
INSTALLED_FILES_FILE := $(PRODUCT_OUT)/installed-files.txt
+INSTALLED_FILES_JSON := $(INSTALLED_FILES_FILE:.txt=.json)
+$(INSTALLED_FILES_FILE): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON)
$(INSTALLED_FILES_FILE): $(FULL_SYSTEMIMAGE_DEPS) $(FILESLIST)
@echo Installed file list: $@
@mkdir -p $(dir $@)
@@ -1966,6 +1968,8 @@
$(PDK_FUSION_SYMLINK_STAMP)
INSTALLED_FILES_FILE_SYSTEMOTHER := $(PRODUCT_OUT)/installed-files-system-other.txt
+INSTALLED_FILES_JSON_SYSTEMOTHER := $(INSTALLED_FILES_FILE_SYSTEMOTHER:.txt=.json)
+$(INSTALLED_FILES_FILE_SYSTEMOTHER): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_SYSTEMOTHER)
$(INSTALLED_FILES_FILE_SYSTEMOTHER) : $(INTERNAL_SYSTEMOTHERIMAGE_FILES) $(FILESLIST)
@echo Installed file list: $@
@mkdir -p $(dir $@)
@@ -2043,6 +2047,8 @@
$(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_VENDORIMAGE_FILES)
INSTALLED_FILES_FILE_VENDOR := $(PRODUCT_OUT)/installed-files-vendor.txt
+INSTALLED_FILES_JSON_VENDOR := $(INSTALLED_FILES_FILE_VENDOR:.txt=.json)
+$(INSTALLED_FILES_FILE_VENDOR): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_VENDOR)
$(INSTALLED_FILES_FILE_VENDOR) : $(INTERNAL_VENDORIMAGE_FILES) $(FILESLIST)
@echo Installed file list: $@
@mkdir -p $(dir $@)
@@ -2098,6 +2104,8 @@
$(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_PRODUCTIMAGE_FILES)
INSTALLED_FILES_FILE_PRODUCT := $(PRODUCT_OUT)/installed-files-product.txt
+INSTALLED_FILES_JSON_PRODUCT := $(INSTALLED_FILES_FILE_PRODUCT:.txt=.json)
+$(INSTALLED_FILES_FILE_PRODUCT): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_PRODUCT)
$(INSTALLED_FILES_FILE_PRODUCT) : $(INTERNAL_PRODUCTIMAGE_FILES) $(FILESLIST)
@echo Installed file list: $@
@mkdir -p $(dir $@)
diff --git a/core/autogen_test_config.mk b/core/autogen_test_config.mk
index 20c582a..5feec2b 100644
--- a/core/autogen_test_config.mk
+++ b/core/autogen_test_config.mk
@@ -31,7 +31,7 @@
# Auto generating test config file for native test
$(autogen_test_config_file) : $(autogen_test_config_template)
@echo "Auto generating test config $(notdir $@)"
- $(hide) sed 's&{MODULE}&$(PRIVATE_MODULE)&g' $^ > $@
+ $(hide) sed 's&{MODULE}&$(PRIVATE_MODULE)&g' $< > $@
my_auto_generate_config := true
else
# Auto generating test config file for instrumentation test
diff --git a/core/definitions.mk b/core/definitions.mk
index 07576f9..9c7f8b6 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -3488,24 +3488,26 @@
###########################################################
## Verify module name meets character requirements:
## a-z A-Z 0-9
-## _.+-=,@~/
+## _.+-=,@~
##
-## This is equivalent to bazel's target name restrictions:
+## This is a subset of bazel's target name restrictions:
## https://docs.bazel.build/versions/master/build-ref.html#name
###########################################################
define verify-module-name
+$(if $(filter-out $(LOCAL_MODULE),$(subst /,,$(LOCAL_MODULE))), \
+ $(call pretty-warning,Module name contains a /$(comma) use LOCAL_MODULE_STEM and LOCAL_MODULE_RELATIVE_PATH instead)) \
$(if $(call _invalid-name-chars,$(LOCAL_MODULE)), \
$(call pretty-error,Invalid characters in module name: $(call _invalid-name-chars,$(LOCAL_MODULE))))
endef
define _invalid-name-chars
-$(subst /,,$(subst _,,$(subst .,,$(subst +,,$(subst -,,$(subst =,,$(subst $(comma),,$(subst @,,$(subst ~,,$(subst 0,,$(subst 1,,$(subst 2,,$(subst 3,,$(subst 4,,$(subst 5,,$(subst 6,,$(subst 7,,$(subst 8,,$(subst 9,,$(subst a,,$(subst b,,$(subst c,,$(subst d,,$(subst e,,$(subst f,,$(subst g,,$(subst h,,$(subst i,,$(subst j,,$(subst k,,$(subst l,,$(subst m,,$(subst n,,$(subst o,,$(subst p,,$(subst q,,$(subst r,,$(subst s,,$(subst t,,$(subst u,,$(subst v,,$(subst w,,$(subst x,,$(subst y,,$(subst z,,$(call to-lower,$(1)))))))))))))))))))))))))))))))))))))))))))))))
+$(subst _,,$(subst .,,$(subst +,,$(subst -,,$(subst =,,$(subst $(comma),,$(subst @,,$(subst ~,,$(subst 0,,$(subst 1,,$(subst 2,,$(subst 3,,$(subst 4,,$(subst 5,,$(subst 6,,$(subst 7,,$(subst 8,,$(subst 9,,$(subst a,,$(subst b,,$(subst c,,$(subst d,,$(subst e,,$(subst f,,$(subst g,,$(subst h,,$(subst i,,$(subst j,,$(subst k,,$(subst l,,$(subst m,,$(subst n,,$(subst o,,$(subst p,,$(subst q,,$(subst r,,$(subst s,,$(subst t,,$(subst u,,$(subst v,,$(subst w,,$(subst x,,$(subst y,,$(subst z,,$(call to-lower,$(1))))))))))))))))))))))))))))))))))))))))))))))
endef
.KATI_READONLY := verify-module-name _invalid-name-chars
###########################################################
## Verify module stem meets character requirements:
## a-z A-Z 0-9
-## _.+-=,@~/
+## _.+-=,@~
##
## This is a subset of bazel's target name restrictions:
## https://docs.bazel.build/versions/master/build-ref.html#name
@@ -3513,7 +3515,9 @@
## $(1): The module stem variable to check
###########################################################
define verify-module-stem
+$(if $(filter-out $($(1)),$(subst /,,$($(1)))), \
+ $(call pretty-warning,Module stem \($(1)\) contains a /$(comma) use LOCAL_MODULE_RELATIVE_PATH instead)) \
$(if $(call _invalid-name-chars,$($(1))), \
- $(call pretty-error,Invalid characters in module stem ($(1)): $(call _invalid-name-chars,$($(1)))))
+ $(call pretty-error,Invalid characters in module stem \($(1)\): $(call _invalid-name-chars,$($(1)))))
endef
.KATI_READONLY := verify-module-stem
diff --git a/core/main.mk b/core/main.mk
index 01dc0c1..a2f624c 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -965,6 +965,17 @@
$(call maybe-print-list-and-error,$(offending_files),$(makefile) produces files outside its artifact path requirement.) \
$(eval unused_whitelist := $(filter-out $(files),$(whitelist_patterns))) \
$(call maybe-print-list-and-error,$(unused_whitelist),$(makefile) includes redundant whitelist entries in its artifact path requirement.) \
+ $(eval ### Optionally verify that nothing else produces files inside this artifact path requirement.) \
+ $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS),\
+ $(eval extra_files := $(filter-out $(files) $(HOST_OUT)/%,$(product_FILES))) \
+ $(eval whitelist := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST)) \
+ $(eval whitelist_patterns := $(call resolve-product-relative-paths,$(whitelist))) \
+ $(eval files_in_requirement := $(filter $(path_patterns),$(extra_files))) \
+ $(eval offending_files := $(filter-out $(whitelist_patterns),$(files_in_requirement))) \
+ $(call maybe-print-list-and-error,$(offending_files),$(INTERNAL_PRODUCT) produces files inside $(makefile)s artifact path requirement.) \
+ $(eval unused_whitelist := $(filter-out $(extra_files),$(whitelist_patterns))) \
+ $(call maybe-print-list-and-error,$(unused_whitelist),$(INTERNAL_PRODUCT) includes redundant artifact path requirement whitelist entries.) \
+ ) \
)
ifeq (0,1)
@@ -1148,21 +1159,25 @@
# Build files and then package it into the rom formats
.PHONY: droidcore
droidcore: files \
- systemimage \
- $(INSTALLED_BOOTIMAGE_TARGET) \
- $(INSTALLED_RECOVERYIMAGE_TARGET) \
- $(INSTALLED_VBMETAIMAGE_TARGET) \
- $(INSTALLED_USERDATAIMAGE_TARGET) \
- $(INSTALLED_CACHEIMAGE_TARGET) \
- $(INSTALLED_BPTIMAGE_TARGET) \
- $(INSTALLED_VENDORIMAGE_TARGET) \
- $(INSTALLED_PRODUCTIMAGE_TARGET) \
- $(INSTALLED_SYSTEMOTHERIMAGE_TARGET) \
- $(INSTALLED_FILES_FILE) \
- $(INSTALLED_FILES_FILE_VENDOR) \
- $(INSTALLED_FILES_FILE_PRODUCT) \
- $(INSTALLED_FILES_FILE_SYSTEMOTHER) \
- soong_docs
+ systemimage \
+ $(INSTALLED_BOOTIMAGE_TARGET) \
+ $(INSTALLED_RECOVERYIMAGE_TARGET) \
+ $(INSTALLED_VBMETAIMAGE_TARGET) \
+ $(INSTALLED_USERDATAIMAGE_TARGET) \
+ $(INSTALLED_CACHEIMAGE_TARGET) \
+ $(INSTALLED_BPTIMAGE_TARGET) \
+ $(INSTALLED_VENDORIMAGE_TARGET) \
+ $(INSTALLED_PRODUCTIMAGE_TARGET) \
+ $(INSTALLED_SYSTEMOTHERIMAGE_TARGET) \
+ $(INSTALLED_FILES_FILE) \
+ $(INSTALLED_FILES_JSON) \
+ $(INSTALLED_FILES_FILE_VENDOR) \
+ $(INSTALLED_FILES_JSON_VENDOR) \
+ $(INSTALLED_FILES_FILE_PRODUCT) \
+ $(INSTALLED_FILES_JSON_PRODUCT) \
+ $(INSTALLED_FILES_FILE_SYSTEMOTHER) \
+ $(INSTALLED_FILES_JSON_SYSTEMOTHER) \
+ soong_docs
# dist_files only for putting your library into the dist directory with a full build.
.PHONY: dist_files
@@ -1225,9 +1240,13 @@
$(SYMBOLS_ZIP) \
$(COVERAGE_ZIP) \
$(INSTALLED_FILES_FILE) \
+ $(INSTALLED_FILES_JSON) \
$(INSTALLED_FILES_FILE_VENDOR) \
+ $(INSTALLED_FILES_JSON_VENDOR) \
$(INSTALLED_FILES_FILE_PRODUCT) \
+ $(INSTALLED_FILES_JSON_PRODUCT) \
$(INSTALLED_FILES_FILE_SYSTEMOTHER) \
+ $(INSTALLED_FILES_JSON_SYSTEMOTHER) \
$(INSTALLED_BUILD_PROP_TARGET) \
$(BUILT_TARGET_FILES_PACKAGE) \
$(INSTALLED_ANDROID_INFO_TXT_TARGET) \
diff --git a/core/product.mk b/core/product.mk
index 3cf521a..f22a3e5 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -198,6 +198,8 @@
PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE \
PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE \
PRODUCT_USE_LOGICAL_PARTITIONS \
+ PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS \
+ PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST \
define dump-product
$(info ==== $(1) ====)\
diff --git a/envsetup.sh b/envsetup.sh
index 5a55679..15373fd 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -975,28 +975,6 @@
fi
}
-function pid()
-{
- local prepend=''
- local append=''
- if [ "$1" = "--exact" ]; then
- prepend=' '
- append='$'
- shift
- fi
- local EXE="$1"
- if [ "$EXE" ] ; then
- local PID=`adb shell ps \
- | tr -d '\r' \
- | \grep "$prepend$EXE$append" \
- | sed -e 's/^[^ ]* *\([0-9]*\).*$/\1/'`
- echo "$PID"
- else
- echo "usage: pid [--exact] <process name>"
- return 255
- fi
-}
-
# coredump_setup - enable core dumps globally for any process
# that has the core-file-size limit set correctly
#
@@ -1083,53 +1061,6 @@
stacks system_server
}
-function stacks()
-{
- if [[ $1 =~ ^[0-9]+$ ]] ; then
- local PID="$1"
- elif [ "$1" ] ; then
- local PIDLIST="$(pid $1)"
- if [[ $PIDLIST =~ ^[0-9]+$ ]] ; then
- local PID="$PIDLIST"
- elif [ "$PIDLIST" ] ; then
- echo "more than one process: $1"
- else
- echo "no such process: $1"
- fi
- else
- echo "usage: stacks [pid|process name]"
- fi
-
- if [ "$PID" ] ; then
- # Determine whether the process is native
- if adb shell ls -l /proc/$PID/exe | grep -q /system/bin/app_process ; then
- # Dump stacks of Dalvik process
- local TRACES=/data/anr/traces.txt
- local ORIG=/data/anr/traces.orig
- local TMP=/data/anr/traces.tmp
-
- # Keep original traces to avoid clobbering
- adb shell mv $TRACES $ORIG
-
- # Make sure we have a usable file
- adb shell touch $TRACES
- adb shell chmod 666 $TRACES
-
- # Dump stacks and wait for dump to finish
- adb shell kill -3 $PID
- adb shell notify $TRACES >/dev/null
-
- # Restore original stacks, and show current output
- adb shell mv $TRACES $TMP
- adb shell mv $ORIG $TRACES
- adb shell cat $TMP
- else
- # Dump stacks of native process
- adb shell debuggerd -b $PID
- fi
- fi
-}
-
# Read the ELF header from /proc/$PID/exe to determine if the process is
# 64-bit.
function is64bit()
diff --git a/target/board/generic/BoardConfig.mk b/target/board/generic/BoardConfig.mk
index 580ca10..812b7e4 100644
--- a/target/board/generic/BoardConfig.mk
+++ b/target/board/generic/BoardConfig.mk
@@ -8,18 +8,31 @@
TARGET_NO_KERNEL := true
TARGET_ARCH := arm
-# Note: we build the platform images for ARMv7-A _without_ NEON.
+# Note: Before Pi, we built the platform images for ARMv7-A _without_ NEON.
#
-# Technically, the emulator supports ARMv7-A _and_ NEON instructions, but
-# emulated NEON code paths typically ends up 2x slower than the normal C code
-# it is supposed to replace (unlike on real devices where it is 2x to 3x
-# faster).
+ifneq ($(TARGET_BUILD_APPS)$(filter cts sdk,$(MAKECMDGOALS)),)
+# DO NOT USE
#
-# What this means is that the platform image will not use NEON code paths
-# that are slower to emulate. On the other hand, it is possible to emulate
-# application code generated with the NDK that uses NEON in the emulator.
+# This architecture variant should NOT be used for 32 bit arm platform
+# builds. It is the lowest common denominator required to build
+# an unbundled application for all supported 32 platforms.
+# cts for 32 bit arm is built using aosp_arm64 product.
#
+# If you are building a 32 bit platform (and not an application),
+# you should set the following as 2nd arch variant:
+#
+# TARGET_ARCH_VARIANT := armv7-a-neon
+#
+# DO NOT USE
TARGET_ARCH_VARIANT := armv7-a
+# DO NOT USE
+else
+# Starting from Pi, System image of aosp_arm products is the new GSI
+# for real devices newly launched for Pi. These devices are usualy not
+# as performant as the mainstream 64-bit devices and the performance
+# provided by NEON is important for them to pass related CTS tests.
+TARGET_ARCH_VARIANT := armv7-a-neon
+endif
TARGET_CPU_VARIANT := generic
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
diff --git a/target/product/base.mk b/target/product/base.mk
index 778cabc..334e887 100644
--- a/target/product/base.mk
+++ b/target/product/base.mk
@@ -18,11 +18,18 @@
PRODUCT_PACKAGES += \
20-dns.conf \
95-configured \
+ adb \
+ adbd \
+ adbd.recovery \
am \
android.hardware.cas@1.0-service \
+ android.hardware.configstore@1.0-service \
android.hardware.media.omx@1.0-service \
+ android.hidl.allocator@1.0-service \
android.hidl.base-V1.0-java \
android.hidl.manager-V1.0-java \
+ android.hidl.memory@1.0-impl \
+ android.hidl.memory@1.0-impl.vendor \
android.policy \
android.test.mock \
android.test.runner \
@@ -30,38 +37,56 @@
appops \
app_process \
appwidget \
+ atrace \
audioserver \
BackupRestoreConfirmation \
bcc \
bit \
+ blank_screen \
blkid \
bmgr \
+ bootanimation \
+ bootstat \
bpfloader \
bu \
bugreport \
bugreportz \
cameraserver \
+ charger \
+ cmd \
com.android.location.provider \
- com.android.location.provider.xml \
content \
+ crash_dump \
CtsShimPrebuilt \
CtsShimPrivPrebuilt \
+ debuggerd\
dnsmasq \
+ DownloadProvider \
dpm \
+ dumpstate \
+ dumpsys \
e2fsck \
ExtServices \
ExtShared \
+ fastboot \
framework \
framework-res \
framework-sysconfig.xml \
fsck_msdos \
gatekeeperd \
+ gralloc.default \
+ healthd \
hid \
+ hwservicemanager \
+ idmap \
ime \
ims-common \
incident \
incidentd \
incident_report \
+ init \
+ init.environ.rc \
+ init.rc \
input \
installd \
ip \
@@ -70,8 +95,8 @@
ip-up-vpn \
javax.obex \
keystore \
- ld.config.txt \
ld.config.recovery.txt \
+ ld.config.txt \
ld.mc \
libaaudio \
libandroid \
@@ -81,25 +106,43 @@
libaudioflinger \
libaudiopolicymanager \
libaudiopolicyservice \
+ libbinder \
libbundlewrapper \
+ libc \
libcamera2ndk \
libcamera_client \
libcameraservice \
libclearkeycasplugin \
+ libc_malloc_debug \
+ libc_malloc_hooks \
+ libcutils \
+ libdl \
libdownmix \
libdrmclearkeyplugin \
libdrmframework \
libdrmframework_jni \
libeffectproxy \
libeffects \
+ libEGL \
+ libETC1 \
+ libFFTEm \
libfilterfw \
libgatekeeper \
+ libGLESv1_CM \
+ libGLESv2 \
+ libGLESv3 \
+ libgui \
+ libhardware \
+ libhardware_legacy \
libinput \
libinputflinger \
libiprouteutil \
libjnigraphics \
+ libjpeg \
libkeystore \
libldnhncr \
+ liblog \
+ libm \
libmedia \
libmedia_jni \
libmediandk \
@@ -108,15 +151,19 @@
libnetd_client \
libnetlink \
libnetutils \
+ libneuralnetworks \
libOpenMAXAL \
libOpenSLES \
libpdfium \
+ libpixelflinger \
+ libpower \
libradio_metadata \
libreference-ril \
libreverbwrapper \
libril \
librtp_jni \
libsensorservice \
+ libsigchain \
libskia \
libsonic \
libsonivox \
@@ -131,20 +178,33 @@
libstagefright_foundation \
libstagefright_omx \
libstagefright_yuv \
+ libstdc++ \
+ libsurfaceflinger \
+ libsurfaceflinger_ddmconnection \
+ libsysutils \
+ libui \
libusbhost \
+ libutils \
libvisualizer \
libvorbisidec \
libvulkan \
libwifi-service \
libwilhelm \
+ linker \
+ linker.recovery \
+ lmkd \
locksettings \
+ logcat \
logd \
+ lshal \
+ mdnsd \
media \
media_cmd \
mediadrmserver \
mediaextractor \
mediametrics \
media_profiles_V1_0.dtd \
+ MediaProvider \
mediaserver \
mke2fs \
monkey \
@@ -160,29 +220,42 @@
pppd \
privapp-permissions-platform.xml \
racoon \
+ recovery \
resize2fs \
run-as \
schedtest \
screencap \
sdcard \
secdiscard \
+ selinux_policy \
sensorservice \
+ service \
+ servicemanager \
services \
settings \
SettingsProvider \
sgdisk \
Shell \
+ shell_and_utilities \
sm \
+ storaged \
+ surfaceflinger \
svc \
tc \
telecom \
telephony-common \
+ thermalserviced \
+ tombstoned \
traced \
traced_probes \
tune2fs \
+ tzdatacheck \
uiautomator \
uncrypt \
+ usbd \
vdc \
+ vndservice \
+ vndservicemanager \
voip-common \
vold \
WallpaperBackup \
@@ -190,11 +263,39 @@
wifi-service \
wm \
+
+# VINTF data
+PRODUCT_PACKAGES += \
+ device_compatibility_matrix.xml \
+ device_manifest.xml \
+ framework_manifest.xml \
+ framework_compatibility_matrix.xml \
+
+# AID Generation for
+# <pwd.h> and <grp.h>
+PRODUCT_PACKAGES += \
+ passwd \
+ group \
+ fs_config_files \
+ fs_config_dirs
+
+PRODUCT_COPY_FILES += \
+ system/core/rootdir/init.usb.rc:root/init.usb.rc \
+ system/core/rootdir/init.usb.configfs.rc:root/init.usb.configfs.rc \
+ system/core/rootdir/ueventd.rc:root/ueventd.rc \
+ system/core/rootdir/etc/hosts:system/etc/hosts
+
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.zygote=zygote32
PRODUCT_COPY_FILES += system/core/rootdir/init.zygote32.rc:root/init.zygote32.rc
+# Ensure that this property is always defined so that bionic_systrace.cpp
+# can rely on it being initially set by init.
+PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
+ debug.atrace.tags.enableflags=0
+
# Packages included only for eng or userdebug builds, previously debug tagged
PRODUCT_PACKAGES_DEBUG := \
+ adb_keys \
iotop \
logpersist.start \
micro_bench \
@@ -219,4 +320,3 @@
system/core/rootdir/init.zygote32.rc:root/init.zygote32.rc
$(call inherit-product, $(SRC_TARGET_DIR)/product/runtime_libart.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/embedded.mk)
diff --git a/target/product/core_minimal.mk b/target/product/core_minimal.mk
index 76c1e53..910d796 100644
--- a/target/product/core_minimal.mk
+++ b/target/product/core_minimal.mk
@@ -30,16 +30,13 @@
CompanionDeviceManager \
ContactsProvider \
DefaultContainerService \
- DownloadProvider \
drmserver \
ethernet-service \
fsck.f2fs \
HTMLViewer \
- idmap \
libaudiopreprocessing \
libfilterpack_imageproc \
libgabi++ \
- libneuralnetworks \
libstagefright_soft_aacdec \
libstagefright_soft_aacenc \
libstagefright_soft_amrdec \
@@ -65,8 +62,6 @@
libwebviewchromium_plat_support \
logd \
make_f2fs \
- mdnsd \
- MediaProvider \
PackageInstaller \
requestsync \
StatementService \
diff --git a/target/product/embedded.mk b/target/product/embedded.mk
deleted file mode 100644
index 2a34639..0000000
--- a/target/product/embedded.mk
+++ /dev/null
@@ -1,124 +0,0 @@
-#
-# Copyright (C) 2009 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.
-#
-
-# This is a build configuration for a very minimal build of the
-# Open-Source part of the tree.
-
-PRODUCT_PACKAGES += \
- adb \
- adbd \
- adbd.recovery \
- usbd \
- android.hardware.configstore@1.0-service \
- android.hidl.allocator@1.0-service \
- android.hidl.memory@1.0-impl \
- android.hidl.memory@1.0-impl.vendor \
- atrace \
- blank_screen \
- bootanimation \
- bootstat \
- charger \
- cmd \
- crash_dump \
- debuggerd\
- dumpstate \
- dumpsys \
- fastboot \
- gralloc.default \
- healthd \
- hwservicemanager \
- init \
- init.environ.rc \
- init.rc \
- libEGL \
- libETC1 \
- libFFTEm \
- libGLESv1_CM \
- libGLESv2 \
- libGLESv3 \
- libbinder \
- libc \
- libc_malloc_debug \
- libc_malloc_hooks \
- libcutils \
- libdl \
- libgui \
- libhardware \
- libhardware_legacy \
- libjpeg \
- liblog \
- libm \
- libpixelflinger \
- libpower \
- libsigchain \
- libstdc++ \
- libsurfaceflinger \
- libsurfaceflinger_ddmconnection \
- libsysutils \
- libui \
- libutils \
- linker \
- linker.recovery \
- lmkd \
- logcat \
- lshal \
- recovery \
- service \
- servicemanager \
- shell_and_utilities \
- storaged \
- surfaceflinger \
- thermalserviced \
- tombstoned \
- tzdatacheck \
- vndservice \
- vndservicemanager \
-
-# VINTF data
-PRODUCT_PACKAGES += \
- device_compatibility_matrix.xml \
- device_manifest.xml \
- framework_manifest.xml \
- framework_compatibility_matrix.xml \
-
-# SELinux packages are added as dependencies of the selinux_policy
-# phony package.
-PRODUCT_PACKAGES += \
- selinux_policy \
-
-# AID Generation for
-# <pwd.h> and <grp.h>
-PRODUCT_PACKAGES += \
- passwd \
- group \
- fs_config_files \
- fs_config_dirs
-
-# If there are product-specific adb keys defined, install them on debuggable
-# builds.
-PRODUCT_PACKAGES_DEBUG += \
- adb_keys
-
-# Ensure that this property is always defined so that bionic_systrace.cpp
-# can rely on it being initially set by init.
-PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
- debug.atrace.tags.enableflags=0
-
-PRODUCT_COPY_FILES += \
- system/core/rootdir/init.usb.rc:root/init.usb.rc \
- system/core/rootdir/init.usb.configfs.rc:root/init.usb.configfs.rc \
- system/core/rootdir/ueventd.rc:root/ueventd.rc \
- system/core/rootdir/etc/hosts:system/etc/hosts
diff --git a/tools/fs_config/Android.mk b/tools/fs_config/Android.mk
index a01e702..8a8eca9 100644
--- a/tools/fs_config/Android.mk
+++ b/tools/fs_config/Android.mk
@@ -63,6 +63,8 @@
my_fs_config_h := $(LOCAL_PATH)/default/$(ANDROID_FS_CONFIG_H)
endif
+system_android_filesystem_config := system/core/include/private/android_filesystem_config.h
+
##################################
include $(CLEAR_VARS)
LOCAL_SRC_FILES := fs_config_generate.c
@@ -72,8 +74,6 @@
LOCAL_CFLAGS := -Werror -Wno-error=\#warnings
ifneq ($(TARGET_FS_CONFIG_GEN),)
-system_android_filesystem_config := system/core/include/private/android_filesystem_config.h
-
# Generate the "generated_oem_aid.h" file
oem := $(local-generated-sources-dir)/generated_oem_aid.h
$(oem): PRIVATE_LOCAL_PATH := $(LOCAL_PATH)
@@ -239,19 +239,17 @@
endif
-# The newer passwd/group targets are only generated if you
-# use the new TARGET_FS_CONFIG_GEN method.
-ifneq ($(TARGET_FS_CONFIG_GEN),)
-
##################################
# Build the oemaid header library when fs config files are present.
# Intentionally break build if you require generated AIDs
# header file, but are not using any fs config files.
+ifneq ($(TARGET_FS_CONFIG_GEN),)
include $(CLEAR_VARS)
LOCAL_MODULE := oemaids_headers
LOCAL_EXPORT_C_INCLUDE_DIRS := $(dir $(my_gen_oem_aid))
LOCAL_EXPORT_C_INCLUDE_DEPS := $(my_gen_oem_aid)
include $(BUILD_HEADER_LIBRARY)
+endif
##################################
# Generate the vendor/etc/passwd text file for the target
@@ -265,8 +263,11 @@
include $(BUILD_SYSTEM)/base_rules.mk
-$(LOCAL_BUILT_MODULE): PRIVATE_LOCAL_PATH := $(LOCAL_PATH)
+ifneq ($(TARGET_FS_CONFIG_GEN),)
$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
+else
+$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := /dev/null
+endif
$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config)
$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(system_android_filesystem_config)
@mkdir -p $(dir $@)
@@ -284,15 +285,17 @@
include $(BUILD_SYSTEM)/base_rules.mk
-$(LOCAL_BUILT_MODULE): PRIVATE_LOCAL_PATH := $(LOCAL_PATH)
+ifneq ($(TARGET_FS_CONFIG_GEN),)
$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
+else
+$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := /dev/null
+endif
$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config)
$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(system_android_filesystem_config)
@mkdir -p $(dir $@)
$(hide) $< group --required-prefix=vendor_ --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@
system_android_filesystem_config :=
-endif
ANDROID_FS_CONFIG_H :=
my_fs_config_h :=