#For QSSI, we build only the system image. Here we explicitly set the images
#we build so there is no confusion.

#Enable product partition Native I/F. It is automatically set to current if
#the shipping API level for the target is greater than 29
PRODUCT_PRODUCT_VNDK_VERSION := current

#Enable product partition Java I/F. It is automatically set to true if
#the shipping API level for the target is greater than 29
PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE := true

PRODUCT_BUILD_SYSTEM_IMAGE := true
PRODUCT_BUILD_SYSTEM_OTHER_IMAGE := false
PRODUCT_BUILD_VENDOR_IMAGE := false
PRODUCT_BUILD_SYSTEM_EXT_IMAGE := false
PRODUCT_BUILD_ODM_IMAGE := false
PRODUCT_BUILD_CACHE_IMAGE := false
PRODUCT_BUILD_USERDATA_IMAGE := false

#Also, there is no need to build an OTA package as this will be done later
#when we combine this system build with the non-system images.
TARGET_SKIP_OTA_PACKAGE := true

# Enable AVB 2.0
BOARD_AVB_ENABLE := true

#### Dynamic Partition Handling

####

# Retain the earlier default behavior i.e. ota config (dynamic partition was disabled if not set explicitly), so set
# SHIPPING_API_LEVEL to 28 if it was not set earlier (this is generally set earlier via build.sh per-target)
SHIPPING_API_LEVEL := 30

$(call inherit-product-if-exists, vendor/qcom/defs/product-defs/system/cne_url*.mk)

#### Turning BOARD_DYNAMIC_PARTITION_ENABLE flag to TRUE will enable dynamic partition/super image creation.
# Enable Dynamic partitions only for Q new launch devices and beyond.
ifeq (true,$(call math_gt_or_eq,$(SHIPPING_API_LEVEL),29))
  BOARD_DYNAMIC_PARTITION_ENABLE ?= true
  PRODUCT_SHIPPING_API_LEVEL := $(SHIPPING_API_LEVEL)
else ifeq ($(SHIPPING_API_LEVEL),28)
  BOARD_DYNAMIC_PARTITION_ENABLE ?= false
  $(call inherit-product, build/make/target/product/product_launched_with_p.mk)
endif

ifneq ($(strip $(BOARD_DYNAMIC_PARTITION_ENABLE)),true)
# Enable chain partition for system, to facilitate system-only OTA in Treble.
BOARD_AVB_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
BOARD_AVB_SYSTEM_ALGORITHM := SHA256_RSA2048
BOARD_AVB_SYSTEM_ROLLBACK_INDEX := 0
BOARD_AVB_SYSTEM_ROLLBACK_INDEX_LOCATION := 2
PRODUCT_BUILD_RAMDISK_IMAGE := false
PRODUCT_BUILD_PRODUCT_IMAGE := false
else
PRODUCT_USE_DYNAMIC_PARTITIONS := true
# Disable building the SUPER partition in this build. SUPER should be built
# after QSSI has been merged with the SoC build.
PRODUCT_BUILD_SYSTEM_EXT_IMAGE := true
PRODUCT_BUILD_PRODUCT_IMAGE := true
PRODUCT_BUILD_SUPER_PARTITION := false
PRODUCT_BUILD_RAMDISK_IMAGE := true
BOARD_AVB_VBMETA_SYSTEM := system system_ext product
BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048
BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 2
endif
#### Dynamic Partition Handling

PRODUCT_SOONG_NAMESPACES += \
    hardware/google/av \
    hardware/google/interfaces

VENDOR_QTI_PLATFORM := msmnile
VENDOR_QTI_DEVICE := qssi

#QSSI configuration
#Single system image project structure
TARGET_USES_QSSI := true

TARGET_USES_NEW_ION := true

ENABLE_AB ?= true

TARGET_DEFINES_DALVIK_HEAP := true
$(call inherit-product, device/qcom/qssi/common64.mk)

