# Copyright 2018-2019 Fairphone B.V.
#
# 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.
#

# For PRODUCT_COPY_FILES, the first instance takes precedence.

# Stop here if we already tried to download the blobs and notified how to
# download them.
ifeq ("$(BLOBS_MISSING_NOTIFIED)","TRUE")
$(error)
endif

BLOBS_PATH = $(abspath device/fairphone/fp2-proprietary)
GET_BLOBS_CMD = vendor/fairphone/tools/bin/get_blobs.py --device FP2 --build-id $(BUILD_ID) --blobs-dir $(BLOBS_PATH)
CHECK_BLOBS_EXIST = $(wildcard $(BLOBS_PATH)/device-vendor.mk)

# Download the blobs if they don't exist.
ifeq ("$(CHECK_BLOBS_EXIST)","")
$(shell python3 $(GET_BLOBS_CMD) >&2)
endif

# Prompt the user if something went wrong.
ifeq ("$(CHECK_BLOBS_EXIST)","")
define BLOBS_INSTRUCTION


Cannot find FP2 binary blobs.

Please run

  python3 $(GET_BLOBS_CMD)

and accept the terms of agreement.


endef
BLOBS_MISSING_NOTIFIED = TRUE
$(error $(BLOBS_INSTRUCTION))
endif

# Call the vendor setup
$(call inherit-product-if-exists, vendor/fairphone/fp2-common/device-vendor.mk)
# Call the proprietary setup
$(call inherit-product, $(BLOBS_PATH)/device-vendor.mk)

# This is needed for the 2016 June official Nexus 5 driver's glsub
TARGET_USE_COMPAT_GRALLOC_PERFORM := true

# Define the build number based on the product flavour and on the build manifest
# revision
ifneq (,$(strip $(PRODUCT_FLAVOR)))
  _BUILD_MANIFEST_REV := $(shell (git -C $(TOPDIR).repo/manifests rev-parse --short=8 HEAD))
  BUILD_NUMBER := $(PRODUCT_FLAVOR)-$(_BUILD_MANIFEST_REV)
else
  $(error PRODUCT_FLAVOR must be defined)
endif
$(warning Build defined as $(BUILD_ID) ($(BUILD_NUMBER)))

# APN configuration
PRODUCT_COPY_FILES += \
	device/fairphone/fp2-common/rootdir/system/etc/apns-conf.xml:system/etc/apns-conf.xml \
	device/fairphone/fp2-common/rootdir/system/etc/old-apns-conf.xml:system/etc/old-apns-conf.xml

# Fairphone Common framework
$(call inherit-product, vendor/fairphone/frameworks/common/common.mk)

# camera_detect
$(call inherit-product, device/fairphone/fp2-common/camera_detect/camera_detect.mk)

# Experimental OpenGL ES 3.0 support for Android 7 (and higher)
PRODUCT_PACKAGES += \
	init.fp.exp_gles3_setup.sh

# TODO Clean everything up below this line

CYNGN_TARGET := true

# Inherit from those products. Most specific first.
$(warning Pulling in full basic telephony)
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk)

## Use the latest approved GMS identifiers unless running a signed build
# ifneq ($(SIGN_BUILD),true)
# PRODUCT_BUILD_PROP_OVERRIDES += \
#     BUILD_FINGERPRINT=Fairphone/FP2/FP2:7.1.2/N2G47H/FP2-gms-17.09.3:user/release-keys
#     PRIVATE_BUILD_DESC="FP2-user no clue what to put here"
# endif

# PRODUCT_NAME := aosp_FP2

# From FP2.mk
DEVICE_PACKAGE_OVERLAYS += device/fairphone/fp2-common/overlay
# PRODUCT_PACKAGE_OVERLAYS += device/fairphone/fp2-common/overlay

# TODO move to device?
LOCAL_TEMP := device/fairphone/FP2

# Media
PRODUCT_COPY_FILES += \
    frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:system/etc/media_codecs_google_audio.xml \
    frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:system/etc/media_codecs_google_telephony.xml \
    frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:system/etc/media_codecs_google_video.xml

PRODUCT_COPY_FILES += \
    $(LOCAL_TEMP)/media/media_codecs_8974.xml:system/etc/media_codecs.xml \
    $(LOCAL_TEMP)/media/media_codecs_performance.xml:system/etc/media_codecs_performance.xml \
    $(LOCAL_TEMP)/media/media_profiles_8974.xml:system/etc/media_profiles.xml

