#
# Copyright (C) 2014 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 file contains the definitions needed for a _really_ minimal system
# image to be run under emulation under upstream QEMU (www.qemu.org), once
# it supports a few Android virtual devices. Note that this is _not_ the
# same as running under the Android emulator.

# This should only contain what's necessary to boot the system, support
# ADB, and allow running command-line executable compiled against the
# following NDK libraries: libc, libm, libstdc++, libdl, liblog

# Host modules
PRODUCT_HOST_PACKAGES += \
    adb \
    e2fsck \
    icu_tzdata.dat_host_tzdata_apex \
    mke2fs \
    toybox \
    tzdata_host \
    tzdata_host_tzdata_apex \
    tzlookup.xml_host_tzdata_apex \
    tz_version_host \
    tz_version_host_tzdata_apex \

# Device modules
PRODUCT_PACKAGES += \
    adbd.com.android.adbd \
    bootanimation \
    debuggerd \
    debuggerd64 \
    dumpstate \
    dumpsys \
    e2fsck \
    gzip \
    healthd \
    init \
    init.environ.rc \
    libbinder \
    libc \
    libctest \
    libcutils \
    libdl \
    libhardware \
    libhardware_legacy \
    liblog \
    libm \
    libstdc++ \
    libsysutils \
    libutils \
    linker \
    linker64 \
    logcat \
    logd \
    logwrapper \
    mkshrc \
    qemu-props \
    reboot \
    service \
    servicemanager \
    hwservicemanager \
    vndservice \
    vndservicemanager \
    sh \
    toolbox \
    toybox \
    vold

# SELinux packages are added as dependencies of the selinux_policy
# phony package.
PRODUCT_PACKAGES += \
    selinux_policy \

# SELinux packages
#PRODUCT_PACKAGES += \
#    sepolicy \
#    file_contexts \
#    seapp_contexts \
#    property_contexts \
#    mac_permissions.xml \

PRODUCT_COPY_FILES += \
    system/core/rootdir/init.usb.rc:system/etc/init/hw/init.usb.rc \
    system/core/rootdir/init.usb.configfs.rc:system/etc/init/hw/init.usb.configfs.rc \
    system/core/rootdir/etc/hosts:system/etc/hosts \

PRODUCT_FULL_TREBLE_OVERRIDE := true

PRODUCT_COPY_FILES += \
    device/generic/qemu/fstab.ranchu:root/fstab.ranchu \
    device/generic/qemu/init.ranchu.rc:root/init.ranchu.rc \
    device/generic/qemu/ueventd.ranchu.rc:root/ueventd.ranchu.rc \

PRODUCT_COPY_FILES += \
    device/generic/goldfish/data/etc/config.ini:config.ini \
    device/generic/qemu/advancedFeatures.ini:advancedFeatures.ini \

ifeq ($(ART_APEX_JARS),)
$(error ART_APEX_JARS is empty; cannot initialize PRODUCT_BOOT_JARS variable)
endif

# The order matters
PRODUCT_BOOT_JARS := \
    $(ART_APEX_JARS) \

PRODUCT_UPDATABLE_BOOT_JARS := \
    com.android.conscrypt:conscrypt \

# The set of packages we want to force 'speed' compilation on.
PRODUCT_DEXPREOPT_SPEED_APPS := \

PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
    ro.zygote=zygote32
PRODUCT_COPY_FILES += \
    system/core/rootdir/init.zygote32.rc:system/etc/init/hw/init.zygote32.rc

PRODUCT_PROPERTY_OVERRIDES += \
    ro.carrier=unknown

$(call inherit-product, $(SRC_TARGET_DIR)/product/runtime_libart.mk)