#Inherit all except heap growth limit from phone-xhdpi-2048-dalvik-heap.mk
PRODUCT_PROPERTY_OVERRIDES  += \
	dalvik.vm.heapstartsize=8m \
	dalvik.vm.heapsize=512m \
	dalvik.vm.heaptargetutilization=0.75 \
	dalvik.vm.heapminfree=512k \
	dalvik.vm.heapmaxfree=8m


PRODUCT_NAME := $(VENDOR_QTI_DEVICE)
PRODUCT_DEVICE := $(VENDOR_QTI_DEVICE)
PRODUCT_BRAND := Fairphone
PRODUCT_MODEL := FP4
PRODUCT_MANUFACTURER := Fairphone

MAINLINE_PATCH_LEVEL_1 := true

# MODIFIED-BEGIN by Gu xiaocong, 2019-12-04,BUG-8671753
# OVERRIDE_TARGET_PRODUCT change
OVERRIDE_TARGET_PRODUCT := FP4eea
OVERRIDE_TARGET_DEVICE := FP4
# MODIFIED-END by Gu xiaocong,BUG-8671753

#Initial bringup flags
TARGET_USES_AOSP := false
TARGET_USES_AOSP_FOR_AUDIO := false
TARGET_USES_QCOM_BSP := false

# RRO configuration
TARGET_USES_RRO := true

# change density to 400
ro.sf.lcd_density=400

#[BUGFIX]-MOD-BEGIN by T2M.ZhangJie,12/08/2020,10277814,
TARGET_USES_NQ_NFC := false
#[BUGFIX]-MOD-END by T2M.ZhangJie

# default is nosdcard, S/W button enabled in resource
PRODUCT_CHARACTERISTICS := nosdcard
BOARD_FRP_PARTITION_NAME := frp

#Android EGL implementation
PRODUCT_PACKAGES += libGLES_android

PRODUCT_BOOT_JARS += tcmiface
PRODUCT_BOOT_JARS += telephony-ext
PRODUCT_PACKAGES += telephony-ext

TARGET_ENABLE_QC_AV_ENHANCEMENTS := false

TARGET_SYSTEM_PROP += device/qcom/qssi/system.prop

TARGET_DISABLE_DASH := true
TARGET_DISABLE_QTI_VPP := true

ifneq ($(TARGET_DISABLE_DASH), true)
    PRODUCT_BOOT_JARS += qcmediaplayer
endif

#Project is missing on sdm845, comment it for now
#ifneq ($(strip $(QCPATH)),)
#    PRODUCT_BOOT_JARS += libprotobuf-java_mls
#endif

PRODUCT_PACKAGES += android.hardware.media.omx@1.0-impl

# Audio configuration file
-include $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/qssi/qssi.mk
-include $(TOPDIR)vendor/qcom/opensource/commonsys/audio/configs/qssi/qssi.mk
-include $(TOPDIR)vendor/st/nfc/st21nfc/NfcDeviceConfig.mk
AUDIO_FEATURE_ENABLED_SVA_MULTI_STAGE := true
USE_LIB_PROCESS_GROUP := true

PRODUCT_PACKAGES += fs_config_files

# [TCT-NB][FOTA] MODIFIED-BEGIN by JI.Chen,2021/07/21, add update_engine_sideload for recovery mode
ifeq ($(ENABLE_AB), true)
#A/B related packages
PRODUCT_PACKAGES += update_engine \
    update_engine_client \
    update_engine_sideload \
    update_verifier \
    bootctrl.msmnile \
    android.hardware.boot@1.0-impl \
    android.hardware.boot@1.0-service

PRODUCT_HOST_PACKAGES += \
    brillo_update_payload

#Boot control HAL test app
PRODUCT_PACKAGES_DEBUG += bootctl
endif

#Healthd packages
PRODUCT_PACKAGES += \
    android.hardware.health@1.0-impl \
    android.hardware.health@1.0-convert \
    android.hardware.health@1.0-service \
    libhealthd.msm

DEVICE_FRAMEWORK_MANIFEST_FILE := device/qcom/qssi/framework_manifest.xml
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := vendor/qcom/opensource/core-utils/vendor_framework_compatibility_matrix.xml