# IPC router
PRODUCT_COPY_FILES += \
    $(LOCAL_TEMP)/configs/sec_config:system/etc/sec_config

# Audio
PRODUCT_COPY_FILES += \
    $(LOCAL_TEMP)/audio/acdbdata/MTP/MTP_Bluetooth_cal.acdb:system/etc/acdbdata/MTP/MTP_Bluetooth_cal.acdb \
    $(LOCAL_TEMP)/audio/acdbdata/MTP/MTP_General_cal.acdb:system/etc/acdbdata/MTP/MTP_General_cal.acdb \
    $(LOCAL_TEMP)/audio/acdbdata/MTP/MTP_Global_cal.acdb:system/etc/acdbdata/MTP/MTP_Global_cal.acdb \
    $(LOCAL_TEMP)/audio/acdbdata/MTP/MTP_Handset_cal.acdb:system/etc/acdbdata/MTP/MTP_Handset_cal.acdb \
    $(LOCAL_TEMP)/audio/acdbdata/MTP/MTP_Hdmi_cal.acdb:system/etc/acdbdata/MTP/MTP_Hdmi_cal.acdb \
    $(LOCAL_TEMP)/audio/acdbdata/MTP/MTP_Headset_cal.acdb:system/etc/acdbdata/MTP/MTP_Headset_cal.acdb \
    $(LOCAL_TEMP)/audio/acdbdata/MTP/MTP_Speaker_cal.acdb:system/etc/acdbdata/MTP/MTP_Speaker_cal.acdb

PRODUCT_COPY_FILES += \
    $(LOCAL_TEMP)/audio/audio_effects.conf:system/vendor/etc/audio_effects.conf \
    $(LOCAL_TEMP)/audio/audio_policy.conf:system/etc/audio_policy.conf \
    $(LOCAL_TEMP)/audio/mixer_paths.xml:system/etc/mixer_paths.xml \
    $(LOCAL_TEMP)/audio/mixer_paths_auxpcm.xml:system/etc/mixer_paths_auxpcm.xml

PRODUCT_PACKAGES += \
    audio.a2dp.default \
    audio.primary.msm8974 \
    audio.r_submix.default \
    audio.usb.default \
    audio_policy.msm8974 \
    audiod \
    libbthost_if \
    libqcompostprocbundle \
    libqcomvisualizer \
    libqcomvoiceprocessing \
    libqcomvoiceprocessingdescriptors \
    tinymix

# Boot animation
TARGET_SCREEN_HEIGHT := 1920
TARGET_SCREEN_WIDTH := 1080

# Media
PRODUCT_PACKAGES += \
    libOmxAacEnc \
    libOmxAmrEnc \
    libOmxCore \
    libOmxEvrcEnc \
    libOmxQcelp13Enc \
    libOmxVdec \
    libOmxVenc \
    libc2dcolorconvert \
    libdivxdrmdecrypt \
    libstagefrighthw

PRODUCT_PACKAGES += \
    ebtables \
    ethertypes \
    libbson \
    libcnefeatureconfig \
    libnl_2 \
    libtinyxml \
    libxml2

# Data
PRODUCT_PACKAGES += \
    librmnetctl

# USB
PRODUCT_PACKAGES += \
    init.qcom.usb.sh

# Dalvik/HWUI
$(call inherit-product-if-exists, frameworks/native/build/phone-xxhdpi-2048-dalvik-heap.mk)
$(call inherit-product-if-exists, frameworks/native/build/phone-xxhdpi-2048-hwui-memory.mk)

# Display
PRODUCT_AAPT_CONFIG := normal
PRODUCT_AAPT_PREF_CONFIG := xxhdpi

# Graphics
PRODUCT_PACKAGES += \
    copybit.msm8974 \
    gralloc.msm8974 \
    hwcomposer.msm8974 \
    liboverlay \
    memtrack.msm8974

