# Copyright 2018-2020 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.
#

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

CURRENT_DIR_ABS := $(dir $(abspath $(lastword "$(MAKEFILE_LIST)")))
CURRENT_DIR_REL := $(patsubst %/,%,$(patsubst $(CURDIR)/%,%,$(CURRENT_DIR_ABS)))

PRODUCT_PACKAGE_OVERLAYS += \
	vendor/fairphone/fp2-common/overlay

# Ringtones
PRODUCT_COPY_FILES += \
	vendor/fairphone/media/ringtones/Sunbeam.mp3:system/media/audio/ringtones/Fairphone.mp3 \
	vendor/fairphone/media/ringtones/Fiesta.mp3:system/media/audio/ringtones/Fiesta.mp3

PRODUCT_PROPERTY_OVERRIDES += ro.config.ringtone=Fairphone.mp3

PRODUCT_PACKAGES += \
	WallpaperPicker

# Default permission grant exceptions
PRODUCT_COPY_FILES += \
	$(CURRENT_DIR_REL)/etc/default-permissions/default-permissions.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default-permissions/default-permissions.xml

PRODUCT_COPY_FILES += \
	$(CURRENT_DIR_REL)/etc/permissions/privapp-permissions-fairphone.xml:system/etc/permissions/privapp-permissions-fairphone.xml

PRODUCT_PACKAGES += \
	CameraSwapInfo \
	FairphoneCheckup \
	FairphoneLauncher3QuickStep \
	FairphoneSettings \
	ModuleDetect \
	ProgrammableButton \
	ProximitySensorTools \
	Updater

# Include crash reporting service and client
$(call inherit-product-if-exists, vendor/fairphone/hiccup/hiccup.mk)

# SELinux policy variable definitions
BOARD_SEPOLICY_DIRS += \
	vendor/fairphone/fp2-common/sepolicy

# Overlay for FairphoneLauncher3QuickStep
PRODUCT_PACKAGE_OVERLAYS += \
	vendor/fairphone/apps/Launcher/quickstep/overlay