#audio related module
PRODUCT_PACKAGES += libvolumelistener

# Display/Graphics
PRODUCT_PACKAGES += \
    android.hardware.configstore@1.0-service \
    android.hardware.broadcastradio@1.0-impl

# Camera configuration file. Shared by passthrough/binderized camera HAL
PRODUCT_PACKAGES += camera.device@3.2-impl
PRODUCT_PACKAGES += camera.device@1.0-impl
PRODUCT_PACKAGES += android.hardware.camera.provider@2.4-impl
# Enable binderized camera HAL
PRODUCT_PACKAGES += android.hardware.camera.provider@2.4-service_64


# Context hub HAL
PRODUCT_PACKAGES += \
    android.hardware.contexthub@1.0-impl.generic \
    android.hardware.contexthub@1.0-service

# system prop for enabling QFS (QTI Fingerprint Solution)
PRODUCT_PROPERTY_OVERRIDES += \
    persist.vendor.qfp=true

#FP4-263, mfg_util, liquan.zhou.t2m, 20210510
PRODUCT_PACKAGES += mfg_util
PRODUCT_PACKAGES += mfg_utild
PRODUCT_PACKAGES += fpconfig_util

# add for mmitest in user version
ifeq ($(TARGET_BUILD_VARIANT),user)
PRODUCT_PACKAGES += mm-audio-ftm
endif
# end

#MMITest
PRODUCT_PACKAGES += MMITest

#EmailPartnerProvider
PRODUCT_PACKAGES += EmailPartnerProvider

ifeq ($(TARGET_BUILD_MMITEST),false)
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.telephony.euicc.xml:system/etc/permissions/android.hardware.telephony.euicc.xml \
frameworks/native/data/etc/com_google_lens_feature.xml:system/etc/permissions/com_google_lens_feature.xml

PRODUCT_PACKAGES += EuiccGoogle T2mEuiccOverlay
endif

PRODUCT_COPY_FILES += device/qcom/lito/fp4/google_clientidbase_config/google_clientidbase.rc:$(TARGET_COPY_OUT_SYSTEM)/etc/init/google_clientidbase.rc


#Iris
PRODUCT_PACKAGES += Iris

# USB default HAL
PRODUCT_PACKAGES += \
    android.hardware.usb@1.0-service

#PASR HAL and APP
PRODUCT_PACKAGES += \
    vendor.qti.power.pasrmanager@1.0-service \
    vendor.qti.power.pasrmanager@1.0-impl \
    pasrservice

# Kernel modules install path
KERNEL_MODULES_INSTALL := dlkm
KERNEL_MODULES_OUT := out/target/product/$(PRODUCT_NAME)/$(KERNEL_MODULES_INSTALL)/lib/modules

ifneq ($(strip $(TARGET_BUILD_VARIANT)),user)
PRODUCT_COPY_FILES += \
    device/qcom/qssi/init.qcom.testscripts.sh:$(TARGET_COPY_OUT_PRODUCT)/etc/init.qcom.testscripts.sh
endif

PRODUCT_COPY_FILES += \
    device/qcom/qssi/public.libraries.product-qti.txt:$(TARGET_COPY_OUT_PRODUCT)/etc/public.libraries-qti.txt

# copy system_ext specific whitelisted libraries to system_ext/etc
PRODUCT_COPY_FILES += \
    device/qcom/qssi/public.libraries.system_ext-qti.txt:$(TARGET_COPY_OUT_SYSTEM_EXT)/etc/public.libraries-qti.txt

PRODUCT_COPY_FILES += \
    device/qcom/qssi/aw882xx_cali:system/bin/aw882xx_cali

#zxz add for qnovo qns 3rd part charge algorithm service
PRODUCT_COPY_FILES += \
    device/qcom/lito/fp4/qnovo/qns:system/bin/qns

#Enable full treble flag
PRODUCT_FULL_TREBLE_OVERRIDE := true
PRODUCT_VENDOR_MOVE_ENABLED := true
PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true