# Features
PRODUCT_COPY_FILES += \
	external/ant-wireless/antradio-library/com.dsi.ant.antradio_library.xml:system/etc/permissions/com.dsi.ant.antradio_library.xml \
	frameworks/native/data/etc/android.hardware.audio.low_latency.xml:system/etc/permissions/android.hardware.audio.low_latency.xml \
	frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \
	frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:system/etc/permissions/android.hardware.camera.flash-autofocus.xml \
	frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \
	frameworks/native/data/etc/android.hardware.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml \
	frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
	frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:system/etc/permissions/android.hardware.sensor.accelerometer.xml \
	frameworks/native/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.sensor.compass.xml \
	frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
	frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \
	frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \
	frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:system/etc/permissions/android.hardware.sensor.stepcounter.xml \
	frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:system/etc/permissions/android.hardware.sensor.stepdetector.xml \
	frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \
	frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
	frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
	frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
	frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
	frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
	frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.midi.xml \
	frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \
	frameworks/native/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml

# Ramdisk
PRODUCT_PACKAGES += \
    fstab.qcom \
    init.qcom.power.rc \
    init.qcom.rc \
    init.qcom.usb.rc \
    ueventd.qcom.rc

PRODUCT_PACKAGES += \
    init.qcom.bt.sh

# Power
PRODUCT_PACKAGES += \
    power.msm8974

# Thermal
PRODUCT_COPY_FILES += \
    $(LOCAL_TEMP)/configs/thermal-engine-8974.conf:system/etc/thermal-engine-8974.conf

# Input device files
PRODUCT_COPY_FILES += \
    $(LOCAL_TEMP)/configs/gpio-keys.kl:system/usr/keylayout/gpio-keys.kl

# Wifi
PRODUCT_COPY_FILES += \
    $(LOCAL_TEMP)/wifi/WCNSS_cfg.dat:system/etc/firmware/wlan/prima/WCNSS_cfg.dat \
    $(LOCAL_TEMP)/wifi/WCNSS_qcom_cfg.ini:system/etc/wifi/WCNSS_qcom_cfg.ini \
    $(LOCAL_TEMP)/wifi/WCNSS_qcom_wlan_nv.bin:system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv.bin

PRODUCT_PACKAGES += \
    hostapd \
    wcnss_service \
    wpa_supplicant

PRODUCT_PACKAGES += \
    hostapd.accept \
    hostapd.deny \
    hostapd_default.conf \
    p2p_supplicant_overlay.conf \
    wpa_supplicant.conf \
    wpa_supplicant_overlay.conf

# ANT stack
PRODUCT_PACKAGES += \
    AntHalService \
    com.dsi.ant.antradio_library \
    libantradio

# GPS
PRODUCT_PACKAGES += \
    gps.msm8974

PRODUCT_COPY_FILES += \
    $(LOCAL_TEMP)/gps/flp.conf:system/etc/flp.conf \
    $(LOCAL_TEMP)/gps/gps.conf:system/etc/gps.conf \
    $(LOCAL_TEMP)/gps/izat.conf:system/etc/izat.conf \
    $(LOCAL_TEMP)/gps/quipc.conf:system/etc/quipc.conf \
    $(LOCAL_TEMP)/gps/sap.conf:system/etc/sap.conf

# Lights
PRODUCT_PACKAGES += \
    lights.msm8974

# Keystore
PRODUCT_PACKAGES += \
    keystore.msm8974

# FM radio
PRODUCT_PACKAGES += \
    FM2 \
    FMRecord \
    qcom.fmradio \
    init.qcom.fm.sh

# Camera
PRODUCT_PACKAGES += \
    camera.msm8974 \
    libqomx_core \
    libmmcamera_interface \
    libmmjpeg_interface \
    mm-jpeg-interface-test \
    mm-qcamera-app \
    Camera2

# Stagefright FFMPEG plugin
#PRODUCT_PACKAGES += \
#    libffmpeg_extractor \
#    libffmpeg_omx \
#    media_codecs_ffmpeg.xml

#PRODUCT_PROPERTY_OVERRIDES += \
#    media.sf.omx-plugin=libffmpeg_omx.so \
#    media.sf.extractor-plugin=libffmpeg_extractor.so



# The product flavours will set PRODUCT_NAME and PRODUCT_MODEL to something else
# but really, we are not allowed to change it because it was certified like this.
# To not break the build system and still have some properties set with the fancy
# flavour name, we only override the variables in the generated build.prop file.
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_MODEL=FP2 PRODUCT_NAME=FP2

PRODUCT_MANUFACTURER := Fairphone
PRODUCT_BRAND := Fairphone
PRODUCT_DEVICE := FP2

$(call inherit-product, build/target/product/product_launched_with_l_mr1.mk)