ifneq ($(strip $(TARGET_USES_RRO)),true)
DEVICE_PACKAGE_OVERLAYS += device/qcom/qssi/overlay
endif

PRODUCT_PACKAGES += FairphoneActivator

#Enable vndk-sp Libraries
PRODUCT_PACKAGES += vndk_package

#Enable sysrilcmd
PRODUCT_PACKAGES += \
		    qcrilhook \
		    qcrilhook.xml \
		    sysrilcmd \
		    sysrilcmd.xml

PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE:=true


TARGET_MOUNT_POINTS_SYMLINKS := false

TARGET_USES_MKE2FS := true

PRODUCT_PROPERTY_OVERRIDES += \
ro.crypto.volume.filenames_mode = "aes-256-cts" \
ro.crypto.allow_encrypt_override = true

TARGET_USES_QCOM_DISPLAY_BSP := true

ifeq ($(TARGET_USES_NEW_ION),true)
AUDIO_FEATURE_ENABLED_DLKM := true
else
AUDIO_FEATURE_ENABLED_DLKM := false
endif

#ifeq ($(TARGET_BUILD_MMITEST),false)
#$(call inherit-product, vendor/partner_gms/products/gms_eea_v2_type4c.mk)
#$(call inherit-product-if-exists, vendor/partner_modules/build/mainline_modules.mk)
#endif

ifeq ($(ENABLE_VIRTUAL_AB), true)
    $(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk)
endif

PRODUCT_PACKAGES += WallpaperPicker
PRODUCT_PACKAGES += FPCamera
PRODUCT_PACKAGES += PlayAutoInstallStub
PRODUCT_PACKAGES += MyFairPhone
PRODUCT_PACKAGES += QuickAccessWallet


PRODUCT_PACKAGES += SetupWizardOverlay
# Include mainline components and QSSI whitelist
ifeq (true,$(call math_gt_or_eq,$(SHIPPING_API_LEVEL),29))
  $(call inherit-product, device/qcom/qssi/qssi_whitelist.mk)
  PRODUCT_ARTIFACT_PATH_REQUIREMENT_IGNORE_PATHS := /system/system_ext/
  PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := true
endif

ifeq ($(TARGET_BUILD_MMITEST),true)
PRODUCT_PACKAGES += Robust \
     robustd \
     memtester \
     libwifi_robust_jni \
     libwifitestmodejni \
     TctWlanTestMode
endif

PRODUCT_PACKAGES += libexif

PRODUCT_PACKAGES += \
      smcd \
      OneTouchFeedback

PRODUCT_COPY_FILES +=\
        device/qcom/lito/tuxera/exfatck:system/bin/exfatck \
        device/qcom/lito/tuxera/exfatdebug:system/bin/exfatdebug \
        device/qcom/lito/tuxera/exfatlabel:system/bin/exfatlabel \
        device/qcom/lito/tuxera/exfatvsn:system/bin/exfatvsn \
        device/qcom/lito/tuxera/mkexfat:system/bin/mkexfat

ifeq ($(TARGET_BUILD_VARIANT),user)
    $(warning "exFat kernel module in user Build")
    $(shell cp -f device/qcom/lito/tuxera/texfat.user.unsigned.ko device/qcom/lito/tuxera/texfat.unsigned.ko)
else
    $(warning "exFat kernel module in userdebug Build")
    $(shell cp -f device/qcom/lito/tuxera/texfat.userdebug.unsigned.ko device/qcom/lito/tuxera/texfat.unsigned.ko)
endif

#PSI config
PRODUCT_PACKAGES += \
      PSI \
      psi_config.json

PRODUCT_COPY_FILES += \
      device/qcom/lito/splash/bootanimation.zip:system/media/bootanimation.zip

###################################################################################
# This is the End of target.mk file.
# Now, Pickup other split product.mk files:
###################################################################################
$(call inherit-product-if-exists, vendor/qcom/defs/product-defs/system/*.mk)
###################################################################################

$(call inherit-product-if-exists, vendor/customer_carrier/customer_carrier.mk)
